diff options
Diffstat (limited to 'apps/files_trashbin/js/filelist.js')
-rw-r--r-- | apps/files_trashbin/js/filelist.js | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/apps/files_trashbin/js/filelist.js b/apps/files_trashbin/js/filelist.js index 7795daf2775..6c9b345086a 100644 --- a/apps/files_trashbin/js/filelist.js +++ b/apps/files_trashbin/js/filelist.js @@ -75,4 +75,130 @@ $('#emptycontent').toggleClass('hidden', exists); $('#filestable th').toggleClass('hidden', !exists); }; + + var oldInit = FileList.initialize; + FileList.initialize = function() { + var result = oldInit.apply(this, arguments); + $('.undelete').click('click', FileList._onClickRestoreSelected); + return result; + }; + + FileList._removeCallback = function(result) { + if (result.status !== 'success') { + OC.dialogs.alert(result.data.message, t('files_trashbin', 'Error')); + } + + var files = result.data.success; + var $el; + for (var i = 0; i < files.length; i++) { + $el = FileList.remove(OC.basename(files[i].filename), {updateSummary: false}); + FileList.fileSummary.remove({type: $el.attr('data-type'), size: $el.attr('data-size')}); + } + FileList.fileSummary.update(); + FileList.updateEmptyContent(); + enableActions(); + } + + FileList._onClickRestoreSelected = function(event) { + event.preventDefault(); + var allFiles = $('#select_all').is(':checked'); + var files = []; + var params = {}; + disableActions(); + if (allFiles) { + FileList.showMask(); + params = { + allfiles: true, + dir: FileList.getCurrentDirectory() + }; + } + else { + files = FileList.getSelectedFiles('name'); + for (var i = 0; i < files.length; i++) { + var deleteAction = FileList.findFileEl(files[i]).children("td.date").children(".action.delete"); + deleteAction.removeClass('delete-icon').addClass('progress-icon'); + } + params = { + files: JSON.stringify(files), + dir: FileList.getCurrentDirectory() + }; + } + + $.post(OC.filePath('files_trashbin', 'ajax', 'undelete.php'), + params, + function(result) { + if (allFiles) { + if (result.status !== 'success') { + OC.dialogs.alert(result.data.message, t('files_trashbin', 'Error')); + } + FileList.hideMask(); + // simply remove all files + FileList.update(''); + enableActions(); + } + else { + FileList._removeCallback(result); + } + } + ); + }; + + FileList._onClickDeleteSelected = function(event) { + event.preventDefault(); + var allFiles = $('#select_all').is(':checked'); + var files = []; + var params = {}; + if (allFiles) { + params = { + allfiles: true, + dir: FileList.getCurrentDirectory() + }; + } + else { + files = FileList.getSelectedFiles('name'); + params = { + files: JSON.stringify(files), + dir: FileList.getCurrentDirectory() + }; + } + + disableActions(); + if (allFiles) { + FileList.showMask(); + } + else { + for (var i = 0; i < files.length; i++) { + var deleteAction = FileList.findFileEl(files[i]).children("td.date").children(".action.delete"); + deleteAction.removeClass('delete-icon').addClass('progress-icon'); + } + } + + $.post(OC.filePath('files_trashbin', 'ajax', 'delete.php'), + params, + function(result) { + if (allFiles) { + if (result.status !== 'success') { + OC.dialogs.alert(result.data.message, t('files_trashbin', 'Error')); + } + FileList.hideMask(); + // simply remove all files + FileList.setFiles([]); + enableActions(); + } + else { + FileList._removeCallback(result); + } + } + ); + }; + + var oldClickFile = FileList._onClickFile; + FileList._onClickFile = function(event) { + var mime = $(this).parent().parent().data('mime'); + if (mime !== 'httpd/unix-directory') { + event.preventDefault(); + } + return oldClickFile.apply(this, arguments); + }; + })(); |