diff --git a/xwiki-platform-core/xwiki-platform-index/xwiki-platform-index-ui/src/main/resources/XWiki/DeletedAttachments.xml b/xwiki-platform-core/xwiki-platform-index/xwiki-platform-index-ui/src/main/resources/XWiki/DeletedAttachments.xml index 00916df38723886d534f23870b84e75612034e57..2f3018b723c906a363f087792ccf146b250d75c1 100644 --- a/xwiki-platform-core/xwiki-platform-index/xwiki-platform-index-ui/src/main/resources/XWiki/DeletedAttachments.xml +++ b/xwiki-platform-core/xwiki-platform-index/xwiki-platform-index-ui/src/main/resources/XWiki/DeletedAttachments.xml @@ -1,5 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> - <!-- * See the NOTICE file distributed with this work for additional * information regarding copyright ownership. @@ -20,30 +19,205 @@ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. --> -<xwikidoc> +<xwikidoc version="1.1"> <web>XWiki</web> <name>DeletedAttachments</name> <language/> <defaultLanguage/> <translation>0</translation> - <parent>Main.AllDocs</parent> <creator>xwiki:XWiki.Admin</creator> + <parent>Main.AllDocs</parent> <author>xwiki:XWiki.Admin</author> - <customClass/> <contentAuthor>xwiki:XWiki.Admin</contentAuthor> <creationDate>1262178920000</creationDate> <date>1297363233000</date> <contentUpdateDate>1297363233000</contentUpdateDate> <version>1.1</version> <title>$services.localization.render('platform.index.attachmentsTrash')</title> - <template/> - <defaultTemplate/> - <validationScript/> <comment/> <minorEdit>false</minorEdit> <syntaxId>xwiki/2.0</syntaxId> <hidden>true</hidden> + <content>{{velocity}} +#if(!$xwiki.hasProgrammingRights()) + {{warning}}This document requires programming rights and needs to be saved by an administrator of this Wiki{{/warning}} +#else +#set($dateFormat = 'yyyy MMMM d, HH:mm') +#if(!$request.list) +$xwiki.ssx.use('XWiki.DeletedAttachments')## +$xwiki.jsx.use('XWiki.DeletedAttachments', {'minify' : 'false'})## +## +#set($columns = ['datt.filename', 'datt.docName', 'datt.date', 'datt.deleter', 'actions']) +#set($columnProperties = { + 'datt.filename' : { 'type' : 'text', 'size' : 10 }, + 'datt.docName' : { 'type' : 'text', 'size' : 10 }, + 'datt.date' : { 'type' : 'date', 'filterable' : false }, + 'datt.deleter' : { 'type' : 'text', 'size' : 10 }, + 'actions' : { 'type' : 'text', 'filterable' : false, 'sortable' : false } + })## +#set($options = { + 'url' : "$xwiki.getURL('XWiki.DeletedAttachments', 'view', 'list=1&xpage=plain&outputSyntax=plain')", + 'callback' : 'XWiki.index.trash.attachments.displayEntry', + 'translationPrefix' : 'platform.index.trashAttachments.' + })## +## +## +## +{{html wiki="true" clean="false"}} +<div class="hidden"> +#livetable('attachmentTrash' $columns $columnProperties $options) +</div> +{{/html}} + +{{html wiki="true" clean="false"}} +<noscript> + + #set($deletedAttachments = $services.query.hql('select count(datt.id) from DeletedAttachment as datt').execute().get(0)) + #if($deletedAttachments == 0) + + {{info}}$services.localization.render('platform.index.trashAttachmentsEmpty'){{/info}} + + #else + #macro(displayDeletedAttachment $id) + #set($datt = $xwiki.getDeletedAttachment("$id")) + #set($originalAttachment = $datt.getAttachment()) + #set($originalDocument = $xwiki.getDocument($datt.docName)) + <tr> + <td><a href="$originalDocument.getAttachmentRevisionURL($originalAttachment.filename, $originalAttachment.version, "rid=${datt.id}").replaceAll('&', '&amp;')">$escapetool.xml($datt.filename)</a></td> + <td><a href="$originalDocument.getURL()">$escapetool.xml($originalDocument.plainTitle) ($escapetool.xml(${originalDocument.fullName}))</a></td> + <td>$xwiki.formatDate($datt.getDate(), $dateFormat)</td> + <td>$xwiki.getUserName($datt.getDeleter())</td> + <td class="itemActions"> + #if($datt.canDelete()) + <a href="${originalDocument.getAttachmentURL($datt.filename, 'delattachment', "trashId=${datt.id}&amp;xredirect=$escapetool.url($!request.getRequestURI())?$escapetool.url($!request.getQueryString())")}" class="tool delete" title="$services.localization.render('platform.index.trashAttachmentsActionsDeleteTooltip')">$services.localization.render('platform.index.trashAttachmentsDeleteText')</a> + #end + </td> + </tr> + #end +## + #if("$!{request.view}" == '') + #set($queryParams = '') + #else + #set($queryParams = "view=$!{escapetool.url($request.view)}") + #end + #set($paginationParameters = { + 'totalItems' : $services.query.hql('select count(datt.id) from DeletedAttachment as datt').execute().get(0), + 'defaultItemsPerPage' : 15, + 'url' : $doc.getURL('view', $queryParams) + }) + #pagination($paginationParameters) + <table id="searchResults" class="xwiki-livetable xwiki-livetable-display"> + <thead class="xwiki-livetable-display-header"><tr> + <th scope="col" class="xwiki-livetable-display-header-text selected asc">$services.localization.render('platform.index.trashAttachments.datt.filename')</th> + <th scope="col" class="xwiki-livetable-display-header-text">$services.localization.render('platform.index.trashAttachments.datt.docName')</th> + <th scope="col" class="xwiki-livetable-display-header-text">$services.localization.render('platform.index.trashAttachments.datt.date')</th> + <th scope="col" class="xwiki-livetable-display-header-text">$services.localization.render('platform.index.trashAttachments.datt.deleter')</th> + <th scope="col" class="xwiki-livetable-display-header-text">$services.localization.render('platform.index.trashAttachments.actions')</th> + </tr></thead> + <tbody class="xwiki-livetable-display-body"> + #set ($query = $services.query.hql('select datt.id from DeletedAttachment as datt order by datt.filename asc')) + #foreach($item in $query.setLimit($paginationParameters.itemsPerPage).setOffset($paginationParameters.firstItem).execute()) + #displayDeletedAttachment($item) + #end + </tbody> + </table> + #set($discard = $paginationParameters.put('position', 'bottom')) + #pagination($paginationParameters) + #end ## deletedAttachments != 0 +</noscript> +{{/html}}## +#else ## request.list +## ============================================================================================ +## This page is called from live table via Ajax with the argument xpage=plain. It returns a +## set of results serialized in JSON. +## @programming This service page needs to be saved by a user with the programming access level +## to work as expected +## ============================================================================================ +#if("$!{request.get('xpage')}" == 'plain') +$response.setContentType('application/json') +#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 +#set($filenameFilter = $request.get('datt.filename')) +#set($docNameFilter = $request.get('datt.docName')) +#set($deleterFilter = $request.get('datt.deleter')) +#set($sql = '') +#if("$!{filenameFilter}" != '') + #set($sql = "and lower(datt.filename) like '%${filenameFilter.trim().toLowerCase()}%' ") +#end +#if("$!{docNameFilter}" != '') + #set($sql = "and lower(datt.docName) like '%${docNameFilter.trim().toLowerCase()}%' ") +#end +#if("$!{deleterFilter}" != '') + #set($sql = $sql + "and lower(datt.deleter) like '%${deleterFilter.trim().toLowerCase()}%' ") +#end +#if("$!{request.sort}" != '') + #set($order = $request.sort) +#else + #set($order = 'datt.id') +#end +#if("$!{request.dir}" != '') + #set($dir = $request.dir) +#else + #set($dir = 'asc') +#end +#set($selectSql = "select datt.id, $order from DeletedAttachment as datt where 1=1 " + $sql + " order by $order $dir") +#set($countSql = "select count(*) from DeletedAttachment as datt where 1=1 " + $sql) +#set($items = $services.query.hql($selectSql).setLimit($limit).setOffset($offset).execute()) +#set($totalItems = $services.query.hql($countSql).execute().get(0)) +#set($returnedItems = $items.size()) +## ============================================== +## json starts +## ============================================== +{ +"totalrows": $totalItems, +"returnedrows": $returnedItems, +"offset": ${mathtool.add($offset, 1)}, +"reqNo": ${request.reqNo}, +"query" : "$selectSql", +"rows": [ +#foreach($item in $items) + #set($datt = $xwiki.getDeletedAttachment("$item.get(0)")) + #if($velocityCount > 1) , #end + { + #set($originalAttachment = $datt.getAttachment()) + #set($originalDocument = $xwiki.getDocument($datt.docName)) + "filename" : "$escapetool.javascript($datt.filename)", + "docName" : "$escapetool.javascript($datt.docName)", + "title" : "$escapetool.javascript($originalDocument.plainTitle)", + "url" : "$originalDocument.getAttachmentRevisionURL($originalAttachment.filename, $originalAttachment.version, "rid=${datt.id}")", + "documentUrl" : "$originalDocument.getURL()", + "canDelete" : $datt.canDelete(), + "deleteUrl" : "$originalDocument.getAttachmentURL($datt.filename, 'delattachment', "trashId=${datt.id}&form_token=$!{services.csrf.getToken()}")", + "canRestore" : $datt.canRestore(), + "alreadyExists" : #if($originalDocument.getAttachment($datt.filename)) true #else false #end, + "restoreUrl" : "$originalDocument.getAttachmentURL($datt.filename)", + "date" : "$xwiki.formatDate($datt.date, $dateFormat)", + "deleter" : "$escapetool.javascript($datt.deleter)", + "deletername" : "$escapetool.javascript($xwiki.getUserName($datt.deleter, false))", + "deleterurl" : "$xwiki.getURL($datt.deleter, 'view')" + } +#end +]} +## ============================================== +## json ended +## ============================================== +#end## xpage=plain +#end## request.list +#end## hasProgramR +{{/velocity}}</content> <object> + <name>XWiki.DeletedAttachments</name> + <number>0</number> + <className>XWiki.JavaScriptExtension</className> + <guid>2b1a4426-e37b-40ba-9ad3-4055a466da0a</guid> <class> <name>XWiki.JavaScriptExtension</name> <customClass/> @@ -111,14 +285,10 @@ <separators> ,|</separators> <size>1</size> <unmodifiable>0</unmodifiable> - <values>currentPage=Always on this page|onDemand=On demand|always=Always on this wiki</values> + <values>currentPage|onDemand|always</values> <classType>com.xpn.xwiki.objects.classes.StaticListClass</classType> </use> </class> - <name>XWiki.DeletedAttachments</name> - <number>0</number> - <className>XWiki.JavaScriptExtension</className> - <guid>2b1a4426-e37b-40ba-9ad3-4055a466da0a</guid> <property> <cache>long</cache> </property> @@ -235,6 +405,10 @@ </property> </object> <object> + <name>XWiki.DeletedAttachments</name> + <number>0</number> + <className>XWiki.RequiredRightClass</className> + <guid>b70cdd38-4b2d-4dea-b1e0-c054359d3793</guid> <class> <name>XWiki.RequiredRightClass</name> <customClass/> @@ -265,15 +439,15 @@ <classType>com.xpn.xwiki.objects.classes.StaticListClass</classType> </level> </class> - <name>XWiki.DeletedAttachments</name> - <number>0</number> - <className>XWiki.RequiredRightClass</className> - <guid>b70cdd38-4b2d-4dea-b1e0-c054359d3793</guid> <property> <level>programming</level> </property> </object> <object> + <name>XWiki.DeletedAttachments</name> + <number>0</number> + <className>XWiki.StyleSheetExtension</className> + <guid>33778e4e-5d86-472e-b065-c9c87b5b282e</guid> <class> <name>XWiki.StyleSheetExtension</name> <customClass/> @@ -341,14 +515,10 @@ <separators> ,|</separators> <size>1</size> <unmodifiable>0</unmodifiable> - <values>currentPage=Always on this page|onDemand=On demand|always=Always on this wiki</values> + <values>currentPage|onDemand|always</values> <classType>com.xpn.xwiki.objects.classes.StaticListClass</classType> </use> </class> - <name>XWiki.DeletedAttachments</name> - <number>0</number> - <className>XWiki.StyleSheetExtension</className> - <guid>33778e4e-5d86-472e-b065-c9c87b5b282e</guid> <property> <cache>long</cache> </property> @@ -383,6 +553,10 @@ </property> </object> <object> + <name>XWiki.DeletedAttachments</name> + <number>0</number> + <className>XWiki.XWikiRights</className> + <guid>8d68ba7a-72d3-4f9f-a984-c7c47139b0a8</guid> <class> <name>XWiki.XWikiRights</name> <customClass/> @@ -448,10 +622,6 @@ <classType>com.xpn.xwiki.objects.classes.UsersClass</classType> </users> </class> - <name>XWiki.DeletedAttachments</name> - <number>0</number> - <className>XWiki.XWikiRights</className> - <guid>8d68ba7a-72d3-4f9f-a984-c7c47139b0a8</guid> <property> <allow>1</allow> </property> @@ -461,180 +631,8 @@ <property> <levels>view,edit</levels> </property> + <property> + <users/> + </property> </object> - <content>{{velocity}} -#if(!$xwiki.hasProgrammingRights()) - {{warning}}This document requires programming rights and needs to be saved by an administrator of this Wiki{{/warning}} -#else -#set($dateFormat = 'yyyy MMMM d, HH:mm') -#if(!$request.list) -$xwiki.ssx.use('XWiki.DeletedAttachments')## -$xwiki.jsx.use('XWiki.DeletedAttachments', {'minify' : 'false'})## -## -#set($columns = ['datt.filename', 'datt.docName', 'datt.date', 'datt.deleter', 'actions']) -#set($columnProperties = { - 'datt.filename' : { 'type' : 'text', 'size' : 10 }, - 'datt.docName' : { 'type' : 'text', 'size' : 10 }, - 'datt.date' : { 'type' : 'date', 'filterable' : false }, - 'datt.deleter' : { 'type' : 'text', 'size' : 10 }, - 'actions' : { 'type' : 'text', 'filterable' : false, 'sortable' : false } - })## -#set($options = { - 'url' : "$xwiki.getURL('XWiki.DeletedAttachments', 'view', 'list=1&xpage=plain&outputSyntax=plain')", - 'callback' : 'XWiki.index.trash.attachments.displayEntry', - 'translationPrefix' : 'platform.index.trashAttachments.' - })## -## -## -## -{{html wiki="true" clean="false"}} -<div class="hidden"> -#livetable('attachmentTrash' $columns $columnProperties $options) -</div> -{{/html}} - -{{html wiki="true" clean="false"}} -<noscript> - - #set($deletedAttachments = $services.query.hql('select count(datt.id) from DeletedAttachment as datt').execute().get(0)) - #if($deletedAttachments == 0) - - {{info}}$services.localization.render('platform.index.trashAttachmentsEmpty'){{/info}} - - #else - #macro(displayDeletedAttachment $id) - #set($datt = $xwiki.getDeletedAttachment("$id")) - #set($originalAttachment = $datt.getAttachment()) - #set($originalDocument = $xwiki.getDocument($datt.docName)) - <tr> - <td><a href="$originalDocument.getAttachmentRevisionURL($originalAttachment.filename, $originalAttachment.version, "rid=${datt.id}").replaceAll('&', '&amp;')">$escapetool.xml($datt.filename)</a></td> - <td><a href="$originalDocument.getURL()">$escapetool.xml($originalDocument.plainTitle) ($escapetool.xml(${originalDocument.fullName}))</a></td> - <td>$xwiki.formatDate($datt.getDate(), $dateFormat)</td> - <td>$xwiki.getUserName($datt.getDeleter())</td> - <td class="itemActions"> - #if($datt.canDelete()) - <a href="${originalDocument.getAttachmentURL($datt.filename, 'delattachment', "trashId=${datt.id}&amp;xredirect=$escapetool.url($!request.getRequestURI())?$escapetool.url($!request.getQueryString())")}" class="tool delete" title="$services.localization.render('platform.index.trashAttachmentsActionsDeleteTooltip')">$services.localization.render('platform.index.trashAttachmentsDeleteText')</a> - #end - </td> - </tr> - #end -## - #if("$!{request.view}" == '') - #set($queryParams = '') - #else - #set($queryParams = "view=$!{escapetool.url($request.view)}") - #end - #set($paginationParameters = { - 'totalItems' : $services.query.hql('select count(datt.id) from DeletedAttachment as datt').execute().get(0), - 'defaultItemsPerPage' : 15, - 'url' : $doc.getURL('view', $queryParams) - }) - #pagination($paginationParameters) - <table id="searchResults" class="xwiki-livetable xwiki-livetable-display"> - <thead class="xwiki-livetable-display-header"><tr> - <th scope="col" class="xwiki-livetable-display-header-text selected asc">$services.localization.render('platform.index.trashAttachments.datt.filename')</th> - <th scope="col" class="xwiki-livetable-display-header-text">$services.localization.render('platform.index.trashAttachments.datt.docName')</th> - <th scope="col" class="xwiki-livetable-display-header-text">$services.localization.render('platform.index.trashAttachments.datt.date')</th> - <th scope="col" class="xwiki-livetable-display-header-text">$services.localization.render('platform.index.trashAttachments.datt.deleter')</th> - <th scope="col" class="xwiki-livetable-display-header-text">$services.localization.render('platform.index.trashAttachments.actions')</th> - </tr></thead> - <tbody class="xwiki-livetable-display-body"> - #set ($query = $services.query.hql('select datt.id from DeletedAttachment as datt order by datt.filename asc')) - #foreach($item in $query.setLimit($paginationParameters.itemsPerPage).setOffset($paginationParameters.firstItem).execute()) - #displayDeletedAttachment($item) - #end - </tbody> - </table> - #set($discard = $paginationParameters.put('position', 'bottom')) - #pagination($paginationParameters) - #end ## deletedAttachments != 0 -</noscript> -{{/html}}## -#else ## request.list -## ============================================================================================ -## This page is called from live table via Ajax with the argument xpage=plain. It returns a -## set of results serialized in JSON. -## @programming This service page needs to be saved by a user with the programming access level -## to work as expected -## ============================================================================================ -#if("$!{request.get('xpage')}" == 'plain') -$response.setContentType('application/json') -#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 -#set($filenameFilter = $request.get('datt.filename')) -#set($docNameFilter = $request.get('datt.docName')) -#set($deleterFilter = $request.get('datt.deleter')) -#set($sql = '') -#if("$!{filenameFilter}" != '') - #set($sql = "and lower(datt.filename) like '%${filenameFilter.trim().toLowerCase()}%' ") -#end -#if("$!{docNameFilter}" != '') - #set($sql = "and lower(datt.docName) like '%${docNameFilter.trim().toLowerCase()}%' ") -#end -#if("$!{deleterFilter}" != '') - #set($sql = $sql + "and lower(datt.deleter) like '%${deleterFilter.trim().toLowerCase()}%' ") -#end -#if("$!{request.sort}" != '') - #set($order = $request.sort) -#else - #set($order = 'datt.id') -#end -#if("$!{request.dir}" != '') - #set($dir = $request.dir) -#else - #set($dir = 'asc') -#end -#set($selectSql = "select datt.id, $order from DeletedAttachment as datt where 1=1 " + $sql + " order by $order $dir") -#set($countSql = "select count(*) from DeletedAttachment as datt where 1=1 " + $sql) -#set($items = $services.query.hql($selectSql).setLimit($limit).setOffset($offset).execute()) -#set($totalItems = $services.query.hql($countSql).execute().get(0)) -#set($returnedItems = $items.size()) -## ============================================== -## json starts -## ============================================== -{ -"totalrows": $totalItems, -"returnedrows": $returnedItems, -"offset": ${mathtool.add($offset, 1)}, -"reqNo": ${request.reqNo}, -"query" : "$selectSql", -"rows": [ -#foreach($item in $items) - #set($datt = $xwiki.getDeletedAttachment("$item.get(0)")) - #if($velocityCount > 1) , #end - { - #set($originalAttachment = $datt.getAttachment()) - #set($originalDocument = $xwiki.getDocument($datt.docName)) - "filename" : "$escapetool.javascript($datt.filename)", - "docName" : "$escapetool.javascript($datt.docName)", - "title" : "$escapetool.javascript($originalDocument.plainTitle)", - "url" : "$originalDocument.getAttachmentRevisionURL($originalAttachment.filename, $originalAttachment.version, "rid=${datt.id}")", - "documentUrl" : "$originalDocument.getURL()", - "canDelete" : $datt.canDelete(), - "deleteUrl" : "$originalDocument.getAttachmentURL($datt.filename, 'delattachment', "trashId=${datt.id}&form_token=$!{services.csrf.getToken()}")", - "canRestore" : $datt.canRestore(), - "alreadyExists" : #if($originalDocument.getAttachment($datt.filename)) true #else false #end, - "restoreUrl" : "$originalDocument.getAttachmentURL($datt.filename)", - "date" : "$xwiki.formatDate($datt.date, $dateFormat)", - "deleter" : "$escapetool.javascript($datt.deleter)", - "deletername" : "$escapetool.javascript($xwiki.getUserName($datt.deleter, false))", - "deleterurl" : "$xwiki.getURL($datt.deleter, 'view')" - } -#end -]} -## ============================================== -## json ended -## ============================================== -#end## xpage=plain -#end## request.list -#end## hasProgramR -{{/velocity}}</content> </xwikidoc>