Gary,

I achieve something like you suggest using a number of different techniques.

To answer your (a) question, basically Turbine allows you to do pretty much
whatever as long as you are willing to invest some time coding it. Other
than the resource loader path you found already there is nothing in Turbine
that allows for what you want to do on a per request basis by configuration.

For (b) here are some ideas - I have used all of them before in Turbine 2.1:

- Modify what is in TurbineTemplateService.java . Have fun with this one as
I say it is one of the nastiest pieces in Turbine. Point to your new service
class via turbine.properties.

- Use your build tool to put same named custom templates in different root
directories, allowing any custom templates to override the default ones. I
use a portal type app that needs to support different deployments in the
same web app, and this proved a useful approach to the problem of serving
custom templates. It has the advantage of minimizing the amount of changes
made to the template path requested during runtime.

- Extend the various DynamicURL related classes and pull tools (TemplateLink
et all) to build URLs with a custom path based on some property

-Modify the base module classes VelocityScreen, DefaultScreen,
TemplateScreen, etc. to handle the lookup you suggest. (Although this will
likely need some work with TurbineTemplateService above)

Any way you slice it there is some work involved. Thankfully, Turbine at
least allows you to do the work.

Hope this helps the thinking process...

-Peter


----- Original Message -----
From: "Gary Bisaga" <[EMAIL PROTECTED]>
To: "Turbine Users List" <[EMAIL PROTECTED]>
Sent: Monday, February 04, 2002 2:25 PM
Subject: Question about dynamically setting template location


> I'm not sure if this question would be for the Velocity list or the
Turbine
> list. I want to have the system look in several different locations for
its
> templates. Now, I know you can set file.resource.loader.path and have it
> look in multiple places.
>
> But the hitch is I want to set the list of paths differently on a
> per-request basis. That is, there is something in the request URL (or
> possibly the session) that indicates the set of template paths to use. For
> example:
> - For the URL http://host/app/servlet/app/portal/public, I might want to
> look first under /templates/public for the template, then if it's not
found
> look under /templates/common
> - The URL http://host/app/servlet/app/portal/local, however, would result
in
> looking first under /templates/local then under /templates/common.
>
> I looked at doing something to Velocity's FileResourceLoader, but that
> appears to be handled pretty statically; I don't see anything to be able
to
> change this path on a request-by-request basis. Another possibility would
be
> to modify the layout to find the templates and then pass the full name to
> Velocity (e.g. /templates/public/templatename.vm), perhaps by scanning
over
> them at startup time and putting the results into a table for easy access.
I
> guess my questions are (a) does anything handle this already and (b) if
not
> does my proposed solution sound reasonable.
>
> Thanks,
> <>< gary
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to