On Thu, Dec 19, 2002 at 03:09:22PM +0300, Konstantin Piroumian wrote: > From: "Jeremy Quinn" <[EMAIL PROTECTED]> > > On Thursday, Dec 19, 2002, at 11:48 Europe/London, Christian Haul wrote: > > <snip-to-save-space-and-time /> > > > > > > > which would result is {chain:other-var} being looked up as > > > {myxml:/root/section/other-var} and {request-param:other-var} but of > > > course {chain:my-var} would turn into {myxml:/root/section/my-var} > > > which is not desired here. SimpleMappingMetaModule supports some more > > > mapping options if you need it. > > > > > > Chris. > > > > > > WOW! This stuff is amazing! > > And very complicated! > > Agree. > The mapping seems a little complicated to me. Can't we implement it a little > different, something like that was proposed by Jeff Turner: > > <component-instance > class="org.apache.cocoon.components.modules.input.ChainMetaModule" > logger="core.modules.input" name="chain"> > <input-module name="request-param" /> > <input-module name="myxml" map-to="/root/section/{0}"/> > </component-instance>
What's implemented currently is flexible enough to support two models: 1) Each IM is defined separately: <component-instance class="org.apache.cocoon.components.modules.input.SimpleMappingMetaModule" logger="core.modules.mapper" name="mapper"> <input-module name="site"/> <prefix>/site/</prefix> <suffix>/@href</suffix> </component-instance> <component-instance class="org.apache.cocoon.components.modules.input.XMLFileModule" logger="core.modules.xml" name="site"> <reloadable>true</reloadable> <file src="cocoon://samples/link/linkmap"/> </component-instance> Here, both {site:/site/index/@href} and {mapper:index} will refer to the same node in the XML file generated by http://localhost:8080/samples/link/linkmap. (incidentally, isn't the fact that XMLFileModule can use cocoon: protocol incredibly cool?:) 2) When a meta module 'uses' another module, it can override that module's configuration. For example, let's declare an unconfigured SimpleMappingMetaModule and configure it inside a ChainMetaModule: <component-instance class="org.apache.cocoon.components.modules.input.SimpleMappingMetaModule" logger="core.modules.mapper" name="chainmapper"/> component-instance class="org.apache.cocoon.components.modules.input.ChainMetaModule" logger="core.modules.input" name="mapped"> <input-module name="request-param"/> <input-module name="request-attr"/> <input-module name="session-attr"/> <input-module name="chainmapper"> <input-module name="site"/> <prefix>/site/</prefix> <suffix>/@href</suffix> </input-module> </component-instance> Again, {mapped:index} would refer to the same thing as {site:/site/index/@href}, unless, say, you added ?index=bob to the URL and the request-param kicked in to override it. It's even possible to 'partially' configure a module in another one. Eg, the <input-module name="site"/> could be moved to the chainmapper definition. I'm currently knee-deep in IMs implementing an InputModuleTransformer-based linking system for Forrest, after which I promise to help document this stuff (or rather, write lots and lots of examples). --Jeff > But of course, there's no much problems to use request parameters like > 'root/section/name'. This can cause a little troubles with JavaScript if > used as input element names. > > > Thank you very much for this explanation, I would not have groked that! > > Yes, we need a more detailed documentation on modules, especially for input > modules and their usage in the sitemap. > > Regards, > Konstantin > > > > > regards Jeremy > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]