On Dec 18, 2008, at 3:48 PM, Sergiu Dumitriu wrote:
Sergiu Dumitriu wrote:
Hi devs,
While working on a UI feature that makes use of skin extensions (both script and style), I was faced with a difficult choice: where to put these extensions?
The difficulty comes from several factors: - This is a small feature that doesn't deserve its own application - Yet, it does not fit in any of the existing applications - I don't want to put the js and css in Albatross, as it was done until now - Resource-based extensions are not as flexible as document-based ones, and I'd still need a .jar module to stick them to.
Since this is just the first in a long series of such small extensions, leading to a simpler and more modular skin mechanism, I think we should take a decision.
A while back, when designing Interface eXtensions, I also proposed Interface Components, which is exactly what I would like to do (as the packaging, since the code is already structured like a component). See http://dev.xwiki.org/xwiki/bin/view/Design/InterfaceExtensions#HAfterwards
So, the choices are:
1. Stick to the past and put the code in Albatross, registering it in platform-web/javascript.vm and stylesheet.vm.
2. Put the files as resource skin extensions inside xwiki-core.
3. Force the documents into an existing application, for example administration or enterprise-wiki.
4. Create a new application for holding Interface Components.
5. Create a new application for each IC.
Currently, my preference is +1 for 5, with a +0 for 4 and -1 for the rest. Here's some of my motivations:
Going further, since there are no objections, I propose the following structure:
- platform - skins - albatross - toucan - components (pom id = xwiki-skin-components) - attachments (pom id = xwiki-skin-attachments) - jump - suggest
The packaging for components is XAR, and they are declared as dependencies in products (enterprise/wiki/pom.xml).
Before we do this could you just re-explain quickly the differences between: - interface extensions - interface components - skin components Isn't there also something called "template components/extensions" which are common to all skins? I also don't understand the difference between templates and "skin components" since they seem to have the same role: some code that is shared between all skins. I'm -0 for now (till I understand it) to change the skins dir as suggested since skins are not templates for me. Basically I don't disagree but I don't understand about all these terms and how they'll fit together to give a good answer to your proposal. I'd love a diagram :) Thanks -Vincent