On Wed, 2008-08-20 at 14:52 +0300, Sjur Moshagen wrote: > Den 5. jul. 2008 kl. 00.27 skrev Ross Gardler: > > >> Have I understood correctly that whatever the location, the config > >> info will be available in the relevant stylesheet as child elements > >> of a /config/ element on the top document level? > > > > There are two ways of gaining access to the properties. The original > > way I implemented is by passing them in via the sitemap using > > properties:pdfOutput:fontfamily}. This technique can be seen in the > > daisy input plugin for example. > > > > Later Thorsten implemented the o.a.f.p.output.inputModule to allow > > all properties to be pulled together into a single file. Using the > > dispatcher you can do "cocoon://module.properties.properties" and > > have all properties returned (at leat I think that's how it works, > > I've never used it this way myself). > > > > In the dispatcher "cocoon://skinconf.xml" returns the same as > > "cocoon://module.properties.properties". > > > > So, in order to make all properties available in your stylesheets > > aggregate the output of "cocoon://module.properties.properties" with > > the source document. > > > > Personally, I'd add the properties using the first method as it > > would be more efficient. But if you have too many then the latter > > method is good (if worried about efficiency make it a caching > > pipeline and use an XSLT to filer out unwanted properties. > > The first implementation only included three properties: > > output.pdf.fontFamily.serif > output.pdf.fontFamily.sansSerif > output.pdf.fontFamily.monospace > > I made these available using the first approach Ross described above, > ie passing them in via the sitemap as xsl parameters. > > But as I indicated later in this thread, one can easily imagine the > need for more finegrained control of font family usage. I have now > reworked my implementation to allow any of the present font-family > specifications to be individually specified by the user on a per- > project basis. But the list is now quite long (defaults in parenthesis): > > output.pdf.fontFamily.rootFontFamily (serif) > output.pdf.fontFamily.firstFooterFontFamily (sans-serif) > output.pdf.fontFamily.evenHeaderFontFamily (sans-serif) > output.pdf.fontFamily.evenFooterFontFamily (sans-serif) > output.pdf.fontFamily.oddHeaderFontFamily (sans-serif) > output.pdf.fontFamily.oddFooterFontFamily (sans-serif) > output.pdf.fontFamily.documentTitleFontFamily (sans-serif) > output.pdf.fontFamily.versionFontFamily (sans-serif) > output.pdf.fontFamily.authorsFontFamily (sans-serif) > output.pdf.fontFamily.TOCFontFamily (sans-serif) > output.pdf.fontFamily.sectionTitleFontFamily (sans-serif) > output.pdf.fontFamily.sourceFontFamily (monospace) > output.pdf.fontFamily.codeFontFamily (monospace) > output.pdf.fontFamily.warningTitleFontFamily (sans-serif) > output.pdf.fontFamily.noteTitleFontFamily (sans-serif) > output.pdf.fontFamily.fixmeTitleFontFamily (sans-serif) > > That is, 16 properties all in all (they all fall back to the indicated > defaults, which means one can specify only the three base font > families, and/or individually override any of the above). This makes > the sitemap+parameter solution very clumsy, and hard to maintain. Thus > solution two (aggregation) seems the most elegant. > > BUT: this creates a dependency between the o.a.f.p.output.pdf and > o.a.f.p.output.inputModule - no pdf files will be generated if the > output.inputModule is not listed in the required plugins list. > Instead, one will get an error message that the pdf file could not be > found (really: the aggregation did not succeed because the "cocoon:// > module.properties.properties" source didn't match anything). > > QUESTIONS: > > Is this dependency acceptable?
IMO yes, since the plugin is very small and thought a infrastructure code. Like you describe the alternative to implement it in the sitemap is cumbersome to maintain. > How should it/can it be formalised? Not sure what you mean? > > At least we need to update the seeds to include the > o.a.f.p.output.inputModule as well as the pdf plugin (new seeds only > include the pdf plugin). As I understand it you commit to the fresh-site forrest.properties files (skins/dispatcher) and the cron is doing the rest. > > Comments? > Thanks for looking into this Sjur. salu2 > Best regards, > Sjur > -- Thorsten Scherler thorsten.at.apache.org Open Source Java consulting, training and solutions