cocoon-users-fr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Christophe Kermagoret <...@bluexml.org>
Subject Re: Ajaxeries
Date Mon, 07 Nov 2005 11:23:06 GMT
Bonjour Marc,
souvent c'est la raison pour laquelle on passe par l'analyse du type de 
la requête, comme cela tu ne changes pas l'appel de ton pipeline :
* si GET, on affiche le form de la première fois, avec aggrégation, ...
* si POST, c'est qu'on est en gestion de formulaire : on gère la 
continuation (et tu évites alors toute ton aggrégation)

Concrètement,
<map:match pattern="controller">
     <map:select type="request-method">
         <map:when test="POST">
             <!-- Tu n'appelles pas ton agrégation -->
	    <map:call continuation="{request-param:continuation-id}"/>
         </map:when>
         <map:when test="GET">
             <!-- Tu appelles ton agrégation -->
             <map:call function="dispatch"/>
         </map:when>
     </map:select>
</map:match>

Jean-Christophe

Marc Salvetti a écrit :
> Je vais essayer de coller le code de la sitemap qui rentre dans l'affichage
> du form, tu verras peut etre mieux quel est mon probleme, car je ne vois
> vraiment pas comment rappeler la continuation sans passer par l'aggregation.
> 
> 
> Dans la sitemap :
> 
> La resource d'aggregation :
> 
> <map:resource name="composite">
> <map:aggregate element="site" label="xml">
> <map:part src="cocoon:/get-login"/>
> <map:part src="cocoon:/book-{URI}.xml"/>
> <map:part src="cocoon:/body-{URI}.xml"/>
> </map:aggregate>
> <map:transform src="stylesheets/site2xhtml.xsl">
> <map:parameter name="resource" value="{request-param:resource}"/>
> <map:parameter name="requestURI" value="{request-uri:requestURI}"/>
> <map:parameter name="page" value="{URI}"/>
> <map:parameter name="use-request-parameters" value="true"/>
> </map:transform>
> <map:select type="parameter">
> <map:parameter name="parameter-selector-test" value="{form}"/>
> <map:when test="true">
> <map:transform src="resources/forms-samples-styling.xsl"/>
> </map:when>
> </map:select>
> <map:transform type="i18n">
> <map:parameter name="locale" value="{locale}"/>
> </map:transform>
> <map:select type="ajax-request">
> <map:when test="true">
> <map:serialize type="xml"/>
> </map:when>
> <map:otherwise>
> <map:transform type="omitns"/>
> <map:serialize type="html"/>
> </map:otherwise>
> </map:select>
> <map:serialize type="xml"/>
> </map:resource>
> 
> La resource form :
> <map:resource name="form">
> <map:generate type="jx" src="{form-template}"/>
> <map:transform type="browser-update"/>
> <map:transform type="i18n">
> <map:parameter name="locale" value="{locale}"/>
> </map:transform>
> <map:transform src="resources/forms-samples-styling.xsl"/>
> <map:transform type="i18n">
> <map:parameter name="locale" value="{locale}"/>
> </map:transform>
> <map:select type="ajax-request">
> <map:when test="true">
> <map:serialize type="xml"/>
> </map:when>
> <map:otherwise>
> <map:transform type="omitns"/>
> <map:serialize type="html"/>
> </map:otherwise>
> </map:select>
> </map:resource>
> 
> La resource d'appel de la fonction flowscript :
> 
> <map:resource name="view-cart">
> <map:call function="form_cart2xml">
> <map:parameter name="definitionURI" value="forms/cart-definition.xml"/>
> <map:parameter name="bindingURI" value="forms/cart-binding.xml"/>
> <map:parameter name="displayPipeline" value="view-cart-{suffix}.html"/>
> </map:call>
> </map:resource>
> 
> Le matcher de continuation :
> 
> <map:match pattern="**continue.html">
> <map:act type="auth-loggedIn">
> <map:parameter name="handler" value="cfmhandler"/>
> <map:act type="auth-protect">
> <map:parameter name="handler" value="cfmhandler"/>
> <map:call continuation="{request-param:continuation-id}"/>
> </map:act>
> </map:act>
> <map:call continuation="{request-param:continuation-id}"/>
> </map:match>
> 
> Le matcher de la page du form sur lequel pointe la continuation
> (display-pipeline ds la fct flowscript) :
> 
> <map:match pattern="view-cart-*.html">
> <map:call resource="composite">
> <map:parameter name="URI" value="view-cart-{1}"/>
> <map:parameter name="locale" value="{../locale}"/>
> <map:parameter name="form" value="true"/>
> </map:call>
> </map:match>
> 
> Le matcher du contenu de la page formulaire :
> 
> <map:match pattern="body-view-cart-*.xml">
> <map:aggregate element="form_document">
> <map:part src="xdocs/forms/cart.xml"/>
> <map:part src="cocoon:/cart.form"/>
> </map:aggregate>
> <map:transform src="stylesheets/form_document2document.xsl"/>
> <map:transform src="stylesheets/document2html.xsl"/>
> <map:transform type="i18n">
> <map:parameter name="locale" value="{../locale}"/>
> </map:transform>
> <map:transform src="resources/forms-samples-styling.xsl"/>
> 
> <map:serialize type="xml"/>
> </map:match>
> 
> Le matcher interne commun a tous les formulaires :
> 
> <map:match pattern="*.form">
> <map:call resource="form">
> <map:parameter name="form-template" value="forms/{1}-template.xml"/>
> <map:parameter name="action" value="{1}"/>
> <map:parameter name="locale" value="{../locale}"/>
> </map:call>
> </map:match>
> 
> Dans ma template j'ai ça :
> <ft:form-template action="continue.html" method="post" ajax="true"
> ajax-action="??">
> 
> Et le probleme est donc que continue.html appele la continuation, qui
> relance showForm(displayPipeline), et ce displayPipeline doit correspondre à
> l'aggregation pour le premier appel (creation de la continuation) puis à un
> autre pipeline (oui mais lequel et comment changer la valeur de
> displayPipeline pendant l'execution de showForm ?) pour les appels suivants.
> 
> Est-ce que j'ai bon ?
> 
> Marc
> 
> 
> Le 07/11/05, Marc Salvetti <salvetti.marc@gmail.com> a écrit :
> 
>>Dans ajax-action, tu dois mettre l'action qui rappelle la continuation,
>>
>>>qui elle même, après traitement de la form, rappelera le pipeline
>>>d'affichage.
>>>
>>>Sylvain
>>
>>
>>Désolé, mais là je suis tout perdu :(
>>L'action qui est actuellement dans le parametre action est l'action qui
>>appelle la continuation.
>>Donc je comprend pas ce que ça va changer de mettre la meme action dans
>>ajax-action ?
>>
>>Marc
>>
> 
> 
> 
> 
> Le 07/11/05, Sylvain Wallez <sylvain@apache.org> a écrit :
> 
>>Marc Salvetti wrote:
>>
>>>>Dans ajax-action, tu dois mettre l'action qui rappelle la continuation,
>>>>qui elle même, après traitement de la form, rappelera le pipeline
>>>>d'affichage.
>>>>
>>>>Sylvain
>>>>
>>>
>>>
>>>Désolé, mais là je suis tout perdu :(
>>>L'action qui est actuellement dans le parametre action est l'action qui
>>>appelle la continuation.
>>>Donc je comprend pas ce que ça va changer de mettre la meme action dans
>>>ajax-action ?
>>>
>>
>>Où se trouve ton aggrégation? Est-elle dans le pipeline appelé par
>>form.showForm()? Si oui, c'est là qu'est le problème: les requêtes Ajax
>>doivent rappeler la continuation, mais ne doivent pas passer par
>>l'aggrégation.
>>
>>Sylvain
>>
>>--
>>Sylvain Wallez Anyware Technologies
>>http://people.apache.org/~sylvain http://www.anyware-tech.com
>>Apache Software Foundation Member Research & Technology Director
>>
>>
>>---------------------------------------------------------------------
>>Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
>>Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
>>Autres commandes : mailto:users-fr-help@cocoon.apache.org
>>
>>
> 
> 


-- 

BlueXML
Jean-Christophe Kermagoret
Directeur associé
jck@bluexml.org


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Mime
View raw message