Bonsoir Daniel,
je suis passé sur Moodle 3.9 récemment en passant à Adaptable, car le template Essential a été abandonné. Je suis comme toi tombé sur le problème des
étiquettes Bootstrap (les Modal) que nous avons beaucoup utilisé dans des
leçons pour se substituer aux
notes de bas de page.
Ces éléments partaient dans tous les sens car sous Boostrap 4.0, la programmation a changé, il y a des <div> supplémentaires pour la gestion de la fenêtre pop-up (et donc aussi pour les fermer). Aussi, j'ai étudié le code pour voir ce qu'il y avait en plus ou en moins, et nous avons tout simplement effectuer des
requêtes SQL de type REPLACE pour chercher des morceaux de code et les remplacer pour incorporer ces <div> en plus. Globalement, cela a bien fonctionné, même si l'utilisation des fois un peu hasardeuse de cet outil a donné quelques surprises.
1) Ouverture du modal :
Dans l'ancien code, un <div> ouvrait directement le Modal et enchainait avec le header :
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
Dans le nouveau code donné par Eric plus haut, de nouvelles lignes sont apparues :
<div id="exampleModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModallab" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
Donc on a monté une
requête qui permette d'insérer ces deux <div>. Voici l'exemple pour remplacer dans une
leçon donnée :
UPDATE prefix_lesson_pages
SET contents = replace (contents,
'<div class="modal-header">',
'<div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header">')
WHERE lessonid = XXX
A noter que le class a aussi changé. On pourrait alors faire une requête pour faire disparaitre le "hide" en trop. Mais comme cela n'avait pas d'incidence, je n'y ai pas touché.
2) Fermeture du Modal
Même procédure : je recherche la fin du Modal, et je le remplace pour ajouter les deux <div> qui ont été rajoutés.
Le Modal termine par un petit bouton permettant de fermer la fenêtre et se conclue par la fermeture des <div> :
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
J'ai alors effectué une requête en prenant en compte la balise de fermeture du bouton. A nouveau, cet exemple permet de modifier une leçon :
UPDATE mdl_lesson_pages
SET contents = replace (contents,
'</button></div>',
'</button></div></div></div>')
WHERE lessonid = XXX
Si les Modal sont à remplacer dans des pages libres, dans des étiquettes etc., il est alors aisé chercher la table et le champ concerné et de lancer une requête de remplacement.
Comme je le disais par contre :
tout dépend si les Modal ont été codés proprement dès le départ. Si le code a été modifié n'importe
comment, on ne peut pas s'appuyer sur une chaine de caractères sûre pour effectuer le remplacement. Ce sont les petites surprises dont je parlais. Mais en tout cas, ces deux
requêtes nous ont bien aidées !
Olivier