From 2ba945313f68deb9f2ab0c557fdbbd8ddbd3373c Mon Sep 17 00:00:00 2001 From: metal_gvc Date: Fri, 24 Jan 2014 22:56:13 +0200 Subject: [PATCH] Files Manager Improvements - Ability to rename Files & Directories #94 --- .../box/filesmanager/filesmanager.admin.php | 42 +++++++++++++++++++ plugins/box/filesmanager/js/filesmanager.js | 36 ++++++++++++++++ .../filesmanager/views/backend/index.view.php | 42 ++++++++++++++++++- 3 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 plugins/box/filesmanager/js/filesmanager.js diff --git a/plugins/box/filesmanager/filesmanager.admin.php b/plugins/box/filesmanager/filesmanager.admin.php index cb895a7..b64203e 100755 --- a/plugins/box/filesmanager/filesmanager.admin.php +++ b/plugins/box/filesmanager/filesmanager.admin.php @@ -3,6 +3,7 @@ // Add Plugin Javascript Stylesheet::add('plugins/box/filesmanager/css/style.css', 'backend', 11); Javascript::add('plugins/box/filesmanager/js/fileuploader.js', 'backend', 11); +Javascript::add('plugins/box/filesmanager/js/filesmanager.js', 'backend', 11); // Add plugin navigation link Navigation::add(__('Files', 'filesmanager'), 'content', 'filesmanager', 3); @@ -97,6 +98,47 @@ class FilesmanagerAdmin extends Backend } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } + + // Rename file/dir + // ------------------------------------- + if (Request::post('rename_type')) { + + if (Security::check(Request::post('csrf'))) { + + $rename_type = Request::post('rename_type'); + $rename_from = Request::post('rename_from'); + $rename_to = Request::post('rename_to'); + + if (empty($rename_to)) { + Notification::set('error', __('Can not be empty', 'system')); + Request::redirect($site_url.'/admin/index.php?id=filesmanager&path='.$path); + } + + $ext = ($rename_type === 'file') ? '.'. File::ext($rename_from) : ''; + $rename_to = $files_path . Security::safeName($rename_to).$ext; + + if (is_dir($rename_to)) { + Notification::set('error', __('Directory exists', 'system')); + Request::redirect($site_url.'/admin/index.php?id=filesmanager&path='.$path); + } + + if (is_file($rename_to)) { + Notification::set('error', __('File exists', 'system')); + Request::redirect($site_url.'/admin/index.php?id=filesmanager&path='.$path); + } + + $success = rename($files_path.$rename_from, $rename_to); + + if ($success) { + Notification::set('success', __('Renamed successfully', 'system')); + } else { + Notification::set('error', __('Failure', 'system')); + } + Request::redirect($site_url.'/admin/index.php?id=filesmanager&path='.$path); + + } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } + } + // Upload file // ------------------------------------- if (Request::post('upload_file')) { diff --git a/plugins/box/filesmanager/js/filesmanager.js b/plugins/box/filesmanager/js/filesmanager.js new file mode 100644 index 0000000..e518a13 --- /dev/null +++ b/plugins/box/filesmanager/js/filesmanager.js @@ -0,0 +1,36 @@ +if (typeof $.monstra == 'undefined') $.monstra = {}; + +$.monstra.filesmanager = { + + init: function(){ + $('#filesDirsList').on('click', '.js-rename-dir', function(e){ + $.monstra.filesmanager.showRenameDialog( + 'dir', + $(e.currentTarget).attr('data-dirname'), + $(e.currentTarget).attr('data-path') + ); + }); + $('#filesDirsList').on('click', '.js-rename-file', function(e){ + $.monstra.filesmanager.showRenameDialog( + 'file', + $(e.currentTarget).attr('data-filename'), + $(e.currentTarget).attr('data-path') + ); + }); + }, + + showRenameDialog: function(type, renameFrom, path){ + var dialog = $('#renameDialog'); + dialog.find('input[name="rename_type"]').val(type); + dialog.find('input[name="rename_from"]').val(renameFrom); + dialog.find('input[name="path"]').val(path); + dialog.find('#renameToHolder').text(renameFrom); + dialog.find('[id$="RenameType"]').hide(); + dialog.find('#'+ type +'RenameType').show(); + dialog.modal('show'); + } +}; + +$(document).ready(function(){ + $.monstra.filesmanager.init(); +}); \ No newline at end of file diff --git a/plugins/box/filesmanager/views/backend/index.view.php b/plugins/box/filesmanager/views/backend/index.view.php index fdad12e..946ec6b 100755 --- a/plugins/box/filesmanager/views/backend/index.view.php +++ b/plugins/box/filesmanager/views/backend/index.view.php @@ -69,7 +69,7 @@ - +
@@ -92,11 +92,14 @@ @@ -118,6 +121,9 @@
+ 'btn btn-danger', 'onclick' => "return confirmDelete('".__('Delete directory: :dir', 'filesmanager', array(':dir' => $dir))."')")); ?> -
+
+ 'btn btn-danger', 'onclick' => "return confirmDelete('".__('Delete file: :file', 'filesmanager', array(':file' => $file))."')")); @@ -176,3 +182,35 @@
+ + \ No newline at end of file