Uploaded image for project: 'XWiki Platform'
  1. XWiki Platform
  2. XWIKI-10441

Add sorting options on SpaceIndex macro

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 6.0
    • Fix Version/s: 6.1-milestone-2
    • Component/s: Index
    • Labels:
      None
    • Environment:
      Debian Wheezy, Tomcat 7.0.47
    • Difficulty:
      Unknown
    • Similar issues:

      Description

      Hello,
      It would be nice to improve SpaceIndex macro with adding some sorting parameter.

      Could you replace the code of this page
      ./bin/edit/Main/SpaceIndex?editor=object&classname=XWiki.WikiMacroClass by this one?

      {{velocity}}
       ## TODO: add me a parameter to specify the style, list or livetable
       ## get the number of documents to display
       #set ($limit = $xcontext.macro.params.get('count'))
       #if ("$!limit" == '')
         ## 100 documents displayed by default if no value is specified
         #set ($limit = '100')
       #end
       #set ($limit = $mathtool.toInteger($limit))
       ## get the sort of the list of document
       ##values are creationDate, modificationDate and name
       #set ($sort = $xcontext.macro.params.get('sort'))
       #if ("$sort" == 'name')
         ## sorting alphabetical list of document
         #set ($sort = 'name asc')
       #elseif ("$sort" == 'modificationDate')
         ## list of document sorting by update date 
         #set ($sort = 'contentUpdateDate desc')
       #else
         ## list of document sorting by creation date by default if creationDate value, no value,  or wrong value is specified
         #set ($sort = 'creationDate desc')
       #end
       ## get the space to display the documents for
       #set ($spaceParam = $doc.space)
       #set ($spaceMacroParam = $xcontext.macro.params.get('space'))
       #if ("$!spaceMacroParam" != '')
         #set ($spaceParam = $spaceMacroParam)
       #end
       #set ($docNames = $services.query.hql("where doc.space=? order by doc.$sort ").addFilter('currentlanguage').addFilter('hidden').setLimit($limit).bindValues([${spaceParam}]).execute())
       {{html}}
         #displayDocumentList($docNames false [])
         ## Note: we pass an empty blacklistedSpaces list since we are used as a space dashboard, not a global dashboard
       {{/html}}
      
       #if ($docNames.size() == $limit)
         #set ($docCount = $services.query.xwql('where doc.space = :space').bindValue('space', $spaceParam).addFilter('unique').count())
         #set ($remaining = $mathtool.sub($docCount, $limit))
         #if ($remaining > 0)
          (% class="documentListMore" %) (((
          // $services.localization.render('xe.dashboard.space.remainingDocumentsInSpace', [$remaining, $spaceParam])
             [[$services.localization.render('xe.dashboard.space.visitSpaceIndex')>>Main.SpaceIndex?space=${escapetool.url($spaceParam)}]] //
          )))
         #end
       #end
       ##
       ## Document creation.
       ##
       ## Only if the current user has edit rights.
       #if ($hasCreatePage)
       {{html}}
          <ul class="xlist">
            <li class="page create"><a href="$doc.getURL('create')">$services.localization.render('platform.index.spaceIndexDocumentListCreate')</a></li>
          </ul>
       {{/html}}
       #end
      {{/velocity}}
      

      I add the sort order parameter:
      Name: sort
      Optional: yes
      Allowed values: creationDate, modificationDate and name
      Default value: creationDate
      Description: creationDate sorting the list by creation date of documents, modificationDate by update date and name sorting alphabeticaly the list

      Example:
      spaceindex space="Sandbox" sort="name" /
      return the list of Sandbox space alphabeticaly ordering

      Thxs

      Pascal B.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                gdelhumeau Guillaume Delhumeau
                Reporter:
                Pbas Pascal BASTIEN
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Date of First Response: