[Proposal] Introduce a first set of UI Extension Points

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[Proposal] Introduce a first set of UI Extension Points

Jean-Vincent Drean
Hi,

following the previous thread I'd like to make a new proposal,
introduce the following UIXPs in our templates :

* header top: after <div id="xwikimaincontainerinner">
* header bottom : before the closing </div>
* content top: after <div id="contentcontainer">
* content bottom : before the closing </div>
* footer top: after <div id="footerglobal">
* footer bottom : before the closing </div>

Since we don't have a builtin mechanism (as in: have top/bottom static
list independent from the UIXP ID in the UIX) for the moment we have
to emulate it by inserting multiple API calls (in the current
proposal: at the top and bottom of the elements).
Now we need to choose a syntax for the extension point IDs:

1) Use only dots in IDs: platform.header.top, platform.header.bottom, etc

I was worried about using dots at first [1] but I guess that if we
want to have a mapping between the HTML skeleton and UIXP IDs we'll
use html5 custom attributes (<element data-uixp="platform.header" />),
since we're talking about the future here.

2) Use a different separator for the position: platform.header#top

If we decide to create a "position" static list in UIX, a specific
separator for the position would allow to easily migrate existing
UIXs.

My preference goes to 2).

Here are the UIXPs that would appear in the current homepage (after
renaming the current IDs):

* platform.header#top
* platform.header#bottom
* platform.content#top
* platform.content#bottom
* platform.panels.rightPanels
* platform.panels.Applications
* platform.panels.Applications.more
* platform.footer#top
* platform.footer#bottom

[1] The problem dots is that if we decide to move towards a more
generic insertion mechanism
(http://dev.xwiki.org/xwiki/bin/view/Design/InterfaceExtensions#HInterfaceExtensions28IXs29)
with a mapping between HTML IDs and UIPX IDs, the IDs will not be HTML
friendly. It's not recommended to use dots in HTML elements ID and
Name attributes because of HTML selectors (#id.class is a CSS selector
that will look for <element id="id" class="class"/> and not <element
id="id.class"/>) which then requires to escape dots in IDs when
manipulating the DOM.

WDYT ?
JV.
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: [Proposal] Introduce a first set of UI Extension Points

vmassol
Administrator
Hi JV,

On Mar 7, 2013, at 12:19 PM, Jean-Vincent Drean <[hidden email]> wrote:

> Hi,
>
> following the previous thread I'd like to make a new proposal,
> introduce the following UIXPs in our templates :
>
> * header top: after <div id="xwikimaincontainerinner">
> * header bottom : before the closing </div>
> * content top: after <div id="contentcontainer">
> * content bottom : before the closing </div>
> * footer top: after <div id="footerglobal">
> * footer bottom : before the closing </div>

Sounds good.

> Since we don't have a builtin mechanism (as in: have top/bottom static
> list independent from the UIXP ID in the UIX) for the moment we have
> to emulate it by inserting multiple API calls (in the current
> proposal: at the top and bottom of the elements).
> Now we need to choose a syntax for the extension point IDs:
>
> 1) Use only dots in IDs: platform.header.top, platform.header.bottom, etc
>
> I was worried about using dots at first [1] but I guess that if we
> want to have a mapping between the HTML skeleton and UIXP IDs we'll
> use html5 custom attributes (<element data-uixp="platform.header" />),
> since we're talking about the future here.
>
> 2) Use a different separator for the position: platform.header#top
>
> If we decide to create a "position" static list in UIX, a specific
> separator for the position would allow to easily migrate existing
> UIXs.
>
> My preference goes to 2).
>
> Here are the UIXPs that would appear in the current homepage (after
> renaming the current IDs):
>
> * platform.header#top
> * platform.header#bottom
> * platform.content#top
> * platform.content#bottom
> * platform.panels.rightPanels
> * platform.panels.Applications
> * platform.panels.Applications.more
> * platform.footer#top
> * platform.footer#bottom

I don't have a strong opinion on 1) or 2). However I'd like to suggest that we follow the same as for translations for the namespace, i.e.:

platform.<module name>.<key>

I also propose to move all templates in a xwiki-platform-template module and have xwiki-platform-web depend on it.

For example if I add an uix in the Administration Application (located in xwiki-platform-administration), then it would be:
platform.administration.<key>

This would allow to rename your uixs into:

* platform.template.header#top
* platform.template.header#bottom
* platform.template.content#top
* platform.template.content#bottom
* platform.template.footer#top
* platform.template.footer#bottom

Now for the panels, 2 things:
1) I don't think the uix should be named panels. I'd prefer to keep the name "panel" for the implementation (ie xwiki-platform-panels-*) since this is what panels mean in XWiki so far. Something like "column" or "side".
2) We need to move the left panels/right panels (and possibly enabled/disabled) to the xwiki-platform-panels-ui module

So that would mean something like:

* platform.template.columns#left
* platform.template.columns#right

And:

* platform.panels.applicationPanel
* platform.panels.applicationPanel.more

Thanks
-Vincent

> [1] The problem dots is that if we decide to move towards a more
> generic insertion mechanism
> (http://dev.xwiki.org/xwiki/bin/view/Design/InterfaceExtensions#HInterfaceExtensions28IXs29)
> with a mapping between HTML IDs and UIPX IDs, the IDs will not be HTML
> friendly. It's not recommended to use dots in HTML elements ID and
> Name attributes because of HTML selectors (#id.class is a CSS selector
> that will look for <element id="id" class="class"/> and not <element
> id="id.class"/>) which then requires to escape dots in IDs when
> manipulating the DOM.
>
> WDYT ?
> JV.
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs