A voir la réponse dans cette discussion
https://moodle.org/mod/forum/discuss.php?d=418160#p1685148
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.
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);
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