Moodle : ajouter des barres de progression aux blocs de cours de la page d’accueil

Moodle 3.3

Aujourd'hui je vais vous montrer comment ajouter des barres de progression à votre page d'accueil Moodle.

Si vous êtes en train d'utiliser votre propre thème ou un thème enfant, il faudra modifier le ficher renderer.php à la racine du dossier de votre thème.

Avant de commencer à coder, installez les plugins de type block myoverview et progress bar.

Aller dans la fonction coursecat_coursebox_content() et insérez ces lignes :

            // PERCENT
            global $USER;
            $percentage = \core_completion\progress::get_course_progress_percentage($course);

            if(floor($percentage) == 0) {
                $emper = '3em';
                $class = 'zeropercent';
            } else {
                $class = 'superpercent';
                $emper = '2em';
            }

            if (!is_null($percentage)) {
                $percentage = '<div class="progress"><div class="progress-bar '. $class .'" role="progressbar" aria-valuenow="' . floor($percentage) . '" aria-valuemin="0" aria-valuemax="100" style="min-width: '. $emper .'; width: ' . floor($percentage) . '%;">' . floor($percentage) . '%' . '</div></div>';
            }

            $coursecontext = context_course::instance($course->id);

            if (isloggedin() && is_enrolled($coursecontext)) {
                $content .= html_writer::tag('div', $percentage, array('class' => 'progress-chart-container-anto'));
            }
            // END PERCENT

 

On commence à créer la progression de chaque cours dans la variable $percentage. Si vous êtes à l'aise avec le PHP vous pouvez très bien utiliser le namespace (use core_completion\progress;).

Avec la fonction floor on arrondit le pourcentage et on se prépare à ajouter des classes à notre barre de progression.

Si c'est 0% on utilisera une classe avec un background-color transparent, sinon on ajoute une autre classe avec une couleur différente.

Si le cours permet d'avoir un pourcentage alors on ajoute du html à la progress bar (j'utilise Bootstrap).

Avec is_enrolled on récupère les cours auxquels l'étudiant est inscrit. Vous imaginez bien que si l'utilisateur n'est pas inscrit dans un cours la progression restera toujours à 0% et cela ne nous servira pas à grand chose.

Donc on vérifie si l'utilisateur est connecté et s'il est inscrit au cours pour ajouter la progress bar au contenu de l'affichage ($content).

Mon choix est de l'insérer après le titre du cours.

Après vous modifiez le css à votre guise. Moi j'ai choisi de faire de cette façon :

 .progress-chart-container-anto {
    display: block;
    margin-left: 16%;
    margin-top: -11%;
    position: absolute;
    width: 70%;
    z-index: 2147483647;
}
.progress-chart-container-anto .progress {
    border-radius: 0;
}
.progress-chart-container-anto .progress-bar {
    background-color: #FB800A;
}
.progress-bar.zeropercent {
    background-color: transparent;
    border: medium none;
    box-shadow: none;
    color: #00567c;
}

 

N'oubliez pas de vider le cache.

Et voilà le résultat :

Moodle - Barre de progression

"

Itamde est également une école de programmation en ligne.

Itamde

Apprenez ce que vous voulez, à votre rythme

0 commentaire

Envoyer un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pourriez être intéressé par...

Game Developer

Comment optimiser un jeu vidéo pour différentes plateformes

Développer un jeu pour une seule plateforme est déjà un défi en soi. Le porter sur plusieurs — PC, consoles, mobile, voire navigateur web — multiplie les contraintes techniques et les décisions à prendre. Pourtant, le multi-plateforme est devenu la norme pour...

Restez informé des dernières actualités et mises à jour

Accédez au contenu réservé

Découvrez les coulisses de nos projets, des ressources exclusives et l'avancée de nos créations en temps réel.

Inscrivez-vous à la newsletter

Recevez nos actualités, nos réflexions créatives et les nouveautés de l'atelier directement dans votre boîte mail.

Suivez-nous

Rejoignez notre communauté sur les réseaux pour suivre nos projets au quotidien et échanger avec nous.