Un bouton dédié à "Prendre le rôle..." dans un cours

Un bouton dédié à "Prendre le rôle..." dans un cours

par Sébastien Mehr,
Nombre de réponses : 8
Avatar Développeurs Avatar Testeurs

Bonjour à tous,

Suite à une demande de nos enseignants, nous avons mis en place un bouton à côté du bouton "Activer le mode édition" qui permet de prendre directement le rôle étudiant, sans avoir à naviguer dans le bloc d'Administration au sein d'un cours.

Voici le résultat :

Bouton : prendre le rôle étudiant


Et voici, l'aperçu, en ayant pris le rôle étudiant :

Bouton retour à mon rôle normal


Si l'implémentation de cette fonctionnalité vous intéresse, il faut d'abord ajouter cette fonction au fichier lib.php de votre thème  (par exemple : chemin_vers_moodle/theme/votre_theme/lib.php) :


/**
 * Return  swicthing role button
 *
 * @return string HTML
 */
function theme_cleanupf_rolebutton() {
        global $DB, $USER, $CFG, $PAGE;
       
        $course = $PAGE->course;
        $context = context_course::instance($course->id);
        $user = $USER;

        $html = '';       
   
        if (is_role_switched($course->id)) {           
            if ($role = $DB->get_record('role', array('id' => $user->access['rsw'][$context->path]))) {
                $url = new moodle_url('/course/switchrole.php', array('id'=>$course->id,'sesskey'=>sesskey(), 'switchrole'=>0, 'returnurl'=>$PAGE->url->out_as_local_url(false)));
                $label = "Retour vue enseignante";
                $html = '&nbsp;<a class="btn btn-warning" href="'.$url.'"><i class="fa fa-eye">&nbsp;</i>';
                $html .= '<span>'.$label.'</span>';
                $html .= '</a>';               
            }               
        } else {           
            if ($PAGE->user_allowed_editing()) {
                $url = new moodle_url('/course/switchrole.php', array('id'=>$course->id,'sesskey'=>sesskey(), 'switchrole'=>5, 'returnurl'=>$PAGE->url->out_as_local_url(false)));
                $label = "Vue étudiante";
                $html = '&nbsp;<a class="btn btn-primary" href="'.$url.'"><i class="fa fa-eye">&nbsp;</i>';
                $html .= '<span>'.$label.'</span>';
                $html .= '</a>';                       
            }
        }

        return $html;
                   
    }


Puis appeler cette fonction à l'endroit désiré dans votre layout de la page cours (par exemple : chemin_vers_moodle/theme/votre_theme/layout/course.php) :

        <div id="page-navbar" class="clearfix">
            <nav class="breadcrumb-nav"><?php echo $OUTPUT->navbar(); ?></nav>
            <div class="breadcrumb-button">
            <?php echo theme_cleanupf_rolebutton(); ?>
            <?php echo $OUTPUT->page_heading_button(); ?>
            </div>
        </div>


Pour l'icône de l’œil, nous avons utilisé la librairie font-awesome dans notre thème, si vous n'en disposez pas, vous pouvez utiliser les icônes fournies directement par bootstrap :

http://getbootstrap.com/2.3.2/base-css.html#icons

Le code étant sans doute perfectible, n'hésitez pas si vous avez des remarques !


Seb

Moyenne des évaluations Utile (3)
En réponse à Sébastien Mehr

Re: Un bouton dédié à "Prendre le rôle..." dans un cours

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Salut Sébastien,

C'est super. AMHA, tu devrais rendre ton code localisable, à l'aide de fichiers de langue, et non pas coder en dur les chaînes de caractères.

<mode troll=on>

Une question : est-ce que vous n'avez que des femmes dans votre établissement ? En effet, le libellé des boutons pourrait le laisser penser : vue étudiante, vue enseignante.

Je suggère, si ce n'est pas le cas, que tu libelles les boutons "Vue « étudiant »", resp. "Retour à la vue « Enseignant »".

<mode troll=off>

En réponse à Nicolas Martignoni

Re: Un bouton dédié à "Prendre le rôle..." dans un cours

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Je ne peux que confirmer tout ce que dit Nicolas : merci pour ce partage, et les améliorations proposées seraient un plus clin d’œil

Séverin

En réponse à Séverin Terrier

Re: Un bouton dédié à "Prendre le rôle..." dans un cours

par Luiggi Sansonetti,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Titulaires du Moodle Course Creator Certificate Avatar Traducteurs

hello

ça me rappelait un plugin, alors j'ai trouvé ça :

le tien semble plus simple, d'où l'intérêt de l'intégrer !

cheers


Moyenne des évaluations Utile (2)
En réponse à Nicolas Martignoni

Re: Un bouton dédié à "Prendre le rôle..." dans un cours

par Rom Lad,

Bonjour Nicolas,

Je ne comprends pas vraiment votre remarque d'ordre grammatico-social.

<mode maitre-capello-tracté=on>

1/ Dans le cas présent, « enseignant » n'est pas un nom commun mais un adjectif verbal comme dans un « troll pesant » qui peut être transformé en une « trollette pesante », par exemple, et qui s'accorde naturellement en genre et en nombre (« vue » étant un nom féminin singulier). Le cas particulier ici c'est que les deux mots ont des fonctions grammaticales différentes pour une même forme variable « enseignant/e/s/es ». D'où le risque de confusion. Donc si l'accord en genre n'est pas fait, y'a erreur !

2/ L'usage des guillemets est réservé en français à l'introduction du discours direct ou à la mise à distance de mots ou expressions inadaptés ou qui ne sont pas assumés par l'énonciateur. En ajoutant une petite pointe d'ambiguïté, les guillemets ne sont pas très user friendly et assez inesthétiques aussi je pense, rendant le bouton moins efficace, incertain et un peu chargé. En d'autres termes, c'est pas la peine de réécrire les Mémoires de Saint-Simon en 14 volumes sur un truc minuscule qui ne sera probablement jamais déchiffré complètement.

3/ De manière un peu plus générale, le fait que dans notre si belle langue, le masculin soit souvent conçu comme une forme neutre et s'impose pour les deux genres n'est pas une donnée linguistique mais une croyance/idéologie. C'est l'héritage en ligne directe d'une époque où des grammairiens mâles (les seuls lettrés de l'époque) passaient une partie de leur temps à se demander si « coucougnette » prenait un ou deux« t » en latin et l'autre partie à délibérer sur la question essentielle de savoir si la possibilité que les femmes puissent être pourvues d'une âme était envisageable, avant de finalement occuper leur temps libre à expérimenter si le barbecue spécial fornicatrice était plus purificateur avec un bûcher à base de bois ou de charbon. Cette époque est révolue je pense, pas besoin d'enlever les féminins là où ils s'imposent logiquement juste par l'illusoire volonté de neutraliser le genre dans la langue au profit du masculin… juste par réflexe.

<mode maitre-capello-tracteur=ouf !>

En conclusion, « vue enseignante » me va très bien, « vue « enseignant » » me semble très maladroit et « vue enseignant » carrément fautif.

En épilogue, c'est pas parce qu'on est entre pair/e/s (choisir l'orthographe qui convient le mieux à chacun) sur ce forum qu'il faut oublier qu'une armée de féministes vengeresses rôdent sur Internet pour nous mettre le nez dedans ! La plupart du temps, elles sont bien meilleures que nous en grammaire en plus…

Romaric


En réponse à Rom Lad

Re: Un bouton dédié à "Prendre le rôle..." dans un cours

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Merci Romaric sourire Ma remarque n'a rien de social. Pour poursuivre la discussion, en mode semi-trollesque.

<mode semi-trollesque=on>

Ad 1/ Vue enseignante pourrait aller si c'était vraiment la vue qui enseignait. Voir la définition de l'adj. enseignant. Il ne s'agit donc pas d'une erreur de grammaire, mais de sens, car il s'agit de la « vue de l'enseignant-e » et non pas de la « vue enseignante.» L'expression « vue enseignant » est tant fautive grammaticalement qu'au point de vue du sens.

Ad 2/ Les règles d'utilisation des guillemets sont sujettes à discussion. Par exemple, Wikipedia indique que l'on les utilise pour « mettre en relief une expression, un terme ou une citation.» Dans l'interface en français de Moodle, c'est par ailleurs ainsi que l'usage s'est formé. Pour ce qui est de l'esthétique, je ne partage pas votre opinion, mais reconnais que les guillemets peuvent engendrer une certaine lourdeur typographique.

Ad 3/ Ceux qui me connaissent save que mon commentaire trollesque n'allait pas dans ce sens. Il visait à ironiser sur l'effet comique produit par la faute de sens citée sous point 1/.

<mode semi-trollesque=off>

A bientôt,

Nicolas

En réponse à Sébastien Mehr

Re: Un bouton dédié à "Prendre le rôle..." dans un cours

par Sébastien Mehr,
Avatar Développeurs Avatar Testeurs
Merci à tous pour vos retours !

Je viens d'intégrer la localisation comme suggérer. Pour l'appliquer :

  1.  ajouter dans chemin_vers_moodle/theme/votretheme/lang/en/theme_votretheme.php :
    $string['switchingrole-button-on'] = 'Student view';
    $string['switchingrole-button-off'] = 'Back to Teacher view';
  2. ajouter dans chemin_vers_moodle/theme/votretheme/lang/fr/theme_votretheme.php :
    $string['switchingrole-button-on'] = 'Vue « étudiant »';
    $string['switchingrole-button-off'] = 'Retour à la vue « enseignant »';
  3. corriger dans la fonction theme_cleanupf_rolebutton() décrite plus haut les variables $label comme ceci :
    • $label = "Retour vue enseignante";  à remplacer par get_string('switchingrole-button-off','theme_votretheme');
    • $label = "Vue étudiante";  à remplacer par get_string('switchingrole-button-on','theme_votretheme');


Pour finir, n'oubliez pas de vider le cache de votre plateforme pour que les changements soient pris en compte.


Seb


PS : Je ne manquerai pas de transmettre ce troll à l'auteure de la proposition d'intitulés des boutons (suivez mon regard) diabolique



Moyenne des évaluations Utile (1)
En réponse à Sébastien Mehr

Re: Un bouton dédié à "Prendre le rôle..." dans un cours

par gabriel rosset,

Bonjour à tous,

    Je me permet donc de remettre ici le code intégrant les modifications citées par Sébastien en y ajoutant une vérification évitant l'exécution de ce code hors du contexte d'un cours :


/**
 * Return  swicthing role button
 *
 * @return string HTML
 */
function theme_cleanupf_rolebutton() {
        global $DB, $USER, $CFG, $PAGE;

        $html = '';
        if($course = $PAGE->course) {
        $context = context_course::instance($course->id);
   
        if (is_role_switched($course->id)) {           
            if ($role = $DB->get_record('role', array('id' => $USER->access['rsw'][$context->path]))) {
                $url = new moodle_url('/course/switchrole.php', array('id'=>$course->id,'sesskey'=>sesskey(), 'switchrole'=>0, 'returnurl'=>$PAGE->url->out_as_local_url(false)));
              $label = get_string('switchingrole-button-off','theme_votretheme');

             $html = '&nbsp;<a class="btn btn-warning" href="'.$url.'"><i class="fa fa-eye">&nbsp;</i>';
             $html .= '<span>'.$label.'</span>';
              $html .= '</a>';
            }               
        } else {           
            if ($PAGE->user_allowed_editing()) {
                $url = new moodle_url('/course/switchrole.php', array('id'=>$course->id,'sesskey'=>sesskey(), 'switchrole'=>5, 'returnurl'=>$PAGE->url->out_as_local_url(false)));
                $label = get_string('switchingrole-button-on','theme_votretheme');
                $html = '&nbsp;<a class="btn btn-primary" href="'.$url.'"><i class="fa fa-eye">&nbsp;</i>';
                $html .= '<span>'.$label.'</span>';
                $html .= '</a>';                       
            }
        }
}
        return $html;   
    }

puis comme expliqué par Sébastien :

0. modifier les "votretheme" en rouge dans le code ci-dessus par le nom de votre thème Moodle
1. ajouter dans chemin_vers_moodle/theme/votretheme/lang/en/theme_votretheme.php :
$string['switchingrole-button-on'] = 'Student view';
$string['switchingrole-button-off'] = 'Back to Teacher view';
2. ajouter dans chemin_vers_moodle/theme/votretheme/lang/fr/theme_votretheme.php :
$string['switchingrole-button-on'] = 'Vue « étudiant »';
$string['switchingrole-button-off'] = 'Retour à la vue « enseignant »';
3. vider le cache global (ou juste celui des chaînes de traduction)

Moyenne des évaluations Utile (4)
En réponse à gabriel rosset

Re: Un bouton dédié à "Prendre le rôle..." dans un cours

par Sébastien Mehr,
Avatar Développeurs Avatar Testeurs

Bonjour Gabriel,

Merci pour cette amélioration, Je suis content de voir que ma fonction t'est utile. clin d’œil

Pour en revenir à la modification, j'avais fait appel à cette fonction uniquement dans le layout course.php du theme. Du coup, je pensais (à tord peut-être ?) qu'elle ne serait pas exécutée hors de ce contexte. As-tu constaté des soucis de ce côté-là ?


Seb