Afficher la date de remise et la date limite d'un devoir sur un calendrier

Re: Afficher la date de remise et la date limite d'un devoir sur un calendrier

par mimi nom,
Nombre de réponses : 5

Bonjour,

Je vous remercie pour la réponse, c'est intéressant, vous m'apprenez quelques choses cela dit, ce qui m’intéresse est que cela soit fait automatiquement, alors que la, c'est à l'enseignant de faire la configuration, je ne suis pas sur que tous les enseignants vont l'appliquer donc, je ne pourrai pas afficher aux étudiants pour leur dire qu'ils peuvent trouver toutes les dates limites en accédant à leur calendrier. Mais je pourrai donner plus de précisions dans l'affichage pour ne pas les induire en erreur. J'ai pensé aussi aux notifications (voir les captures d'écran jointes). Je vais faire des tests pour voir si les étudiants sont notifiés lorsque la date de remise et la date limite sont activées.



Annexe Notifications_1.png.png
Annexe Notifications.png
En réponse à mimi nom

Re: Afficher la date de remise et la date limite d'un devoir sur un calendrier

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Bonjour,

Pour que la date limite apparaisse comme un événement dans le calendrier, il faut programmer ce nouvel événement dans le code moodle.

Vous trouverez en annexe à ce message un fichier locallib.php à déposer pour remplacer le fichier mod/assign/locallib.php de moodle (version 3.9 ou 3.10)
J'ai utilisé le fait que l'événement ASSIGN_EVENT_TYPE_CLOSE y était défini sans y être programmé.
J'ai aussi utilisé la chaîne existante 'cutoffdatecolon' du paquetage de langue que l'on peut éventuellement personnaliser.

Les lignes ajoutées sont les lignes 1405 à 1417 :

        $eventtype = ASSIGN_EVENT_TYPE_CLOSE;
        if ($instance->cutoffdate) {
            $event->name = get_string('cutoffdatecolon', 'assign', $instance->name);
            $event->eventtype = $eventtype;
            $event->timestart = $instance->cutoffdate;
            $event->timesort = $instance->cutoffdate;
            $select = "modulename = :modulename
                       AND instance = :instance
                       AND eventtype = :eventtype
                       AND groupid = 0
                       AND courseid <> 0";
            $params = array('modulename' => 'assign', 'instance' => $instance->id, 'eventtype' => $eventtype);
            $event->id = $DB->get_field_select('event', 'id', $select, $params);
Pour un devoir existant avec une date limite, il faudra retourner sur la page des paramètres de ce devoir et cliquer sur "Enregistrer" pour que l'événement de la date limite soit enregistré et apparaisse dans le calendrier.

Christian



En réponse à Christian Bocquet

Re: Afficher la date de remise et la date limite d'un devoir sur un calendrier

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Merci Christian pour cette proposition de modification de code.
Par contre, que se passe-t-il si on modifie ultérieurement les paramètres du devoir ? Est-ce que la date est modifiée ou y en a-t-il 2 ? Et si on supprime le devoir ? 🤔
Je ne remets pas en cause ta proposition mais je serais surpris que l'astuce que tu proposes soit suffisante, bien qu'intéressante et ingénieuse 😊

Patrick
En réponse à Patrick Lemaire

Re: Afficher la date de remise et la date limite d'un devoir sur un calendrier

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Bonjour Patrick,

Avant de proposer une modification de code, je teste. J'avais vérifié que tout se passe bien si on modifie la date et c'est le cas : l'événement n'est pas créé en double et vient s'afficher à la nouvelle date dans le calendrier.
Je n'avais pas vérifié si on supprime le devoir, et je viens de le faire : les deux événements date de remise et date limite n'apparaissent plus dans le calendrier. Si on restaure le devoir, ni la date de remise ni la date limite ne réapparaissent; il faut retourner sur la page des paramètres et enregistrer pour que les événements réapparaissent dans le calendrier.

Le code utilisé pour créer et gérer l'événement ASSIGN_EVENT_TYPE_CLOSE est une copie de celui de l'événement ASSIGN_EVENT_TYPE_DUE (date de remise). Il semble bien d'après les tests qu'ils se comportent de la même façon.

Christian

Moyenne des évaluations Utile (2)
En réponse à Christian Bocquet

Re: Afficher la date de remise et la date limite d'un devoir sur un calendrier

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour Christian,

Loin de moi l'idée de douter de la qualité de tes propositions, bien au contraire.
Mais parfois, on oublie certains détails. Je tenais à m'assurer que ces points avaient bien été testés et cette précision me semble utile.

En tout cas, je prends note pour d'éventuels développements 😉

Bien à toi,
Patrick
En réponse à Patrick Lemaire

Re: Afficher la date de remise et la date limite d'un devoir sur un calendrier

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
Bonjour

Ne pourrait-on pas créer un petit plugin "local" pour ajouter cet élément-là de façon plus pérenne ?
ou de le donner dans le tracker pour amélioration ?

En sachant qu'il y a des perspectives déjà avancées pour la 3.11... sourire
https://moodle.org/mod/forum/discuss.php?d=418329#p1686171