Ajouter un lien dans un menu

Ajouter un lien dans un menu

par Corinne Le Moan,
Nombre de réponses : 9

Bonjour, je voudrais ajouter un lien dans le menu "Administration du cours". Quelle est la façon la plus "propre" de réaliser ceci ?

 

Moyenne des évaluations  -
En réponse à Corinne Le Moan

Re: Ajouter un lien dans un menu (précision)

par Corinne Le Moan,

Ma question n'est peut être pas assez précise.  La version de moodle sur laquelle je travaille est la 2.4.1

Je veux ajouter un lien vers la page d'assignation des rôles dans un cours pour les utilisateurs qui ont le rôle "manager" :

/admin/roles/assign.php?contextid=<???>

Ce lien manque beaucoup aux administrateurs fonctionnels (je ne comprends d'ailleurs pas pourquoi il n'apparaît plus directement dans le menu administration du cours). Si quelqu'un daigne m'expliquer, j'aimerais compredre ... 

J'ai pensé à créer un bloc HTML mais je ne sais pas comment récupérer la valeur de la variable php $contextid.

Il faut peut-être que j'aille directement modifier le php, ce qui ne me plaît guère et dans ce cas quelqu'un peut-il m'indiquer où aller regarder.

Merci d'avance

 

 

 

 

 

 

 

 

 

 

En réponse à Corinne Le Moan

Re: Ajouter un lien dans un menu (précision)

par Luiggi Sansonetti,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Titulaires du Moodle Course Creator Certificate Avatar Traducteurs

bonjour

je vais essayer de comprendre.

je suis en 2.4 et quand je prends le rôle Manager, j'ai la vue suivante du bloc réglage quand je suis dans un espace de cours:

 

après, que souhaitez vous faire ?

le manager atttribue un rôle à un utilisateur inscrit ?

le manager prend le rôle de...

?

En réponse à Luiggi Sansonetti

Re: Ajouter un lien dans un menu (précision)

par Corinne Le Moan,

Il semble que je ne soit vraiment pas claire ... je vais essayer de faire mieux ...

Je veux que les utilisateurs, qui ont le rôle "manager", aient accès à cet écran pour chaque cours d'une manière simple (lien dans un menu ça me paraît bien comme en version 1.9).  

 

En version 1.9, mes utilisateurs ont l'habitude d'utiliser le lien "Attribution des rôles" dans le menu "Administration" du cours comme ceci :

 

 

En réponse à Corinne Le Moan

Re: Ajouter un lien dans un menu (précision)

par Luiggi Sansonetti,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Titulaires du Moodle Course Creator Certificate Avatar Traducteurs

bon, je comprends mieux.

à priori, sur ma version, par défaut on ne peut pas, il faut aller dans utilisateur puis donner le rôle qu'on veut pour chacun...

donc oui, plus fastidieux qu'avant.

je vais continuer à chercher pour voir mais je ne suis pas sûr que ce soit plus rapide

à voir si d'autres trouvent...

bon week end

En réponse à Luiggi Sansonetti

Re: Ajouter un lien dans un menu (précision)

par Corinne Le Moan,

Merci beaucoup pour l'aide, je me sens moins seule clin d’œil.

Je crois avoir bien cherché et le lien n'apparaît dans aucun menu. Et pourtant la page existe, c'est "/admin/roles/assign.php?contextid=<context id du cours>". D'où mon idée d'ajouter ce lien moi-même. Mais je voudrais le faire le plus "proprement" possible.

En réponse à Corinne Le Moan

Re: Ajouter un lien dans un menu (précision)

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Bonjour,

Je n'ai pas les compétences pour résoudre votre problème de départ : "je voudrais ajouter un lien dans le menu "Administration du cours".

Mais si l'administrateur ou  un manager au niveau système veut "assez rapidement" récupérer la valeur $contextid, il peut faire:
Bloc "Réglages"-> Réglages de mon profil -> Rôles -> Rôles de cet utilisateur

Ainsi, à condition que l'administrateur ou manager se soit donné au moins un rôle dans le cours, il peut récupérer le contextid associé à chaque cours (voir copie d'écran ci-dessous).

Mais si vous avez accès à la base de données, en récupérant l'id des cours dans la table mdl_course puis en vous rendant dans la table mdl_context, vous pouvez récupérer le contextid pour chaque cours.
Les trois lignes surlignées en jaune donnent les contextid correspondants aux trois cours dont les id sont 13, 14 et 15.

Christian

 

Contenu de la table mdl_context

id

contextlevel

instanceid

path

depth

1

10

0

/1

1

2

50

1

/1/2

2

3

40

1

/1/3

2

4

30

1

/1/4

2

5

30

2

/1/5

2

9

80

4

/1/9

2

10

80

5

/1/10

2

11

80

6

/1/11

2

12

80

7

/1/12

2

14

80

9

/1/14

2

47

70

12

/1/2/47

3

62

80

31

/1/2/62

3

63

80

32

/1/2/63

3

64

80

33

/1/2/64

3

395

50

13

/1/3/395

3

396

80

34

/1/3/395/396

4

397

80

35

/1/3/395/397

4

398

80

36

/1/3/395/398

4

399

80

37

/1/3/395/399

4

400

70

13

/1/3/395/400

4

401

70

14

/1/3/395/401

4

402

70

15

/1/3/395/402

4

403

70

16

/1/3/395/403

4

404

30

32

/1/404

2

405

30

33

/1/405

2

406

70

17

/1/3/395/406

4

410

50

14

/1/3/410

3

411

80

38

/1/3/410/411

4

412

80

39

/1/3/410/412

4

413

80

40

/1/3/410/413

4

414

80

41

/1/3/410/414

4

415

70

18

/1/3/410/415

4

425

50

15

/1/3/425

3

426

80

42

/1/3/425/426

4

Annexe Attributions.JPG
En réponse à Christian Bocquet

Re: Ajouter un lien dans un menu (précision)

par Corinne Le Moan,

J'ai réussi à avoir ce que je veux en modifiant : lib/enrolllib.php.

// Add assign or override roles if allowed
//if ($course->id == SITEID or (!empty($CFG->adminsassignrolesincourse) and is_siteadmin())) {
if (has_capability('moodle/role:assign', $coursecontext)) {
$url = new moodle_url('/admin/roles/assign.php', array('contextid'=>$coursecontext->id));
$permissionsnode->add(get_string('assignedroles', 'role'), $url, navigation_node::TYPE_SETTING, null, 'roles', new pix_icon('i/assignroles', ''));
}
//}

 

 

 

 

 

En réponse à Corinne Le Moan

Re: Ajouter un lien dans un menu (précision)

par Pascal Maury,
Avatar Développeurs de plugins

Bonjour,

Il est possible de faire cela sans toucher au code de Moodle. Pour être plus précis, pour un de nos plugins nous avons ajouté un lien dans le menu Réglages. Nous n'avons cependant pas cherché à le mettre dans un sous-menu déjà existant comme vous l'avez fait.

Si cela vous intéresse, j'ai fait un "mini-plugin" qui ajoute simplement le lien "Rôles attribués" dans le menu Réglages (à la fin du menu par contre).

Il suffit de décompresser le dossier "mymodule" du zip dans le dossier local de Moodle et d'installer le plugin en vous connectant en tant qu'admin.

J'ai repris votre code : le lien est affiché si l'utilisateur connecté a la permission "moodle/role:assign". J'ai mis l'icone "settings" car je n'ai pas trouvé celle que vous utilisez (je suis en 2.3.4).

Notes :
- j'ai testé ce plugin avec 2.3.4 (mais il devrait fonctionner avec tout Moodle 2.x)
- rappel : tout fichier lib.php d'un dossier de local est executé à chaque appel de page Moodle, n'y mettez pas du code trop lourd, mal écrit ou avec des erreurs au risque de bloquer votre site !
- lisez la documentation à propos des plugins locaux et le fichier /local/readme.txt
- je me rends compte que j'ai appelé cela "mymodule" alors qu'il s'agit d'un plugin. C'était pour l'exemple.
Ceci dit, attention au nom : le nom doit être en cohérence à différents endroits, notamment dans cet exemple :
> le nom du dossier ("mymodule")
> le nom de la variable component dans le fichier version.php doit correspondre à l'arborescence exacte : $plugin->component = 'local_mymodule'; // dossier local, sous dossier mymodule
> le nom de la fonction local_mymodule_extends_settings_navigation : local_mymodule_ reprends ici aussi l'arborescence exacte; _extends_settings_navigation permet de surcharger automatiquement le menu.

Pascal

En réponse à Pascal Maury

Re: Ajouter un lien dans un menu (précision)

par Corinne Le Moan,

Super ! Je suis novice en Moodle et je suis consciente que ma solution est loin d'être satisfaisante. Je vais tester votre solution dès que possible, d'autant plus que cela pourrait servir dans d'autre cas. Merci.