________________________________________ 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