Affichage "liste combinée" dans Mon Moodle

Re: Affichage "liste combinée" dans Mon Moodle

par Valery Fremaux,
Nombre de réponses : 0

Exact, ce n'est en général pas trop une bonne idée, surtout pour du code "de base" (distribution officielle de Moodle), car ces patches disparaissent à la mise à jour et il faut des compétences techniques pour les suivre.

C'est un petit peu moins grave pour les plugins tiers-partie, surtout pour ceux qui présentent une petite fonctionnalité, car ils seront moins à même d'évoluer. On peut également penser que des plugins qui n'ont pas été touchés depuis un certain temps sont à peu près stable, tant que la compatibilité avec les évolutions de Moodle n'est pas mise en cause.

En tout cas, pour ce problème, voilà la solution :

Dans le fichier /blocks/myCourse/block_myCourses.php §350

Remplacer le code de la fonction create_tree_menu(...) par celui-ci :

    function create_tree_menu($categories, &$pnode) {
        global $CFG;
        $nicon = 'folder.gif';
        $eicon = 'folder-expanded.gif';
       
        if (! function_exists('sort_by_name')){
            function sort_by_name($a, $b){
                if ($a->name == $b->name) return 0;
                return ($a->name > $b->name) ? 1 : -1;
            }
        }
        if (! function_exists('sort_by_shortname')){
            function sort_by_shortname($a, $b){
                if ($a->shortname == $b->shortname) return 0;
                return ($a->shortname > $b->shortname) ? 1 : -1;
            }
        }
       
        uasort($categories, 'sort_by_name');
        foreach ($categories as $catid => $catnode) {
            if (!$catnode->hascourses) continue;
            $node = &$pnode->addItem(new HTML_TreeNode(array('text' => ' '.$catnode->name, 'link' => '',
                                                             'icon' => $nicon, 'expandedIcon' => $eicon,
                                                             'cssClass' => 'treeMenuDefault')));
            if (!empty($catnode->categories)) {
                $this->create_tree_menu($catnode->categories, $node);
            }
            if (!empty($catnode->courses)) {
                uasort($catnode->courses, 'sort_by_shortname');
                foreach ($catnode->courses as $course) {
                    $linkcss = '';
                    if ($this->course->id == $course->id) {
                        $url = '';
                        $text = $course->shortname;
                        $cssclass = 'treeMenuBold';
                    } else {
                        $url = $CFG->wwwroot.'/course/view.php?id='.$course->id.
                               '" title="'.htmlspecialchars($course->fullname, ENT_QUOTES).$linkcss;
                        $text = $course->shortname;
                        $cssclass = 'treeMenuDefault';
                    }
                    $node->addItem(new HTML_TreeNode(array('text' => $text, 'link' => $url,
                                                           'icon' => $nicon, 'cssClass' => $cssclass)));
                }
            }
        }
    }
 

J'essaye par ailleur d'enlever cette horrible icone de dossier pour les cours...