%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/waritko/jetty-distribution-9.4.21.v20190926/webapps/ROOT/templates/
Upload File :
Create Path :
Current File : //home/waritko/jetty-distribution-9.4.21.v20190926/webapps/ROOT/templates/uorgsuggest.vm

#macro (suggestUsersOrGroups)
  ## We make the input lower case here because XWQL doesn't support lower(:parameter).
  #set ($input = "$!request.input.toLowerCase()")
  #if ($input.length() > 0)
    ## Resolve the input as a user/group reference and use only the document name for matching.
    #set ($input = $services.model.resolveDocument($input).name)
  #end
  #if ($request.uorg == 'user')
    #set ($statement = "from doc.object(XWiki.XWikiUsers) as user " +
      "where lower(doc.name) like :input or " +
        "concat(concat(lower(user.first_name), ' '), lower(user.last_name)) like :input " +
      "order by lower(user.first_name), user.first_name, lower(user.last_name), user.last_name")
  #else
    #set ($statement = 'from doc.object(XWiki.XWikiGroups) as groups ' +
      'where lower(doc.name) like :input and doc.fullName <> ''XWiki.XWikiGroupTemplate'' ' +
      'order by lower(doc.name), doc.name')
  #end
  #if ($request.wiki == 'global')
    #set ($wikiReference = $services.model.createWikiReference($xcontext.mainWikiName))
  #else
    #set ($wikiReference = $doc.documentReference.wikiReference)
  #end
  #set ($query = $services.query.xwql($statement).setWiki($wikiReference.name).addFilter('unique'))
  ## TODO: Use the advanced query parameter API:
  ## query.bindValue('input').anyChars().literal($input).anyChars().query()
  ## as soon as we fix XWIKI-15362 (An XWQL query that selects from an object property fails when using the advanced
  ## query parameter API)
  #set ($query = $query.setLimit(10).bindValue('input', "%$input%"))
  #set ($rawResults = $query.execute())
  #displayResults($rawResults $wikiReference)
#end
##
#macro (displayResults $rawResults $wikiReference)
  #set ($results = [])
  #foreach ($result in $rawResults)
    #addResultData($result $results $wikiReference)
  #end
  #if ($request.media == 'json')
    #displayResultsJSON($results)
  #else
    #displayResultsXML($results)
  #end
#end
##
#macro (addResultData $result $results $wikiReference)
  #set ($reference = $services.model.resolveDocument($result, $wikiReference))
  #if ($request.uorg == 'user')
    #set ($label = $xwiki.getPlainUserName($reference))
    #set ($defaultIcon = $services.icon.getMetaData('user'))
  #else
    #set ($label = $xwiki.getDocument($reference).plainTitle)
    #set ($defaultIcon = $services.icon.getMetaData('group'))
  #end
  #getUserAvatarURL($reference $avatarURL 50)
  #set ($icon = $defaultIcon)
  #if ($avatarURL.specified)
    #set ($icon = {
      'iconSetType': 'IMAGE',
      'url': $avatarURL.url
    })
  #end
  #if ($request.exactMatch == 'true' && "$!request.input" != '')
    #set ($value = $result)
  #else
    ## Use the local reference as value if possible (see XWIKI-10046).
    #set ($value = $services.model.serialize($reference, 'compactwiki'))
  #end
  #set ($discard = $results.add({
    'value': $value,
    'label': $label,
    'icon': $icon,
    'url': $xwiki.getURL($reference)
  }))
#end
##
#macro (displayResultsXML $results)
  #set ($discard = $response.setContentType('text/xml'))
  <?xml version="1.0" encoding="UTF-8"?>
  <results>
    #foreach ($result in $results)
      #set ($icon = $result.icon.url)
      #if ("$!icon" == '')
        #set ($icon = $result.icon.cssClass)
      #end
      <rs id="$escapetool.xml($result.url)" icon="$!escapetool.xml($icon)"
        info="$escapetool.xml($result.label)">$escapetool.xml($result.value)</rs>
    #end
  </results>
#end
##
#macro (displayResultsJSON $results)
  #set ($discard = $response.setContentType('application/json'))
  $jsontool.serialize($results)
#end
##
#if ($request.exactMatch == 'true' && "$!request.input" != '')
  ## This is normally used for loading the initial selection.
  #set ($rawResults = [$request.input])
  #displayResults($rawResults)
#else
  #suggestUsersOrGroups()
#end

Zerion Mini Shell 1.0