From 51cef9d8f06586a4e7d4353cb5d7cc3fcddcf97a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 19 Feb 2013 10:24:21 +0100 Subject: [PATCH] allow user to delete selected files from the trash bin permanently --- apps/files_trashbin/ajax/delete.php | 52 ++++++++++++++++++------- apps/files_trashbin/js/trash.js | 30 ++++++++++++-- apps/files_trashbin/templates/index.php | 7 ++++ 3 files changed, 72 insertions(+), 17 deletions(-) diff --git a/apps/files_trashbin/ajax/delete.php b/apps/files_trashbin/ajax/delete.php index 7a6bd1342ea..d922fafeb26 100644 --- a/apps/files_trashbin/ajax/delete.php +++ b/apps/files_trashbin/ajax/delete.php @@ -3,22 +3,46 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); -$file = $_REQUEST['file']; +$files = $_REQUEST['files']; +$dirlisting = $_REQUEST['dirlisting']; +$list = explode(';', $files); -$path_parts = pathinfo($file); -if ($path_parts['dirname'] == '.') { - $delimiter = strrpos($file, '.d'); - $filename = substr($file, 0, $delimiter); - $timestamp = substr($file, $delimiter+2); -} else { - $filename = $file; - $timestamp = null; +if (!is_array($list)){ + $list = array($list); } -if (OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp)) { - OCP\JSON::success(array("data" => array("filename" => $file))); -} else { - $l = OC_L10N::get('files_trashbin'); - OCP\JSON::error(array("data" => array("message" => $l->t("Couldn't delete %s permanently", array($file))))); +$error = array(); +$success = array(); + +$i = 0; +foreach ($list as $file) { + if ( $dirlisting=='0') { + $delimiter = strrpos($file, '.d'); + $filename = substr($file, 0, $delimiter); + $timestamp = substr($file, $delimiter+2); + } else { + $filename = $file; + $timestamp = null; + } + + if(OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp)) { + $success[$i]['filename'] = $file; + $success[$i]['timestamp'] = $timestamp; + $i++; + } else { + $error[] = $filename; + } } +if ( $error ) { + $filelist = ''; + foreach ( $error as $e ) { + $filelist .= $e.', '; + } + $l = OC_L10N::get('files_trashbin'); + $message = $l->t("Couldn't restore %s", array(rtrim($filelist, ', '))); + OCP\JSON::error(array("data" => array("message" => $message, + "success" => $success, "error" => $error))); +} else { + OCP\JSON::success(array("data" => array("success" => $success))); +} diff --git a/apps/files_trashbin/js/trash.js b/apps/files_trashbin/js/trash.js index 6c810e4c2bd..1f4be9f15ee 100644 --- a/apps/files_trashbin/js/trash.js +++ b/apps/files_trashbin/js/trash.js @@ -34,7 +34,7 @@ $(document).ready(function() { deleteAction[0].outerHTML = newHTML; $.post(OC.filePath('files_trashbin','ajax','delete.php'), - {file:tr.attr('data-file') }, + {files:tr.attr('data-file') }, function(result){ if ( result.status == 'success' ) { var row = document.getElementById(result.data.filename); @@ -88,7 +88,7 @@ $(document).ready(function() { } } processSelection(); - }); + }); $('.undelete').click('click',function(event) { var spinner = ''; @@ -113,7 +113,31 @@ $(document).ready(function() { } }); }); - + + $('.delete').click('click',function(event) { + console.log("delete selected"); + var spinner = ''; + var files=getSelectedFiles('file'); + var fileslist=files.join(';'); + var dirlisting=getSelectedFiles('dirlisting')[0]; + + for (var i in files) { + var deleteAction = $('tr').filterAttr('data-file',files[i]).children("td.date"); + deleteAction[0].innerHTML = deleteAction[0].innerHTML+spinner; + } + + $.post(OC.filePath('files_trashbin','ajax','delete.php'), + {files:fileslist, dirlisting:dirlisting}, + function(result){ + for (var i = 0; i < result.data.success.length; i++) { + var row = document.getElementById(result.data.success[i].filename); + row.parentNode.removeChild(row); + } + if (result.status != 'success') { + OC.dialogs.alert(result.data.message, 'Error'); + } + }); + }); }); diff --git a/apps/files_trashbin/templates/index.php b/apps/files_trashbin/templates/index.php index c3e51b4becd..c948c94d552 100644 --- a/apps/files_trashbin/templates/index.php +++ b/apps/files_trashbin/templates/index.php @@ -25,6 +25,13 @@ t( 'Deleted' ); ?> + + + t('Delete')?> + <?php echo $l->t('Delete')?>" /> + + -- 2.39.5