Author: esj@rezo.net
Date: 2008-09-29 18:33:15 +0200 (lun, 29 sep 2008)
New Revision: 12822
Log:
Bug dans le mécanisme CVT des formulaires d'édition privée: la fonction {{{formulaires_editer_objet_charger}}}, qui s'occupe par défaut de tous ces formulaires, laissait tomber le paramètre de retour, de sorte que ces formulaires ne pouvait boucler que sur {{{ self() }}}.
Puisque cette fonctionalité n'a visiblement pas été testée, je profite de ce qu'il est encore temps pour l'élargir et de proposer une rationnalisation qui n'est pas sans incompatibilité dans l'usage de ces nouvelles balises (combien d'utilisateurs aujourd'hui?).
Donc, dans les squelettes des formulaires d'édition privée, si le paramètre {{{action}}} est vide, alors les balises ouvrante et fermante {{{form}}} ne sont pas produites, non plus que {{{hidden}}} de l'action et le bouton {{{submit}}}. En pratique, cela veut dire qu'on peut faire ramener à une {{{#FORMULAIRE_*}}} le corps du formulaire sans ces balises {{{form}}} englobante, qu'on complètera facilement dans le squelette appelant. Par exemple, pour compléter le formulaire d'édition d'un article, au lieu d'écrire (comme dans prive/editer/article.hmtl):
{{{
#FORMULAIRE_EDITER_ARTICLE{#ENV{id_article}, #ENV{id_rubrique}, #ENV{redirect},#ENV{lier_trad},#ENV{config_fonc},#ENV{row}}
}
}}}
on écrit
{{{
<form action='#ENV{redirect}'>
[(#ACTION_FORMULAIRE{#ENV{redirect}}]
#FORMULAIRE_EDITER_ARTICLE{#ENV{id_article}, #ENV{id_rubrique}, ' ',#ENV{lier_trad},#ENV{config_fonc},#ENV{row}}
}
mes autres saisies
<input type='submit' />
</form>
}}}
Cela est rendu opérationnel par le présent dépot. Points méritants discussion:
* On a écrit ci-dessus {{{' '}}} et pas la chaîne vide car le bug actuel fait que donner la chaîne vide équivaut à obtenir le formulaire complet, avec {{{self()}}}, et on a préféré ne pas casser la compatibilité. Si on veut pouvoir le faire (ce qui est plus conforme à la compréhension qu'on a du squelette), la conséqence est que si on veut expliciter par exemple {{{lier_trad}}} mais avoir le comportement par défaut pour le retour, il faudra écrire explicitement #SELF (ou NULL).
* Dans cette famille de balises, ce retour est parfois le 3e argument et parfois le 2e, il serait bon d'unifier.
* De même l'argument {{{config_fonctions}}} change de rang souvent, on pourrait unifier ici aussi.
Modified:
branches/spip-2.0/ecrire/inc/editer.php
branches/spip-2.0/prive/formulaires/editer_article.html
branches/spip-2.0/prive/formulaires/editer_auteur.html
branches/spip-2.0/prive/formulaires/editer_breve.html
branches/spip-2.0/prive/formulaires/editer_groupe_mot.html
branches/spip-2.0/prive/formulaires/editer_mot.html
branches/spip-2.0/prive/formulaires/editer_rubrique.html
branches/spip-2.0/prive/formulaires/editer_site.html
branches/spip-2.0/prive/formulaires/login.html
spip/ecrire/inc/editer.php
spip/prive/formulaires/editer_article.html
spip/prive/formulaires/editer_auteur.html
spip/prive/formulaires/editer_breve.html
spip/prive/formulaires/editer_groupe_mot.html
spip/prive/formulaires/editer_mot.html
spip/prive/formulaires/editer_rubrique.html
spip/prive/formulaires/editer_site.html
spip/prive/formulaires/login.html