Wiki source code of KanbanAWMSource
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 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}} |