On Fri, 2005-07-08 at 08:30 +0100, Ross Gardler wrote:
> Thorsten Scherler wrote:
> > On Thu, 2005-07-07 at 22:32 +0200, Thorsten Scherler wrote:
> > 
> >>On Thu, 2005-07-07 at 16:48 +0100, Ross Gardler wrote:
> >>
> >>>Thorsten Scherler wrote:
> >>>
> >>>>I added the dir specific view matcher to the location map. Will try to
> >>>>merge tomorrow the view specific stuff back to trunk. 
> >>>
> >>>OK, I'm using this now, just playing to start with. Here is what I want 
> >>>to do:
> >>>
> >>>I'm using the branding contracts. On the home page I just have the 
> >>>branding-tagline-name contract, but on subsections (i.e. 
> >>>sub-directories) I want to include a branding-tagline-tagline contract 
> >>>as well. All other parts of the view remain the same.
> >>>
> >>
> >>http://marc.theaimsgroup.com/?l=forrest-dev&m=110107619329543&w=2
> >>
> >>"You can as well mix atomic parts with grouping templates.
> >><forrest:view output-format="xhtml, fo" name="intro">
> >>  <forrest:hook name="intro">
> >>   <forrest:nugget name="grouplogo"/>
> >>   <forrest:call-template name="sports"/>
> >>  </forrest:hook>
> >></forrest:view>"
> >>
> >>The nuggets/fbits are called contracts.
> >>
> >>This feature is not yet implemented but like you see IMO that will have to 
> >>come pretty soon.
> >>It is easy to implement because it is just a transformation to a xinclude 
> >>tag away. ;-)
> > 
> > 
> > I could not resist and implemented this in trunk. Please test and report
> > back. 
> 
> :-)) Not played with it yet, but it looks great.
> 
> Question 1:
> 
> Do you see a problem with having the same fallback mechanism that you 
> have created for the *.ft files?
> 

Actually that is possible. 

...but you mean *.fv (forrest:views), or? 

...or better ask you mean the mechanism I implemented with the
viewLocationmap.xml? In this case it would be viewTemplatesmap, or?

Because *.ft (forrest:templates) are match with the good old 'select
type="exit"'. 

BTW the viewLocationmap.xml file should be generated or cached, because
I reckon it takes a good while to calculated in *big* projects.

> We would then be able to create a default.fv with calls to templates. 

yes, that file would have ideally only calls to templates.

I needed to slightly modify the match for the *.vt (view:template) to
allow nested <forrest:call-template />. 

Now we can use it like this:
****************************************
in default.fv.xml
########################################
<forrest:call-template name="header"/>
****************************************
****************************************
then in header.vt.xml
########################################
<forrest:hook name="header">
  <forrest:call-template name="branding-tagline-default"/>
  <forrest:contract name="nav-main"/>
</forrest:hook>
****************************************
****************************************
...and finally in branding-tagline-default.vt.xml
########################################
<forrest:contract name="branding-tagline">
  <forrest:properties contract="branding-tagline">
    <forrest:property name="branding-tagline-name"> new xXx seed 
      </forrest:property>
    <forrest:property name="branding-tagline-tagline"> powered by
forrest:views 
      </forrest:property>
  </forrest:properties>
</forrest:contract>

> Then, if we want to override the layout (i.e. add a new contract) we can 
> add a new default.fv into a subdir or a file.fv for a specific file (as 
> you currently have implemented). If we want to override the 
> configuration of a contract within a view we would override the template 
> with something like sports.ft (subdir default) or sports.index.ft (index 
> file config).
> 

I understood you like this:
We implement the viewTemplatesmap.xml (like the viewLocationmap.xml)
then we can use fallbacks like with forrest:views for *.vt.xml
(view:template).

default.fv.xml ({$xdocs}/subdir) this has 
<forrest:call-template name=header"/>
then the viewTemplatesmap.xml would look up whether there is a
header.default.vt.xml and use it. If not it will use a fallback.

Yeah I need to implement the viewTemplatesmap.xml and then that is
possible.


> Question 2:
> 
> Should we merge all this stuff together into a single document so the 
> templates are defined in the *.fv file? We can then add a 
> <forrest:import src="default.fv"> and override elements within that (as 
> we do in XSL). This would reduce the number of files quite considerably 
> and make editing by hand much easier (at least I believe so)
> 

Hmm, what do you mean? I am unsure whether I understood you right. Right
now we splitting things apart for easy maintainment but on the other
hand you want to merge them again? 

...but maybe that is the part I did not understood from the beginning
from nicolas mail. *Please* explain. ;-)

> Another (minor) benefit of this is that it would also remove the fixed 
> naming of view files too ("default" is a little too gneeric, I think we 
> will find sites with default.html so how would we ovveride the 
> individual file view in this case).
> 

Yeah, I thought so from the beginning that is to generic but I am
parsing the name for the "default.fv.xml" from the pipeline in the xsl,
which means as soon as we have views in the core we can easily make this
a property in the forrest.properties. ;-)

> Ross

salu2
-- 
thorsten

"Together we stand, divided we fall!" 
Hey you (Pink Floyd)

Reply via email to