Wiki-Quellcode von XWikiUserMembershipSheet

Zuletzt geändert von admin am 2025/02/23 19:12

Zeige letzte Bearbeiter
1 {{velocity}}
2 #set($obj = $doc.getObject('XWiki.XWikiUsers'))
3 #if(!$obj)
4 {{info}}{{translation key="xe.admin.users.applyonusers"/}}{{/info}}##
5 #elseif ($xcontext.action == 'get')
6 #if ($xcontext.isMainWiki())
7 ## Main wiki users can be located in any wiki
8 #set($groups = $services.user.group.getGroupsFromAllWikis($doc.documentReference))
9 #else
10 ## Subwiki users are usually located only in the local wiki
11 #set($groups = $services.user.group.getGroupsFromMemberWiki($doc.documentReference))
12 #end
13 ## Filter
14 #set($filterValue = "$!{request.get('group')}")
15 #if ($filterValue != '')
16 #set ($filteredGroups = [])
17 #foreach($group in $groups)
18 #set($groupString = $services.model.serialize($group, 'default'))
19 #if ($groupString.toLowerCase().contains($filterValue.toLowerCase()))
20 #set($void = $filteredGroups.add($group))
21 #end
22 #end
23 #else
24 #set ($filteredGroups = $groups)
25 #end
26 #if ($filteredGroups.size() > 0)
27 #set ($filteredGroups = $collectiontool.sort($filteredGroups))
28 #set($order = "$!request.sort")
29 #if ($order == 'group' && $request.get('dir').toLowerCase() == 'desc')
30 ## Reverse order
31 #set($descGroups = [])
32 #set($max = $filteredGroups.size() - 1)
33 #foreach($i in [ $max .. 0 ])
34 #set($void = $descGroups.add($filteredGroups[$i]))
35 #end
36 #set($filteredGroups = $descGroups)
37 #end
38 #set($offset = $numbertool.toNumber($request.get('offset')).intValue())
39 ## Offset starts from 0 in velocity and 1 in javascript
40 #set($offset = $offset - 1)
41 #if (!$offset || $offset < 0)
42 #set($offset = 0)
43 #end
44 #set($limit = $numbertool.toNumber($request.get('limit')).intValue())
45 #if (!$limit || $limit < 0)
46 #set ($limit = 15)
47 #end
48 #set($toIndex = $offset + $limit)
49 #if ($toIndex > $filteredGroups.size())
50 #set($toIndex = $filteredGroups.size())
51 #end
52 #set($subGroups = $filteredGroups.subList($offset, $toIndex))
53 #else
54 #set($subGroups = [])
55 #end
56 #set($rows = [])
57 #foreach ($group in $subGroups)
58 #set ($title = $xwiki.getDocument($group).title)
59 #if ("$!title" == '')
60 #set ($title = $group.name)
61 #end
62 #set($void = $rows.add({
63 'doc_viewable' : true,
64 'group' : $title,
65 'group_url' : $xwiki.getURL($group)
66 }))
67 #end
68 #set($result = {
69 'totalrows' : $filteredGroups.size(),
70 'returnedrows' : $subGroups.size(),
71 'offset' : $mathtool.add($offset, 1),
72 'reqNo' : $numbertool.toNumber($request.reqNo),
73 'rows': $rows
74 })
75 $jsontool.serialize($result)
76 $response.setContentType('application/json')
77 #else
78 (% id="user.profile.groups.title" %)
79 == {{translation key="user.profile.groups.title"/}}
80
81 {{translation key="user.profile.groups.description"/}}
82
83 #set ($liveDataConfig = {
84 'meta': {
85 'propertyDescriptors': [
86 { 'id': 'group', 'displayer': { 'id': 'link', 'propertyHref': 'group_url' } }
87 ],
88 'entryDescriptor': {
89 'idProperty': "group"
90 }
91 }
92 })
93 #set ($sourceParameters = $escapetool.url({
94 'translationPrefix' : 'user.profile.groups.table.',
95 '$doc' : $doc.fullName,
96 'resultPage': 'XWiki.XWikiUserMembershipSheet'
97 }))
98
99 {{liveData
100 id='user.profile.group.table'
101 source='liveTable'
102 sourceParameters="$sourceParameters"
103 properties="group"
104 }}$jsontool.serialize($liveDataConfig){{/liveData}}
105 #end## User object exists
106 {{/velocity}}