bonjour.
e t-il possible d'ajouter d'autre liens dans le block administration du site ???? je veux également ajouter des liens accessible pour un administrateur .
et merci
Oui, c'est possible.
Il y a plusieurs techniques autour de cette question :
le plus propre est :
créer un réperoire "local" à la racine de Moodle (répertoire standard des customisations)
créer un fichier appelé settings.php dans ce répertoire
(Les settings.php sont des définitions qui s'ajoutent à tous les fichiers settings.php définis un peu partout)
Voici l'exemple d'une ligne qui ajoute une page externe au menu "Présentation". Il s'agit d'une page externe pointée par le lien de label "get_string('imagemap', 'local')" et qui pointe vers $CFG->wwwroot . '/local/admin/imagemap.php'
$ADMIN->add('appearance', new admin_externalpage('imagemap', get_string('imagemap', 'local'), $CFG->wwwroot . '/local/admin/imagemap.php'));
pour savoir de quelle classe est $ADMIN : écrire print_object($ADMIN) quelque part où vous pouvez l'exécuter. La sortie est le déroulé de l'objet $ADMIN avec sa classe.
Recherchez sa classe dans le site http://phpdocs.moodle.org et vous aurez pas mal de renseignements sur ces façons de gérer la structure de définition de l'amin.
A noter qu'une page externe d'administration devrait utiliser plutôt :
admin_externalpage_setup('imagemap');
admin_externalpage_print_header();
....
admin_externalpage_print_footer();
(mais je n'ai pas étudié pourquoi en détail...)
Il y a plusieurs techniques autour de cette question :
le plus propre est :
créer un réperoire "local" à la racine de Moodle (répertoire standard des customisations)
créer un fichier appelé settings.php dans ce répertoire
(Les settings.php sont des définitions qui s'ajoutent à tous les fichiers settings.php définis un peu partout)
Voici l'exemple d'une ligne qui ajoute une page externe au menu "Présentation". Il s'agit d'une page externe pointée par le lien de label "get_string('imagemap', 'local')" et qui pointe vers $CFG->wwwroot . '/local/admin/imagemap.php'
$ADMIN->add('appearance', new admin_externalpage('imagemap', get_string('imagemap', 'local'), $CFG->wwwroot . '/local/admin/imagemap.php'));
pour savoir de quelle classe est $ADMIN : écrire print_object($ADMIN) quelque part où vous pouvez l'exécuter. La sortie est le déroulé de l'objet $ADMIN avec sa classe.
Recherchez sa classe dans le site http://phpdocs.moodle.org et vous aurez pas mal de renseignements sur ces façons de gérer la structure de définition de l'amin.
A noter qu'une page externe d'administration devrait utiliser plutôt :
admin_externalpage_setup('imagemap');
admin_externalpage_print_header();
....
admin_externalpage_print_footer();
(mais je n'ai pas étudié pourquoi en détail...)
merci Valery Fremaux
mais c'est encors floue.
ou j'ajoute la ligne de code?
svp donne moi les etapes bien détaillés
mais c'est encors floue.
ou j'ajoute la ligne de code?
svp donne moi les etapes bien détaillés
Cette ligne de code s'écrit directement dans le fichier settings.php
Le mieux est de chercher les fichiers settings.php dans moodle et de regarder à titre d'exemple...
Le mieux est de chercher les fichiers settings.php dans moodle et de regarder à titre d'exemple...
merci.
1-j'ai crée un dossier "hatem" dans moodle/admin/
2-j'ai crée un ficher settings.php dans ce dossier moodle/admin/hatem/settings.php
3-j'ai ajouter ce code dans settings.php
<?php // $Id: settings.php,v 1.1.2.1 2008/11/26 20:58:07 skodak Exp $
$ADMIN->add('hatem', new admin_externalpage('hatem', get_string('hatem', 'admin'), "$CFG->wwwroot/$CFG->admin/hatem/index.php", 'moodle/site:config'));
?>
4-j'ai ajouter dans moodle/lang/fr/admin.php
$string['hatem'] = 'hatem';
et encors c marche pas
1-j'ai crée un dossier "hatem" dans moodle/admin/
2-j'ai crée un ficher settings.php dans ce dossier moodle/admin/hatem/settings.php
3-j'ai ajouter ce code dans settings.php
<?php // $Id: settings.php,v 1.1.2.1 2008/11/26 20:58:07 skodak Exp $
$ADMIN->add('hatem', new admin_externalpage('hatem', get_string('hatem', 'admin'), "$CFG->wwwroot/$CFG->admin/hatem/index.php", 'moodle/site:config'));
?>
4-j'ai ajouter dans moodle/lang/fr/admin.php
$string['hatem'] = 'hatem';
et encors c marche pas
Pas une bonne idée.
le dossier "local" est prise en charge par des "hooks", technique très largement utilisée dans Moodle :
un hook est une fonction qui n'est pas sensée exister obligatoirement, mais qui est prévue dans le code de base. Il existe plusieurs techniques pour ça. un exemple :
On voit bien alors que le code du noyau ne peut appeler réellement la fonction hook attendu qu'après vérification de trois conditions d'existance.
Une implémentation qui ne fournit pas les trois en même temps ne réagit pas au hook.
c'st ce qui se passe pour les settings, mais il faut qu'ils soient dans un fichier local/settings.php.
Sinon, comme vous l'avez mis, il faut trouver dans le code comment le menu admin-tree considère les répertoires du dossier admin pour créer ses entrées principales de menu...
Vous ne pouvez pas de toutes façon vous dédoiner d'une étude de code qui environne votre problème...
le dossier "local" est prise en charge par des "hooks", technique très largement utilisée dans Moodle :
un hook est une fonction qui n'est pas sensée exister obligatoirement, mais qui est prévue dans le code de base. Il existe plusieurs techniques pour ça. un exemple :
if (is_dir('customdir')){
if (file_exists('customdir/hookedinterface.php'){
include('customdir/hookedinterface.php');
if (function_exists('hookattendu')){
hookattendu();
}
}
}
On voit bien alors que le code du noyau ne peut appeler réellement la fonction hook attendu qu'après vérification de trois conditions d'existance.
Une implémentation qui ne fournit pas les trois en même temps ne réagit pas au hook.
c'st ce qui se passe pour les settings, mais il faut qu'ils soient dans un fichier local/settings.php.
Sinon, comme vous l'avez mis, il faut trouver dans le code comment le menu admin-tree considère les répertoires du dossier admin pour créer ses entrées principales de menu...
Vous ne pouvez pas de toutes façon vous dédoiner d'une étude de code qui environne votre problème...