|
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 |
|
|