Bonjour,
Oui, j'avoue que la documentation n'est pas très fournie ni explicite.
En gros, ce plugin permet, via l'éditeur de texte et son extension (1) , d'insérer automatiquement une chaine de texte de type {generico: nom du filtre}. Ce filtre est un ensemble d'instructions HTML et/ou CSS et/ou javascript et/ou SQL qui va permettre d'effectuer une action plus ou moins complexe.
Des variables peuvent également être insérées, soit par l'utilisateur au moment de l'insertion ou de la modification du texte, soit via extraction au sein du script. Elles s'écrivent sous la forme @@variable@@.
Ici 2 variables vont être utilisées, une pour le décalage dans le temps entre la date de début du cours et celle voulue, une récupérée dans la base de données Moodle, la date de début du cours, stockée sous le standard Unix timestamp en millisecondes écoulées depuis le 01 janvier 1970, ex 1615022492 pour le 06/03/2021 à 09h21:32.
Algo:
- demande du décalage temporel voulu (par défaut 7 jours) et stockage dans une variable.
- transformation de cette durée en millisecondes
- récupération de la date stockée (déjà en millisecondes)
- ajout des 2 valeurs
- transformation en date humainement compréhensible et au format choisi, ici jj-mm-aaaa hh:mm
- insertion de cette chaine en lieu et place du filtre {GENERICO:le filtre}
traduction (scolaire) spécifique info pour GENERICO
Pour le "Body template" en HTML
<span id="@@AUTOID@@_start"></span>
@@AUTOID@@ va générer un #id unique, associé ici avec _start (pour pouvoir facilement l'identifier et modifier éventuellement son affichage via CSS (dans le script ou dans le thème)
Rubrique "variable defaults": la variable 'decalage' est définie par défaut à 7 (jours). Elle pourra être utilisée via le format @@decalage@@. Elle est demandée à l'insertion du filtre. (image 2) mais peut être modifiée à tout moment.
Le jeu de données spécifiques au cours est récupéré via la rubrique "Dataset Variables" en indiquant @@COURSE:id@@ et va permettre d'utiliser ces données via des variables prédéfinies telle que @@COURSE:startdate@@ pour la date de début du cours, ou @@COURSE:enddate@@ pour la date de fin si l'on veut jouer à l'envers (plus que XX jours avant la fin du cours)
Ensuite c'est du script pur dans la fenêtre de "Custom JS"
var ajoutJours = @@decalage@@ * 24 * 60 * 60; // nombre de millisecondes à ajouter
var dateEtape = parseInt(@@COURSE:startdate@@) + parseInt(ajoutJours); // la somme des 2 avec parseInt() ?
var format = {weekday: "long", year: "numeric", month: "long", day: "numeric", hour: "numeric", minute :"numeric"}; //la personnalisation du format de sortie
var dateEtape = new Date(dateEtape * 1000).toLocaleString('fr-FR', format); // la finalisation de l'encodage
if(@@COURSE:startdate@@){
$('#' + @@AUTOID@@ + '_start').text(dateEtape); // l'insertion du résultat dans la balise générée via @@AUTOID@@
}else{
$('#' + @@AUTOID@@ + '_start').text("non spécifiée"); // si aucune date de début de cours n'est définie, message d'avertissement
}
image : (1) insertion du filtre avec demande pour la variable décalage (2)
(3) ce que cela donne dans la fenêtre d'édition avec la possibilité de modifier (4) encore la valeur donnée à décalage
(5) résultat sur la page.
Ce script pourrait être adapté avec une condition supplémentaire pour utiliser soit la date de début, soit la date de fin du cours, et certainement optimisé par un javascript sachant.
Bon travail,
Jérôme.
ps: en glissant le fichier texte joint sur la case verte "Bundle" présente en haut à droite du formulaire de création de Generico, on remplace l'élément existant par les scripts contenus dans ce fichier.