[custom menu] Nom complet du cours en infobulle

[custom menu] Nom complet du cours en infobulle

par Philippe Leménager,
Nombre de réponses : 1

Bonjour,

Nous avons implémenté un custom menu horizontal automatisé qui reprend toute l'arborescence des catégories et des cours.
Comme les libellés sont parfois longs, le lien dans le menu affiche le $course->shortname.

Voici un extrait du code :
<code>
class theme_enfa_core_renderer extends core_renderer
{
    /**
     * render_custom_menu
     * Construit le custom_menu avec l'arborescence de tous les cours
     * @param custom_menu $menu : Le menu personnalisé à construire
     * @return string : Le code HTML du menu ?
     */
    protected function render_custom_menu(custom_menu $menu)
    {
        global $CFG;
        
        require_once($CFG->dirroot.'/course/lib.php');
    
        $url_home = "http://univert.enfa.fr";
    
        // Ajoute l'icône maison pour accéder à /my au custom_menu en récupérant le code HTML dans theme_enfa.php
        /* PL - 2012-04-23 : renommage courses en my pour cohérence */
        // Original => $branch = $menu->add(get_string('courses', 'theme_enfa'), null, null, 10000); changé pour ajouter l'url de la homepage "my moodle"
        $branch = $menu->add(get_string('my', 'theme_enfa'), new moodle_url('/my'), null, 10000);
    
        // récupère l'arborescence des cours
        $categorytree = get_course_category_tree();
    
        foreach ($categorytree as $category)
        {
            $branch = $menu->add($category->name, new moodle_url('/course/category.php', array('id' =>  $category->id)));
                
            if (!empty($category->categories))
            {
                foreach ($category->categories as $subcategory)
                {
                    $this->add_category_to_custommenu($branch, $subcategory);
                }
            }
    
            if (!empty($category->courses))
            {
                foreach ($category->courses as $course)
                {
                    //$branch->add($course->shortname, new moodle_url('/course/view.php', array('id' => $course->id)), $course->shortname);
                    $branch->add($course->shortname, new moodle_url('/course/view.php', array('id' => $course->id)), $course->name);
                }
            }
    
        } // Fin foreach ($categorytree as $category)
    
        return parent::render_custom_menu($menu);
    } // Fin protected function render_custom_menu(custom_menu $menu)

</code>

La partie qui m'intéresse est :

$branch->add($course->shortname, new moodle_url('/course/view.php', array('id' => $course->id)), $course->name);

Elle fait appel à la fonction lib/outputcomponents.php/ class custom_menu_item / public function add dont le troisième paramètre $title semble s'appliquer à l'infobulle qui apparaît quand on passe la souris sur l'option de menu conduisant à un cours.
Comme vous pouvez le voir dans l'extrait de code, ce paramètre était à l'origine shortname et j'ai essayé de la passer à name mais le résultat reste identique.

Concrètement, j'ai par exemple un cours dont le nom complet est "1213S7UE1.1 - Exploitation agricole et évolution des logiques d'action en agriculture" et dont le nom abrégé est "1213S7UE1.1-A.Terrieux". Je souhaite que dans le menu s'affiche le nom abrégé et que le nom complet apparaisse au passage de la souris sur cette option de menu.


Quel est le paramètre pour afficher le nom complet dans l'infobulle ?

Moyenne des évaluations  -
En réponse à Philippe Leménager

Re: [custom menu] Nom complet du cours en infobulle

par stephane ngov,

je n'ai pas tout lu le poste et le code,

mais si j'essaye de comprendre vous souhaitez afficher en info bull le nom

du cours en entier ?

est ce que la page contient le nom court du cours ?

SELECT fullname FROM mdl_course WHERE nom_cours="nom_cours";

c'est c'est le cas pourquoi ne pas récupérer ce nom,

et avec la table prod_course on fait une simple requête qui recherche

ce nom court et il suffira de récupérer son fullname.

Sinon si c'est dans un fil d'ariane, on peut toujours récupérer son $_GET['id']t

(categroy?id=nom), il suffira juste avec ce numéro faire une requête sur la table

prod_course, et obtenir le fullname).

 

SELECT fullname FROM prod_course WHERE id=".$_GET['id'];