r6981 - in spip/ecrire: action exec inc

Author: esj@rezo.net
Date: 2006-08-08 15:36:58 +0200 (mar, 08 aoû 2006)
New Revision: 6981

Log:
Eclatement du script action/instituer, l'organisation en sous-actions étant incompatible avec l'attribut Id standardisé attendu par la fonction JavaScript AjaxSqueeze.

Added:
   spip/ecrire/action/instituer_article.php
   spip/ecrire/action/instituer_breve.php
   spip/ecrire/action/instituer_collaboration.php
   spip/ecrire/action/instituer_forum.php
   spip/ecrire/action/instituer_langue_article.php
   spip/ecrire/action/instituer_langue_rubrique.php
   spip/ecrire/action/instituer_syndic.php
Removed:
   spip/ecrire/action/instituer.php
Modified:
   spip/ecrire/exec/articles.php
   spip/ecrire/exec/breves_voir.php
   spip/ecrire/exec/naviguer.php
   spip/ecrire/inc/forum.php
   spip/ecrire/inc/presentation.php
   spip/ecrire/inc/sites_voir.php

Details: http://trac.rezo.net/trac/spip/changeset/6981

Eclatement du script action/instituer, l'organisation en sous-actions
étant incompatible avec l'attribut Id standardisé attendu par la fonction
JavaScript AjaxSqueeze.

ajaxsqueeze(this) serait pas plus performant et plus simple ?

-- Fil

Le 8 août 06 à 17:38, Fil a écrit :

Eclatement du script action/instituer, l'organisation en sous-actions
étant incompatible avec l'attribut Id standardisé attendu par la fonction
JavaScript AjaxSqueeze.

ajaxsqueeze(this) serait pas plus performant et plus simple ?

Tu as inévitablement besoin de 2 arguments, indiquant

1. le noeud où se trouve la balise form pour récupérer les saisies
2. un noeud contenant cette balise mais aussi d'autres choses qui doivent etre réaffichées suite à la soumission de ce formulaire.

j'étais d'ailleurs assez surpris de ton dépot qui faisait planter Safari, qui semble dire que tu as un navigateur qui sait récupérer les saisies à partir de l'ancetre d'une balise form. C'est séduisant mais limite ambigu: tout le noeud à réafficher peut contenir plusieurs formulaires, car la soumission peut induire des pré-initialisations différentes pour tous etc.

Ce qui est amélioriable, c'est de donner 2 noeuds plutot qu'un noeud et un Id ce qui éviterait le getElementById. On peut evidemment le faire en mettant soi-meme let getElementById: onsubmit='ajaxSqueeze(this,getElementbyId(action-numero))'. Mais ça alourdit l'écriture sans réduire le calcul.

Emmanuel

1. le noeud où se trouve la balise form pour récupérer les saisies
2. un noeud contenant cette balise mais aussi d'autres choses qui
doivent etre réaffichées suite à la soumission de ce formulaire.

j'étais d'ailleurs assez surpris de ton dépot qui faisait planter
Safari, qui semble dire que tu as un navigateur qui sait récupérer
les saisies à partir de l'ancetre d'une balise form.

J'utilise FF et Safari, là je devais tester sous FF car je n'ai pas vu de
plantage.

C'est séduisant mais limite ambigu: tout le noeud à réafficher peut
contenir plusieurs formulaires, car la soumission peut induire des pré-
initialisations différentes pour tous etc.

Indeed.

Ce qui est amélioriable, c'est de donner 2 noeuds plutot qu'un noeud
et un Id ce qui éviterait le getElementById. On peut evidemment le
faire en mettant soi-meme let getElementById: onsubmit='ajaxSqueeze
(this,getElementbyId(action-numero))'. Mais ça alourdit l'écriture
sans réduire le calcul.

Non mais on peut changer la fonction pour qu'elle accepte un objet ou une
chaine (id) : et si elle n'a pas d'id, on prend this.

Par exemple :
        onsubmit='ajaxSqueeze (this,this.parentNode)'
ou
        onsubmit='ajaxSqueeze (this,this.parentNode.firstChild())'
etc.

C'est exactement ce à quoi sert jquery :slight_smile:

En jquery, en plus, on ne mettrait rien du tout dans le form, mais une
class="ajax" sur la div représentant le fragment "qui bouge", avec l'idée
que tous les form de cette div seraient ajaxSqueezés sur cette div.

Ce qui s'écrirait (en gros) :
        $("div.ajax form").submit(ajaxSqueeze);

Enfin, au lieu de parler je devrais monter une démo :slight_smile:

-- Fil