Je viens de realiser qu'en cachingURI coplet les events sont attribues dans l'order 1,2,3 etc.. a tous les <a href.../> et cl:link trouve. Quand je fais back avec le navigateur je vois des liens qui sont d'autres events mais le portal ne sait pas que je suis revenu en arriere. Ca marche en effet en ne mettant que des bookmarks (pas d'events generes). Je commence a me pencher sur la realisation de tout ca sans le portal, avec l'Authentication Framework seul + peut etre le linkrewriter, il y a-t-il des documents disponibles en dehors du sample de login et la documentation (http://cocoon.apache.org/2.1/developing/webapps/authentication.html) ?

Phil

Philippe Guillard wrote:

Hum, j'ai eu de mauvaises experiences avec les bookmarks complexes a
configurer et suis tres surpris de ce que tu arrives a faire en Uri
Coplet, je vais essayer.
Pour la touche back j'avais supprime l'action-counter comme indique sur
le wiki pour avoir les pageLabel, me donne un mauvais comportement sur
mon mon site, mais j'ai suivi ton conseil et ai enleve
action-counter+no-client-caching sur la branche 2.1.x, cela semble
donner un resultat meilleur. Pour les forms je reset effectivement le
cache pour obtenir un nouveau form vierge  la prochaine fois.

Merci beaucoup en tous cas, j'obtenais aucune aide pour un probleme qui
me semble devrait etre celui de tous ceux qui utilisent le portal, sans
doute peu utilise au profit de l'authenication framework seul!

Phil

Philippe Gassmann wrote:

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/users@cocoon.apache.org/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








---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:[EMAIL PROTECTED]
Autres commandes : mailto:[EMAIL PROTECTED]





---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:[EMAIL PROTECTED]
Autres commandes : mailto:[EMAIL PROTECTED]

Répondre à