Re: [xwiki-users] Add date of account creation (without time) in User Index problem
Cool!thinking ... soon when I come back to this improvment, all will be done! :-) De : Marius Dumitru Florea À : Pascal BASTIEN ; XWiki Users Envoyé le : Jeudi 15 janvier 2015 15h12 Objet : Re: [xwiki-users] Add date of account creation (without time) in User Index problem You can take a look at how I added the 'match' column parameter recently https://github.com/xwiki/xwiki-platform/commit/aad969f6e51299d3f684b86101aa13c04519541c . Hope this helps, Marius On Thu, Jan 15, 2015 at 11:48 AM, Pascal BASTIEN wrote: > Ok thxs you.I will let this improvment for later when I have less working > priority. > Like the other said: "I'll be back" :-) > > De : Clemens Klein-Robbenhaar > À : users@xwiki.org > Envoyé le : Mercredi 14 janvier 2015 18h28 > Objet : Re: [xwiki-users] Add date of account creation (without time) in >User Index problem > > Ah, ok, now I understand (I hope) :) > > Indeed the livetable macro is in that place, but this is because the flamingo > skin overrides some of the macros; > the "original" is actually here: > https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/macros.vm > > I guess both macros should be updated, as other skins will use the version in > xwiki-platform-web by default. > > (Btw, as the variant in the flamingo skin seems to be there to stay, I wonder > if one wants to split that file > into two parts, one containing the macros overwritten in the flamingo-skin, > and the other one containing the common ones. > Or is this considered an "API breakage" ?) > > Anyway, when adding a "dateformat" to one of the $columnsProperties it might > be still some way to go to get this working ... > I just tried to track this down, and ended up with the following (any better > idea how to do it?) > > - the livetable macro does not really render much stuff by itself, but >delegates most to the AJAX call > You can see that in the
Re: [xwiki-users] Add date of account creation (without time) in User Index problem
You can take a look at how I added the 'match' column parameter recently https://github.com/xwiki/xwiki-platform/commit/aad969f6e51299d3f684b86101aa13c04519541c . Hope this helps, Marius On Thu, Jan 15, 2015 at 11:48 AM, Pascal BASTIEN wrote: > Ok thxs you.I will let this improvment for later when I have less working > priority. > Like the other said: "I'll be back" :-) > > De : Clemens Klein-Robbenhaar > À : users@xwiki.org > Envoyé le : Mercredi 14 janvier 2015 18h28 > Objet : Re: [xwiki-users] Add date of account creation (without time) in > User Index problem > > Ah, ok, now I understand (I hope) :) > > Indeed the livetable macro is in that place, but this is because the flamingo > skin overrides some of the macros; > the "original" is actually here: > https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/macros.vm > > I guess both macros should be updated, as other skins will use the version in > xwiki-platform-web by default. > > (Btw, as the variant in the flamingo skin seems to be there to stay, I wonder > if one wants to split that file > into two parts, one containing the macros overwritten in the flamingo-skin, > and the other one containing the common ones. > Or is this considered an "API breakage" ?) > > Anyway, when adding a "dateformat" to one of the $columnsProperties it might > be still some way to go to get this working ... > I just tried to track this down, and ended up with the following (any better > idea how to do it?) > > - the livetable macro does not really render much stuff by itself, but > delegates most to the AJAX call > You can see that in the
Re: [xwiki-users] Add date of account creation (without time) in User Index problem
Ok thxs you.I will let this improvment for later when I have less working priority. Like the other said: "I'll be back" :-) De : Clemens Klein-Robbenhaar À : users@xwiki.org Envoyé le : Mercredi 14 janvier 2015 18h28 Objet : Re: [xwiki-users] Add date of account creation (without time) in User Index problem Ah, ok, now I understand (I hope) :) Indeed the livetable macro is in that place, but this is because the flamingo skin overrides some of the macros; the "original" is actually here: https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/macros.vm I guess both macros should be updated, as other skins will use the version in xwiki-platform-web by default. (Btw, as the variant in the flamingo skin seems to be there to stay, I wonder if one wants to split that file into two parts, one containing the macros overwritten in the flamingo-skin, and the other one containing the common ones. Or is this considered an "API breakage" ?) Anyway, when adding a "dateformat" to one of the $columnsProperties it might be still some way to go to get this working ... I just tried to track this down, and ended up with the following (any better idea how to do it?) - the livetable macro does not really render much stuff by itself, but delegates most to the AJAX call You can see that in the
Re: [xwiki-users] Add date of account creation (without time) in User Index problem
Ah, ok, now I understand (I hope) :) Indeed the livetable macro is in that place, but this is because the flamingo skin overrides some of the macros; the "original" is actually here: https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/macros.vm I guess both macros should be updated, as other skins will use the version in xwiki-platform-web by default. (Btw, as the variant in the flamingo skin seems to be there to stay, I wonder if one wants to split that file into two parts, one containing the macros overwritten in the flamingo-skin, and the other one containing the common ones. Or is this considered an "API breakage" ?) Anyway, when adding a "dateformat" to one of the $columnsProperties it might be still some way to go to get this working ... I just tried to track this down, and ended up with the following (any better idea how to do it?) - the livetable macro does not really render much stuff by itself, but delegates most to the AJAX call You can see that in the
Re: [xwiki-users] Add date of account creation (without time) in User Index problem
Yes I know that format_date parameter doesn't exist for the moment :-), I wanted to improve livetable macro (with pull request at the end I hope). I think I find where this macro is:https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/src/main/resources/flamingo/macros.vmLine 1261 #macro(livetable $divid $collist $colprops $options) I saw the "Modify the JSON data ..." solution but afraid about "...since it would slow down your wiki a lot as it loads Doc"Thxs De : Clemens Klein-Robbenhaar À : users@xwiki.org Envoyé le : Mardi 13 janvier 2015 16h10 Objet : Re: [xwiki-users] Add date of account creation (without time) in User Index problem On 01/13/2015 03:05 PM, Pascal BASTIEN wrote: > Thxs a lot to explained me with clarity all of that and help me to understand > better XWiki. > Then with what you give me, I tried to add a format_date parameter () (or > regexp) in columns properties to improve livetable. > I failed because I didn't manage to find where is store livetable macro :-)) > > Something like this and next add a format date parameter in user index > customizer. > #set($columns = ["_avatar", "first_name", "last_name", "email", > "doc.creationDate", "_actions"]) > #set($columnsProperties = { > "_avatar" : { "type" : "none", "link" : "none", "html" : "true", >"sortable":false }, > "first_name" : { "type" : "text" , "size" : 20, "link" : "view"}, > "last_name" : { "type" : "text", "link" : "view"}, > "email" : { "type" : "text" }, > "doc.creationDate" : { "type" : "date", "dateformat":"-mm" } > }) I am afraid that this does not work. The supported options are documented here: http://extensions.xwiki.org/xwiki/bin/view/Extension/Livetable+Macro and a 'dateformat' option is unfortunately not part of it. The problem is that in the end the #livetable macro turns out to make an AJAX call to the code at the page XWiki.LiveTableResults , which in turn uses the XWiki.LiveTableResultsMacros and the latter just calls $xwiki.formatDate($itemDoc.creationDate)) without any custom format. What you can to is: - either again patch that line of code in the XWiki.LiveTableResultsMacros with a date format of your choice - or modify the results afterwards, as explained http://extensions.xwiki.org/xwiki/bin/view/Extension/Livetable+Macro#HCustomJSON (scroll down to the "Starting with XWiki Enterprise 4.0 you can modify the default JSON ...") the later would involve creating your own livetable result page, i.e. XWiki.LiveTableResultsNoTime with e.g. the contents: {{include reference="XWiki.LiveTableResultsMacros" /}} {{velocity wiki="false"}} #if("$!{request.xpage}" == 'plain') $response.setContentType('application/json') #end ##== ## Initialize the map that will store the JSON data. ##== #set($map = {}) ##== ## Build the JSON in memory using the previous map ##== #gridresult_buildJSON("$!request.classname" $request.collist.split(',') $map) ##== ## Modify the JSON data from the map or add new data. ##== #foreach($row in $map.get('rows')) #if($row.get('doc_creationDate')) #set($creation_date = $row.get('doc_creationDate')) #set($time_sep_index = $creation_date.indexOf(' ')) #if($time_sep_index >=0) #set($creation_date_without_time = $creation_date.substring(0, $time_sep_index)) #set($discard = $row.put('doc_creationDate', $creation_date_without_time )) #end #end #end ##== ## Serialize the map in the JSON format. ##== $jsontool.serialize($map) {{/velocity}} this mostly copy & paste from the LiveTable docs, expect for the "Modify the JSON data ..." part, where the creation date field is simply cut off after the first space - quite hackish, but should work for most date formats. Now when calling that page to get the results, everything must be put inside the 'url' option so the $options change to: #set($options = { "url" : "$xwiki.getURL('XWiki.LiveTableResultsNoTime', 'get', 'outputSyntax=plain&classname=XWiki.XWikiUsers&transprefix=xe.userdirectory.&collist=_avatar,first_name,last_name,email,doc.creationDate')", "rowCount": 10 }) Afterwards it is just a matter of
Re: [xwiki-users] Add date of account creation (without time) in User Index problem
On 01/13/2015 03:05 PM, Pascal BASTIEN wrote: > Thxs a lot to explained me with clarity all of that and help me to understand > better XWiki. > Then with what you give me, I tried to add a format_date parameter () (or > regexp) in columns properties to improve livetable. > I failed because I didn't manage to find where is store livetable macro :-)) > > Something like this and next add a format date parameter in user index > customizer. > #set($columns = ["_avatar", "first_name", "last_name", "email", > "doc.creationDate", "_actions"]) > #set($columnsProperties = { >"_avatar" : { "type" : "none", "link" : "none", "html" : "true", > "sortable":false }, >"first_name" : { "type" : "text" , "size" : 20, "link" : "view"}, >"last_name" : { "type" : "text", "link" : "view"}, >"email" : { "type" : "text" }, > "doc.creationDate" : { "type" : "date", "dateformat":"-mm" } > }) I am afraid that this does not work. The supported options are documented here: http://extensions.xwiki.org/xwiki/bin/view/Extension/Livetable+Macro and a 'dateformat' option is unfortunately not part of it. The problem is that in the end the #livetable macro turns out to make an AJAX call to the code at the page XWiki.LiveTableResults , which in turn uses the XWiki.LiveTableResultsMacros and the latter just calls $xwiki.formatDate($itemDoc.creationDate)) without any custom format. What you can to is: - either again patch that line of code in the XWiki.LiveTableResultsMacros with a date format of your choice - or modify the results afterwards, as explained http://extensions.xwiki.org/xwiki/bin/view/Extension/Livetable+Macro#HCustomJSON (scroll down to the "Starting with XWiki Enterprise 4.0 you can modify the default JSON ...") the later would involve creating your own livetable result page, i.e. XWiki.LiveTableResultsNoTime with e.g. the contents: {{include reference="XWiki.LiveTableResultsMacros" /}} {{velocity wiki="false"}} #if("$!{request.xpage}" == 'plain') $response.setContentType('application/json') #end ##== ## Initialize the map that will store the JSON data. ##== #set($map = {}) ##== ## Build the JSON in memory using the previous map ##== #gridresult_buildJSON("$!request.classname" $request.collist.split(',') $map) ##== ## Modify the JSON data from the map or add new data. ##== #foreach($row in $map.get('rows')) #if($row.get('doc_creationDate')) #set($creation_date = $row.get('doc_creationDate')) #set($time_sep_index = $creation_date.indexOf(' ')) #if($time_sep_index >=0) #set($creation_date_without_time = $creation_date.substring(0, $time_sep_index)) #set($discard = $row.put('doc_creationDate', $creation_date_without_time )) #end #end #end ##== ## Serialize the map in the JSON format. ##== $jsontool.serialize($map) {{/velocity}} this mostly copy & paste from the LiveTable docs, expect for the "Modify the JSON data ..." part, where the creation date field is simply cut off after the first space - quite hackish, but should work for most date formats. Now when calling that page to get the results, everything must be put inside the 'url' option so the $options change to: #set($options = { "url" : "$xwiki.getURL('XWiki.LiveTableResultsNoTime', 'get', 'outputSyntax=plain&classname=XWiki.XWikiUsers&transprefix=xe.userdirectory.&collist=_avatar,first_name,last_name,email,doc.creationDate')", "rowCount": 10 }) Afterwards it is just a matter of a few hours debugging with firebug etc until one finds the missing ')' or '"' that keeps things from working ;) Oh, and come to think of it, the simplest solution would be to change the XWiki date format the XWiki Admin to exclude the time - that would remove the time everywhere, but I know people who actually like it. ;) > #set($options = { > "className":"XWiki.XWikiUsers", > "translationPrefix" : "xe.index.users.", > "tagCloud" : true, > "rowCount": 10 > }) > #livetable("userdirectory" $columns $columnsProperties $options) [...] ___ users mailing list users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users
Re: [xwiki-users] Add date of account creation (without time) in User Index problem
Thxs a lot to explained me with clarity all of that and help me to understand better XWiki. Then with what you give me, I tried to add a format_date parameter () (or regexp) in columns properties to improve livetable. I failed because I didn't manage to find where is store livetable macro :-)) Something like this and next add a format date parameter in user index customizer. #set($columns = ["_avatar", "first_name", "last_name", "email", "doc.creationDate", "_actions"]) #set($columnsProperties = { "_avatar" : { "type" : "none", "link" : "none", "html" : "true", "sortable":false }, "first_name" : { "type" : "text" , "size" : 20, "link" : "view"}, "last_name" : { "type" : "text", "link" : "view"}, "email" : { "type" : "text" }, "doc.creationDate" : { "type" : "date", "dateformat":"-mm" } }) #set($options = { "className":"XWiki.XWikiUsers", "translationPrefix" : "xe.index.users.", "tagCloud" : true, "rowCount": 10 }) #livetable("userdirectory" $columns $columnsProperties $options) De : Clemens Klein-Robbenhaar À : users@xwiki.org Envoyé le : Mardi 13 janvier 2015 12h22 Objet : Re: [xwiki-users] Add date of account creation (without time) in User Index problem On 01/13/2015 10:45 AM, Pascal BASTIEN wrote: > Hello, > > To make it work I add this new property in XWiki.XWikiUsers class: > /bin/edit/XWiki/XWikiUsers?editor=class > Name: doc.creationDate Type: String > PrettyName: Creation date > I did not know that you can create class properties with a dot in it, and that this even can be used to get the original document property, but I see it indeed works > Custom Display: > {{velocity}} > {{html}}$value{{/html}} > {{/velocity}} > > The problem is that "Custom display" is not taking into account and not > rendering. This actually does not work, because the livetable ones not use the custom displayer at all, but treats 'doc.creationDate' special Possible solutions: 1) - create a "dummy" class property, which does *not* shadow a doc-property, e.g. Name : "doccreationdate", Type: Date CustomDisplay {{velocity}} $xwiki.formatDate($doc.getCreationDate(),'/MM/dd') {{/velocity}} so the custom display does not display the value of the property at all, but the actual creation date - add 'doccreationdate' to the list of columns in the User Directory This kinda works, except that you cannot sort by that fake "creation date", as it is not really there. (The filter searching the database does not know about the custom displayer and searches for the empty value in the DB instead.) 2) Another alternative is to edit the place where "doc.creationDate" is actually rendered ... for this you would have to patch the main livetable rendering. see: http://localhost:8080/xwiki/bin/view/XWiki/LiveTableResultsMacros?viewer=code around line 230 there is a: #set($discard = $row.put('doc_creationDate', $xwiki.formatDate($itemDoc.creationDate))) you could change that to: #set($discard = $row.put('doc_creationDate', $xwiki.formatDate($itemDoc.creationDate, '/MM/dd'))) and then add doc.creationDate to the list of displayed columns in the user directory. However then all creation dates everywhere (well, everywhere in live tables) will be rendered "day only". (Oh, and I see one still needs to add a dummy 'doc.creationDate' field to the user class, as otherwise the field is ignored :( 3) Finally the third solution I can think of would be to add a new date property to the user class, and set this property to doc.creationDate whenever a user is created, and show this property in the User Directory . This might even be the cleanest solution, except that one needs to touch all existing users to update this field. Newly created users then would be set up by writing an event listener that listens to a DocumentCreatingEvent and if the new document has an XWiki.XWikiUsers object, then set the new property to doc.creaionDate Event listener would be "components" as explained here: http://platform.xwiki.org/xwiki/bin/view/DevGuide/WritingEventListenerTutorial http://extensions.xwiki.org/xwiki/bin/view/Extension/WikiComponent+Module This is somewhat more effort, but I guess this would be "cleaner" (no custom display needed, just use the date format of that property, results can be sorted, as value is really stored in the DB, no patching of "
Re: [xwiki-users] Add date of account creation (without time) in User Index problem
On 01/13/2015 10:45 AM, Pascal BASTIEN wrote: > Hello, > > To make it work I add this new property in XWiki.XWikiUsers class: > /bin/edit/XWiki/XWikiUsers?editor=class > Name: doc.creationDate Type: String > PrettyName: Creation date > I did not know that you can create class properties with a dot in it, and that this even can be used to get the original document property, but I see it indeed works > Custom Display: > {{velocity}} > {{html}}$value{{/html}} > {{/velocity}} > > The problem is that "Custom display" is not taking into account and not > rendering. This actually does not work, because the livetable ones not use the custom displayer at all, but treats 'doc.creationDate' special Possible solutions: 1) - create a "dummy" class property, which does *not* shadow a doc-property, e.g. Name : "doccreationdate", Type: Date CustomDisplay {{velocity}} $xwiki.formatDate($doc.getCreationDate(),'/MM/dd') {{/velocity}} so the custom display does not display the value of the property at all, but the actual creation date - add 'doccreationdate' to the list of columns in the User Directory This kinda works, except that you cannot sort by that fake "creation date", as it is not really there. (The filter searching the database does not know about the custom displayer and searches for the empty value in the DB instead.) 2) Another alternative is to edit the place where "doc.creationDate" is actually rendered ... for this you would have to patch the main livetable rendering. see: http://localhost:8080/xwiki/bin/view/XWiki/LiveTableResultsMacros?viewer=code around line 230 there is a: #set($discard = $row.put('doc_creationDate', $xwiki.formatDate($itemDoc.creationDate))) you could change that to: #set($discard = $row.put('doc_creationDate', $xwiki.formatDate($itemDoc.creationDate, '/MM/dd'))) and then add doc.creationDate to the list of displayed columns in the user directory. However then all creation dates everywhere (well, everywhere in live tables) will be rendered "day only". (Oh, and I see one still needs to add a dummy 'doc.creationDate' field to the user class, as otherwise the field is ignored :( 3) Finally the third solution I can think of would be to add a new date property to the user class, and set this property to doc.creationDate whenever a user is created, and show this property in the User Directory . This might even be the cleanest solution, except that one needs to touch all existing users to update this field. Newly created users then would be set up by writing an event listener that listens to a DocumentCreatingEvent and if the new document has an XWiki.XWikiUsers object, then set the new property to doc.creaionDate Event listener would be "components" as explained here: http://platform.xwiki.org/xwiki/bin/view/DevGuide/WritingEventListenerTutorial http://extensions.xwiki.org/xwiki/bin/view/Extension/WikiComponent+Module This is somewhat more effort, but I guess this would be "cleaner" (no custom display needed, just use the date format of that property, results can be sorted, as value is really stored in the DB, no patching of "core" XWiki pages ...) > I know HTML is not interpreted but I want to remove time of "Creation date" > field but "Custom Display" is apparently not used on a database field. > Here a screenshot on what I want: http://snag.gy/bWnu9.jpg > Do you have an idea how I must do it? > Is it normal than "Custom Display" is not used? > > Thxs for any help > > Pascal BASTIEN > > > ___ > 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
[xwiki-users] Add date of account creation (without time) in User Index problem
Hello, To make it work I add this new property in XWiki.XWikiUsers class: /bin/edit/XWiki/XWikiUsers?editor=class Name: doc.creationDate Type: String PrettyName: Creation date Custom Display: {{velocity}} {{html}}$value{{/html}} {{/velocity}} The problem is that "Custom display" is not taking into account and not rendering. I know HTML is not interpreted but I want to remove time of "Creation date" field but "Custom Display" is apparently not used on a database field. Here a screenshot on what I want: http://snag.gy/bWnu9.jpg Do you have an idea how I must do it? Is it normal than "Custom Display" is not used? Thxs for any help Pascal BASTIEN ___ users mailing list users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users