Hi all,

I have another use-case for this kind of substitution. I'm protecting
multiple resources in my sitemap, and each resource has its own
sub-sitemap. The authentication resource produces a list of resources the
user is allowed to access. Like this:

<data>
  <resource1>true</resource2>
  <resource2>true</resource2>
  ...
</data>

These are all returned with the cocoon auth-action to the sitemap, and are
accessible with their nodenames. And here's the sitemap snippet I'd like
to use:

<map:match pattern="protected/*">
  <map:act type="auth-protect">
    <map:parameter name="handler" value="test_handler"/>

    <map:match pattern="*">
      <map:select type="parameter">
        <map:parameter name="parameter-selector-test" value="{../{1}}"/>
        <map:when test="true">
          <map:mount src="{../1}/" uri-prefix="{../1}"/>
        </map:when>
        <map:otherwise>
          <map:redirect-to uri="access_denied"/>
        </map:otherwise>
      </map:select>
    </map:match>

  </map:act>
</map:match>

So, the protected resource would be accessed with for example:
"protected/resource1". The {../{1}} in "parameter-selector-test" would
first substitute to {../resource1}, which would then become "true".
The parameter selector would now let the user pass, and the execution
would continue in the mounted sub-sitemap.

At the moment, with this functionality missing, I have to write the
snippet above for each protected resource, with only one difference in
them. Not very easy to maintain...

I hope we get this kind of parameter substition soon, it would be very
usefull, especially with the input modules combined! (And, as Konstantin
said, a quite natural desire.)

-Tuomo


On Wed, 18 Dec 2002, Konstantin Piroumian wrote:

> Hi Anna and Team!
>
> CC-ing this message to Cocoon Dev list, cause it raises a more general
> requirement for possibility to combine input modules with other input
> modules in sitemap substitution values (see below for a use-case).
>
> From: "Anna Afonchenko" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Wednesday, December 18, 2002 12:23
> Subject: Re: value-substitution in Cocoon
>
>
> > Sorry for returning to this issue again, but I can't find an answer.
> > Can I use value substitutoin inside the input module?
> > Referring the example that yoou gave me, I don't want to get the substring
> > of the whole URI, if I have match:
> > <map:match pattern="*/*.html">
>
> I see.
>
> >
> > I want to refer to the first wildcard inside the request: module,
> something
> > like:
> > <map:parameter name="param" value="{request:substring({1},0,1)}"
> > e.g. I want to apply XPath expression only on part of the URI using value
> > substitution.
>
> Quite natural desire. Unfortunately, this is not supported (I hope yet), but
> it would be very useful.
>
> > This is probably very stupid question, but I can't find an answer.
>
> Don't bother so much about stupid questions, if it were really stupid then
> I'd simply ignore it ;)
>
> > Can somebody please explain me this or redirect me to some URL with
> > explanations?
> > (I read the http://xml.apache.org/cocoon/userdocs/concepts/modules.html,
> but
> > it just explains the concept of modules, it doesn't have the example that
> I
> > need).
>
> Yes, that's true. The documentation for Input module is very short, but I
> hope that the sample (/samples/modules) demonstrates most of the
> possibilities.
>
> Konstantin
>
> >
> > Thank you very much for help.
> >
> > Anna
> >
> > ----- Original Message -----
> > From: "Konstantin Piroumian" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Tuesday, December 17, 2002 2:13 PM
> > Subject: Re: value-substitution in Cocoon
> >
> >
> > Hi!
> > (Please do not use HTML mails in the mailing list.)
> >
> > I see two ways to solve this task:
> >   1. Use an action that will get the original parameter and generate
> another
> > one, which you'll pass to the transformer.
> >   2. Use a the Request input module, e.g.  <map:parameter name="param"
> > value="{request:substring(requestURI, 0, 1)}"/> - this sample will give
> you
> > the first letter (see /samples/module/sitemap.xmap and XPath reference to
> > learn how to get the last character).
> >
> > It sounds a little strange what you are trying to do though...
> >
> > Regards,
> >   Konstantin
> >
> > ----- Original Message -----
> > From: Anna Afonchenko
> > To: cocoon-users
> > Sent: Tuesday, December 17, 2002 14:55
> > Subject: value-substitution in Cocoon
> >
> >
> > I have the following question:
> > I know that in Cocoon I can use value substitution inside a pipeline, e.g.
> > if I have a pipeline
> > <map:pipeline>
> >   <map:match pattern="*/*.html">
> >     <map:generate src="{2}.html"/>
> >     <map:transform src="some.xsl">
> >       <map:parameter name="param" value="{1}"/>
> >     </map:transform>
> >   </map:match>
> > </map:pipeline>
> >
> > and if I write the URI http://localhost:8080/cocoon/param1/some.html
> >
> > then in the pipeline the stylesheet some.xsl will receive a parameter with
> > name param and value param1. So this is my question:
> > Can I somehow parse/evaluate this parameter {1} inside the sitemap (not
> > inside the xsl).
> > E.g., can I somehow, having {1}="param1" extract the last character ("1"
> in
> > this case) and send to the xsl only it, or, having parameter {1}=1, send
> > {1}+1, i.e. 2 to the stylesheet?
> >
> > I need this because I want to build pipeline that will get some parameter
> n,
> > and after it is executed I want to call the same pipeline with parameter
> > n+1.
> > Is this possible in sitemap?
> >
> > Thank you very much for help.
> >
> > Anna
> >
> >
> > ---------------------------------------------------------------------
> > Please check that your question  has not already been answered in the
> > FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>
> >
> > To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
> > For additional commands, e-mail:   <[EMAIL PROTECTED]>
> >
> >
> > ---------------------------------------------------------------------
> > Please check that your question  has not already been answered in the
> > FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>
> >
> > To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
> > For additional commands, e-mail:   <[EMAIL PROTECTED]>
> >
> >
>
>
> ---------------------------------------------------------------------
> Please check that your question  has not already been answered in the
> FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>
>
> To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
> For additional commands, e-mail:   <[EMAIL PROTECTED]>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to