Ajouter bouton pour chaque cours

Ajouter bouton pour chaque cours

par Benjamin Budet,
Nombre de réponses : 10

Bonjour à tous,

Je cherche à ajouter un bouton pour chaque cours, un bouton de type "Classe Virtuelle" qui ferait une redirection sur des URL générées "a la volée". Je ne pense pas que la création de ce bouton ne soit compliqué mais étant nouveau sur Moodle je n'ai pas (encore) trouvé de tuto ni aide sur ce problème, en avez vous ?


Merci,


Benjamin

Moyenne des évaluations  -
En réponse à Benjamin Budet

Re: Ajouter bouton pour chaque cours

par stephane ngov,

Bonjour,


Vous souhaitez juste mettre un bouton qui permet d'aller à la page web classe virtuelle ?

Si c'est une url qui ne change pas, ajouter des lien dispo sur toute le site le menu déroulant ?

vous pouvez utiliser le menu déroulant dans

moodle/admin/settings.php?section=themesettings


Si c'est juste dans les pages de cours vous pouvez par exemple utiliser jquery , injecter le

votre balise <a href > dans le DOM et détecter avec une regex si l'url contient


http://localhost/course/view.php



En réponse à stephane ngov

Re: Ajouter bouton pour chaque cours

par Benjamin Budet,

Bonjour,


Le bouton sert à lancer des URL que je créer aléatoirement, j'ai commencé le script php voila ma démarche : 


1) Je récupère l'ensemble des classes :

$courses = get_courses('all');

2) Variable random : 

 $randomnumber = rand();

3) Pour chaque cours je veux ajouter un bouton "classe virtuelle" avec mon URL+randomnumber :

      echo " <form method="link" action="https://VPS/'$randomnumber'"> <input type="submit" value="cliquez ici pour accéder à la classe virtuelle"></form>;">



Qu'en pensez vous ?


J'ai commencé ce script en php mais je n'ai pas bien compris comment l'ajouter à mon Moodle, faut il créer un Plugin "vide" puis y ajouter mon script ?


Merci beaucoup,


Benjamin


En réponse à Benjamin Budet

Re: Ajouter bouton pour chaque cours

par Jérôme DEMIAUX,
Avatar Traducteurs

Bonjour Benjamin,

Je vais la jouer à la Coluche, si tu nous expliques ce que tu cherches à faire, on t'expliquera comment t'en passer, ou si l'on peut faire autrement.

Je ne parle pas de l'insertion d'un bouton, mais plutôt du but recherché, et pourquoi. Sans ces éléments, le réponse ne sera que technique alors qu'elle pourrait être orientée pédagogie.

Jérôme.

En réponse à Jérôme DEMIAUX

Re: Ajouter bouton pour chaque cours

par Benjamin Budet,

Bonjour Jérôme, 


L'objectif est d'ajouter un bouton dans chaque cours, ce bouton doit orienter l'utilisateur sur une "classe virtuelle" cependant l'URL de la classe virtuelle ne doit jamais être la même pour des raisons de sécurité. Le système de classe virtuelle est hébergé sur un VPS accessible via : https://mon_url_vps/classe_virtuelle

il est donc obligatoire de créer une variable aléatoire afin de modifier l'URL à chaque fois, voici les différentes étapes que je cherche à implementer : 

1) Récupérer les cours dans un tableau

2) Créer une variable entière random

3) Créer le bouton "classe virtuelle" avec appel de fonction 4)

4) fonction qui ajoute le random à mon URL : https://mon_vps_url/variable_random


C'est tout, est-ce que cela parait plus explicite ?


Cordialement,


Benjamin

En réponse à Benjamin Budet

Re: Ajouter bouton pour chaque cours

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

Bonjour Benjamin,

Si le bouton doit être affiché dans le cours, ce que je vous suggère :

  • Créer votre fonction au sein de votre thème dans le fichier /theme/votretheme/lib.php
  • Appeler cette fonction dans le layout correspondant au cours /theme/votretheme/layout/course.php à l'endroit désiré

Pour la création de la fonction, AMHA le plus simple serait de :

  • Passer en paramètre dans la fonction une information unique liée au cours (id, nom court) cette information sera facilement récupérable à partir du layout course.php du cours.
  • Concaténer cette information unique avec un mot clé que vous aurez composé (pour la sécurité)
  • Hasher/Crypter cette chaîne nouvellement créer afin de générer votre variable aléatoire (qui sera unique pour chaque cours)
  • Générer le lien via un bouton en utilisant Bootstrap

Vous trouverez un exemple d'utilisation d'une fonction de thème à adapter dans ce fil de discussion.

Attention, si vous utilisez un thème de base de Moodle ou un thème développé par la communauté, il faudra veiller à remettre votre script à chaque mis à jour de Moodle.


Seb

En réponse à Sébastien Mehr

Re: Ajouter bouton pour chaque cours

par Benjamin Budet,

Bonjour Sébastien,

Déjà merci beaucoup pour votre aide mais j'ai 2-3 questions, mon Moodle possède le thème Bootstrap donc le fichier lib.php se trouve dans le dossier 'more' de l'image plus bas, est celui la dont vous parlez ? Pareil pour le fichier course.php je ne le trouve pas..

Pour 

  • Générer le lien via un bouton en utilisant Bootstrap

Je peux directement l'intégrer dans une balise html ?


Merci,


Benjamin


Screenshot

En réponse à Benjamin Budet

Re: Ajouter bouton pour chaque cours

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

Bonjour,

Chaque dossier présent dans le répertoire theme correspond à un thème différent qui contient sa propre librairie lib.php. Ainsi, si vous utilisez le thème Bootstrapbase dans votre sélecteur de thème, c'est la libraire correspondant à ce thème qu'il faut modifier.

Il se peut qu'un thème ne possède pas de fichier lib.php, tout simplement parce qu'il n'utilise pas de fonctions personnalisées dans son affichage. Il est donc possible de créer ce fichier lib.php (à placer à la racine du dossier du thème).

Le fichier course.php est un layout, à savoir une sorte de template utilisé uniquement sur une page précise. La règle de développement d'un thème de Moodle veut que tous les layouts soient stockés dans un dossier layout dans le dossier du thème. Vous trouverez l'ensemble des layouts possibles sur cette page :

https://docs.moodle.org/dev/Themes_overview#The_different_layouts_as_of_21st_April_2013

Dans ma proposition, nous modifions le fichier course.php car il correspond à l'affichage d'un espace de cours Moodle.

Il se peut également qu'un layout précis ne figure pas dans le dossier d'un thème car celui-ci utilise par défaut un layout/template commun pour chaque page. C'est le cas du thème Boostrapbase, qui en fonction de sa configuration d'affichage en 1, 2 ou 3 colonnes possède un layout associé qui ne tient pas compte d'un affichage aussi fin que celui proposé dans la documentation.

Cela n'empêche pas d'en créer un soit-même afin que celui-ci prenne "la priorité" sur celui par défaut. Pour ne pas faire d'erreur, vous pouvez vous contenter de :

  • copier un layout de base (par exemple celui de 3 colonnes)
  • faire vos ajouts
  • le renommer course.php et l'enregistrer dans le dossier /layout

Vos modifications apparaîtront ainsi uniquement sur l'affichage d'une page de cours.

Concernant ma remarque sur l'utilisation d'un bouton Bootstrap, je faisais référence à l'utilisation des class css permettant la création d'un bouton. Vous trouverez toutes les infos nécessaires sur la page de documentation de Bootstrap version 2.3.2 (utilisée par Bootstrapbase) :

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

Comme vous pouvez le constatez (et je m'en rend compte en apportant ces longues explications grand sourire), l’ajout de fonctionnalité à un thème Moodle peut-être complexe à appréhender aux premiers abords. A voir donc si le jeu en vaut la chandelle pour la création de votre bouton ou si la solution proposée par Jérôme ne serait pas plus rapide dans votre cas.


Seb

Moyenne des évaluations Utile (2)
En réponse à Benjamin Budet

Re: Ajouter bouton pour chaque cours

par Jérôme DEMIAUX,
Avatar Traducteurs

Bin tout ça, tu l'avais déjà expliqué avant.

Mais il existe encore des points sombres.

C'est quoi une classe virtuelle ? Quel est le système utilisé ? Et si l'url est aléatoire, comment les personnes vont-elles se retrouver ensemble dans cette classe. Où alors c'est l'URL pour un cours qui est chaque fois différente mais reste constante pour ce cours ? Mais alors pourquoi un bouton et ne pas donner directement le lien ?

J'avoue que je n'arrive pas à cerner le concept (pas du bouton).

Jérôme.

En réponse à Jérôme DEMIAUX

Re: Ajouter bouton pour chaque cours

par Benjamin Budet,

Bonjour,

La classe virtuelle dont je parle est crée via Jitsi, nous pouvons donc créer des salles comme nous le voulons comme sur ce site : https://meet.jit.si/ ainsi si je veux créer la salle moodle de ce site je n'ai juste qu'a cliquer sur https://meet.jit.si/moodle 


L'URL est aléatoire pendant un laps de temps de par exemple une heure, cela oblige l'utilisateur à passer sur notre plateforme. Quand un cours est généré, l'utilisateur pourra s'enregistrer via le calendrier à la classe virtuelle afin qu'à tel heure et tel jour il puisse accéder à ce bouton. Donc pendant une heure, le bouton "Classe virtuelle" sera disponible à l'adresse https://meet.jit.si/URL où 'URL' est un chiffre random.


Est-ce plus clair ? 


Cordialement,


Benjamin

En réponse à Benjamin Budet

Re: Ajouter bouton pour chaque cours

par Jérôme DEMIAUX,
Avatar Traducteurs

Oui, presque sourire Merci pour ces éclaircissements.

Je suppose que le passage obligé par le site est à fin de statistiques ou autres. Pourquoi pas.

Une solution sans programmation Moodle (afin de faciliter la maintenance et les mises à jour) serait peut-être d'insérer un lien fixe par cours, genre idCours.mondomaine,  et de jouer avec une table de redirection en dehors de Moodle où idCours.mondomaine renverrait vers meet.jit.si/URLdelaSalleVirtuelleDuCoursId.

On ne touche pas au thème, sa librairie, le code Moodle, ce qui rend la solution portable à n'importe quelle plateforme et n'importe quel thème.

Jérôme.

ps: pas trop de soucis avec jitsi ? c'est la solution choisie par Renater pour proposer ses solutions de salles virtuelles et les premiers essais que l'on avait effectués n'était pas très concluant, surtout au dessus de 6/7 personnes.