%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/getdeleteddocuments.vm |
### ### Template used by a livetable macro to list deleted documents from the recycle bin. ### $response.setContentType("application/json") ## ## FROM ## #set ($fromQueryPart = 'FROM XWikiDeletedDocument as ddoc') ## ## WHERE ## #set ($whereQueryPart = 'WHERE 1=1') #set ($queryParams = []) ## Exclude some documents #set ($excludes = $request.getParameterValues('exclude')) #if ("$!excludes" != '') #foreach ($exclude in $excludes) #set ($discard = $queryParams.add($exclude)) #set ($whereQueryPart = "${whereQueryPart} AND ddoc.fullName <> ?${queryParams.size()}") #end #end #set ($batchId = $request.get('doc.batchId')) #if ("$!batchId" != '') #set ($discard = $queryParams.add("%${batchId.trim()}%")) #set ($whereQueryPart = "${whereQueryPart} AND LOWER(ddoc.batchId) LIKE LOWER(?${queryParams.size()})") #end ## ## ORDER ## #set ($order = "$!request.sort") #set ($orderQueryPart = '') #if ($order != '') #set ($orderDirection = "$!{request.get('dir').toLowerCase()}") #if ("$!orderDirection" != '' && "$!orderDirection" != 'asc') #set($orderDirection = 'desc') #end ## Sorting by ddoc.location is not supported by the DB, since the location field does not exist. #if ($order == 'doc.location') ## So we filter on the document full name instead, which is the expected behavior. #set ($order = 'ddoc.fullName') #end ## Weird things happen if we use "ORDER BY" (upper case), at least on HSQLDB. Other DBs may behave differently #set ($orderQueryPart = "order by ${order} ${orderDirection}") #end ## ## OFFSET and LIMIT ## #set ($offset = $mathtool.toInteger($request.get('offset'))) ## offset starts from 0 in velocity and 1 in javascript #set ($offset = $offset - 1) #if (!$offset || $offset < 0) #set($offset = 0) #end #set ($limit = $mathtool.toInteger($request.get('limit'))) #if (!$limit) #set ($limit = 15) #end ## ## Build the query ## #set ($queryString = "SELECT ddoc.id ${fromQueryPart} $!{whereQueryPart} $!{orderQueryPart}") #set ($query = $services.query.hql($queryString)) #set ($query = $query.setLimit($limit).setOffset($offset).bindValues($queryParams)) #if ("$!request.wiki" != '') #set ($query = $query.setWiki($request.wiki)) #end #set ($countQueryString = "SELECT COUNT(ddoc.id) ${fromQueryPart} $!{whereQueryPart}") #set ($countQuery = $services.query.hql($countQueryString).bindValues($queryParams).setWiki($query.wiki)) ## ## Execute the query and build the results ## #set ($items = $query.execute()) #set ($map = {}) #set ($discard = $map.put('totalrows', $countQuery.execute()[0])) #set ($discard = $map.put('returnedrows', $mathtool.min($items.size(), $limit))) #set ($discard = $map.put('offset', $mathtool.add($offset, 1))) #if("$!request.sql" != '') ## Add debug infos #set($discard = $map.put('sql', $queryString)) #set($discard = $map.put('params', $queryParams)) #end #template('hierarchy_macros.vm') #set ($rows = []) #foreach ($item in $items) #set ($deletedDocument = $xwiki.getDeletedDocument($item)) #set ($originalDocument = $deletedDocument.getDocument()) #set ($documentReference = $deletedDocument.documentReference) #set ($viewable = $deletedDocument.canUndelete()) #set ($row = {}) #set ($discard = $row.put('doc_viewable', $viewable)) #set ($discard = $row.put('doc_url', $xwiki.getURL($documentReference, 'viewrev', $escapetool.url({'rev' : "deleted:${item}"})))) #set ($title = "$!{originalDocument.plainTitle}") #if ($title == '') #set ($title = $deletedDocument.fullName) #end #if ("$!{deletedDocument.locale}" != '') #set ($title = "${title} (${deletedDocument.locale})") #end #set ($discard = $row.put('doc_name', $title)) #set ($location = "#hierarchy($documentReference, {'limit': 5, 'plain': false, 'local': true, 'displayTitle': false})") #set ($discard = $row.put('doc_location', $location)) #set ($discard = $row.put('doc_date', $xwiki.formatDate($deletedDocument.date))) #set ($discard = $row.put('doc_deleter', $xwiki.getUserName($deletedDocument.deleter, false))) #set ($discard = $row.put('doc_deleter_url', $xwiki.getURL($deletedDocument.deleter))) #set ($discard = $row.put('doc_locale', $deletedDocument.locale)) #set ($discard = $row.put('doc_hasdelete', $deletedDocument.canDelete())) #set ($discard = $row.put('doc_delete_url', $xwiki.getURL($documentReference, 'delete', "id=${item}&form_token=$!{services.csrf.getToken()}"))) #set ($discard = $row.put('doc_hasrestore', $deletedDocument.canUndelete())) #set ($discard = $row.put('doc_restore_url', $xwiki.getURL($documentReference, 'undelete', "id=${item}&form_token=$!{services.csrf.getToken()}"))) #set ($discard = $rows.add($row)) #end #set ($discard = $map.put('rows', $rows)) ## ## Serialize the JSON ## $jsontool.serialize($map)