On Mon, 15 Apr 2002 14:11:15 +0200, Mats Norén <[EMAIL PROTECTED]> wrote:

> Ovidiu,
> I have some stupid user questions again ;)

No question is stupid, so go ahead ;-)

> I´ve been snooping around in your code and I´m wondering which way
> do you feel is the simplest way of integrating Java components into
> schecoon?
> 
> Would it be possible in an easy way to reuse some of the actions
> already present in C2.  For instance the old database actions or
> maybe the new ones?

I think actions should work fine if you put them right before
<map:call function="..."/> in a pipeline. Actions don't generate any
SAX events on the pipeline, so they should not interfere with the
later invocation of the sitemap via sendPage() or
sendPageAndContinue() functions.

> And for my last question, can I send parameters from the sitemap to the
> function I´m invoking:
> 
> <map:call function="function({1})"/>
> 
> or maybe
> 
> <map:call function="function()">
>     <map:param name="a" value="{1}"/>
> </map:call>

Yes, the second approach is how it works, although you don't need to
use parenthesis, and you need to use <map:parameter> instead of
<map:param>. Like this:

  <map:match pattern="a pattern">
    <map:call function="function">
      <map:parameter name="a" value="{1}"/>
    </map:call>
  </map:match>

> In the full continuation method I don´t see the need to send any parameters
> but in the method you described below I need a  way to pass on information
> encoded in the uri and not from the request parameters.
> For example:
> 
> sitemap.xmap:
> 
>   <map:resource>
>     <map:script src="detail.js"/>
>   </map:resource>
> 
>   <!-- a detail contains detailed information about the object with id
> {2} -->
>   <!-- {1} action to perform, {2} id of detail. -->
>   <map:match pattern="detail/*/*.html">
>     <map:call function="{1}">
>         <map:parameter name="id" value="{2}"/>
>     </map:call>
>   </map:match>
> 
> detail.js:
> 
> function show(id)
> {
>      // the page at uri uses the ESQL taglib to retrieve information about
> an object from DB
>      sendPageAndContinue("show_detail_with_id", {"edit": "edit", "new" :
> "new"});
> }
> 
> function edit(id)
> {
>   // show edit view
>   sendPageAndContinue("show_edit_view_for_id", {"update": "update", "delete"
> : "delete"});
> }
> 
> function update(id)
> {
>   getParametersFromRequest();
>   writeInformationToDB
>   show(id);
> }
> 
> function new()
> {
>       id = incrementCounterInDB();
>       createEmptyRecordInDB(id);
>       edit(id);
> }
> 
> function delete(id)
> {
>     deleteFromDBDetailWithId(id);
>     showPageAndContinue("show_list_of_objects_uri")
> }

This example should work fine.

Just be careful that the name in <map:param> is not really
used. Parameters are just passed to the invoked function based on
their position.

You can also pass parameters to continuations. Just use:

  <map:continue with="{1}">
    <map:parameter name="a" value="..."/>
  </map:continue>

The parameters can be obtained in JavaScript by accessing
cocoon.parameters["a"], after sendPage() returns:

function someFunction()
{
  // do some work here
  ...

  sendPage(uri, bizData);

  // Obtain the parameter passed from the sitemap
  var a = cocoon.parameters["a"];
  ...
}

The parameters to the function can be accessed in the same way. Just
remember that the value of cocoon.parameters changes each time after a
sendPage().

I'd be curious to know to which extend you're using Schecoon so far,
and how do you find it.

Best regards,
-- 
Ovidiu Predescu <[EMAIL PROTECTED]>
http://www.geocities.com/SiliconValley/Monitor/7464/ (GNU, Emacs, other stuff)

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

Reply via email to