Piroumian Konstantin wrote:
> Ok. I'll give a real Use-Case and you look at it with your critical glance.
> Maybe we are too input-module-minded after so many discussions and are
> FS-infected.
Thanks, I really needed that.
> Forrest's Use-Case
> ==============
>
> Prerequisites
> ---------------------
> Forrest has skinning system which now uses Ant filtering tokens in the
> sitemap to define which skin to use, e.g.:
>
> <map:transform src="skins/@skin@/style.xsl" />
>
> Everyone agrees that this looks ugly and the skin name is hard-coded in the
> resulting sitemap, which makes it impossible to change the skin at runtime
> in the web-app version of Forrest. It also requires the source to be copied
> to the 'build' directory and makes development a little more difficult (you
> should run build after every change in the sitemap, while Cocoon could
> reload it from the source directly).
>
> Solution
> -------------
> Using a special input module makes sitemap look much better:
>
> <map:transform src="skins/{skin:name}/style.xsl" />
>
> Everyone agrees with this one too.
Ok, cool, I see.
> Chaining
> -------------
> Where does the skin module get the configuration data? There are several
> places where it can get it:
> - a request parameter (?skin-name=forrest-site)
> - a session attribute (after the user has set this somewhere else)
> - a cookie (to retain user's settings between sessions)
> - a config file (customized default values for a specific project)
> - configuration in cocoon.xconf (global default, used if customized
> config is not found)
Ok, got it.
> So having already input modules for 'request-param', 'session-attr',
> 'cookie' and 'xml-config' we can use a meta module which simply traverse
> it's child input modules and tries to get the value from them. Then it was
> proposed this approach:
>
> <component-instance class="MetaModule" name="skin">
> <input-module name="request-param"/>
> <input-module name="session-attr"/>
> <input-module name="cookie"/>
> <input-module name="xml-config"/>
> <input-module name="defaults"/>
> </component-instance>
>
>>So, what the heck is this 'glue' thing?
>
>
> So, the 'glue' is a meta module which has other input modules as its config.
Gotcha.
>
>>And why is Torsten is talking about "filters"? gosh, don't you people
>>think we already have enough concepts and components and models and
>>names? (expecially when they are so widely used that nobody
>>really knows
>>if the user already knows the concept or has to relearn it
>>from scratch)
>
>
> I have no idea what the 'filter' can mean in this context, but from the
> user's point of view, input modules act as namespaced sitemap variables,
> e.g.:
>
> <map:transform src="{request-param:stylesheet-name}.xsl" />
>
> So, instead of using a wrapper action to get a request parameter value in
> the sitemap, the user will simply use this short version.
All right, finally I got the picture. I really needed that (and I think
many others as well).
Now, follow me:
1) from the user's point of view, input modules act as namespaced
sitemap variables (you said that)
2) that means that just like the user knows that type="xslt" will
match the transformer associated with 'xslt', the variable
{request:skin} will match the 'skin' attribute in the input module named
'request'
so, question:
why aren't you declaring them in the sitemap?
also
why not calling them something more specific than InputModules?
Take a look at this
<map:sitemap>
<map:components>
...
<map:expanders>
<map:expander name="A" src="..."/>
<map:expander name="B" src="..."/>
</map:expanders>
...
</map:components>
...
<map:expanders-sets>
<map:expander-set name="blah">
<map:expand type="A"/>
<map:expand type="B"/>
</map:expander-set>
</map:expander-sets>
...
</map:sitemap>
isn't it more precisely describing what you want to achieve?
--
Stefano Mazzocchi <[EMAIL PROTECTED]>
--------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]