0 Votes

Wiki source code of KanbanAWMSource

Last modified by Ryan C on 2025/07/17 22:45

Show last authors
1 {{velocity wiki='false'}}
2 #if ($xcontext.action == 'get')
3 #set($ok = $response.setContentType("application/json"))
4 #set($colors = $request.colors.split(','))
5 #macro(displayCategories $categories $docLists)
6 #set($map = [])
7 #foreach($categoryValue in $categories)
8 #set($fakedoc = $xwiki.getDocument("XWiki.FakeDocument"))
9 #set($fakeobj = $fakedoc.getObject($className, true))
10 #set($discard = $fakedoc.use($fakeobj))
11 #set($discard = $fakedoc.set($category, $categoryValue))
12 #set($scategoryValue = $fakedoc.display($category, "view", $fakeobj).replaceFirst($regextool.quote('{{html clean="false" wiki="false"}}'), '').replaceAll("$regextool.quote('{{/html}}')$", ''))
13 #set($items = [])
14 #foreach($docname in $docLists.get($categoryValue))
15 #set($currentDoc = $xwiki.getDocument($docname))
16 #set($surl = $currentDoc.getURL("view"))
17 #if($request.title && $request.title != "")
18 #if($request.title=="title")
19 #set($title = $currentDoc.title)
20 #else
21 #set($stitle = $currentDoc.display($request.title))
22 #end
23 #else
24 #set($stitle = $currentDoc.getDisplayTitle())
25 #end
26 #set($scontent = "")
27 #if($request.columns && $request.columns!="")
28 #set($scontent = "<ul class='card-field-list'>")
29 #foreach($col in $request.columns.split(","))
30 #set($value = $currentDoc.display($col).replaceFirst($regextool.quote('{{html clean="false" wiki="false"}}'), '').replaceAll("$regextool.quote('{{/html}}')$", ''))
31 #set($pname = $currentDoc.displayPrettyName($col))
32 #set($scontent = "${scontent}<li class='card-field'><span class='card-field-title''>${escapetool.xml($pname)}</span><span class='card-field-value'>$value</span></li>")
33 #end
34 #set($scontent = "${scontent}</ul>")
35 #end
36 #set ($docid = "$currentDoc.getDocumentReference()")
37 #set($itemmap = { "id" : $docid, "title" : $stitle, "url": $surl, "content" : $scontent })
38 #set($ok = $items.add($itemmap))
39 #end
40 #set($color = $listtool.get($colors, $foreach.index).strip())
41 #if(!$color)
42 #set($color = "blue")
43 #end
44 #set($ok = $map.add({ "id" : $categoryValue, "title" : $scategoryValue, "color" : "${color}", "item" : $items }))
45 #end
46 $jsontool.serialize(${map})
47 #end
48 #if($request.className||$request.app)
49 #set($app = $request.app)
50 #set($className = $request.className)
51 #if(!$className || $className=="")
52 #set($appDoc = $xwiki.getDocument("${app}.WebHome"))
53 #set($className = $appDoc.getValue("class"))
54 #end
55 #set($category = $request.category)
56 #set($query = "from doc.object(${className}) as obj where doc.fullName not like '%Template'")
57 #if ("$!request.displayedCategoryColumns" != '')
58 ## Only display a subset of all categories.
59 #set ($query = "${query} and obj.${category}=:categoryValue")
60 #set ($selectedCategories = $request.displayedCategoryColumns.split(','))
61 #end
62 #set($xwql = $request.xwql)
63 #if($xwql && $xwql!="")
64 #set($query = "${query} and ${xwql}")
65 #end
66 #set($order = $request.order)
67 #if($order && $order!="")
68 #set ($orderFragments = '')
69 #foreach ($orderFragment in $order.split(','))
70 #set ($orderFragment = $orderFragment.trim())
71 #if (!$orderFragment.startsWith('doc'))
72 #set ($orderFragment = "obj.$orderFragment")
73 #end
74 #if ($orderFragments != '')
75 #set ($orderFragments = "$orderFragments,$orderFragment")
76 #else
77 #set ($orderFragments = "$orderFragment")
78 #end
79 #end
80 #set ($query = "${query} order by ${orderFragments}")
81 #end
82 #set ($categoryField = $xwiki.getDocument($className).getxWikiClass().get($category))
83 #set ($categories = $categoryField.getListValues())
84 #if ($selectedCategories)
85 ## Validate the requested category values:
86 ## Remove values not in the set of possible values (if there is such a set).
87 ## Remove duplicate values (only leave the first one of each unique value).
88 #set ($validatedCategories = [])
89 #foreach ($selectedCategory in $selectedCategories)
90 #if (
91 $categories.contains($selectedCategory) &&
92 !$validatedCategories.contains($selectedCategory)
93 )
94 #set ($discard = $validatedCategories.add($selectedCategory))
95 #end
96 #end
97 #set ($categories = $validatedCategories)
98 #end
99 #set($categoriesDocs = $util.hashMap)
100 #set ($limit = $request.limit)
101 #if ("$!limit" == '')
102 #set ($limit = 50)
103 #end
104 #if ($selectedCategories)
105 #foreach ($categoryValue in $categories)
106 #set ($results = $services.query.xwql($query).bindValue('categoryValue', $categoryValue).setLimit($limit))
107 #set ($results = $results.addFilter('document').addFilter('viewable'))
108 #set ($results = $results.execute())
109 #set ($discard = $categoriesDocs.put($categoryValue, $results))
110 #end
111 #else
112 #set ($results = $services.query.xwql($query).setLimit($limit))
113 #set ($results = $results.addFilter('document').addFilter('viewable'))
114 #set ($results = $results.execute())
115 #foreach ($currentpage in $results)
116 #set ($currentdoc = $xwiki.getDocument($currentpage))
117 #set ($value = $currentdoc.getValue($category))
118 #if ($value && !$categories.contains($value))
119 #set ($discard = $categories.add($value))
120 #end
121 #set ($docList = $categoriesDocs.get($value))
122 #if (!$docList)
123 #set ($docList = [])
124 #set ($discard = $categoriesDocs.put($value, $docList))
125 #end
126 #set ($discard = $docList.add($currentdoc.prefixedFullName))
127 #end
128 #end
129 #displayCategories($categories $categoriesDocs)
130 #end
131 #end
132 {{/velocity}}

XWiki AI Chat