allow to delete single files from the trash bin permanently
This commit is contained in:
parent
9e08f85c5e
commit
e2516a2b65
|
@ -115,6 +115,8 @@ var FileActions = {
|
|||
// NOTE: Temporary fix to allow unsharing of files in root of Shared folder
|
||||
if ($('#dir').val() == '/Shared') {
|
||||
var html = '<a href="#" original-title="' + t('files', 'Unshare') + '" class="action delete" />';
|
||||
} else if (typeof trashBinApp !== 'undefined' && trashBinApp) {
|
||||
var html = '<a href="#" original-title="' + t('files', 'Delete permanently') + '" class="action delete" />';
|
||||
} else {
|
||||
var html = '<a href="#" original-title="' + t('files', 'Delete') + '" class="action delete" />';
|
||||
}
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
|
||||
OCP\JSON::checkLoggedIn();
|
||||
OCP\JSON::callCheck();
|
||||
|
||||
$file = $_REQUEST['file'];
|
||||
|
||||
$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;
|
||||
}
|
||||
sleep(5);
|
||||
if (OCA_Trash\Trashbin::delete($filename, $timestamp)) {
|
||||
error_log("feinifeini");
|
||||
OCP\JSON::success(array("data" => array("filename" => $file)));
|
||||
} else {
|
||||
OCP\JSON::error(array("data" => array("message" => "Couldn't delete ".$file. " permanently")));
|
||||
}
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
/* disable download and sharing actions */
|
||||
var disableDownloadActions = true;
|
||||
var disableSharing = true;
|
||||
var trashBinApp = true;
|
|
@ -22,6 +22,31 @@ $(document).ready(function() {
|
|||
});
|
||||
};
|
||||
|
||||
FileActions.register('all', 'Delete', OC.PERMISSION_READ, function () {
|
||||
return OC.imagePath('core', 'actions/delete');
|
||||
}, function (filename) {
|
||||
$('.tipsy').remove();
|
||||
|
||||
var tr=$('tr').filterAttr('data-file', filename);
|
||||
var deleteAction = $('tr').filterAttr('data-file',filename).children("td.date").children(".action.delete");
|
||||
var oldHTML = deleteAction[0].outerHTML;
|
||||
var newHTML = '<img class="move2trash" data-action="Delete" title="'+t('files', 'delete file permanently')+'" src="'+ OC.imagePath('core', 'loading.gif') +'"></a>';
|
||||
deleteAction[0].outerHTML = newHTML;
|
||||
|
||||
$.post(OC.filePath('files_trashbin','ajax','delete.php'),
|
||||
{file:tr.attr('data-file') },
|
||||
function(result){
|
||||
if ( result.status == 'success' ) {
|
||||
var row = document.getElementById(result.data.filename);
|
||||
row.parentNode.removeChild(row);
|
||||
} else {
|
||||
deleteAction[0].outerHTML = oldHTML;
|
||||
OC.dialogs.alert(result.data.message, 'Error');
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// Sets the select_all checkbox behaviour :
|
||||
$('#select_all').click(function() {
|
||||
if($(this).attr('checked')){
|
||||
|
|
|
@ -150,6 +150,45 @@ class Trashbin {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* delete file from trash bin permanently
|
||||
* @param $filename path to the file
|
||||
* @param $timestamp of deletion time
|
||||
* @return true/false
|
||||
*/
|
||||
public static function delete($filename, $timestamp=null) {
|
||||
|
||||
$user = \OCP\User::getUser();
|
||||
$view = new \OC_FilesystemView('/'.$user);
|
||||
|
||||
if ( $timestamp ) {
|
||||
$query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?');
|
||||
$query->execute(array($user,$filename,$timestamp))->fetchAll();
|
||||
$file = $filename.'.d'.$timestamp;
|
||||
} else {
|
||||
$file = $filename;
|
||||
}
|
||||
|
||||
if ( \OCP\App::isEnabled('files_versions') ) {
|
||||
if ($view->is_dir('versions_trashbin/'.$file)) {
|
||||
$view->unlink('versions_trashbin/'.$file);
|
||||
} else if ( $versions = self::getVersionsFromTrash($file, $timestamp) ) {
|
||||
foreach ($versions as $v) {
|
||||
if ($timestamp ) {
|
||||
$view->unlink('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp);
|
||||
} else {
|
||||
$view->unlink('versions_trashbin/'.$file.'.v'.$v);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$view->unlink('/files_trashbin/'.$file);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* clean up the trash bin
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue