Cyriaque Dupoirieux wrote:
le 26/04/2006 14:50 Ross Gardler a écrit :
Cyriaque Dupoirieux wrote:
le 26/04/2006 11:52 Ross Gardler a écrit :
Cyriaque Dupoirieux (JIRA) wrote:
[
http://issues.apache.org/jira/browse/FOR-412?page=comments#action_12376446
]
Cyriaque Dupoirieux commented on FOR-412:
-----------------------------------------
The best way to do this should be to have a specific resource
projectInfo.css - find via the lm -
Does anyone know how to use a specific resource with an input plugin ?
I don't quite understand the question, can you explain exactly what
you mean by "specific resource with an input plugin"?
I mean that projectInfo specific styles should not appear in a
standard forrest css file, but in a specific one which will be find
with a good match in the projectInfo location map (with a fallback
mecanism in order to let the customer override it) and only included
in the pages generated by this plugin.
(Don't know if I am clear enough ?)
Yep, very clear.
Not quite sure, let's follow...
There is no existing approach to this, but I think there are a number
of potential solutions. First, lets notice that it is much easier to
do this in the dispatcher than with skins. Therefore, the solution I
propose below is a quick solution that should work (not tested) with
minimal effort. I've noted a couple of problems with this approach at
the end of the mail.
What we need to do is dynamically insert something into skinconf.xml.
We therefore need to intercept the request for skinconf.xml, i.e. add
a plugin locationmap entry of:
<match pattern="project.skinconf">
<location src="cocoon://projectInfo.skinconf" />
</match>
Our problem is more to use a specific resource - such as a stylesheets
file ie. projectIcon.css - and not use a specific skinconf.
Well an input plugin should not be defining any of the output specific
stuff, like CSS. That is the job of the skin system. My proposal is a
way of allowing an input plugin to pass information to the final
skinning/theming stage.
I know it's not very nice because we define a specific output - which is
our css file - to define the layout of the ProjectInfo page - which is
an input plugin.
Exactly...
But I don't like the idea to include in the forrest core some the
definition of the layout of a specific plugin.
I totally agree. There should be complete separation between core and
plugins.
In other words :
* ProjectInfo should not propose resources, but just neutral
information (in Xdocs or XHTML...)
Agreed
o Which is not the case today because the plugin generate a
use of pictures such as add.gif. And he doesn't supply these
resources which are stored in the core.
That is an oversight on the extraction of the projectInfo stuff from
core. I don't think you were around way back then, but projectInfo was
originally totally core stuff, the images must be leftovers from the
move, I think it was the first code I ever extracted from core into a
plugin.
* The idea of this FOR-412 is to avoid this through the use of css
style - which is much better.
I don't understand what you are suggesting here. My proposal provided a
mechanism for using CSS, just as you suggest.
* Now the question : Does a plugin using resources also supply
default resources (add.gif or projectInfo.css...) or not ?
o If he supplies default, how ?
o If he doesn't - so what ?
Yes, and No...
Yes, a plugin can (and should) provide its own *content* resources, such
as gifs. These should be provided via the resources/ directory
structure. They would need to be exposed via the locationmap and sitemap
appropriately. For example (below is untested, but I'm pretty sure it
will work):
For image:
/resource/images/add.gif
In XDoc:
<img src="projectInfoPlugin/images/add.gif"/>
In resources.xmap of projectInfo plugin:
<map:match pattern="projectInfoPlugin/images/**.gif"/>
<map:read src="lm:projectInfo.image.{1}.gif"/>
</map:match/>
In locationmap of projectInfo plugin (optionally overwritten in project
lcoationmap):
<match pattern="projectInfo.image.**">
<location src="resources/images/{1}"/>
</match>
And now for the No part...
CSS is different, it is not content but is instead style information
that needs to be embedded in the final output stage. This is something
that cannot, and should not, be done by anything other than the skinning
or themer stage.
There is, as far as I remember, no XDoc equivalent of <img src="..."/>
for including CSS, nor should there be since this is not content. The
mechanism we have for extending the forrest defined skins is extra-css
in skinconf.xml. Thus we end up at my proposal again (and the dispatcher
of course).
My proposal was only the same as above, but the xmap part had a couple
of little tweaks to embed the CSS supplied by the projectInfo plugin in
skinconf.xml so that it will make its way through to the final output stage.
So, did I understand you, or am I addressing something completely different?
Ross