Philippe Guillard wrote:
J'ai un probleme bloquant sur le portal, sans avoir jamais reussi a
obtenir de solutions :
Historiquement j'ai utilise le "cachingURICoplet" pour pouvoir y
acceuillir mes CForms, egalement pour offrir une naviguation dans le
meme coplet, garce au fait que l'uri temporaire de ces coplets peut
etre modifiee par l'intermediaire d'events, et cachee.
Le probleme intervient avec l'utilisation de la touche "back" du
navigateur, une fois effectuee le comprtement est imprevisble, a mon
sens parce que faire un retour signifie envoyer l'event precedent au
portal et que celui-ci n'est pas ou mal pris en compte suivant la
release. (Mon mail precedent
http://www.opensubscriber.com/message/[email protected]/2076520.html)
Apparemment la solution retenue sur la branche svn 2.1 est celle-ci :
le portal sample ne prend tout simplement pas en compte les events
passes, c'est a dire donc que la touche "Back" du navigateur n'a aucun
effet meme visuel. Ce qui a mis avis est inacceptable pour tout
utilisateur !! Je remarque que c'est dailleurs le cas pour tout lien y
compris les menus. (L'utilisation des pageLabel m'evite ce souci la)
Les seules solutions que je vois aujourd'hui sont les suivantes :
- Ne plus utiliser le portal-html-eventlink transformer. Mais alors
comment?
Utiliser BookmarkAction de préférence.
Attention, il ne faut pas utiliser le pipeline bookmark tel qu'il est
dans le block portal de cocoon. En effet, pour ne plus voir apparaitre
de cocoon-portal-event... dans les uri, il faut faire une redirection
interne dans le pipeline bookmark :
<map:match pattern="bookmark">
<map:act type="auth-protect">
<map:parameter name="handler" value="portalhandler"/>
<map:parameter name="application" value="portal"/>
<map:act type="portal-bookmark">
<map:parameter name="portal-name" value="portal"/>
<map:redirect-to uri="cocoon://portal/portal?{uri}"/>
</map:act>
</map:act>
</map:match>
ou quelque chose d'equivalent.
Attention, il ne faut plus non plus utiliser des astuces du type :
temporary-attributes:uri dans la définition des coplets et n'utiliser
que des URICoplet. Mais il faut poster son formulaire sur
bookmark?évènement-qui-amène-a-la-page-contenant-le-formulaire.
Le pipeline executant le rendu de la coplet devra comporter un selector
sur le type de methode utilisée pour la requête (GET ou POST) et dans le
cas d'un POST appeler la continuation :
<map:match pattern="Mon_formulaire">
<map:select type="request-method">
<map:when test="GET">
<map:call function="charger_formaulaire">
</map:when>
<map:otherwise>
<map:call
continuation="{request-param:continuation-id}"/>
</map:otherwise>
</map:select>
</map:match>
De plus, pour que le bouton back fonctionne correctement, il faut
supprimer du cocoon.xconf les aspects no-client-caching et action-counter.
Bon courage et bonne chance.
PS : pour utiliser des CachingURICoplet contenant des formulaires avec
cette methode, il faut invalider le cache de la coplet lors du POST du
formulaire (par exemple en utilisant un évènement quelquonque sur la
coplet en question en postant sur le pipeline bookmark)
- Ne plus utiliser le cocoon portal !
C'est une autre solution...
- Utiliser l'applicationCoplet en enlevant JTidy puisque mes pages
sont XML
Merci d'avance pour toute aide !
Phil
--
Philippe
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:[EMAIL PROTECTED]
Autres commandes : mailto:[EMAIL PROTECTED]