]> source.dussan.org Git - nextcloud-server.git/commitdiff
allow user to delete selected files from the trash bin permanently
authorBjörn Schießle <schiessle@owncloud.com>
Tue, 19 Feb 2013 09:24:21 +0000 (10:24 +0100)
committerBjörn Schießle <schiessle@owncloud.com>
Tue, 19 Feb 2013 09:24:21 +0000 (10:24 +0100)
apps/files_trashbin/ajax/delete.php
apps/files_trashbin/js/trash.js
apps/files_trashbin/templates/index.php

index 7a6bd1342ea278ea53d29f66d17ef4f31cd42ecf..d922fafeb261facfbcb36b1cfebe5f23f00b735e 100644 (file)
@@ -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)));
+}
index 6c810e4c2bd017ac92e8ad1b2e62f1c3ebd2c31b..1f4be9f15eea626e84d5d33e90e3f8ba90e42d66 100644 (file)
@@ -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 = '<img class="move2trash" title="'+t('files_trashbin', 'perform restore operation')+'" src="'+ OC.imagePath('core', 'loader.gif') +'"></a>';
@@ -113,7 +113,31 @@ $(document).ready(function() {
                                                }
                                        });             
                        });
-       
+               
+               $('.delete').click('click',function(event) {
+                       console.log("delete selected");
+                       var spinner = '<img class="move2trash" title="'+t('files_trashbin', 'Delete permanently')+'" src="'+ OC.imagePath('core', 'loading.gif') +'"></a>';
+                       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');
+                                               }
+                                       });
+                       });
 
 });
 
index c3e51b4becdfe4d5aad5e30a61c508453416000f..c948c94d5522e11f941f65fcd6f6bc0b4a18bf3f 100644 (file)
                        </th>
                        <th id="headerDate">
                                <span id="modified"><?php echo $l->t( 'Deleted' ); ?></span>
+                               <span class="selectedActions">
+                                       <a href="" class="delete">
+                                               <?php echo $l->t('Delete')?>
+                                               <img class="svg" alt="<?php echo $l->t('Delete')?>"
+                                                       src="<?php echo OCP\image_path("core", "actions/delete.svg"); ?>" />
+                                       </a>
+                               </span>
                        </th>
                </tr>
        </thead>