ajouter d'autre lien dans le blocks admin_tree

ajouter d'autre lien dans le blocks admin_tree

par hatem boubakri,
Nombre de réponses : 5
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
Annexe hhhh.jpg
Moyenne des évaluations  -
En réponse à hatem boubakri

Re: ajouter d'autre lien dans le blocks admin_tree

par Valery Fremaux,
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...)
En réponse à Valery Fremaux

Re: ajouter d'autre lien dans le blocks admin_tree

par hatem boubakri,
merci Valery Fremaux
mais c'est encors floue.
ou j'ajoute la ligne de code?
svp donne moi les etapes bien détaillés
En réponse à hatem boubakri

Re: ajouter d'autre lien dans le blocks admin_tree

par Valery Fremaux,
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...
En réponse à Valery Fremaux

Re: ajouter d'autre lien dans le blocks admin_tree

par hatem boubakri,
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
En réponse à hatem boubakri

Re: ajouter d'autre lien dans le blocks admin_tree

par Valery Fremaux,
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 :

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...

Moyenne des évaluations Utile (1)