Bonjour,
Toujours dans mon idée plus large de supprimer les EXTERNALS, voici une POC pour le déplacement de certains scripts présents dans le répertoire spg/ dans le répertoire core/.
J’ai donc créé une branche à partir de la branche 4.7.0 :
https://adullact.net/scm/viewvc.php/openmairie/openmairie_exemple/branches/poc-snippet-form/
##Statut
Fonctionnelle à part les trois points problématiques (voir plus bas)
##Idée générale
Certains widgets de formulaire (méthodes de la classe formulaire
du script core/om_formulaire.class.php
) ont besoin de de faire des appels à des scripts PHP via des requêtes AJAX ou via des popup. Ces scripts PHP sont aujourd’hui stockés dans le répertoire spg/ :
- localisation.php
- combo.php
- file.php
- upload.php
- autocomplete.php
- voir.php
Dans l’optique de supprimer le répertoire spg/, l’idée est de déplacer le code de ces scripts snippets de formulaire dans la classe formulaire
du script core/om_formulaire.class.php
dans des méthodes snippets de formulaire préfixées par snippet__
.
Points réalisés
- Déplacement du code dans les méthodes formulaire::snippet__*()
- Suppression des scripts spg/ concernés
- Ajout d’un point d’entrée
application::view_form_snippet()
- Modification de
formulaire::__construct()
: le premier paramètre est de nouveau utilisé et permet de sélectionner le mode d’instanciation de la classe soit vue de snippets de formulaire soit construction de formulaire - Ajout d’une méthode permettant de gérer la vue des snippets de formulaire :
formulaire:view_snippet()
- Remplacement de tous les appels vers
spg/*.php
parscr/spg.php?snippet=*
Points à améliorer
- Le point d’entrée
scr/spg.php
est à renommer, est-ce que ça a du sens de l’intégrer au point d’entréescr/form.php
?
Points problématiques
- La principale problématique est les appels en dur à spg/SNIPPET FORM.php dans les scripts javascript. C’est la même problématique que celle rencontrée ici : [intégrée] Prop0034 - Supprimer le répertoire scr/
##A voir
Pour une meilleure lisibilité, il serait également intéressant de renommer également les méthodes widgets de formulaire en les préfixant par widget__
. En plus du renommage des méthodes, la seule modification serait dans méthode formulaire::afficherChamp() qui appelle les méthodes widgets de formulaire.