Edition des liens - bizarrerie
Eric Lupinacci <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <CAM6W4baTN-NvgFBHdODAiHsD1VN+FqF7GJ8tfsa67SFvvS40hQ@mail.gmail.com> |
Hello, En reproduisant la gestion des liens pour l'affectation des types de plugin aux plugins je suis tombé sur un truc que je trouve bizarre. Dans le formulaire editer_liens on affiche la liste des objets liés (par exemple les mots) avec le bouton "retirer ...". Ce bouton est une balise <button> dont : - le name vaut : "supprimer_lien[mot-#ID_MOT-#OBJET-#ID_OBJET]", où supprimer_lien indique l'action à exécuter et le contenu entre crochets la liste des arguments de l'action. - la value vaut étrangement "X". Dans le PHP, pour le "traiter", on trouve le code d'exécution du bouton qui : - soit appelle une action dont le nom est bien compliquée, - soit déroule un code générique sans faire appel à une action. J'avoue ne pas trop comprendre pourquoi d'ailleurs on ne passe pas par une action pour sécuriser tout ça et pourquoi une telle différence de traitement. Si l'action existe, on lui passe le _request(bouton) du fameux bouton qui par magie contient un tableau associatif dont l'index correspond aux arguments entre crochet et la valeur "X" soit par exemple "mot-#ID_MOT-#OBJET-#ID_OBJET" = "X". L'action qui s'exécute récupère donc un argument $arg qui contient exactement le tableau associatif précédent. De fait, si on fait bêtement un explode() pour récupérer les arguments on récupère null pour tous car on fait l'explode sur "X" et pas sur l'index. On a donc un comportement totalement différent de celui de la plupart des actions. Je ne sais pas si c'est voulu ou si c'est un cas qui n'a jamais vraiment été testé mais je trouve ce fonctionnement pas très heureux. Ne faudrait-il pas : - soit passer la clé du tableau à l'action (en utilisant un key() par exemple) - soit changer le name et la value du button si c'est possible (j'avoue que je ne comprends pas bien pourquoi le bouton a un tel name et une telle value. Si quelqu'un peut m'expliquer. Merci d'avance ++ Eric