On 5 Feb 2016 at 10:15:56, Gerritjan Koekkoek
(gerritjan@cdlsworld.org(mailto:gerritjan@cdlsworld.org)) wrote:
________________________________________
From: users on behalf of vincent(a)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
(gerritjan@cdlsworld.org(mailto:gerritjan@cdlsworld.org)) wrote:
________________________________________
From: users on behalf of vincent(a)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 (gerritjan(a)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/4533b98fb45a9010198582a7053bc6…
>>> 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 vincent(a)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
(gerritjan@cdlsworld.org(mailto:gerritjan@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
>