+1

Thanks,
Marius

On Tue, Mar 4, 2014 at 4:46 PM, [email protected] <[email protected]> wrote:
> Hi devs,
>
> I know this will come as a bomb. It came as a bomb for me too when I thought 
> about it this morning :)
>
> Issue
> =====
>
> So the question is: why do we need UIX when we already have a system to 
> provide extensibility in XWiki called XClass and XObjects?
>
> Let's take the example of the AddApplication extension point 
> (http://platform.xwiki.org/xwiki/bin/view/ExtensionPoint/AddApplicationUIX) 
> used in the Applications Panel. The UIExtensionClass xobjects for it don't 
> use the "content" field but they use the "parameters" textarea field, which 
> defines 3 parameters: "label", "target", "icon". This is actually not very 
> nice because the parameters are untyped and it's up to the extension point 
> user to parse the value (for example if the value is a list, it'll need to 
> tokenize the value to extract the different parts).
>
> A better way to implement this would be to have an ApplicationEntryClass with 
> 3 typed fields: "label", "target" and "icon". And the "target" field could 
> even be of type Page and when an XObject of that XClass is editer we would 
> get auto suggest for it...
>
> This is the XWiki way... And with UIExtension we've suddenly introduced 
> non-typed versions of XClasses... and this is IMO anti-xwiki!
>
> So, with an ApplicationEntryClass all the Application Panels needs to do, is 
> use XWQL to find all xobjects (or introduce some script service to do that in 
> the same as we have a script service for UIX).
>
> Some Q&A
> ========
>
> Q: How to support scope with XClass as we have in UIExtension?
> A: - For "user" scope, this can be achieved by setting a Rights xobject on 
> the page containing the XObject.
>    - For "global" scope, this can be achieved by putting all global XObjects 
> on the main wiki.
>
> Q: UIX could be implemented as components, we would loose that!
> A: Yes but look at it, UIX are for user interface and the best place to 
> define the user interface is in wiki pages since that's the place where the 
> UI can be most easily modified by the user to fit his needs. If need be, we 
> can have Java code that creates XObjects.
>
> Q: Right now it's possible to use velocity for the parameters of property 
> values in the "parameters" textarea of UIExtensionClass
> A: Several possibilities: Use a textarea field type, modify xwiki to add 
> optional support for applying velocity on a String property, apply velocity 
> at the place of usage through #evaluate.
>
> Way forward
> ===========
>
> * Deprecate the UIExtension notion, i.e. move the code to a legacy module 
> (still bundle it in XE with other legacy modules)
> * Introduce specific XClass(s) to replace existing UIX (see 
> http://platform.xwiki.org/xwiki/bin/view/ExtensionPoint/WebHome for the full 
> list)
> * Revert Panel display code (leftpanels.vm, rightpanels.vm) to before the 
> introduce of the UIExtension module.
> * In order to be backward-compatible, if the $services.uix script service 
> exist, also look for UIX. For example in the Application Panel. Note: I 
> believe this the main and probably only UIX really used at the moment.
>
> Here's my +1
>
> Thank you
> -Vincent
>
>
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to