Attention depuis quelques commits, n'importe quelle URL donne tout le
temps le même cache... vérifié en urls propres et arbo.
Apparemment c'est parce qu'il n'y a plus nettoyer_uri() dans le contexte...
Corrigé à l'arrache par [12550]. Emmanuel je crois qu'il faut que tu
regardes de plus près ce qui avait sauté.
C'est corrigé dans [12551] et ça m'a permis de découvrir qu'il y avait
beaucoup de caches identiques car les squelettes inclus se nommaient AUSSI
en fonction du nom de l'incluant ce qui était un tort puisque leur contexte
suffit à les caractériser. C'est corrigé dans
http://trac.rezo.net/trac/spip/changeset/12552
mais comme il y est dit il reste des doublons, en particulier le formulaire recherche.
Examen fait, dans formulaire.php qu'on construit des contextes parfois trop précis.
J'ai essayé d'unifier certains choses mais ça reste obscur, en particulier le paramètre "action"
rajouté dans le contexte par cette fonction sert parfois de valeur à l'attritut "action" de la balise "form" visée,
et parfois d'argument à ACTION_FORMULAIRE, auquel cas l'attribut action va voir ailleurs.
Voici la liste sans répétition des 44 utilisations de "action" dans les formulaires de la dist et du privé:
#ACTION_FORMULAIRE{#ENV{action}}
#ACTION_FORMULAIRE{#ENV{url_post}}
<form action="#ENV{auth_http}" method="get">
<form action="#ENV{lien}" method="get"><div>
<form action="#ENV{url}#formulaire_forum" method="post" class="noajax">
<form action="#ENV{url}#formulaire_forum" method="post" enctype='multipart/form-data'><div>
<form id="oubli_form" action="#ENV{action}" method="post">
<form id='formulaire_login' method='post' action='#ENV{action}' enctype='multipart/form-data'>
<form method="post" action="#ENV{action}">
<form method="post" action="#ENV{action}#sp#ENV{id_article}">
<form method="post" action="#ENV{url}">
<form method='post' action='#ENV{action}#formulaire_ecrire_auteur#ENV{id}' enctype='multipart/form-data'>
<form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
Je trouve pas terrible qu'une même fonction génère des contextes avec des noms qui n'ont pas la même signification selon le formulaire utilisant ces contextes.
En plus du pb de minimiser les caches, il me semble hautement souhaitable d'unifier tout ça pour que le mécanisme CVT soit assimilable le plus rapidement possible.
Et pour le coup donc, choisir autre chose que "action" comme nom de paramètre puisqu'il est normalement
destiné à indiquer une action d'écriture en base réservé aux scripts du répertoire action/.
Committo,Ergo:Sum
Le paramètre unifié est bien 'action', utilisé dans presque tous les cas, avec la même signification, avec 3 exceptions : formulaire forum, formulaire recherche et menu langue.
- Dans le cas du formulaire forum, j'ai fini l'unification qui n'etait pas complete
- Le cas du formulaire de recherche est une exception car le post n'est pas traité par CVT. J'ai permis que Charger puisse vider action pour dire qu'elle ne sert pas
- Le formulaire de langue n'est pas CVT et passe par sa fonction _dyn ancienne mode.
[12560] corrige tout cela
Quand au nom du parametre, il est tiré directement de <form action='#ENV{action}'> qui paraissait le plus simple à retenir.
Cédric
Merci Cédric, ça devrait résoudre le pb des doublons dans le cache.
Mais quelque chose me chiffone: pourquoi avoir introduit un hack dans Charger, qui va être qqch de compliqué à expliquer, alors qu'il suffisait de changer le nom du paramètre dans le formulaire de recherche ? Ne pourrait-on pas simplifier les specs de la fonction balise_FORMULAIRE__dyn en disant qu'elle met dans le contexte la valeur de self() sous le nom "action" sauf si ce nom figure déjà point barre ? Et peux-tu expliquer pourquoi le formulaire de langue ne rentre pas dans le moule ?
Committo,Ergo:Sum
Je trouve pas terrible qu'une même fonction génère des contextes avec des noms qui n'ont pas la même signification selon le formulaire utilisant ces contextes.
En plus du pb de minimiser les caches, il me semble hautement souhaitable d'unifier tout ça pour que le mécanisme CVT soit assimilable le plus rapidement possible.
Et pour le coup donc, choisir autre chose que "action" comme nom de paramètre puisqu'il est normalement
destiné à indiquer une action d'écriture en base réservé aux scripts du répertoire action/.Le paramètre unifié est bien 'action', utilisé dans presque tous les cas, avec la même signification, avec 3 exceptions : formulaire forum, formulaire recherche et menu langue.
- Dans le cas du formulaire forum, j'ai fini l'unification qui n'etait pas complete
- Le cas du formulaire de recherche est une exception car le post n'est pas traité par CVT. J'ai permis que Charger puisse vider action pour dire qu'elle ne sert pas
- Le formulaire de langue n'est pas CVT et passe par sa fonction _dyn ancienne mode.
[12560] corrige tout celaMerci Cédric, ça devrait résoudre le pb des doublons dans le cache.
Mais quelque chose me chiffone: pourquoi avoir introduit un hack dans Charger, qui va être qqch de compliqué à expliquer, alors qu'il suffisait de changer le nom du paramètre dans le formulaire de recherche ? Ne pourrait-on pas simplifier les specs de la fonction balise_FORMULAIRE__dyn en disant qu'elle met dans le contexte la valeur de self() sous le nom "action" sauf si ce nom figure déjà point barre ?
oui on peut aussi faire comme cela, ce sera plus simple et moins trompeur
je corrige
Et peux-tu expliquer pourquoi le formulaire de langue ne rentre pas dans le moule ?
Je n'ai pas pris le temps de le ré-ecrire dans le formalisme CVT, il est encore dans l'ancien.
Cédric