Date de début et fin du cours

Re: Date de début et fin du cours

par Jérôme DEMIAUX,
Nombre de réponses : 12
Avatar Traducteurs

Finalement, j'ai tenté.
Voici le résultat très scolaire dans l'écriture du javascript qui pourrait être optimisé mais cela permet de bien suivre la démarche.
Remarques:

  • l'idée est de travailler en millisecondes puisque l'on récupère la date de début du cours dans cette unité;
  • sans les parseInt() je n'obtiens jamais la bonne addition et donc jamais la bonne date.
  • la variable par défaut du décalage est paramétrée à 7 ou 14 ou 21 mais l'on peut choisir n'importe quel nombre de jours.
  • il ne faut pas oublier la variable dans dataset pour récupérer les valeurs liées au cours.
  • j'attaque un span mais cela pourrait être n'importe quelle balise personnalisée pour jouer avec les règles CSS derrière, soit dans le filtre lui-même, soit, la meilleure méthode je pense, via un ajout au thème d'affichage choisi pour le cours.

Jérôme.

Moyenne des évaluations Utile (2)
En réponse à Jérôme DEMIAUX

Re: Date de début et fin du cours

par Jean Vouillon,
Bonjour Jérôme,

Je tiens à vous remercier d'avoir pris le temps de développer et tester un template qui me permette d'arriver à ce que j'espère.
J'ai pris le temps de regarder plusieurs vidéos pour mieux comprendre comment ce plugin fonctionne. Je me suis rendu compte que le niveau exigé en java script était bien supérieur à mes compétences.
Néanmoins, j'ai pu tester 3 des templates fournis avec Generico (Welcome User, Lightbox et flipclock) et j'arrive à afficher le résultat dans une page de cours.

J'ai essayé ensuite d'adapter le fichier que vous m'avez envoyé et j'avoue me perdre dans le processus de ce que je dois prendre du code pour le mettre dans les bons champs du plugin.
Puis-je humblement vous demander si vous pourriez m'indiquer les étapes que vous avez suivies pour tester le code ?

Merci encore pour le temps passé.
Bonne journée,
Claude.
En réponse à Jean Vouillon

Re: Date de début et fin du cours

par Jérôme DEMIAUX,
Avatar Traducteurs

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.

Annexe date2date_02a.jpg
Moyenne des évaluations Utile (5)
En réponse à Jérôme DEMIAUX

Re: Date de début et fin du cours

par Jean Vouillon,

Bonjour Jérôme,

C'est un véritable guide d'apprentissage que vous avez pris le temps de rédiger ! Un grand merci car grâce à vos explications j'ai pu importer votre script et l'adapter à mes besoins.

En regardant vos captures d'écran, je constate qu'après l'installation du plugin, je n'ai pas le bouton G(enerico) dans la barre de fonctions. Peut-être est-ce dû à ma version de moodle qui est la 3.7 ou bien le thème que nous utilisons qui est Cognitio ?

Quoi qu'il en soit, j'ai pu, en glissant votre script sur le bouton vert Bundle l'importer sans encombre.

Je n'ai pas besoin des informations d'heures car mon but est d'afficher en dessous de la barre de titre à quelle intervalle de dates correspond la semaine affichée.

Ce qui donne la ligne var format = {weekday: "long", year: "numeric", month: "long", day: "numeric"};

Quand j'appelle le script dans un cours gabarit dont la date de début de cours est au 1 mars 2021

La semaine 1 :


La semaine 2  :

etc... jusqu'à la 15e et dernière semaine.

C'est super car c'est une chose de moins à gérer manuellement à chaque rentrée ce qui représentait un risque d'erreur important.


Un grand merci Jérôme pour votre aide !

J'espère que votre guide servira à d'autres dans la mise en place du plugin Generico sur leur plateforme Moodle.

À bientôt,

Claude.

En réponse à Jean Vouillon

Re: Date de début et fin du cours

par Jérôme DEMIAUX,
Avatar Traducteurs

Bonjour,

De mémoire, le plugin ajoute un bouton dans l'éditeur Atto mais il faut cependant l'activer et/ou le positionner dans la barre d'outils.
Administration du site > Plugins > Editeurs > Réglages barre Atto : il faut rajouter le terme generico à l'endroit souhaité.

En regardant le résultat obtenu, j'espère que vous avez adapté le script à l'affichage simultané de toute la phrase "du ... au ..." afin de n'insérer qu'une fois le filtre.

Jérôme.

Moyenne des évaluations Utile (1)
En réponse à Jérôme DEMIAUX

Re: Date de début et fin du cours

par Jean Vouillon,
Bonjour Jérôme,

merci pour le suivi encore une fois !

Je suis allé voir dans les régalges de la barre Atto mais je ne vois pas dans la table le plugin Generico et ne peux l'ajouter.


Concernant le script, dans un premier temps, j'ai appelé 2 fois la fonction ce qui n'est pas l'idéal...
   Du {GENERICO:type ="assign_etapes",decalage="0"} au {GENERICO:type ="assign_etapes",decalage="6"}

J'ai ensuite tenté d'adapter le script afin qu'il puisse gérer ces 2 dates. Quand je l'appelle dans une page, le cours "plante" et je n'ai plus accès au mode édition des pages. Il doit y avoir sûrement une erreur mais je ne vois pas. Je vous joins le script en pièce jointe (assign_etapes2) si jamais vous avez le temps d'y jeter un oeil.

Savez-vous s'il est possible d'appeler la fonction dans une barre de titre ?
J'ai activé dans le plugin "content and headings", mais après quelques essais, je ne suis pas arrivé à utiliser Generico dans un titre.

Merci beaucoup Jérôme pour votre soutien.
Claude.


En réponse à Jean Vouillon

Re: Date de début et fin du cours

par Jérôme DEMIAUX,
Avatar Traducteurs

Bonsoir,

En fait, il s'agit d'une extension supplémentaire "Generico Icon"
Pour le script, il va falloir que je trouve 5 minutes triste

Moyenne des évaluations Utile (1)
En réponse à Jérôme DEMIAUX

Re: Date de début et fin du cours

par Jérôme DEMIAUX,
Avatar Traducteurs

Bonjour,

Une version à l'arrache (à optimiser donc) pour l'affichage de:

texte du ... au ...  (texte étant variable)

Le calcul est fait par rapport à la date de début du cours, le décalage initial et la durée de la période sont paramétrables, pour tenir compte de congés éventuels, de périodicité différente qu'une semaine ...
Fichier et résultats joints.

J.

Annexe periodic_0.2.0.jpg
Moyenne des évaluations Utile (3)
En réponse à Jérôme DEMIAUX

Re: Date de début et fin du cours

par Jean Vouillon,
Bonjour Jérôme,

Votre dev répond parfaitement à ce que je voulais faire avec en plus la possibilité d'inclure des périodes de relâches. C'est fantastique !

J'ai également pu installer Generico Icon en suivant vos instructions. L'ciône se place à la suite des titres, gras...
style1 = title, bold, italic, generico

Encore une fois, un grand merci Jérôme pour votre aide !

Claude.
P.S. : J'ai suivi les conseils de Patrick et ai voté Utile chacune de vos publications sourire
Moyenne des évaluations Utile (1)
En réponse à Jean Vouillon

Re: Date de début et fin du cours

par Jean Vouillon,
Bonjour @Jérôme DEMIAUX,

Après une petite semaine d'utiisation du plugin Generico dans un des cours sur lequel je suis en train de travailler, je constate après avoir fait une modification dans le cours, que le bouton d'ajout d'activité est "indisponible". Il ne m'est pas possible de cliquer dessus et d'accéder au menu d'activités à ajouter.

J'ai cherché sur plusieurs forums et la seule manière que j'ai trouvé pour le rendre fonctionnel à nouveau est de purger les caches dans le thème. Cette opération prend 2-3 minutes à chaque fois.

Si je comprends bien, ce bouton fait appel à du javascript pour appeler ce menu.
Est-il possible que le fait d'ajouter ce bout de code en javascript via Generico puisse perturber le fonctionnement standard de Moodle ?

Dans les cours qui n'utilisent pas Generico, je n'ai pas ce problème.

Merci pour votre retour et bonne journée,
Claude.
En réponse à Jean Vouillon

Re: Date de début et fin du cours

par Jérôme DEMIAUX,
Avatar Traducteurs

Bonjour,

Effectivement, une mauvaise écriture ou utilisation du filtre pourraient interférer avec le fonctionnement standard de Moodle et/ou un affichage correct du thème utilisé.

Reste à isoler la source de l'erreur. Une mauvaise écriture du filtre, un mauvais nettoyage d'un élément ayant utilisé une ancienne version, une balise oubliée ou ajoutée automatiquement par l'éditeur...

A tester également lors de la prochaine indisponibilité, le rebasculement vers le thème de base Boost. D'ailleurs quel thème est utilisé ?

La désactivation du filtre Generico spécifiquement pour ce cours (administration du cours > filtre) pourrait aussi débloquer temporairement la situation sans vider tous les caches.

L'ajout du même filtre dans un autre cours produit-il le même dysfonctionnement, si oui c'est le filtre, si non c'est plutôt un mauvais nettoyage.

Y-a-t-il un seul filtre ou plusieurs ? Pouvez vous les inclure dans un prochain message.

Bref, pas de réponse toute faite mais une batterie de tests à effectuer.

Jérôme.

En réponse à Jean Vouillon

Re: Date de début et fin du cours

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

Bonjour Claude,
Si tu souhaites "remercier" Jérôme ou d'autres contributeurs pour leurs réponses qui ont pu te mettre sur la voie, tu peux « Voter "Utile" », pour guider les prochains vers une résolution de problèmes similaires.

Voter Utile, ça te rend Utile !

À ton tour, tu aideras cette communauté 😉

À bientôt,
Patrick

Moyenne des évaluations Utile (2)