--
thorsten
"Together we stand, divided we fall!"
Hey you (Pink Floyd)
--- Begin Message ---
Hi devs,
I am David, some of you might remember me from the ApacheCon this year,
anyway I heard the need of joinin LENYA and FORREST and the discussion
monday late night.
As Ross encouraged me to post or to help you out, with the stuff I know
about LENYA. So here it is the things that came to my mind on how stuff
works or the things i know about to let you know, in order to make this
MARRIAGE possible.
I hope this will help:
---------------------------------------------------------------------------------------------------------------------------------
the entry point for lenya is the sitemap.xmap @LENYA_HOME/build/lenya/webapp
-this sitemap defines all the components used, can be compared to the
root sitemap in forrest as far as i can see
-then the authorizer action is being called which mounts the
global-sitemap.xmap
-the global-sitemap handles all the modules i call it modules i dont
know if it is the right name
but what i mean with modules is e.g. the built-in wysiwyg editors, the
search engine, usecases, the i18n stuff the admin-area etc
for all this modules an extra sitemap is mounted
the same with the actual publication as lenya has different
publications (<-- is this the same as your forrest seeds?)
and different areas: areas is the level of published documents e.g if a
document is created it is in the authoring area
when the editor is done writing the doc he submits it and the reviewer
has to publish it
so this document is copied from the authoring area to live and the
visitor can finally view the page
so if your uri looks like this
http://localhost:8888/default/authoring/
http://<SERVER:PORT>/{PUBLICATION}/{AREA}/
so the sitemap.xmap @LENYA_HOME/build/webapp/lenya/pubs/{PUBLICATION}
is called
which mounts the publication-sitemap.xmap in the same directory
this publication-sitemap.xmap mounts the doctypes.xmap and handles the
document aggregation
like navigational elements (breadcrumb, tabs, menus) with the actual
content of the document
after this aggregation it calls the transformation for the doctype
requested
this is when the authorizer checks if the requested url is only for
certain users
i am skippin the long description how lenya might work on this
loading the global-sitemap.xmap @LENYA_HOME/build/webapp
the global-sitemap.xmap is used only internal
here are some tries or ideas on how lenya and forrest could/should work
together
this MARRIAGE(joining lenya and forrest) what i call it now could be
done on the publication-sitemap.xmap level
when we look at the sitemaps of lenya and forrest we will see that they
look alike
take a look at the publication-sitemap.xmap
@lenya-1.2.x/build/lenya/webapp/lenya/pubs/default/
of a clean lenya lines 120ff.
<!-- This is the pipeline that builds the page. It aggregates all
the navigational elements (breadcrumb, tabs, menu) with the actual
content of the document. -->
<map:pipeline>
<!--
/lenyabody-{rendertype}/{publication-id}/{area}/{doctype}/{url} -->
<map:match pattern="lenyabody-*/*/*/*/**">
<map:aggregate element="cmsbody">
<map:part src="cocoon://navigation/{2}/{3}/breadcrumb/{5}.xml"/>
<map:part src="cocoon://navigation/{2}/{3}/tabs/{5}.xml"/>
<map:part src="cocoon://navigation/{2}/{3}/menu/{5}.xml"/>
<map:part src="cocoon://navigation/{2}/{3}/search/{5}.xml"/>
<map:part
src="cocoon:/lenya-document-{1}/{3}/{4}/{page-envelope:document-path}"/>
</map:aggregate>
<map:transform src="xslt/page2xhtml-{4}.xsl">
<map:parameter name="root"
value="{page-envelope:context-prefix}/{2}/{3}"/>
<map:parameter name="url" value="{5}"/>
<map:parameter name="document-id"
value="{page-envelope:document-id}"/>
<map:parameter name="document-type"
value="{page-envelope:document-type}"/>
<map:parameter name="language"
value="{page-envelope:document-language}"/>
</map:transform>
<map:transform type="i18n">
<map:parameter name="locale"
value="{page-envelope:document-language}"/>
</map:transform>
<map:select type="parameter">
<map:parameter name="parameter-selector-test" value="{1}"/>
<map:when test="view">
<map:transform type="link-rewrite"/>
</map:when>
</map:select>
<map:serialize type="xml"/>
</map:match>
</map:pipeline>
and compare this to forrest sitemap.xmap @forrest/main/sitemap
<map:pipeline internal-only="false">
<!--pipeline that "marries" the docs in the root dir with the skin to
produce html-->
<map:match pattern="*.html">
<map:aggregate element="site">
<map:part src="cocoon:/skinconf.xml"/>
<map:part src="cocoon:/build-info"/>
<map:part src="cocoon:/tab-{0}"/>
<map:part src="cocoon:/menu-{0}"/>
<map:part src="cocoon:/body-{0}"/>
</map:aggregate>
<map:call resource="skinit">
<map:parameter name="type" value="site2xhtml"/>
<map:parameter name="path" value="{0}"/>
</map:call>
</map:match>
<!--pipeline that "marries" the docs in all other dirs then root with
the skin to produce html-->
<map:match pattern="**/*.html">
<map:aggregate element="site">
<map:part src="cocoon:/skinconf.xml"/>
<map:part src="cocoon:/build-info"/>
<map:part src="cocoon:/{1}/tab-{2}.html"/>
<map:part src="cocoon:/{1}/menu-{2}.html"/>
<map:part src="cocoon:/{1}/body-{2}.html"/>
</map:aggregate>
<map:call resource="skinit">
<map:parameter name="type" value="site2xhtml"/>
<map:parameter name="path" value="{0}"/>
</map:call>
</map:match>
...
our plan is to integrate forrest into lenya (hope that is okay
with you forrest guys :) )
to do so marcin mentioned that:
lenya should do the matching on the first level than
forrest should receive the content like (menus, tabs, body) from lenya
and transform this content into forrest conform content (so this
content could be used in forrest)
after this step lenya lets forrest do the all the styling
so here is the pseudo pipeline as far as we understood forrest and
lenya
<!-- this is the pipeline that should transform the content
delivered by lenya into forrest -->
<map:match pattern="body-*-*-*.html">
<map:part
src="cocoon:/lenya-document-{1}/{2}/{3}/{page-envelope:document-path}"/>
<map:transform type="TRANSFORM_LENYA2FORREST"/> <!-- need to be
implemented -->
<!-- here is when forrest takes over -->
<map:transform type="idgen"/>
<map:transform type="xinclude"/>
<map:transform type="linkrewriter"
src="cocoon:/{1}linkmap-{2}.html"/> <!-- this parametes is not correct,
but is as i said just an idea on how it could/should work -->
<map:transform
src="resources/stylesheets/declare-broken-site-links.xsl" />
<map:call resource="skinit">
<map:parameter name="type" value="document2html"/>
<map:parameter name="path" value="{1}{2}.html"/>
<map:parameter name="notoc" value="false"/>
</map:call>
</map:match>
<!-- this is the entry point and is a mixture of a forrest and
lenya -->
<map:pipeline>
<!-- this is lenya stuff -->
<!--
/lenyabody-{rendertype}/{publication-id}/{area}/{doctype}/{url} -->
<map:match pattern="lenyabody-*/*/*/*/**">
<!-- and from here on this is forrest stuff -->
<map:aggregate element="site">
<map:part src="cocoon:/skinconf.xml"/>
<map:part src="cocoon:/build-info"/>
<map:part src="cocoon:/body-{1}-{3}-{4}"/>
</map:aggregate>
<map:call resource="skinit">
<map:parameter name="type" value="site2xhtml"/>
<map:parameter name="path" value="{0}"/>
</map:call>
<map:serialize type="xml"/>
</map:match>
</map:pipeline>
sure there are alot of things to do in order to make this run
like adjusting pipelines, parameters etc etc
but we want to help you guys on that but we NEED YOUR HELP and FEEDBACK
please let me know if this thinking makes sense or if there are
things we did not understood or thought about right
if you guys agree with this approach or have any hints or problems
which we haven't thought about let us know
or things you want us to do
feel free
we definitely want to help and wait for some any feedback if this
all makes sense
regards
marcin and david
Hope that helps somehow : )
--- End Message ---
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]