Gmane
From: =?ISO-8859-1?Q?D=E9esse_A.?= <esj <at> vertsdesevres.net>
Subject: Re: squelettes de formulaires (et barre de raccourcis)
Newsgroups: gmane.comp.web.spip.devel
Date: 2005-01-09 21:32:57 GMT (3 years, 46 weeks, 5 days, 16 hours and 6 minutes ago)

Le 9 janv. 05, à 21:36, Michel JORDA a écrit :

> Bonjour à tous,
> je suis parti dans un développement un peu délicat, toujours est-il que
> je me sers des brèves de façon peu standard. J'ai donc besoin d'écrire
> mon formulaire d'écriture de brèves.
> Evidemment, ca serait dommage de ne pas utiliser la nouvelle interface
> géniale a base de
> inc-formulaire_XXXX.php
> formulaire_XXXX.html
>
> Malheureusement, soit je ne creuse pas dans le bon sens, soit la 
> "double
> passe" du php me perd totalement… bref impossible d'arriver à qq chose
> d'utilisable…

Je donne qq infos sous toutes réserves car il n'est pas impossible que 
cette interface change, c'est encore expérimental.

Le point est difficile parce qu'on veut à la fois récupérer les valeurs 
calculées à la mise en cache de la page contenant la balise, et celles 
qui ne seront connues qu'à chaque requête à cette page, l'union des 
deux devant etre disponible à chaque requête. Donc pour une balise #B 
il faut déclarer:

B_collecte: tableau des noms des valeurs décrites ci-dessus (en gros 
c'est tous les attributs Name contenu dans le formulaire, plus 
éventuellement qq champs issus des boucles incluant la balise);

B_stat: fonction recevant ces valeurs en argument, ainsi que les 
filtres de la balise, lors de la mise en cache. A ce moment, il peut 
apparaitre qu'il n'y a déjà plus rien à faire (par exemple pour le 
formulaire d'inscriptions, il n'y a rien à produire si elles ne sont 
pas autorisées). Dans ce cas, cette fonction doit rendre une chaine qui 
sera  insérée dans le squelette à la mise en cache, celui-ci contenant 
alors une page HTML statique.  Si elle rend un tableau, on insère dans 
le squelette une interpolation PHP qui sera donc exécutée à chaque 
requête. L'exécution consistera à appliquer B_dyn sur le tableau alors 
retourné.

B_dyn: fonction recevant les valeurs jugées utiles par B_stat. Comme 
elle est appelée à chaque requête, elle a accès aux valeurs des cookies 
(contrairement à B_stat) et peut donc controler les droits éventuels. 
Si elle retourne une chaîne, celle-ci est insérée dans le squelette 
(sur le plan du développement graphique, je conseille de ne recourir à 
ca que pour un message brut, sans balise Html).
Sinon, elle doit retourner un tableau de 3 éléments, équivalents au 
fond / délai / contexte_inclus des scripts habituels.

Enfin, il suffit de déclarer ces 3 choses dans un fichier nommé 
inc-B.php3 pour
que le compilateur reconnaisse #B comme une balise de ce type.

Ca parait compliqué, mais ça a l'avantage de couvrir toutes les 
situations de balises incomplétement calculables à la mise en cache. 
Cette interface est d'ailleurs à présent le seul cas d'interpolation de 
PHP insérée par le compilateur. Il y a évidemment une interface plus 
conviviale à développer à terme, mais le mécanisme sous-jacent ne me 
semble pas simplifiable.

			Emmanuel