%PDF- %PDF-
Direktori : /home/waritko/jetty-distribution-9.4.21.v20190926/webapps/ROOT/templates/ |
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