_______________ From: users-boun...@xwiki.org [users-boun...@xwiki.org] On Behalf Of Vincent Massol [vinc...@massol.net] Sent: 24 February 2012 09:59 To: XWiki Users Subject: Re: [xwiki-users] understanding Livetable Macro (XE 2.4.30451)
>> Would be great to capitalize on this thread and improve the documentation of >> the Livetable macro on extensions.xwiki.org... >> >> :) >> >> Thanks >> -Vincent I'll do my best to improve that documentation once I understand the macro! Thanks to all of you for your work! Cheers, Ricardo On Feb 24, 2012, at 9:52 AM, Marius Dumitru Florea wrote: > On Thu, Feb 23, 2012 at 6:58 PM, > <ricardo.julio.rodriguez.fernan...@sergas.es> wrote: >> Thanks! Please, see below... >> ________________________________________ >> From: users-boun...@xwiki.org [users-boun...@xwiki.org] On Behalf Of Marius >> Dumitru Florea [mariusdumitru.flo...@xwiki.com] >> Sent: 22 February 2012 12:39 >> To: XWiki Users >> Subject: Re: [xwiki-users] understanding Livetable Macro (XE 2.4.30451) >> >> On Wed, Feb 22, 2012 at 1:06 AM, >> <ricardo.julio.rodriguez.fernan...@sergas.es> wrote: >>> Hi! Thanks for your detailed answer. Please, see below... >>> -- >>> Ricardo Rodríguez >>> Research Management and Promotion Technician >>> Health Research Institute of Santiago de Compostela (IDIS) >>> http://www.idisantiago.es >>> ________________________________________ >>> From: users-boun...@xwiki.org [users-boun...@xwiki.org] On Behalf Of Marius >>> Dumitru Florea [mariusdumitru.flo...@xwiki.com] >>> Sent: 20 February 2012 09:03 >>> To: XWiki Users >>> Subject: Re: [xwiki-users] understanding Livetable Macro (XE 2.4.30451) >>> >>> Hi Ricardo, >>> >>> On Sun, Feb 19, 2012 at 12:25 PM, >>> <ricardo.julio.rodriguez.fernan...@sergas.es> wrote: >>>> Hi all! >>>> >>>> First of all, please, allow me to thank again all XWiki Team for this >>>> great framework! It could be it happens that on Sunday I'm prone to purple >>>> prose, but I do think I'll feel the same tomorrow morning! :-) >>>> >>>> Now, some doubts here... >>>> >>>> I'm not able to understand how filtering does work in Livetable Macro. For >>>> instance, I get a JSON file including a number of results following a >>>> modified getgroupmembers.vm. Here the line of getgroupmembers getting >>>> members column >>>> >>>> "member" : "$mdoc.getTranslatedDocument().title #if($hasAdmin || >>>> $isAdvancedUser) (#if($wikiname != 'local')$wikiname:#end$m)#end", >>>> >>>> and one of the items in the JSON file... >>>> >>>> { >>>> "fullname" : "XWiki.XWikiIDISC04", >>>> "prettyname" : "XWikiIDISC04 (XWiki.XWikiIDISC04)", >>>> "wikiname" : "local", >>>> "memberurl" : "/bin/XWiki/XWikiIDISC04", >>>> "docurl" : "/bin/XWiki/XWikiIDISArealNeurology", >>>> "grayed" : "false", >>>> "doc_viewable" : "true", >>>> "doc_hasadmin" : "${xwiki.hasAccessLevel('admin', $context.user, >>>> $doc)}", >>>> "member" : "Neurobiology (XWiki.XWikiIDISC04)", >>>> "member_url" : "/bin/XWiki/XWikiIDISC04", >>>> "doc_delete_url" : >>>> "/bin/XWiki/XWikiIDISArealNeurology?xpage=deletegroupmember&fullname=XWiki.XWikiIDISC04&ajax=true" >>>> } >>>> >>>> The Livetable Macro instance showing group membership reads... >>>> >>>> #set($columnOptions = { >>>> "member" : {'link': 'auto', 'type': 'text', 'displayName': 'Research >>>> groups'}, >>>> >>> >>>> But if I use strings content in $mdoc.getTranslatedDocument().title, I get >>>> no results in the filtered database. only strings in $m (showing the >>>> fullname of the document) work fine. You could check this behaviour on >>>> your own here... >>>> >>>> http://atrium_km.idisantiago.es/bin/XWiki/XWikiIDISArealNeurology >>>>> >>>>> With Firebug (or any other browser tool that catches XmlHttpRequests) >>>>> you can see that when you filter the live table (e.g. type 'logy') a >>>>> request like this is made: >>>>> >>>>> http://atrium_km.idisantiago.es/bin/XWiki/XWikiIDISArealNeurology?xpage=getgroupmembers&offset=1&limit=15&reqNo=5&member=logy&sort=member&dir=asc >>>>> >>>>> Notice 'member=logy' which specifies the filter. Now if you search >>>>> getgroupmembers.vm for '$request.member' (that's how request >>>>> parameters are accessed) you'll see why group members are filtered by >>>>> their document name and not by their document title. >>>>> >>> >>> Thanks for the explanation. Are these lines the ones concerned in this task? >>> >>> #set($rm = $xwiki.rightsmanager) >>> #if($request.member && !$request.member.trim().equals('')) >> >>> #set($countm = $rm.getAllMatchedMembersNamesForGroup($doc.fullName, >>> $request.member, 0, 0, $order).size()) >>> #set($members = $rm.getAllMatchedMembersNamesForGroup($doc.fullName, >>> $request.member, $limit, $off, $order)) >> >>>>>> I replaced these two lines with: >>>>>> >>>>>> ----------8<---------- >>>>>> ## Statement to filter group members by their translated title. >>>>>> #set($statement = "FROM BaseObject as groupObject, StringProperty as >>>>>> memberField, XWikiDocument as memberDoc WHERE groupObject.name = >>>>>> :groupName and groupObject.className = 'XWiki.XWikiGroups' and >>>>>> groupObject.id = memberField.id.id and memberDoc.fullName = >>>>>> memberField.value and (memberDoc.language = :language or >>>>>> (memberDoc.language = '' and memberDoc.defaultLanguage = :language)) >>>>>> and lower(memberDoc.title) like :titleFilter") >>>>>> ## Determine the member count. >>>>>> #set($countStatement = "SELECT count(memberField.value) $statement") >>>>>> #set($query = $services.query.hql($countStatement)) >>>>>> #set($query = $query.bindValue('groupName', $doc.fullName)) >>>>>> #set($query = $query.bindValue('language', $context.language)) >>>>>> #set($query = $query.bindValue('titleFilter', >>>>>> "%$!request.member.toLowerCase()%")) >>>>>> #set($countm = $query.execute().get(0)) >>>>>> ## Retrieve a subset of the filtered members. >>>>>> #set($selectStatement = "SELECT memberField.value $statement ORDER BY >>>>>> memberDoc.title $order") >>>>>> #set($query = >>>>>> $services.query.hql($selectStatement).setLimit($limit).setOffset($off)) >>>>>> #set($query = $query.bindValue('groupName', $doc.fullName)) >>>>>> #set($query = $query.bindValue('language', $context.language)) >>>>>> #set($query = $query.bindValue('titleFilter', >>>>>> "%$!request.member.toLowerCase()%")) >>>>>> #set($members = $query.execute()) >>>>>> ---------->8---------- >>>>>> >>>>>> and it worked for me on a 4.0 snapshot. I'll let you adapt it for your >>>>>> older version of XWiki Enterprise. >>>>>> >>>>>> Hope this helps, >>>>>> Marius >> >> It helped a lot! It is now working nicely. This instalation has suffered a >> lot with exceptions related with Java memory handling. During the trials to >> get the scrip working, I've had to restart the server several times. We have >> being working on this a couple of years ago to no avail. Right now, it seems >> to me that it is time for a new upgrade. >> >> I've had to done a couple of minor changes: >> >> 1. To remove $order from #set($selectStatement = "SELECT memberField.value >> $statement ORDER BY memberDoc.title $order"). This parameter there causes >> the query to fail. At lease here running XWiki Enterprise 2.4.30451 >> >> 2. To sligthly modify $statement. If I only use groupObject.className = >> 'XWiki.XWikiGroups', the script works to filter groups including other >> groups. But not for groups including users or any other kind of document. I >> modified this condition to read... (groupObject.className = >> 'XWiki.XWikiGroups' or groupObject.className = 'XWiki.XWikiUsers'). >> >> With this two changes, I'm now sit-back and enjoying these nice Livetables. >> I'm sure users will enjoy as well! >> >> Thank you for the example and for following this thread! I keep catching up >> once again with XWiki! >> >> Please, let me add two more questions: >> > >> 1. As I am not using $rm.getAllMatchedMembersNamesForGroup to filter >> records, the button changing order of the list is not longer available. >> Please, is there any way of getting it working at the same time I use the >> customized script to get **$countm** and **$members**? > > You removed the ORDER By clause from the select statement. The reason > it was failing the query is probably because (by the book) you can > sort only on a field that is selected. HSQLDB didn't complained when I > tested but MySql and the rest don't accept this probably. If you want > to keep the ORDER BY clause then you have to include memberDoc.title > in the SELECT clause: > > #set($selectStatement = "SELECT memberField.value, memberDoc.title > $statement ORDER BY memberDoc.title $order") > > but then you also have to extract the members list from the query > result because now each result row is a list with two values. > >> >> 2. The only portion of the simple pages showing group membership I'm not >> able to translate is the string introducing the number of results show and >> the number of them included in each page. To be clearer... >> >> http://atrium_km.idisantiago.es/bin/download/XWiki/XWikiIDISAreaOncology/atriumkmResults.png >> >> In this case, it reads "Resultados 1 -7 de 7 per page of [selector]". >> Resultados and de are in Spanish. Per page of, in English. Changing the >> current language doesn't affect to this text chunck. >> >> Please, where could I correct this behavior? > > Looks like platform.livetable.pagesizeLabel translation key is not > translated into Spanish. It is in the most recent versions of XWiki: > > platform.livetable.pagesizeLabel=por p\u00E1gina de > > In order to fix this you have to copy > ApplicationResources_es.properties from the xwiki-core jar (located in > WEB-INF/lib) to WEB-INF/classes and add the above line. A server > restart is needed. > > Hope this helps, > Marius > >> >> Thank you so much for all your help! >> >> Ricardo >> >> >>> #else >>> #set($countm = $rm.countAllMembersNamesForGroup($doc.fullName)) >>> #set($members = $rm.getAllMatchedMembersNamesForGroup($doc.fullName, >>> $util.null, $limit, $off, $order)) >>> #end >>> >>> $doc.fullName clearly appears as a parameter passed to >>> getAllMatchedMembersNameForGroup method. >>> >>>>> You can find the rights manager source code here >>>>> https://github.com/xwiki/xwiki-platform/tree/master/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/plugin/rightsmanager >>>>> . Unfortunately it doesn't have a method to retrieve group member >>>>> matched by their document title so you'll have to write this code by >>>>> yourself (either directly in getgroupmembers.vm or in a script service >>>>> http://platform.xwiki.org/xwiki/bin/view/DevGuide/WritingComponents#HFromwikipages >>>>> ) >>> >>> I'm afraid I'm not a developer myself! It is not easy for me to understand >>> that source code. But, even not been a Java person, is not possible to pass >>> other fields to the method to get the Livetable filtered? Please, why? >>> >>> I've also found this... >>> >>> http://www.xwiki.org/xwiki/bin/view/FAQ/Why+is+it+not+possible+to+filter+on+doc+title+in+a+Livetable#History >>> >>> I can understand this, but I would like to find/be able to implement a >>> solution here (XWiki Enterprise 2.4.30451) because: >>> >>> 1. Livetables created showing group members are a really useful tool here. >>> XWiki groups are rather convenient to organize users and groups and assign >>> them rights on the set of documents of their concern. >>> 2. Document title is a really, at least until now!, useful piece of >>> information that allow us, for instance, to store different translations of >>> the name of a group and recover them using getTranslatedDocument(). >>> 3. read-only SQL access to xwikidoc.XWD_TITLE and, for instance, XWD_PARENT >>> offers us a quite useful source of information to tabulate information on >>> users and groups. It is simple to create new documents with a given >>> structure in their names to easily filter contents by type of document. >>> >>> Livetable filtering is an impressive tool. I would like to enable our users >>> to use filtering by name in documents like this... >>> >>> http://atrium_km.idisantiago.es/bin/XWiki/XWikiIDISAreaEndocrinology?language=en >>> >>> All pages have title: we have edited it in the three available languages. >>> >>> Must I go through the creation of a new component to get it? Is there any >>> simpler way of achieving this? Any workaround to be used until I'm able to >>> understand how does work the whole thing and to write that component? >>> >>> Thank you for your help, >>> >>> Ricardo >>> >>>>> >>>>> Hope this helps, >>>>> Marius >>> >>>> >>>> >>>> Please, why? How could I use $mdoc.getTranslatedDocument().title to filter >>>> the list? >>>> >>>> Thank you for your help!!! >>>> >>>> -- >>>> Ricardo Rodríguez >>>> Research Management and Promotion Technician >>>> Health Research Institute of Santiago de Compostela (IDIS) >>>> http://www.idisantiago.es >>>> >>>> Nota: A información contida nesta mensaxe e os seus posibles documentos >>>> adxuntos é privada e confidencial e está dirixida únicamente ó seu >>>> destinatario/a. Se vostede non é o/a destinatario/a orixinal desta >>>> mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non >>>> está autorizada. >>>> >>>> Nota: La información contenida en este mensaje y sus posibles documentos >>>> adjuntos es privada y confidencial y está dirigida únicamente a su >>>> destinatario/a. Si usted no es el/la destinatario/a original de este >>>> mensaje, por favor elimínelo. La distribución o copia de este mensaje no >>>> está autorizada. >>>> >>>> See more languages: http://www.sergas.es/aviso_confidencialidad.htm >>>> _______________________________________________ >>>> 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 >>> >>> Nota: A información contida nesta mensaxe e os seus posibles documentos >>> adxuntos é privada e confidencial e está dirixida únicamente ó seu >>> destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, >>> por favor elimínea. A distribución ou copia desta mensaxe non está >>> autorizada. >>> >>> Nota: La información contenida en este mensaje y sus posibles documentos >>> adjuntos es privada y confidencial y está dirigida únicamente a su >>> destinatario/a. Si usted no es el/la destinatario/a original de este >>> mensaje, por favor elimínelo. La distribución o copia de este mensaje no >>> está autorizada. >>> >>> See more languages: http://www.sergas.es/aviso_confidencialidad.htm >>> _______________________________________________ >>> 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 >> >> Nota: A información contida nesta mensaxe e os seus posibles documentos >> adxuntos é privada e confidencial e está dirixida únicamente ó seu >> destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, >> por favor elimínea. A distribución ou copia desta mensaxe non está >> autorizada. >> >> Nota: La información contenida en este mensaje y sus posibles documentos >> adjuntos es privada y confidencial y está dirigida únicamente a su >> destinatario/a. Si usted no es el/la destinatario/a original de este >> mensaje, por favor elimínelo. La distribución o copia de este mensaje no >> está autorizada. >> >> See more languages: http://www.sergas.es/aviso_confidencialidad.htm >> _______________________________________________ >> 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 _______________________________________________ users mailing list users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada. Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada. See more languages: http://www.sergas.es/aviso_confidencialidad.htm _______________________________________________ users mailing list users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users