Hi Marius,

While this is technically interesting isn't this adding too much complexity for 
the gain it brings?

For ex:
* the transformation will run always on all pages for all content, thus adding 
some small performance lag
* it's a little bit too magical maybe

I feel your example doesn't clearly show the advantage:
* the grouping is saving 1 line of code in the example
* the automatic import is saving 4 lines at the expense of clarity

Personally I think i'd *much* prefer to hide all this behind a gallery macro:

{{gallery}}
image:first.png
...
image:last.png
{{/gallery}}

That macro would automatically add the SSX/JSX + class, thus hiding all 
complexity and implementation details from users.

WDYT?

Thanks
-Vincent

On Jan 24, 2011, at 5:08 PM, Marius Dumitru Florea wrote:

> Hi devs,
> 
> I have this wiki syntax:
> 
> ----------8<----------
> {{velocity output="false"}}
> $xwiki.ssrx.use('uicomponents/widgets/gallery.css')
> $xwiki.jsrx.use('uicomponents/widgets/gallery.js')
> {{/velocity}}
> (% class="gallery" %)(((
> image:first.png
> ...
> image:last.png
> )))
> ---------->8----------
> 
> and I'd like to make the resource import automatic. I think we can 
> achieve this in two steps.
> 
> (1) Add a way to group skin extensions. I'd like to be able to write this:
> 
> ----------8<----------
> {{velocity output="false"}}
> $xwiki.gsx.use('gallery')
> {{/velocity}}
> (% class="gallery" %)(((
> image:first.png
> ...
> image:last.png
> )))
> ---------->8----------
> 
> (2) Write a rendering transformation that looks for style names (CSS 
> classes) in the content and imports the skin extension group with the 
> same name. This way I'd be able to write just:
> 
> ----------8<----------
> (% class="gallery" %)(((
> image:first.png
> ...
> image:last.png
> )))
> ---------->8----------
> 
> Let's consider the technical details now:
> 
> (1) I propose we add two XWiki classes:
> 
> XWiki.SkinExtension
> * type (StaticList): jsrx
> * resource (String): uicomponents/widgets/gallery.js
> 
> XWiki.SkinExtensionRole
> * role (String): gallery
> 
> which will be used by a new SkinExtension plugin and component 
> (hint=gsx). The XWiki.SkinExtensionRole objects will be joined with 
> XWiki.SkinExtension objects by document id. In other words, in order to 
> create a skin extension group you have to add a XWiki.SkinExtensionRole 
> object and multiple XWiki.SkinExtension objects to a document.
> 
> To make group creation easier for StyleSheetExtension and 
> JavaScriptExtension the new skin extension plugin will include them 
> automatically in the group defined by the XWiki.SkinExtensionRole. In 
> other words if you want to group a JSX and a SSX that are on the same 
> document you just have to add a XWiki.SkinExtensionRole object to that 
> document.
> 
> (2) The rendering transformation that will automatically import the skin 
> extension groups based on style names will use the skin extension 
> component defined at step (1). This transformation should be the last 
> one executed.
> 
> WDYT? I'd like to implement this ASAP as it doesn't seem to be very 
> complicated.
> 
> Thanks,
> Marius
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to