Lorsque les sous-formulaires d’un objet sont affichés en onglets, ces derniers sont construits comme une balise HTML <a>
dont l’attribut href est par défaut le lien vers le sous-tableau. Un retraitement est effectué par le layout : il supprime le href pour charger le lien en AJAX lors du clic sur l’onglet.
Depuis le fichier .inc d’une classe il est possible de surcharger le lien des onglets. Cette fonctionnalité n’est pas documentée dans le guide du développeur mais elle est utilisée dans openADS. Après chaque surcharge du lien on rajoute un &
pour que le framework puisse additionner les paramètres idx et retourformulaire. Ce qu’il fait, mais en les préfixant par ?
au cas où le lien surchargé ne contiendrait aucun paramètre.
Le premier paramètre ajouté par le framework est retourformulaire. De ce fait si l’on passe un ou plusieurs paramètres dans la surcharge du lien et que l’on oublie retourformulaire, alors le code est cassé : le paramètre ?retourformulaire n’est, à juste titre, employé nulle part.
Exemple d’une mauvaise surcharge :
"…/scr/form.php?obj=employe&action=4&idx=0&“
Ce qui rend après traitement :
”…/scr/form.php?obj=employe&action=4&idx=0&?retourformulaire=entreprise&idxformulaire=2"
Je propose de créer un ticket de bug sur la forge de l’Adullact qui consisterait à :
- mettre à jour la documentation (le lien surchargé doit se terminer par
?
ou par&
) - supprimer le
?
dans la concaténation du lien faite par le framework
Cette solution doit être testée mais devrait être rétrocompatible puisque les liens surchargés se terminent par &
et affectent la même valeur que la vue formulaire à retourformulaire : $_GET['obj']
.