Statut
Intégrée dans la version 4.7.0
Idée générale
Toujours dans mon idée plus large de supprimer les EXTERNALS, voici une POC pour la suppression du répertoire scr/.
J’ai donc créé une branche à partir de la branche 4.7.0 : https://adullact.net/scm/viewvc.php/openmairie/openmairie_exemple/branches/poc-remove-code-from-scr/
- Faire une modification la moins impactant possible pour l’existant.
- Les routes (urls) sont définies dans des propriétés de la classe application et sont donc surchargeables.
- Ajout d’une constante par ROUTE, les constantes sont définies à l’instanciation de la classe application.
- Utilisation de la constante partout.
Points déjà réalisés
- Modification du script app/index.php qui devient le point d’entrée unique pour remplacer les différents points d’entrée de scr/.
- Modification du script index.php pour qu’il redirige vers app/index.php?module=login plutôt que vers scr/login.php qui n’existe plus.
- Une méthode application::init_routes() est appelée dans le constructeur de la classe application.
- Cette méthode permet de définir des constantes du type
OM_ROUTE_FORM
à utiliser à la place de"../scr/form.php"
. - Remplacement de toutes les urls en dur par la constante.
- Mise à jour des tests.
- Suppression du répertoire scr/.
- Modification de la composition du tableau de bord en ajoutant l’url d’action dans le DOM pour récupération dans les fonctions javascript pour remplacer les urls en dur :
- https://adullact.net/scm/viewvc.php/openmairie/openmairie_exemple/branches/poc-remove-code-from-scr/core/obj/om_dashboard.class.php?r1=3927&r2=3926&pathrev=3927
- https://adullact.net/scm/viewvc.php/openmairie/openmairie_exemple/branches/poc-remove-code-from-scr/js/layout_jqueryui_after.js?r1=3927&r2=3926&pathrev=3927
Points problématiques
-
Dans les fichiers javascript js/*.js on trouve des appels à des URLs en dur vers scr/form.php, il en reste trois qui ne sont pas vus par les tests :
-
js/layout_jqueryui_after.js:
1473: $.getJSON( “…/scr/form.php?obj=om_sousetat&idx=0&action=5”, function( data ) {
=> Dans la barre d’outils de tinymce on récupère la liste des sous-états que l’on peut insérer
=> Vérifier si il est possible que l’URL provienne du DOM comme ça a été fait pour la composition du tableau de bord
=> Pas de test ? aucune des fonctions de la barre d’outil de tinymce n’est testée via robotframework pour des contraintes techniques -
js/layout_jqueryui_after.js:
1930: url: “…/scr/form.php?obj=om_requete&idx=”+field_select_type_value+"&action=4&contentonly=true",
=> Dans le formulaire de lettre type/état lorsqu’on sélectionne une requête (champ om_sql) une aide à la saisie permet d’afficher l’aide à la saisie des champs de fusion
=> Vérifier si il est possible que l’URL provienne du DOM comme ça a été fait pour la composition du tableau de bord
=> Pas de test ? non il faut en ajouter un -
/home/flo/liger_html/framework-openmairie/BR-4.7.0-poc-remove-code-from-scr/js/sig.js:
772: link = ‘…/scr/form_sig.php?obj=’+obj+’&idx=’+idx_sel+’&etendue=’+etendue+’&reqmo=’+reqmo+
=> Dans le module SIG mais je n’ai pas vérifié où
=> Vérifier si il est possible que l’URL provienne du DOM comme ça a été fait pour la composition du tableau de bord
=> Pas de test ? non aucune des fonctions de géolocalisation n’est testée, il va falloir attendre la prop0026 pour avoir des tests sur ce point : [intégrée] Prop0026 - Fiabiliser / pérenniser le module SIG
-
Points à améliorer
- Le terme module (
index.php?module=login
) a été choisi de manière assez arbitraire, si il y a d’autres propositions on est toujours à temps de changer. - La méthode application::view_main() devrait s’appuyer sur le tableau $routes_map défini dans application::init_routes()
Rétrocompatibilité envisagée
L’objectif est de supprimer complètement le répertoire scr/ du framework, il ne sera donc plus disponible du tout pour être récupérer en EXTERNALS via subversion.
Les applicatifs pourront soit faire la mise à jour soit conserver leur état actuel en :
-
ajoutant le répertoire scr/ directement dans leur SCM
-
surchargeant les propriétés suivantes dans
obj/utils.class.php
:protected $route__dashboard = "../scr/dashboard.php?"; protected $route__login = "../scr/login.php?"; protected $route__logout = "../scr/logout.php?"; protected $route__password = "../scr/password.php?"; protected $route__password_reset = "../scr/login.php?mode=password_reset"; protected $route__tab = "../scr/tab.php?"; protected $route__soustab = "../scr/soustab.php?"; protected $route__form = "../scr/form.php?"; protected $route__sousform = "../scr/sousform.php?"; protected $route__tab_sig = "../scr/tab_sig.php?"; protected $route__form_sig = "../scr/form_sig.php?"; protected $route__module_edition = "../scr/edition.php?"; protected $route__module_import = "../scr/import.php?"; protected $route__module_reqmo = "../scr/reqmo.php?"; protected $route__module_gen = "../scr/gen.php?";
-
surchargeant les variables suivantes dans
tests/resources/resources.robot
:${OM_ROUTE_DASHBOARD} scr/dashboard.php?
${OM_ROUTE_LOGIN} scr/login.php?
${OM_ROUTE_LOGOUT} scr/logout.php?
${OM_ROUTE_PASSWORD} scr/password.php?
${OM_ROUTE_PASSWORD_RESET} scr/login.php?mode=password_reset
${OM_ROUTE_TAB} scr/tab.php?
${OM_ROUTE_SOUSTAB} scr/soustab.php?
${OM_ROUTE_FORM} scr/form.php?
${OM_ROUTE_SOUSFORM} scr/sousform.php?
${OM_ROUTE_FORM_SIG} scr/form_sig.php?
${OM_ROUTE_TAB_SIG} scr/tab_sig.php?
${OM_ROUTE_MODULE_EDITION} scr/edition.php?
${OM_ROUTE_MODULE_GEN} scr/gen.php?
${OM_ROUTE_MODULE_REQMO} scr/reqmo.php?
${OM_ROUTE_MODULE_IMPORT} scr/import.php?
${OM_PDF_TITLE} form -
en remplaçant les anciennes propriétés éventuellement surchargées :
application::$url_dashboard devient application::$route__dashboard
application::$url_password_reset devient application::$route__password_reset