Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2020-10-13 20:42:13 +0300
committerGitHub <noreply@github.com>2020-10-13 20:42:13 +0300
commit0c67de31092e7c2868cd27b439f18e6d98af93ba (patch)
tree21b9ae1e7df369bffd6b28749018af486ea7667d
parent060286c51aff158135351d5dcc332df914102900 (diff)
parent0f2f857dc3b404b389a7c84b4336fa46b072738b (diff)
Merge pull request #23286 from nextcloud/design/deleted-sorting
Sort deleted files by most recently deleted first
-rw-r--r--apps/files_trashbin/js/files_trashbin.js2
-rw-r--r--apps/files_trashbin/js/files_trashbin.js.map2
-rw-r--r--apps/files_trashbin/src/filelist.js4
-rw-r--r--apps/files_trashbin/tests/js/filelistSpec.js2
4 files changed, 6 insertions, 4 deletions
diff --git a/apps/files_trashbin/js/files_trashbin.js b/apps/files_trashbin/js/files_trashbin.js
index 7a83c579058..17e5e5f754f 100644
--- a/apps/files_trashbin/js/files_trashbin.js
+++ b/apps/files_trashbin/js/files_trashbin.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/js/",i(i.s=0)}([function(e,t,i){"use strict";i.r(t);i(1),i(2),i(3);window.OCA.Trashbin=OCA.Trashbin},function(e,i){OCA.Trashbin={},OCA.Trashbin.App={_initialized:!1,client:null,initialize:function(e){if(!this._initialized){this._initialized=!0,this.client=new OC.Files.Client({host:OC.getHost(),port:OC.getPort(),root:OC.linkToRemoteBase("dav")+"/trashbin/"+OC.getCurrentUser().uid,useHTTPS:"https"===OC.getProtocol()});var i=OC.Util.History.parseUrlQuery();this.fileList=new OCA.Trashbin.FileList($("#app-content-trashbin"),{fileActions:this._createFileActions(),detailsViewEnabled:!1,scrollTo:i.scrollto,config:OCA.Files.App.getFilesConfig(),multiSelectMenu:[{name:"restore",displayName:t("files_trashbin","Restore"),iconClass:"icon-history"},{name:"delete",displayName:t("files_trashbin","Delete permanently"),iconClass:"icon-delete"}],client:this.client,shown:!0})}},_createFileActions:function(){var e=this.client,i=new OCA.Files.FileActions;return i.register("dir","Open",OC.PERMISSION_READ,"",(function(e,t){var i=t.fileList.getCurrentDirectory();t.fileList.changeDirectory(OC.joinPaths(i,e))})),i.setDefault("dir","Open"),i.registerAction({name:"Restore",displayName:t("files_trashbin","Restore"),type:OCA.Files.FileActions.TYPE_INLINE,mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-history",actionHandler:function(i,n){var r=n.fileList,a=r.findFileEl(i);r.showFileBusyState(a,!0);var o=n.fileList.getCurrentDirectory();e.move(OC.joinPaths("trash",o,i),OC.joinPaths("restore",i),!0).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while restoring file from trashbin"))}))}}),i.registerAction({name:"Delete",displayName:t("files_trashbin","Delete permanently"),mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-delete",render:function(e,n,r){var a=i._makeActionLink(e,r);return a.attr("original-title",t("files_trashbin","Delete permanently")),a.children("img").attr("alt",t("files_trashbin","Delete permanently")),r.$file.find("td:last").append(a),a},actionHandler:function(i,n){var r=n.fileList;$(".tipsy").remove();var a=r.findFileEl(i);r.showFileBusyState(a,!0);var o=n.fileList.getCurrentDirectory();e.remove(OC.joinPaths("trash",o,i)).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while removing file from trashbin"))}))}}),i}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-trashbin").one("show",(function(){OCA.Trashbin.App.initialize($("#app-content-trashbin"))}))}))},function(e,i){!function(){var e=new RegExp(/^(.+)\.d[0-9]+$/),i="{http://nextcloud.org/ns}trashbin-filename",n="{http://nextcloud.org/ns}trashbin-deletion-time",r="{http://nextcloud.org/ns}trashbin-original-location",a="{http://nextcloud.org/ns}trashbin-title";function o(t){t=OC.basename(t);var i=e.exec(t);return i&&i.length>1&&(t=i[1]),t}var s=function(e,t){this.client=t.client,this.initialize(e,t)};s.prototype=_.extend({},OCA.Files.FileList.prototype,{id:"trashbin",appName:t("files_trashbin","Deleted files"),client:null,initialize:function(){this.client.addFileInfoParser((function(e,t){var o=e.propStat[0].properties,s=o[r],l=o[a];return{displayName:o[i],mtime:1e3*parseInt(o[n],10),hasPreview:!0,path:s,extraData:l}}));var e=OCA.Files.FileList.prototype.initialize.apply(this,arguments);return this.$el.find(".undelete").click("click",_.bind(this._onClickRestoreSelected,this)),this.setSort("mtime","desc"),this.breadcrumb._makeCrumbs=function(){for(var e=OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this,[].concat(Array.prototype.slice.call(arguments),["icon-delete no-hover"])),t=1;t<e.length;t++)e[t].name=o(e[t].name);return e},OC.Plugins.attach("OCA.Trashbin.FileList",this),e},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},_setCurrentDir:function(e){OCA.Files.FileList.prototype._setCurrentDir.apply(this,arguments);var t=OC.basename(e);""!==t&&this.setPageTitle(o(t))},_createRow:function(){var e=OCA.Files.FileList.prototype._createRow.apply(this,arguments);return e.find("td.filesize").remove(),e},getAjaxUrl:function(e,t){var i="";return t&&(i="?"+OC.buildQueryString(t)),OC.filePath("files_trashbin","ajax",e+".php")+i},setupUploadEvents:function(){},linkTo:function(e){return OC.linkTo("files","index.php")+"?view=trashbin&dir="+encodeURIComponent(e).replace(/%2F/g,"/")},elementToFile:function(e){var t=OCA.Files.FileList.prototype.elementToFile(e);return"/"===this.getCurrentDirectory()&&(t.displayName=o(t.name)),delete t.size,t},updateEmptyContent:function(){var e=this.$fileList.find("tr:first").exists();this.$el.find("#emptycontent").toggleClass("hidden",e),this.$el.find("#filestable th").toggleClass("hidden",!e)},_removeCallback:function(e){for(var t,i=0;i<e.length;i++)t=this.remove(OC.basename(e[i]),{updateSummary:!1}),this.fileSummary.remove({type:t.attr("data-type"),size:t.attr("data-size")});this.fileSummary.update(),this.updateEmptyContent()},_onClickRestoreSelected:function(e){e.preventDefault();for(var i=this,n=_.pluck(this.getSelectedFiles(),"name"),r=0;r<n.length;r++){var a=this.findFileEl(n[r]);this.showFileBusyState(a,!0)}this.fileMultiSelectMenu.toggleLoading("restore",!0);var o=n.map((function(e){return i.client.move(OC.joinPaths("trash",i.getCurrentDirectory(),e),OC.joinPaths("restore",e),!0).then((function(){i._removeCallback([e])}))}));return Promise.all(o).then((function(){i.fileMultiSelectMenu.toggleLoading("restore",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while restoring files from trashbin"))}))},_onClickDeleteSelected:function(e){e.preventDefault();for(var i=this,n=this.$el.find(".select-all").is(":checked"),r=_.pluck(this.getSelectedFiles(),"name"),a=0;a<r.length;a++){var o=this.findFileEl(r[a]);this.showFileBusyState(o,!0)}if(n)return this.client.remove(OC.joinPaths("trash",this.getCurrentDirectory())).then((function(){i.hideMask(),i.setFiles([])}),(function(){OC.Notification.show(t("files_trashbin","Error while emptying trashbin"))}));this.fileMultiSelectMenu.toggleLoading("delete",!0);var s=r.map((function(e){return i.client.remove(OC.joinPaths("trash",i.getCurrentDirectory(),e)).then((function(){i._removeCallback([e])}))}));return Promise.all(s).then((function(){i.fileMultiSelectMenu.toggleLoading("delete",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while removing files from trashbin"))}))},_onClickFile:function(e){var t=$(this).parent().parent().data("mime");return"httpd/unix-directory"!==t&&e.preventDefault(),OCA.Files.FileList.prototype._onClickFile.apply(this,arguments)},generatePreviewUrl:function(e){return OC.generateUrl("/apps/files_trashbin/preview?")+$.param(e)},getDownloadUrl:function(){return"#"},getDefaultActionUrl:function(){return"#"},updateStorageStatistics:function(){},isSelectedDeletable:function(){return!0},_getWebdavProperties:function(){return[i,n,r,a].concat(this.filesClient.getPropfindProperties())},reload:function(){this._selectedFiles={},this._selectionSummary.clear(),this.$el.find(".select-all").prop("checked",!1),this.showMask(),this._reloadCall&&this._reloadCall.abort(),this._reloadCall=this.client.getFolderContents("trash/"+this.getCurrentDirectory(),{includeParent:!1,properties:this._getWebdavProperties()});var e=this.reloadCallback.bind(this);return this._reloadCall.then(e,e)},reloadCallback:function(e,i){return delete this._reloadCall,this.hideMask(),401!==e&&(403===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This operation is forbidden")),!1):500===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This directory is unavailable, please check the logs or contact the administrator")),!1):404===e?(this.changeDirectory("/"),!1):(0===e||this.setFiles(i),!0))}}),OCA.Trashbin.FileList=s}()},function(e,t,i){var n=i(4);"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);(0,i(6).default)("e1044e6c",n,!0,{})},function(e,t,i){(t=i(5)(!1)).push([e.i,'#app-content-trashbin tbody tr[data-type="file"] td a.name,#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext,#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin #filestable .summary .filesize{display:none}\n',""]),e.exports=t},function(e,t,i){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=function(e,t){var i=e[1]||"",n=e[3];if(!n)return i;if(t&&"function"==typeof btoa){var r=(o=n,s=btoa(unescape(encodeURIComponent(JSON.stringify(o)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(l," */")),a=n.sources.map((function(e){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(e," */")}));return[i].concat(a).concat([r]).join("\n")}var o,s,l;return[i].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var r={};if(n)for(var a=0;a<this.length;a++){var o=this[a][0];null!=o&&(r[o]=!0)}for(var s=0;s<e.length;s++){var l=[].concat(e[s]);n&&r[l[0]]||(i&&(l[2]?l[2]="".concat(i," and ").concat(l[2]):l[2]=i),t.push(l))}},t}},function(e,t,i){"use strict";function n(e,t){for(var i=[],n={},r=0;r<t.length;r++){var a=t[r],o=a[0],s={id:e+":"+r,css:a[1],media:a[2],sourceMap:a[3]};n[o]?n[o].parts.push(s):i.push(n[o]={id:o,parts:[s]})}return i}i.r(t),i.d(t,"default",(function(){return d}));var r="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!r)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var a={},o=r&&(document.head||document.getElementsByTagName("head")[0]),s=null,l=0,c=!1,u=function(){},f=null,h="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function d(e,t,i,r){c=i,f=r||{};var o=n(e,t);return p(o),function(t){for(var i=[],r=0;r<o.length;r++){var s=o[r];(l=a[s.id]).refs--,i.push(l)}t?p(o=n(e,t)):o=[];for(r=0;r<i.length;r++){var l;if(0===(l=i[r]).refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete a[l.id]}}}}function p(e){for(var t=0;t<e.length;t++){var i=e[t],n=a[i.id];if(n){n.refs++;for(var r=0;r<n.parts.length;r++)n.parts[r](i.parts[r]);for(;r<i.parts.length;r++)n.parts.push(g(i.parts[r]));n.parts.length>i.parts.length&&(n.parts.length=i.parts.length)}else{var o=[];for(r=0;r<i.parts.length;r++)o.push(g(i.parts[r]));a[i.id]={id:i.id,refs:1,parts:o}}}}function m(){var e=document.createElement("style");return e.type="text/css",o.appendChild(e),e}function g(e){var t,i,n=document.querySelector('style[data-vue-ssr-id~="'+e.id+'"]');if(n){if(c)return u;n.parentNode.removeChild(n)}if(h){var r=l++;n=s||(s=m()),t=y.bind(null,n,r,!1),i=y.bind(null,n,r,!0)}else n=m(),t=b.bind(null,n),i=function(){n.parentNode.removeChild(n)};return t(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap)return;t(e=n)}else i()}}var v,C=(v=[],function(e,t){return v[e]=t,v.filter(Boolean).join("\n")});function y(e,t,i,n){var r=i?"":n.css;if(e.styleSheet)e.styleSheet.cssText=C(t,r);else{var a=document.createTextNode(r),o=e.childNodes;o[t]&&e.removeChild(o[t]),o.length?e.insertBefore(a,o[t]):e.appendChild(a)}}function b(e,t){var i=t.css,n=t.media,r=t.sourceMap;if(n&&e.setAttribute("media",n),f.ssrId&&e.setAttribute("data-vue-ssr-id",t.id),r&&(i+="\n/*# sourceURL="+r.sources[0]+" */",i+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),e.styleSheet)e.styleSheet.cssText=i;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(i))}}}]);
+!function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/js/",i(i.s=0)}([function(e,t,i){"use strict";i.r(t);i(1),i(2),i(3);window.OCA.Trashbin=OCA.Trashbin},function(e,i){OCA.Trashbin={},OCA.Trashbin.App={_initialized:!1,client:null,initialize:function(e){if(!this._initialized){this._initialized=!0,this.client=new OC.Files.Client({host:OC.getHost(),port:OC.getPort(),root:OC.linkToRemoteBase("dav")+"/trashbin/"+OC.getCurrentUser().uid,useHTTPS:"https"===OC.getProtocol()});var i=OC.Util.History.parseUrlQuery();this.fileList=new OCA.Trashbin.FileList($("#app-content-trashbin"),{fileActions:this._createFileActions(),detailsViewEnabled:!1,scrollTo:i.scrollto,config:OCA.Files.App.getFilesConfig(),multiSelectMenu:[{name:"restore",displayName:t("files_trashbin","Restore"),iconClass:"icon-history"},{name:"delete",displayName:t("files_trashbin","Delete permanently"),iconClass:"icon-delete"}],client:this.client,shown:!0})}},_createFileActions:function(){var e=this.client,i=new OCA.Files.FileActions;return i.register("dir","Open",OC.PERMISSION_READ,"",(function(e,t){var i=t.fileList.getCurrentDirectory();t.fileList.changeDirectory(OC.joinPaths(i,e))})),i.setDefault("dir","Open"),i.registerAction({name:"Restore",displayName:t("files_trashbin","Restore"),type:OCA.Files.FileActions.TYPE_INLINE,mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-history",actionHandler:function(i,n){var r=n.fileList,a=r.findFileEl(i);r.showFileBusyState(a,!0);var o=n.fileList.getCurrentDirectory();e.move(OC.joinPaths("trash",o,i),OC.joinPaths("restore",i),!0).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while restoring file from trashbin"))}))}}),i.registerAction({name:"Delete",displayName:t("files_trashbin","Delete permanently"),mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-delete",render:function(e,n,r){var a=i._makeActionLink(e,r);return a.attr("original-title",t("files_trashbin","Delete permanently")),a.children("img").attr("alt",t("files_trashbin","Delete permanently")),r.$file.find("td:last").append(a),a},actionHandler:function(i,n){var r=n.fileList;$(".tipsy").remove();var a=r.findFileEl(i);r.showFileBusyState(a,!0);var o=n.fileList.getCurrentDirectory();e.remove(OC.joinPaths("trash",o,i)).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while removing file from trashbin"))}))}}),i}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-trashbin").one("show",(function(){OCA.Trashbin.App.initialize($("#app-content-trashbin"))}))}))},function(e,i){!function(){var e=new RegExp(/^(.+)\.d[0-9]+$/),i="{http://nextcloud.org/ns}trashbin-filename",n="{http://nextcloud.org/ns}trashbin-deletion-time",r="{http://nextcloud.org/ns}trashbin-original-location",a="{http://nextcloud.org/ns}trashbin-title";function o(t){t=OC.basename(t);var i=e.exec(t);return i&&i.length>1&&(t=i[1]),t}var s=function(e,t){this.client=t.client,this.initialize(e,t)};s.prototype=_.extend({},OCA.Files.FileList.prototype,{id:"trashbin",appName:t("files_trashbin","Deleted files"),client:null,initialize:function(){this.client.addFileInfoParser((function(e,t){var o=e.propStat[0].properties,s=o[r],l=o[a];return{displayName:o[i],mtime:1e3*parseInt(o[n],10),hasPreview:!0,path:s,extraData:l}}));var e=OCA.Files.FileList.prototype.initialize.apply(this,arguments);return this.$el.find(".undelete").click("click",_.bind(this._onClickRestoreSelected,this)),this.setSort("mtime","asc"),this.breadcrumb._makeCrumbs=function(){for(var e=OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this,[].concat(Array.prototype.slice.call(arguments),["icon-delete no-hover"])),t=1;t<e.length;t++)e[t].name=o(e[t].name);return e},OC.Plugins.attach("OCA.Trashbin.FileList",this),e},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},_setCurrentDir:function(e){OCA.Files.FileList.prototype._setCurrentDir.apply(this,arguments);var t=OC.basename(e);""!==t&&this.setPageTitle(o(t))},_createRow:function(){var e=OCA.Files.FileList.prototype._createRow.apply(this,arguments);return e.find("td.filesize").remove(),e},getAjaxUrl:function(e,t){var i="";return t&&(i="?"+OC.buildQueryString(t)),OC.filePath("files_trashbin","ajax",e+".php")+i},setupUploadEvents:function(){},linkTo:function(e){return OC.linkTo("files","index.php")+"?view=trashbin&dir="+encodeURIComponent(e).replace(/%2F/g,"/")},elementToFile:function(e){var t=OCA.Files.FileList.prototype.elementToFile(e);return"/"===this.getCurrentDirectory()&&(t.displayName=o(t.name)),delete t.size,t},updateEmptyContent:function(){var e=this.$fileList.find("tr:first").exists();this.$el.find("#emptycontent").toggleClass("hidden",e),this.$el.find("#filestable th").toggleClass("hidden",!e)},_removeCallback:function(e){for(var t,i=0;i<e.length;i++)t=this.remove(OC.basename(e[i]),{updateSummary:!1}),this.fileSummary.remove({type:t.attr("data-type"),size:t.attr("data-size")});this.fileSummary.update(),this.updateEmptyContent()},_onClickRestoreSelected:function(e){e.preventDefault();for(var i=this,n=_.pluck(this.getSelectedFiles(),"name"),r=0;r<n.length;r++){var a=this.findFileEl(n[r]);this.showFileBusyState(a,!0)}this.fileMultiSelectMenu.toggleLoading("restore",!0);var o=n.map((function(e){return i.client.move(OC.joinPaths("trash",i.getCurrentDirectory(),e),OC.joinPaths("restore",e),!0).then((function(){i._removeCallback([e])}))}));return Promise.all(o).then((function(){i.fileMultiSelectMenu.toggleLoading("restore",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while restoring files from trashbin"))}))},_onClickDeleteSelected:function(e){e.preventDefault();for(var i=this,n=this.$el.find(".select-all").is(":checked"),r=_.pluck(this.getSelectedFiles(),"name"),a=0;a<r.length;a++){var o=this.findFileEl(r[a]);this.showFileBusyState(o,!0)}if(n)return this.client.remove(OC.joinPaths("trash",this.getCurrentDirectory())).then((function(){i.hideMask(),i.setFiles([])}),(function(){OC.Notification.show(t("files_trashbin","Error while emptying trashbin"))}));this.fileMultiSelectMenu.toggleLoading("delete",!0);var s=r.map((function(e){return i.client.remove(OC.joinPaths("trash",i.getCurrentDirectory(),e)).then((function(){i._removeCallback([e])}))}));return Promise.all(s).then((function(){i.fileMultiSelectMenu.toggleLoading("delete",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while removing files from trashbin"))}))},_onClickFile:function(e){var t=$(this).parent().parent().data("mime");return"httpd/unix-directory"!==t&&e.preventDefault(),OCA.Files.FileList.prototype._onClickFile.apply(this,arguments)},generatePreviewUrl:function(e){return OC.generateUrl("/apps/files_trashbin/preview?")+$.param(e)},getDownloadUrl:function(){return"#"},getDefaultActionUrl:function(){return"#"},updateStorageStatistics:function(){},isSelectedDeletable:function(){return!0},_getWebdavProperties:function(){return[i,n,r,a].concat(this.filesClient.getPropfindProperties())},reload:function(){this._selectedFiles={},this._selectionSummary.clear(),this.$el.find(".select-all").prop("checked",!1),this.showMask(),this._reloadCall&&this._reloadCall.abort(),this._reloadCall=this.client.getFolderContents("trash/"+this.getCurrentDirectory(),{includeParent:!1,properties:this._getWebdavProperties()});var e=this.reloadCallback.bind(this);return this._reloadCall.then(e,e)},reloadCallback:function(e,i){return delete this._reloadCall,this.hideMask(),401!==e&&(403===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This operation is forbidden")),!1):500===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This directory is unavailable, please check the logs or contact the administrator")),!1):404===e?(this.changeDirectory("/"),!1):(0===e||this.setFiles(i),!0))}}),OCA.Trashbin.FileList=s}()},function(e,t,i){var n=i(4);"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);(0,i(6).default)("e1044e6c",n,!0,{})},function(e,t,i){(t=i(5)(!1)).push([e.i,'#app-content-trashbin tbody tr[data-type="file"] td a.name,#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext,#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin #filestable .summary .filesize{display:none}\n',""]),e.exports=t},function(e,t,i){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=function(e,t){var i=e[1]||"",n=e[3];if(!n)return i;if(t&&"function"==typeof btoa){var r=(o=n,s=btoa(unescape(encodeURIComponent(JSON.stringify(o)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(l," */")),a=n.sources.map((function(e){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(e," */")}));return[i].concat(a).concat([r]).join("\n")}var o,s,l;return[i].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var r={};if(n)for(var a=0;a<this.length;a++){var o=this[a][0];null!=o&&(r[o]=!0)}for(var s=0;s<e.length;s++){var l=[].concat(e[s]);n&&r[l[0]]||(i&&(l[2]?l[2]="".concat(i," and ").concat(l[2]):l[2]=i),t.push(l))}},t}},function(e,t,i){"use strict";function n(e,t){for(var i=[],n={},r=0;r<t.length;r++){var a=t[r],o=a[0],s={id:e+":"+r,css:a[1],media:a[2],sourceMap:a[3]};n[o]?n[o].parts.push(s):i.push(n[o]={id:o,parts:[s]})}return i}i.r(t),i.d(t,"default",(function(){return d}));var r="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!r)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var a={},o=r&&(document.head||document.getElementsByTagName("head")[0]),s=null,l=0,c=!1,u=function(){},f=null,h="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function d(e,t,i,r){c=i,f=r||{};var o=n(e,t);return p(o),function(t){for(var i=[],r=0;r<o.length;r++){var s=o[r];(l=a[s.id]).refs--,i.push(l)}t?p(o=n(e,t)):o=[];for(r=0;r<i.length;r++){var l;if(0===(l=i[r]).refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete a[l.id]}}}}function p(e){for(var t=0;t<e.length;t++){var i=e[t],n=a[i.id];if(n){n.refs++;for(var r=0;r<n.parts.length;r++)n.parts[r](i.parts[r]);for(;r<i.parts.length;r++)n.parts.push(g(i.parts[r]));n.parts.length>i.parts.length&&(n.parts.length=i.parts.length)}else{var o=[];for(r=0;r<i.parts.length;r++)o.push(g(i.parts[r]));a[i.id]={id:i.id,refs:1,parts:o}}}}function m(){var e=document.createElement("style");return e.type="text/css",o.appendChild(e),e}function g(e){var t,i,n=document.querySelector('style[data-vue-ssr-id~="'+e.id+'"]');if(n){if(c)return u;n.parentNode.removeChild(n)}if(h){var r=l++;n=s||(s=m()),t=y.bind(null,n,r,!1),i=y.bind(null,n,r,!0)}else n=m(),t=b.bind(null,n),i=function(){n.parentNode.removeChild(n)};return t(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap)return;t(e=n)}else i()}}var v,C=(v=[],function(e,t){return v[e]=t,v.filter(Boolean).join("\n")});function y(e,t,i,n){var r=i?"":n.css;if(e.styleSheet)e.styleSheet.cssText=C(t,r);else{var a=document.createTextNode(r),o=e.childNodes;o[t]&&e.removeChild(o[t]),o.length?e.insertBefore(a,o[t]):e.appendChild(a)}}function b(e,t){var i=t.css,n=t.media,r=t.sourceMap;if(n&&e.setAttribute("media",n),f.ssrId&&e.setAttribute("data-vue-ssr-id",t.id),r&&(i+="\n/*# sourceURL="+r.sources[0]+" */",i+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),e.styleSheet)e.styleSheet.cssText=i;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(i))}}}]);
//# sourceMappingURL=files_trashbin.js.map \ No newline at end of file
diff --git a/apps/files_trashbin/js/files_trashbin.js.map b/apps/files_trashbin/js/files_trashbin.js.map
index c9160e5a591..0987efc3024 100644
--- a/apps/files_trashbin/js/files_trashbin.js.map
+++ b/apps/files_trashbin/js/files_trashbin.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./apps/files_trashbin/src/files_trashbin.js","webpack:///./apps/files_trashbin/src/app.js","webpack:///./apps/files_trashbin/src/filelist.js","webpack:///./apps/files_trashbin/src/trash.scss?7371","webpack:///./apps/files_trashbin/src/trash.scss","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","OCA","Trashbin","App","_initialized","client","initialize","$el","this","OC","Files","Client","host","getHost","port","getPort","root","linkToRemoteBase","getCurrentUser","uid","useHTTPS","getProtocol","urlParams","Util","History","parseUrlQuery","fileList","FileList","$","fileActions","_createFileActions","detailsViewEnabled","scrollTo","scrollto","config","getFilesConfig","multiSelectMenu","displayName","iconClass","shown","FileActions","register","PERMISSION_READ","filename","context","dir","getCurrentDirectory","changeDirectory","joinPaths","setDefault","registerAction","type","TYPE_INLINE","mime","permissions","actionHandler","tr","findFileEl","showFileBusyState","move","then","_removeCallback","Notification","show","render","actionSpec","isDefault","$actionLink","_makeActionLink","attr","children","$file","find","append","remove","addEventListener","one","DELETED_REGEXP","RegExp","FILENAME_PROP","DELETION_TIME_PROP","TRASHBIN_ORIGINAL_LOCATION","TRASHBIN_TITLE","getDeletedFileName","basename","match","exec","length","options","_","extend","id","appName","addFileInfoParser","response","data","props","propStat","properties","path","title","mtime","parseInt","hasPreview","extraData","result","apply","arguments","click","_onClickRestoreSelected","setSort","breadcrumb","_makeCrumbs","parts","BreadCrumb","Plugins","attach","getDirectoryPermissions","PERMISSION_DELETE","_setCurrentDir","targetDir","baseDir","setPageTitle","_createRow","getAjaxUrl","action","params","q","buildQueryString","filePath","setupUploadEvents","linkTo","encodeURIComponent","replace","elementToFile","fileInfo","size","updateEmptyContent","exists","$fileList","toggleClass","files","updateSummary","fileSummary","update","event","preventDefault","self","pluck","getSelectedFiles","fileMultiSelectMenu","toggleLoading","restorePromises","map","file","Promise","all","_onClickDeleteSelected","allFiles","is","hideMask","setFiles","deletePromises","_onClickFile","parent","generatePreviewUrl","urlSpec","generateUrl","param","getDownloadUrl","getDefaultActionUrl","updateStorageStatistics","isSelectedDeletable","_getWebdavProperties","concat","filesClient","getPropfindProperties","reload","_selectedFiles","_selectionSummary","clear","prop","showMask","_reloadCall","abort","getFolderContents","includeParent","callBack","reloadCallback","status","content","locals","add","default","___CSS_LOADER_API_IMPORT___","push","useSourceMap","list","toString","item","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","JSON","stringify","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","_i","listToStyles","parentId","styles","newStyles","part","css","media","hasDocument","document","DEBUG","Error","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","isOldIE","navigator","test","userAgent","toLowerCase","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleElement","createElement","appendChild","obj","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","index","replacement","filter","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","ssrId","firstChild"],"mappings":"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","file":"files_trashbin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import './app'\nimport './filelist'\nimport './trash.scss'\n\nwindow.OCA.Trashbin = OCA.Trashbin\n","/**\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n/**\n * @namespace OCA.Trashbin\n */\nOCA.Trashbin = {}\n/**\n * @namespace OCA.Trashbin.App\n */\nOCA.Trashbin.App = {\n\t_initialized: false,\n\t/** @type {OC.Files.Client} */\n\tclient: null,\n\n\tinitialize($el) {\n\t\tif (this._initialized) {\n\t\t\treturn\n\t\t}\n\t\tthis._initialized = true\n\n\t\tthis.client = new OC.Files.Client({\n\t\t\thost: OC.getHost(),\n\t\t\tport: OC.getPort(),\n\t\t\troot: OC.linkToRemoteBase('dav') + '/trashbin/' + OC.getCurrentUser().uid,\n\t\t\tuseHTTPS: OC.getProtocol() === 'https',\n\t\t})\n\t\tconst urlParams = OC.Util.History.parseUrlQuery()\n\t\tthis.fileList = new OCA.Trashbin.FileList(\n\t\t\t$('#app-content-trashbin'), {\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tdetailsViewEnabled: false,\n\t\t\t\tscrollTo: urlParams.scrollto,\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\tmultiSelectMenu: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'restore',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\t\t\t\ticonClass: 'icon-history',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'delete',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\t\t\t\ticonClass: 'icon-delete',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tclient: this.client,\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\t},\n\n\t_createFileActions() {\n\t\tconst client = this.client\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\tcontext.fileList.changeDirectory(OC.joinPaths(dir, filename))\n\t\t})\n\n\t\tfileActions.setDefault('dir', 'Open')\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Restore',\n\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-history',\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.move(OC.joinPaths('trash', dir, filename), OC.joinPaths('restore', filename), true)\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring file from trashbin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Delete',\n\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-delete',\n\t\t\trender(actionSpec, isDefault, context) {\n\t\t\t\tconst $actionLink = fileActions._makeActionLink(actionSpec, context)\n\t\t\t\t$actionLink.attr('original-title', t('files_trashbin', 'Delete permanently'))\n\t\t\t\t$actionLink.children('img').attr('alt', t('files_trashbin', 'Delete permanently'))\n\t\t\t\tcontext.$file.find('td:last').append($actionLink)\n\t\t\t\treturn $actionLink\n\t\t\t},\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\t$('.tipsy').remove()\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.remove(OC.joinPaths('trash', dir, filename))\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing file from trashbin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\t\treturn fileActions\n\t},\n}\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-trashbin').one('show', function() {\n\t\tconst App = OCA.Trashbin.App\n\t\tApp.initialize($('#app-content-trashbin'))\n\t\t// force breadcrumb init\n\t\t// App.fileList.changeDirectory(App.fileList.getCurrentDirectory(), false, true);\n\t})\n})\n","/* eslint-disable */\n/*\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n(function() {\n\tvar DELETED_REGEXP = new RegExp(/^(.+)\\.d[0-9]+$/)\n\tvar FILENAME_PROP = '{http://nextcloud.org/ns}trashbin-filename'\n\tvar DELETION_TIME_PROP = '{http://nextcloud.org/ns}trashbin-deletion-time'\n\tvar TRASHBIN_ORIGINAL_LOCATION = '{http://nextcloud.org/ns}trashbin-original-location'\n\tvar TRASHBIN_TITLE = '{http://nextcloud.org/ns}trashbin-title'\n\n\t/**\n\t * Convert a file name in the format filename.d12345 to the real file name.\n\t * This will use basename.\n\t * The name will not be changed if it has no \".d12345\" suffix.\n\t * @param {String} name file name\n\t * @returns {String} converted file name\n\t */\n\tfunction getDeletedFileName(name) {\n\t\tname = OC.basename(name)\n\t\tvar match = DELETED_REGEXP.exec(name)\n\t\tif (match && match.length > 1) {\n\t\t\tname = match[1]\n\t\t}\n\t\treturn name\n\t}\n\n\t/**\n\t * @class OCA.Trashbin.FileList\n\t * @augments OCA.Files.FileList\n\t * @classdesc List of deleted files\n\t *\n\t * @param $el container element with existing markup for the #controls\n\t * and a table\n\t * @param [options] map of options\n\t */\n\tvar FileList = function($el, options) {\n\t\tthis.client = options.client\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend({}, OCA.Files.FileList.prototype,\n\t\t/** @lends OCA.Trashbin.FileList.prototype */ {\n\t\tid: 'trashbin',\n\t\tappName: t('files_trashbin', 'Deleted files'),\n\t\t/** @type {OC.Files.Client} */\n\t\tclient: null,\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tthis.client.addFileInfoParser(function(response, data) {\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar path = props[TRASHBIN_ORIGINAL_LOCATION]\n\t\t\t\tvar title = props[TRASHBIN_TITLE]\n\t\t\t\treturn {\n\t\t\t\t\tdisplayName: props[FILENAME_PROP],\n\t\t\t\t\tmtime: parseInt(props[DELETION_TIME_PROP], 10) * 1000,\n\t\t\t\t\thasPreview: true,\n\t\t\t\t\tpath: path,\n\t\t\t\t\textraData: title\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tvar result = OCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\tthis.$el.find('.undelete').click('click', _.bind(this._onClickRestoreSelected, this))\n\n\t\t\tthis.setSort('mtime', 'desc')\n\t\t\t/**\n\t\t\t * Override crumb making to add \"Deleted Files\" entry\n\t\t\t * and convert files with \".d\" extensions to a more\n\t\t\t * user friendly name.\n\t\t\t */\n\t\t\t\tthis.breadcrumb._makeCrumbs = function() {\n\t\t\t\t\tvar parts = OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this, [...arguments, 'icon-delete no-hover'])\n\t\t\t\t\tfor (var i = 1; i < parts.length; i++) {\n\t\t\t\t\t\tparts[i].name = getDeletedFileName(parts[i].name)\n\t\t\t\t\t}\n\t\t\t\t\treturn parts\n\t\t\t\t}\n\n\t\t\t\tOC.Plugins.attach('OCA.Trashbin.FileList', this)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\t/**\n\t\t * Override to only return read permissions\n\t\t */\n\t\t\tgetDirectoryPermissions: function() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\t_setCurrentDir: function(targetDir) {\n\t\t\t\tOCA.Files.FileList.prototype._setCurrentDir.apply(this, arguments)\n\n\t\t\t\tvar baseDir = OC.basename(targetDir)\n\t\t\t\tif (baseDir !== '') {\n\t\t\t\t\tthis.setPageTitle(getDeletedFileName(baseDir))\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_createRow: function() {\n\t\t\t// FIXME: MEGAHACK until we find a better solution\n\t\t\t\tvar tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments)\n\t\t\t\ttr.find('td.filesize').remove()\n\t\t\t\treturn tr\n\t\t\t},\n\n\t\t\tgetAjaxUrl: function(action, params) {\n\t\t\t\tvar q = ''\n\t\t\t\tif (params) {\n\t\t\t\t\tq = '?' + OC.buildQueryString(params)\n\t\t\t\t}\n\t\t\t\treturn OC.filePath('files_trashbin', 'ajax', action + '.php') + q\n\t\t\t},\n\n\t\t\tsetupUploadEvents: function() {\n\t\t\t// override and do nothing\n\t\t\t},\n\n\t\t\tlinkTo: function(dir) {\n\t\t\t\treturn OC.linkTo('files', 'index.php') + '?view=trashbin&dir=' + encodeURIComponent(dir).replace(/%2F/g, '/')\n\t\t\t},\n\n\t\t\telementToFile: function($el) {\n\t\t\t\tvar fileInfo = OCA.Files.FileList.prototype.elementToFile($el)\n\t\t\t\tif (this.getCurrentDirectory() === '/') {\n\t\t\t\t\tfileInfo.displayName = getDeletedFileName(fileInfo.name)\n\t\t\t\t}\n\t\t\t\t// no size available\n\t\t\t\tdelete fileInfo.size\n\t\t\t\treturn fileInfo\n\t\t\t},\n\n\t\t\tupdateEmptyContent: function() {\n\t\t\t\tvar exists = this.$fileList.find('tr:first').exists()\n\t\t\t\tthis.$el.find('#emptycontent').toggleClass('hidden', exists)\n\t\t\t\tthis.$el.find('#filestable th').toggleClass('hidden', !exists)\n\t\t\t},\n\n\t\t\t_removeCallback: function(files) {\n\t\t\t\tvar $el\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\t$el = this.remove(OC.basename(files[i]), { updateSummary: false })\n\t\t\t\t\tthis.fileSummary.remove({ type: $el.attr('data-type'), size: $el.attr('data-size') })\n\t\t\t\t}\n\t\t\t\tthis.fileSummary.update()\n\t\t\t\tthis.updateEmptyContent()\n\t\t\t},\n\n\t\t\t_onClickRestoreSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('restore', true)\n\t\t\t\tvar restorePromises = files.map(function(file) {\n\t\t\t\t\treturn self.client.move(OC.joinPaths('trash', self.getCurrentDirectory(), file), OC.joinPaths('restore', file), true)\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t\treturn Promise.all(restorePromises).then(\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('restore', false)\n\t\t\t\t\t},\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring files from trashbin'))\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t},\n\n\t\t\t_onClickDeleteSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar allFiles = this.$el.find('.select-all').is(':checked')\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tif (allFiles) {\n\t\t\t\t\treturn this.client.remove(OC.joinPaths('trash', this.getCurrentDirectory()))\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself.hideMask()\n\t\t\t\t\t\t\t\tself.setFiles([])\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while emptying trashbin'))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('delete', true)\n\t\t\t\t\tvar deletePromises = files.map(function(file) {\n\t\t\t\t\t\treturn self.client.remove(OC.joinPaths('trash', self.getCurrentDirectory(), file))\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t\treturn Promise.all(deletePromises).then(\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('delete', false)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing files from trashbin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onClickFile: function(event) {\n\t\t\t\tvar mime = $(this).parent().parent().data('mime')\n\t\t\t\tif (mime !== 'httpd/unix-directory') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\treturn OCA.Files.FileList.prototype._onClickFile.apply(this, arguments)\n\t\t\t},\n\n\t\t\tgeneratePreviewUrl: function(urlSpec) {\n\t\t\t\treturn OC.generateUrl('/apps/files_trashbin/preview?') + $.param(urlSpec)\n\t\t\t},\n\n\t\t\tgetDownloadUrl: function() {\n\t\t\t// no downloads\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tgetDefaultActionUrl: function() {\n\t\t\t// no default action\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tupdateStorageStatistics: function() {\n\t\t\t// no op because the trashbin doesn't have\n\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\tisSelectedDeletable: function() {\n\t\t\t\treturn true\n\t\t\t},\n\n\t\t\t/**\n\t\t * Returns list of webdav properties to request\n\t\t */\n\t\t\t_getWebdavProperties: function() {\n\t\t\t\treturn [FILENAME_PROP, DELETION_TIME_PROP, TRASHBIN_ORIGINAL_LOCATION, TRASHBIN_TITLE].concat(this.filesClient.getPropfindProperties())\n\t\t\t},\n\n\t\t\t/**\n\t\t * Reloads the file list using ajax call\n\t\t *\n\t\t * @returns ajax call object\n\t\t */\n\t\t\treload: function() {\n\t\t\t\tthis._selectedFiles = {}\n\t\t\t\tthis._selectionSummary.clear()\n\t\t\t\tthis.$el.find('.select-all').prop('checked', false)\n\t\t\t\tthis.showMask()\n\t\t\t\tif (this._reloadCall) {\n\t\t\t\t\tthis._reloadCall.abort()\n\t\t\t\t}\n\t\t\t\tthis._reloadCall = this.client.getFolderContents(\n\t\t\t\t\t'trash/' + this.getCurrentDirectory(), {\n\t\t\t\t\t\tincludeParent: false,\n\t\t\t\t\t\tproperties: this._getWebdavProperties()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tvar callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\t\t\treloadCallback: function(status, result) {\n\t\t\t\tdelete this._reloadCall\n\t\t\t\tthis.hideMask()\n\n\t\t\t\tif (status === 401) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Firewall Blocked request?\n\t\t\t\tif (status === 403) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This operation is forbidden'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Did share service die or something else fail?\n\t\t\t\tif (status === 500) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This directory is unavailable, please check the logs or contact the administrator'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tif (status === 404) {\n\t\t\t\t// go back home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// aborted ?\n\t\t\t\tif (status === 0) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.setFiles(result)\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t})\n\n\tOCA.Trashbin.FileList = FileList\n})()\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./trash.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"e1044e6c\", content, true, {});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name,#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext,#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin #filestable .summary .filesize{display:none}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./apps/files_trashbin/src/files_trashbin.js","webpack:///./apps/files_trashbin/src/app.js","webpack:///./apps/files_trashbin/src/filelist.js","webpack:///./apps/files_trashbin/src/trash.scss?7371","webpack:///./apps/files_trashbin/src/trash.scss","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","OCA","Trashbin","App","_initialized","client","initialize","$el","this","OC","Files","Client","host","getHost","port","getPort","root","linkToRemoteBase","getCurrentUser","uid","useHTTPS","getProtocol","urlParams","Util","History","parseUrlQuery","fileList","FileList","$","fileActions","_createFileActions","detailsViewEnabled","scrollTo","scrollto","config","getFilesConfig","multiSelectMenu","displayName","iconClass","shown","FileActions","register","PERMISSION_READ","filename","context","dir","getCurrentDirectory","changeDirectory","joinPaths","setDefault","registerAction","type","TYPE_INLINE","mime","permissions","actionHandler","tr","findFileEl","showFileBusyState","move","then","_removeCallback","Notification","show","render","actionSpec","isDefault","$actionLink","_makeActionLink","attr","children","$file","find","append","remove","addEventListener","one","DELETED_REGEXP","RegExp","FILENAME_PROP","DELETION_TIME_PROP","TRASHBIN_ORIGINAL_LOCATION","TRASHBIN_TITLE","getDeletedFileName","basename","match","exec","length","options","_","extend","id","appName","addFileInfoParser","response","data","props","propStat","properties","path","title","mtime","parseInt","hasPreview","extraData","result","apply","arguments","click","_onClickRestoreSelected","setSort","breadcrumb","_makeCrumbs","parts","BreadCrumb","Plugins","attach","getDirectoryPermissions","PERMISSION_DELETE","_setCurrentDir","targetDir","baseDir","setPageTitle","_createRow","getAjaxUrl","action","params","q","buildQueryString","filePath","setupUploadEvents","linkTo","encodeURIComponent","replace","elementToFile","fileInfo","size","updateEmptyContent","exists","$fileList","toggleClass","files","updateSummary","fileSummary","update","event","preventDefault","self","pluck","getSelectedFiles","fileMultiSelectMenu","toggleLoading","restorePromises","map","file","Promise","all","_onClickDeleteSelected","allFiles","is","hideMask","setFiles","deletePromises","_onClickFile","parent","generatePreviewUrl","urlSpec","generateUrl","param","getDownloadUrl","getDefaultActionUrl","updateStorageStatistics","isSelectedDeletable","_getWebdavProperties","concat","filesClient","getPropfindProperties","reload","_selectedFiles","_selectionSummary","clear","prop","showMask","_reloadCall","abort","getFolderContents","includeParent","callBack","reloadCallback","status","content","locals","add","default","___CSS_LOADER_API_IMPORT___","push","useSourceMap","list","toString","item","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","JSON","stringify","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","_i","listToStyles","parentId","styles","newStyles","part","css","media","hasDocument","document","DEBUG","Error","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","isOldIE","navigator","test","userAgent","toLowerCase","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleElement","createElement","appendChild","obj","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","index","replacement","filter","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","ssrId","firstChild"],"mappings":"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","file":"files_trashbin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import './app'\nimport './filelist'\nimport './trash.scss'\n\nwindow.OCA.Trashbin = OCA.Trashbin\n","/**\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n/**\n * @namespace OCA.Trashbin\n */\nOCA.Trashbin = {}\n/**\n * @namespace OCA.Trashbin.App\n */\nOCA.Trashbin.App = {\n\t_initialized: false,\n\t/** @type {OC.Files.Client} */\n\tclient: null,\n\n\tinitialize($el) {\n\t\tif (this._initialized) {\n\t\t\treturn\n\t\t}\n\t\tthis._initialized = true\n\n\t\tthis.client = new OC.Files.Client({\n\t\t\thost: OC.getHost(),\n\t\t\tport: OC.getPort(),\n\t\t\troot: OC.linkToRemoteBase('dav') + '/trashbin/' + OC.getCurrentUser().uid,\n\t\t\tuseHTTPS: OC.getProtocol() === 'https',\n\t\t})\n\t\tconst urlParams = OC.Util.History.parseUrlQuery()\n\t\tthis.fileList = new OCA.Trashbin.FileList(\n\t\t\t$('#app-content-trashbin'), {\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tdetailsViewEnabled: false,\n\t\t\t\tscrollTo: urlParams.scrollto,\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\tmultiSelectMenu: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'restore',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\t\t\t\ticonClass: 'icon-history',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'delete',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\t\t\t\ticonClass: 'icon-delete',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tclient: this.client,\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\t},\n\n\t_createFileActions() {\n\t\tconst client = this.client\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\tcontext.fileList.changeDirectory(OC.joinPaths(dir, filename))\n\t\t})\n\n\t\tfileActions.setDefault('dir', 'Open')\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Restore',\n\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-history',\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.move(OC.joinPaths('trash', dir, filename), OC.joinPaths('restore', filename), true)\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring file from trashbin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Delete',\n\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-delete',\n\t\t\trender(actionSpec, isDefault, context) {\n\t\t\t\tconst $actionLink = fileActions._makeActionLink(actionSpec, context)\n\t\t\t\t$actionLink.attr('original-title', t('files_trashbin', 'Delete permanently'))\n\t\t\t\t$actionLink.children('img').attr('alt', t('files_trashbin', 'Delete permanently'))\n\t\t\t\tcontext.$file.find('td:last').append($actionLink)\n\t\t\t\treturn $actionLink\n\t\t\t},\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\t$('.tipsy').remove()\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.remove(OC.joinPaths('trash', dir, filename))\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing file from trashbin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\t\treturn fileActions\n\t},\n}\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-trashbin').one('show', function() {\n\t\tconst App = OCA.Trashbin.App\n\t\tApp.initialize($('#app-content-trashbin'))\n\t\t// force breadcrumb init\n\t\t// App.fileList.changeDirectory(App.fileList.getCurrentDirectory(), false, true);\n\t})\n})\n","/* eslint-disable */\n/*\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n(function() {\n\tvar DELETED_REGEXP = new RegExp(/^(.+)\\.d[0-9]+$/)\n\tvar FILENAME_PROP = '{http://nextcloud.org/ns}trashbin-filename'\n\tvar DELETION_TIME_PROP = '{http://nextcloud.org/ns}trashbin-deletion-time'\n\tvar TRASHBIN_ORIGINAL_LOCATION = '{http://nextcloud.org/ns}trashbin-original-location'\n\tvar TRASHBIN_TITLE = '{http://nextcloud.org/ns}trashbin-title'\n\n\t/**\n\t * Convert a file name in the format filename.d12345 to the real file name.\n\t * This will use basename.\n\t * The name will not be changed if it has no \".d12345\" suffix.\n\t * @param {String} name file name\n\t * @returns {String} converted file name\n\t */\n\tfunction getDeletedFileName(name) {\n\t\tname = OC.basename(name)\n\t\tvar match = DELETED_REGEXP.exec(name)\n\t\tif (match && match.length > 1) {\n\t\t\tname = match[1]\n\t\t}\n\t\treturn name\n\t}\n\n\t/**\n\t * @class OCA.Trashbin.FileList\n\t * @augments OCA.Files.FileList\n\t * @classdesc List of deleted files\n\t *\n\t * @param $el container element with existing markup for the #controls\n\t * and a table\n\t * @param [options] map of options\n\t */\n\tvar FileList = function($el, options) {\n\t\tthis.client = options.client\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend({}, OCA.Files.FileList.prototype,\n\t\t/** @lends OCA.Trashbin.FileList.prototype */ {\n\t\tid: 'trashbin',\n\t\tappName: t('files_trashbin', 'Deleted files'),\n\t\t/** @type {OC.Files.Client} */\n\t\tclient: null,\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tthis.client.addFileInfoParser(function(response, data) {\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar path = props[TRASHBIN_ORIGINAL_LOCATION]\n\t\t\t\tvar title = props[TRASHBIN_TITLE]\n\t\t\t\treturn {\n\t\t\t\t\tdisplayName: props[FILENAME_PROP],\n\t\t\t\t\tmtime: parseInt(props[DELETION_TIME_PROP], 10) * 1000,\n\t\t\t\t\thasPreview: true,\n\t\t\t\t\tpath: path,\n\t\t\t\t\textraData: title\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tvar result = OCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\tthis.$el.find('.undelete').click('click', _.bind(this._onClickRestoreSelected, this))\n\n\t\t\t// Sort by most recently deleted first\n\t\t\tthis.setSort('mtime', 'asc')\n\n\t\t\t/**\n\t\t\t * Override crumb making to add \"Deleted Files\" entry\n\t\t\t * and convert files with \".d\" extensions to a more\n\t\t\t * user friendly name.\n\t\t\t */\n\t\t\t\tthis.breadcrumb._makeCrumbs = function() {\n\t\t\t\t\tvar parts = OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this, [...arguments, 'icon-delete no-hover'])\n\t\t\t\t\tfor (var i = 1; i < parts.length; i++) {\n\t\t\t\t\t\tparts[i].name = getDeletedFileName(parts[i].name)\n\t\t\t\t\t}\n\t\t\t\t\treturn parts\n\t\t\t\t}\n\n\t\t\t\tOC.Plugins.attach('OCA.Trashbin.FileList', this)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\t/**\n\t\t * Override to only return read permissions\n\t\t */\n\t\t\tgetDirectoryPermissions: function() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\t_setCurrentDir: function(targetDir) {\n\t\t\t\tOCA.Files.FileList.prototype._setCurrentDir.apply(this, arguments)\n\n\t\t\t\tvar baseDir = OC.basename(targetDir)\n\t\t\t\tif (baseDir !== '') {\n\t\t\t\t\tthis.setPageTitle(getDeletedFileName(baseDir))\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_createRow: function() {\n\t\t\t// FIXME: MEGAHACK until we find a better solution\n\t\t\t\tvar tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments)\n\t\t\t\ttr.find('td.filesize').remove()\n\t\t\t\treturn tr\n\t\t\t},\n\n\t\t\tgetAjaxUrl: function(action, params) {\n\t\t\t\tvar q = ''\n\t\t\t\tif (params) {\n\t\t\t\t\tq = '?' + OC.buildQueryString(params)\n\t\t\t\t}\n\t\t\t\treturn OC.filePath('files_trashbin', 'ajax', action + '.php') + q\n\t\t\t},\n\n\t\t\tsetupUploadEvents: function() {\n\t\t\t// override and do nothing\n\t\t\t},\n\n\t\t\tlinkTo: function(dir) {\n\t\t\t\treturn OC.linkTo('files', 'index.php') + '?view=trashbin&dir=' + encodeURIComponent(dir).replace(/%2F/g, '/')\n\t\t\t},\n\n\t\t\telementToFile: function($el) {\n\t\t\t\tvar fileInfo = OCA.Files.FileList.prototype.elementToFile($el)\n\t\t\t\tif (this.getCurrentDirectory() === '/') {\n\t\t\t\t\tfileInfo.displayName = getDeletedFileName(fileInfo.name)\n\t\t\t\t}\n\t\t\t\t// no size available\n\t\t\t\tdelete fileInfo.size\n\t\t\t\treturn fileInfo\n\t\t\t},\n\n\t\t\tupdateEmptyContent: function() {\n\t\t\t\tvar exists = this.$fileList.find('tr:first').exists()\n\t\t\t\tthis.$el.find('#emptycontent').toggleClass('hidden', exists)\n\t\t\t\tthis.$el.find('#filestable th').toggleClass('hidden', !exists)\n\t\t\t},\n\n\t\t\t_removeCallback: function(files) {\n\t\t\t\tvar $el\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\t$el = this.remove(OC.basename(files[i]), { updateSummary: false })\n\t\t\t\t\tthis.fileSummary.remove({ type: $el.attr('data-type'), size: $el.attr('data-size') })\n\t\t\t\t}\n\t\t\t\tthis.fileSummary.update()\n\t\t\t\tthis.updateEmptyContent()\n\t\t\t},\n\n\t\t\t_onClickRestoreSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('restore', true)\n\t\t\t\tvar restorePromises = files.map(function(file) {\n\t\t\t\t\treturn self.client.move(OC.joinPaths('trash', self.getCurrentDirectory(), file), OC.joinPaths('restore', file), true)\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t\treturn Promise.all(restorePromises).then(\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('restore', false)\n\t\t\t\t\t},\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring files from trashbin'))\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t},\n\n\t\t\t_onClickDeleteSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar allFiles = this.$el.find('.select-all').is(':checked')\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tif (allFiles) {\n\t\t\t\t\treturn this.client.remove(OC.joinPaths('trash', this.getCurrentDirectory()))\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself.hideMask()\n\t\t\t\t\t\t\t\tself.setFiles([])\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while emptying trashbin'))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('delete', true)\n\t\t\t\t\tvar deletePromises = files.map(function(file) {\n\t\t\t\t\t\treturn self.client.remove(OC.joinPaths('trash', self.getCurrentDirectory(), file))\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t\treturn Promise.all(deletePromises).then(\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('delete', false)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing files from trashbin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onClickFile: function(event) {\n\t\t\t\tvar mime = $(this).parent().parent().data('mime')\n\t\t\t\tif (mime !== 'httpd/unix-directory') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\treturn OCA.Files.FileList.prototype._onClickFile.apply(this, arguments)\n\t\t\t},\n\n\t\t\tgeneratePreviewUrl: function(urlSpec) {\n\t\t\t\treturn OC.generateUrl('/apps/files_trashbin/preview?') + $.param(urlSpec)\n\t\t\t},\n\n\t\t\tgetDownloadUrl: function() {\n\t\t\t// no downloads\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tgetDefaultActionUrl: function() {\n\t\t\t// no default action\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tupdateStorageStatistics: function() {\n\t\t\t// no op because the trashbin doesn't have\n\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\tisSelectedDeletable: function() {\n\t\t\t\treturn true\n\t\t\t},\n\n\t\t\t/**\n\t\t * Returns list of webdav properties to request\n\t\t */\n\t\t\t_getWebdavProperties: function() {\n\t\t\t\treturn [FILENAME_PROP, DELETION_TIME_PROP, TRASHBIN_ORIGINAL_LOCATION, TRASHBIN_TITLE].concat(this.filesClient.getPropfindProperties())\n\t\t\t},\n\n\t\t\t/**\n\t\t * Reloads the file list using ajax call\n\t\t *\n\t\t * @returns ajax call object\n\t\t */\n\t\t\treload: function() {\n\t\t\t\tthis._selectedFiles = {}\n\t\t\t\tthis._selectionSummary.clear()\n\t\t\t\tthis.$el.find('.select-all').prop('checked', false)\n\t\t\t\tthis.showMask()\n\t\t\t\tif (this._reloadCall) {\n\t\t\t\t\tthis._reloadCall.abort()\n\t\t\t\t}\n\t\t\t\tthis._reloadCall = this.client.getFolderContents(\n\t\t\t\t\t'trash/' + this.getCurrentDirectory(), {\n\t\t\t\t\t\tincludeParent: false,\n\t\t\t\t\t\tproperties: this._getWebdavProperties()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tvar callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\t\t\treloadCallback: function(status, result) {\n\t\t\t\tdelete this._reloadCall\n\t\t\t\tthis.hideMask()\n\n\t\t\t\tif (status === 401) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Firewall Blocked request?\n\t\t\t\tif (status === 403) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This operation is forbidden'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Did share service die or something else fail?\n\t\t\t\tif (status === 500) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This directory is unavailable, please check the logs or contact the administrator'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tif (status === 404) {\n\t\t\t\t// go back home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// aborted ?\n\t\t\t\tif (status === 0) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.setFiles(result)\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t})\n\n\tOCA.Trashbin.FileList = FileList\n})()\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./trash.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"e1044e6c\", content, true, {});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name,#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext,#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin #filestable .summary .filesize{display:none}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n"],"sourceRoot":""} \ No newline at end of file
diff --git a/apps/files_trashbin/src/filelist.js b/apps/files_trashbin/src/filelist.js
index 8912789e752..4e7f0817802 100644
--- a/apps/files_trashbin/src/filelist.js
+++ b/apps/files_trashbin/src/filelist.js
@@ -71,7 +71,9 @@
var result = OCA.Files.FileList.prototype.initialize.apply(this, arguments)
this.$el.find('.undelete').click('click', _.bind(this._onClickRestoreSelected, this))
- this.setSort('mtime', 'desc')
+ // Sort by most recently deleted first
+ this.setSort('mtime', 'asc')
+
/**
* Override crumb making to add "Deleted Files" entry
* and convert files with ".d" extensions to a more
diff --git a/apps/files_trashbin/tests/js/filelistSpec.js b/apps/files_trashbin/tests/js/filelistSpec.js
index a56ee987b78..11ba49c487e 100644
--- a/apps/files_trashbin/tests/js/filelistSpec.js
+++ b/apps/files_trashbin/tests/js/filelistSpec.js
@@ -129,7 +129,7 @@ describe('OCA.Trashbin.FileList tests', function () {
describe('Initialization', function () {
it('Sorts by mtime by default', function () {
expect(fileList._sort).toEqual('mtime');
- expect(fileList._sortDirection).toEqual('desc');
+ expect(fileList._sortDirection).toEqual('asc');
});
it('Always returns read and delete permission', function () {
expect(fileList.getDirectoryPermissions()).toEqual(OC.PERMISSION_READ | OC.PERMISSION_DELETE);