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]