Hi Jan Im sorry Im new to cocoon.. Im not sure I got this: "Eg: include the pipeline with your sessiontransformer in your normal document and xslt sets parameters in links. This way you can get your parameters easily with xpath expressions." Can you please provide little example of this? I have smth like this: --------------------------- <map:match pattern="internal/*"> <map:generate src="screens/{1}.xml"/> <map:transform type="session"/> <map:transform src="resources/simple-page2html.xsl"> </map:transform> <map:transform type="encodeURL"/> <map:serialize/> </map:match> ------------------------------ and my screen is: ------------------------------ <?xml version="1.0"?> <page> <title>Home</title> <content xmlns:session="http://apache.org/cocoon/session/1.0">
<!-- THIS I understand (how to just display data from session context)--> <session:getxml context="authentication" path="/"/> </content> </page> ------------------------------ but how to add params to links? This probably can be done in my xsl?
You're half way there. Starting from your example the easiest way to go is (according to me, of course) set your session stuff outside the content, you probably don't want to show every session element on the page, but just select some of them to eg. use in a link as a parameter. Think of the content tag as the one which will be transformed to a html page, and the other elements (title and session) as usefull resources for that content.
<page> <title>...</title> <session> <!--do your session stuff here: getxml ... any context needed --> </session> <content> .... <mylink to="sessionparamlink.html" type="session"/> </content> </page>
then in your xsl:
<xsl:template match="[EMAIL PROTECTED]'session']"> <a href="[EMAIL PROTECTED]/page/session/path_to_session}"/> </xsl:template>
in the <a/> element I've used braces {}, these are shortcuts. You can do the same with <a> <xsl:attribute name="href"><!--xsl:value-of .... as you probably know--></xsl:attribute> </a>
If you need your session stuff on each page (and maybe some other info as well) you might want to try includes. (This way you don't have to write the session stuff in each page.) Define one overal look page and include your content/info/session in that page:
<page>
<cinclude:include src="cocoon:/internal/sessioninfo"/>
<cinclude:include src="cocoon:/internal/someotherinfo"/><!-- things shared among pages, footers or whatever-->
<cinclude:include src="cocoon:/internal/{mypage}"/><!-- passed from sitemap -->
</page>
Transform with the cinclude transformer (look at the cocoon docs) and end up with something like:
<page> <sessioninfo /> <someotherinfo /> <content /> </page>
and do the same thing in your final xsl: transform the content to html and use the info elements to add extra info.
This is of course one way to go, and there are many...
I always try to limit duplicated code, so when sessionstuff appears everywhere and has the same process in each page, try to extract that piece (eg as the last example).
Kind Regards, Jan
"Jan Hoskens" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
If you're only goal is to show the profile you stored in the session
context, you can retreive it
with the session transformer and then process the data there. Eg: include
the pipeline with your
sessiontransformer in your normal document and xslt sets parameters in
links. This way you can get
your parameters easily with xpath expressions. (at first thought, I would
prefer this instead of
passing parameters if you have to work with a complete xml structure)
If you want to edit the profile, I would suggest a combination of
flowscript/cforms. In the
flowscript retreive the base xml document from your session, create a form
and send it through a
form-display-pipeline.
Kind Regards, Jan
Ilja Smoli wrote:
Thanks Jan! I got the idea now... Little problem that this ( {ID} ) will work only in pipeline which
exactly
uses auth handler.. Cause I have a bunch of pages to protect , I have one pipeline with "protect" which uses then internal pipelines, but I think i can handle
this
problem.. Other question is can you please point me out on this: I want to have like this (really common for webapps :-) ): after user
login,
have a session with user data (names, adresses etc...). This I can do
using
this "auth fw" and put everithing in session contexts. Problem actually
in
retrieving this data... Like to add parameters to links etc... For docs I use xml, transformed through xsl... For example I need a link like <a href=edit_form?username=get username from session>Edit profile</a>
Where it is better to do this? In xsl like: <xsl:template match="editProfileLink"> Here goes html code for this link with added params from session </xsl:template>
or directly in xml doc? Im confused about this :) thx in advance...
"Jan Hoskens" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
When the user is authenticated, you can use {ID} and {ROLE} in your
sitemap:
<!-- taken from
http://cocoon.apache.org/2.1/developing/webapps/authentication.html
at the bottom -->
<map:match pattern"protected"> <map:act type="auth-protect"> <!-- protect the resource --> <map:parameter name="handler" value="myhandler"/>
<!-- Append the ID of the user to the file name --> <map:generate src="resource_{ID}.xml"/> <map:transform src="toHTML"/> <map:serialize/>
</map:act> </map:match>
Pass it to an xsl stylesheet: <map:transform src="mysheet.xsl"> <map:parameter name="login" value="{ID}" /> </map:transform>
and in your stylesheet declare at toplevel:
<xsl:stylesheet...> <xsl:param name="login"/>
If needed: there are ways to get session xml in flowscript or
jxtemplates,
just give a sign if you
need these (they are somewhere on the mail archives too).
Kind regards, Jan
Ilja Smoli wrote:
Thx for reply But as I understood authentication fw stores session object as xml and i can not get attributes using {session:} :(
"Bowe, Bastian" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
Never used session. But can't you use {session:username} as a <map:parameter/> for your <map:transform type="xsl"/> ?
-----Original Message----- From: Ilja Smoli [mailto:[EMAIL PROTECTED] Sent: Monday, February 14, 2005 2:33 PM To: users@cocoon.apache.org Subject: session context
Hi I use authentification framework in cocoon 2.1.5... I know that to get data out of session I can use <session:getxml... tag But what if i need this in XSL stylesheet? Or for example in my xml page where i want to put some value from session to link as query parameter? Smth like: ------------------------------- <?xml version="1.0"?> <page> <title>Home</title> <content> <center> <a href='edit-form-person?user=HERE must go username from session'>Edit profile</a><br/> ................
Thx in advance...
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]