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

On 5 Feb 2016 at 10:15:56, Gerritjan Koekkoek 
(gerrit...@cdlsworld.org(mailto:gerrit...@cdlsworld.org)) wrote:

>
> ________________________________________
> From: users on behalf of 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?

yes

>>>>>> Maybe I have a use case for a Jira issue ? Could you evaluate if you 
>>>>>> consider it a bug:
I have set the rights of a page holding an UIExtension object to DENY VIEW to 
$guest
The UIExtension will still show:
#set($dashboardMenuItems = 
$services.uix.getExtensions('dashboard.mainMenu.items',{'sortByParameter' : 
'displayorder'}) )

But then performing the XWQL to access meta information of that page works as 
expected: it does not return any information

But I consider it kind of kinky that the object is showing in the 
getExtensions? Or not?

- Gerritjan

-Vincent

> 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