________________________________________
From: users <users-boun...@xwiki.org> on behalf of vinc...@massol.net 
<vinc...@massol.net>
Sent: 05 February 2016 09:53
To: XWiki Users
Subject: Re: [xwiki-users] UIExtension Access document holding the UIExtension 
object

On 5 Feb 2016 at 09:44:08, Gerritjan Koekkoek 
(gerrit...@cdlsworld.org(mailto:gerrit...@cdlsworld.org)) wrote:

>
> ________________________________________
> From: users on behalf of vinc...@massol.net
> Sent: 05 February 2016 09:39
> To: XWiki Users
> Subject: Re: [xwiki-users] UIExtension Access document holding the 
> UIExtension object
>
> On 5 Feb 2016 at 09:35:36, Gerritjan Koekkoek (gerrit...@cdlsworld.org) wrote:
>
> Hi,
> Using:
> So you could have params like:
>
> name = $doc.documentReference (or $doc.fullName)
> title = $doc.title
> creator = $doc.creatorReference
> hasAdmin = $services.authorization.checkAccess(‘ADMIN’, $doc.authorReference)
>
> >> Looks like the $doc is retrieving the current doc and not the Document 
> >> that holds the UIExtension object?
> Any way to access the holding Document?
>
>
> $xwiki.getDocument(‘name of uiextension doc’)
>
> >>> Thanks, that is indeed the 'simple' solution.
> >>> This requires updating the parameter if you move the page/object: use 
> >>> Case is distributing the app to another wiki


You could open a jira issue to request an improvement.

FWIW and FYI the code is here:
https://github.com/xwiki/xwiki-platform/blob/4533b98fb45a9010198582a7053bc67e0b81b26d/xwiki-platform-core/xwiki-platform-uiextension/xwiki-platform-uiextension-api/src/main/java/org/xwiki/uiextension/internal/WikiUIExtensionParameters.java#L159-L159

>>>> Thanks a lot. It was very helpful. I think the workaround is not too 
>>>> difficult and I think the value of having access to that document 
>>>> meta-information is limited for the typical use-cases of a UIExtension, So 
>>>> a JIRA issue would maybe be too much
My suggested work-around would be to use the ExtensionID; and with that ID 
perform a XWQL query on object of  UIExetensionClass where ExtensionID = 
:ExtensionID(from the uiExtension)
Off course this would require Unique ExtensionID's but that would anyway be a 
good-practice?

Thanks
-Vincent

> ________________________________________
> From: users on behalf of vinc...@massol.net
> Sent: 04 February 2016 15:32
> To: XWiki Users
> Subject: Re: [xwiki-users] UIExtension Access document holding the 
> UIExtension object
>
> Hi,
>
>
> On 3 Feb 2016 at 11:24:22, Gerritjan Koekkoek 
> (gerrit...@cdlsworld.org(mailto:gerrit...@cdlsworld.org)) wrote:
>
> > Hi,
> >
> >
> > We have pages having ONE UIExtension objects of XWiki.UIExtensionClass.
> >
> > Using as
> >
> > $services.uix.getExtensions('dashboard.mainMenu.items',{'sortByParameter' : 
> > 'displayorder'})
> >
> >
> > With a #foreach loop we can access all the parameters. (and other extension 
> > properties)
> >
> > But is it possible to get the page information (Name, Title, Creator, 
> > Rights)
> >
> >
> > The use case is that we want a dynamic menu based on that information?
> >
> >
> > The following did not give the desired result:
> >
> > #set($dashboardMenuItems = 
> > $services.uix.getExtensions('dashboard.mainMenu.items',{'sortByParameter' : 
> > 'displayorder'}) )
> >
> > #foreach($dashboardMenuItem in $dashboardMenuItems)
> >
> > #set($dashboardMenuItemDocument = $xwiki.getDocument($dashboardMenuItem))
> >
> > #end
>
>
> I guess you already know about 
> http://extensions.xwiki.org/xwiki/bin/view/Extension/UIExtension+Module ?
>
> $services.uix.getExtensions returns a List and UIExtension is:
>
> public interface UIExtension
> {
> /**
> * @return the ID of this extension
> */
> String getId();
>
> /**
> * @return the ID of the extension point this UI extension is providing an 
> extension for
> */
> String getExtensionPointId();
>
> /**
> * A map of parameters provided by the extension. When providing a new 
> Extension Point the developer must document
> * the list of parameters he requires.
> *
> * @return a map of parameters provided by the extension
> */
> Map getParameters();
>
> /**
> * @return the {@link Block} that must be rendered when this extension is 
> displayed
> */
> Block execute();
> }
>
>
> So as you can see there’s no way to return anything else here.
>
> However, when you define your UIX you can pass any number of parameters 
> (which are retrieved through calling getParameters() on UIExtension).
>
> So you could have params like:
>
> name = $doc.documentReference (or $doc.fullName)
> title = $doc.title
> creator = $doc.creatorReference
> hasAdmin = $services.authorization.checkAccess(‘ADMIN’, $doc.authorReference)
> ...
>
> Hope it helps,
> -Vincent
>
>
> > Gerritjan Koekkoek
> > Vader van Rai Koekkoek (cdls) en voorzitter vereniging CdLS
> > Visit our website
> > Facebook
> > email
>
_______________________________________________
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to