Implemented files moving (drag'n'drop)
This commit is contained in:
parent
6000fd925f
commit
2358a0d807
3 changed files with 96 additions and 43 deletions
|
@ -69,8 +69,8 @@ window.rcmail && rcmail.addEventListener('init', function() {
|
||||||
/*
|
/*
|
||||||
rcmail.file_list.addEventListener('dragstart', function(o){ p.drag_start(o); });
|
rcmail.file_list.addEventListener('dragstart', function(o){ p.drag_start(o); });
|
||||||
rcmail.file_list.addEventListener('dragmove', function(e){ p.drag_move(e); });
|
rcmail.file_list.addEventListener('dragmove', function(e){ p.drag_move(e); });
|
||||||
rcmail.file_list.addEventListener('dragend', function(e){ p.drag_end(e); });
|
|
||||||
*/
|
*/
|
||||||
|
rcmail.file_list.addEventListener('dragend', function(e){ kolab_files_drag_end(e); });
|
||||||
rcmail.file_list.addEventListener('column_replace', function(e){ kolab_files_set_coltypes(e); });
|
rcmail.file_list.addEventListener('column_replace', function(e){ kolab_files_set_coltypes(e); });
|
||||||
rcmail.file_list.addEventListener('listupdate', function(e){ rcmail.triggerEvent('listupdate', e); });
|
rcmail.file_list.addEventListener('listupdate', function(e){ rcmail.triggerEvent('listupdate', e); });
|
||||||
|
|
||||||
|
@ -356,6 +356,17 @@ kolab_files_list_select = function(list)
|
||||||
// rcmail.select_all_mode = false;
|
// rcmail.select_all_mode = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
kolab_files_drag_end = function()
|
||||||
|
{
|
||||||
|
var folder = $('#files-folder-list li.droptarget').removeClass('droptarget');
|
||||||
|
|
||||||
|
if (folder.length) {
|
||||||
|
folder = folder.data('folder');
|
||||||
|
|
||||||
|
file_api.file_move(kolab_files_selected(), folder);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
kolab_files_selected = function()
|
kolab_files_selected = function()
|
||||||
{
|
{
|
||||||
var files = [];
|
var files = [];
|
||||||
|
@ -369,6 +380,11 @@ kolab_files_selected = function()
|
||||||
return files;
|
return files;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************/
|
||||||
|
/********** Commands **********/
|
||||||
|
/***********************************************************/
|
||||||
|
|
||||||
rcube_webmail.prototype.files_sort = function(props)
|
rcube_webmail.prototype.files_sort = function(props)
|
||||||
{
|
{
|
||||||
var params = {},
|
var params = {},
|
||||||
|
@ -507,7 +523,7 @@ function kolab_files_ui()
|
||||||
$.each(this.env.folders, function(i, f) {
|
$.each(this.env.folders, function(i, f) {
|
||||||
var row = $('<li class="mailbox"><span class="branch"></span></li>');
|
var row = $('<li class="mailbox"><span class="branch"></span></li>');
|
||||||
|
|
||||||
row.attr('id', f.id)
|
row.attr('id', f.id).data('folder', i)
|
||||||
.append($('<span class="name">').text(f.name))
|
.append($('<span class="name">').text(f.name))
|
||||||
.click(function() { file_api.folder_select(i); });
|
.click(function() { file_api.folder_select(i); });
|
||||||
|
|
||||||
|
@ -516,6 +532,15 @@ function kolab_files_ui()
|
||||||
|
|
||||||
if (f.virtual)
|
if (f.virtual)
|
||||||
row.addClass('virtual');
|
row.addClass('virtual');
|
||||||
|
else
|
||||||
|
row.mouseenter(function() {
|
||||||
|
if (rcmail.file_list.drag_active)
|
||||||
|
$(this).addClass('droptarget');
|
||||||
|
})
|
||||||
|
.mouseleave(function() {
|
||||||
|
if (rcmail.file_list.drag_active)
|
||||||
|
$(this).removeClass('droptarget');
|
||||||
|
});
|
||||||
|
|
||||||
list.append(row);
|
list.append(row);
|
||||||
|
|
||||||
|
@ -545,6 +570,46 @@ function kolab_files_ui()
|
||||||
this.file_list();
|
this.file_list();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// folder create request
|
||||||
|
this.folder_create = function(folder)
|
||||||
|
{
|
||||||
|
this.req = this.set_busy(true, 'kolab_files.foldercreating');
|
||||||
|
this.get('folder_create', {folder: folder}, 'folder_create_response');
|
||||||
|
};
|
||||||
|
|
||||||
|
// folder create response handler
|
||||||
|
this.folder_create_response = function(response)
|
||||||
|
{
|
||||||
|
if (!this.response(response))
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.display_message('kolab_files.foldercreatenotice', 'confirmation');
|
||||||
|
|
||||||
|
// refresh folders list
|
||||||
|
this.folder_list();
|
||||||
|
};
|
||||||
|
|
||||||
|
// folder delete request
|
||||||
|
this.folder_delete = function(folder)
|
||||||
|
{
|
||||||
|
this.req = this.set_busy(true, 'kolab_files.folderdeleting');
|
||||||
|
this.get('folder_delete', {folder: folder}, 'folder_delete_response');
|
||||||
|
};
|
||||||
|
|
||||||
|
// folder delete response handler
|
||||||
|
this.folder_delete_response = function(response)
|
||||||
|
{
|
||||||
|
if (!this.response(response))
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.env.folder = null;
|
||||||
|
rcmail.enable_command('files-folder-delete', 'files-folder-rename', false);
|
||||||
|
this.display_message('kolab_files.folderdeletenotice', 'confirmation');
|
||||||
|
|
||||||
|
// refresh folders list
|
||||||
|
this.folder_list();
|
||||||
|
};
|
||||||
|
|
||||||
this.file_list = function(params)
|
this.file_list = function(params)
|
||||||
{
|
{
|
||||||
if (!this.env.folder || !rcmail.gui_objects.filelist)
|
if (!this.env.folder || !rcmail.gui_objects.filelist)
|
||||||
|
@ -622,46 +687,6 @@ function kolab_files_ui()
|
||||||
$(row).addClass('selected');
|
$(row).addClass('selected');
|
||||||
};
|
};
|
||||||
|
|
||||||
// folder create request
|
|
||||||
this.folder_create = function(folder)
|
|
||||||
{
|
|
||||||
this.req = this.set_busy(true, 'kolab_files.foldercreating');
|
|
||||||
this.get('folder_create', {folder: folder}, 'folder_create_response');
|
|
||||||
};
|
|
||||||
|
|
||||||
// folder create response handler
|
|
||||||
this.folder_create_response = function(response)
|
|
||||||
{
|
|
||||||
if (!this.response(response))
|
|
||||||
return;
|
|
||||||
|
|
||||||
this.display_message('kolab_files.foldercreatenotice', 'confirmation');
|
|
||||||
|
|
||||||
// refresh folders list
|
|
||||||
this.folder_list();
|
|
||||||
};
|
|
||||||
|
|
||||||
// folder delete request
|
|
||||||
this.folder_delete = function(folder)
|
|
||||||
{
|
|
||||||
this.req = this.set_busy(true, 'kolab_files.folderdeleting');
|
|
||||||
this.get('folder_delete', {folder: folder}, 'folder_delete_response');
|
|
||||||
};
|
|
||||||
|
|
||||||
// folder delete response handler
|
|
||||||
this.folder_delete_response = function(response)
|
|
||||||
{
|
|
||||||
if (!this.response(response))
|
|
||||||
return;
|
|
||||||
|
|
||||||
this.env.folder = null;
|
|
||||||
rcmail.enable_command('files-folder-delete', 'files-folder-rename', false);
|
|
||||||
this.display_message('kolab_files.folderdeletenotice', 'confirmation');
|
|
||||||
|
|
||||||
// refresh folders list
|
|
||||||
this.folder_list();
|
|
||||||
};
|
|
||||||
|
|
||||||
this.file_search = function(value)
|
this.file_search = function(value)
|
||||||
{
|
{
|
||||||
if (value) {
|
if (value) {
|
||||||
|
@ -708,6 +733,31 @@ function kolab_files_ui()
|
||||||
this.file_list();
|
this.file_list();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// file(s) move request
|
||||||
|
this.file_move = function(files, folder)
|
||||||
|
{
|
||||||
|
if (!files || !files.length || !folder)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var list = {};
|
||||||
|
$.each(files, function(i, v) {
|
||||||
|
list[v] = folder + file_api.env.directory_separator + file_api.file_name(v);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.req = this.set_busy(true, 'kolab_files.filemoving');
|
||||||
|
this.get('file_move', {file: list}, 'file_move_response');
|
||||||
|
};
|
||||||
|
|
||||||
|
// file(s) move response handler
|
||||||
|
this.file_move_response = function(response)
|
||||||
|
{
|
||||||
|
if (!this.response(response))
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.display_message('kolab_files.filemovenotice', 'confirmation');
|
||||||
|
this.file_list();
|
||||||
|
};
|
||||||
|
|
||||||
// file upload request
|
// file upload request
|
||||||
this.file_upload = function(form)
|
this.file_upload = function(form)
|
||||||
{
|
{
|
||||||
|
|
|
@ -462,7 +462,8 @@ class kolab_files_engine
|
||||||
|
|
||||||
$this->rc->output->add_label('deletefolderconfirm', 'kolab_files.folderdeleting',
|
$this->rc->output->add_label('deletefolderconfirm', 'kolab_files.folderdeleting',
|
||||||
'kolab_files.foldercreating', 'kolab_files.uploading', 'kolab_files.filedeleteconfirm',
|
'kolab_files.foldercreating', 'kolab_files.uploading', 'kolab_files.filedeleteconfirm',
|
||||||
'kolab_files.folderdeleteconfirm', 'kolab_files.filedeleting');
|
'kolab_files.folderdeleteconfirm', 'kolab_files.filedeleting', 'kolab_files.filedeletenotice',
|
||||||
|
'kolab_files.filemoving', 'kolab_files.filemovenotice');
|
||||||
|
|
||||||
$this->rc->output->set_pagetitle($this->plugin->gettext('files'));
|
$this->rc->output->set_pagetitle($this->plugin->gettext('files'));
|
||||||
$this->rc->output->send('kolab_files.files');
|
$this->rc->output->send('kolab_files.files');
|
||||||
|
|
|
@ -33,8 +33,10 @@ $labels['foldercreatenotice'] = 'Folder created successfully.';
|
||||||
$labels['saveallnotice'] = 'Successfully saved $n file(s).';
|
$labels['saveallnotice'] = 'Successfully saved $n file(s).';
|
||||||
$labels['saveallerror'] = 'Saving $n file(s) failed.';
|
$labels['saveallerror'] = 'Saving $n file(s) failed.';
|
||||||
$labels['attacherror'] = 'Failed to attach file(s) from the cloud';
|
$labels['attacherror'] = 'Failed to attach file(s) from the cloud';
|
||||||
|
$labels['filemoving'] = 'Moving file(s)...';
|
||||||
$labels['filedeleting'] = 'Deleting file(s)...';
|
$labels['filedeleting'] = 'Deleting file(s)...';
|
||||||
$labels['filedeleteconfirm'] = 'Are you sure you want to delete selected files?';
|
$labels['filedeleteconfirm'] = 'Are you sure you want to delete selected files?';
|
||||||
$labels['filedeletenotice'] = 'File(s) deleted successfully.';
|
$labels['filedeletenotice'] = 'File(s) deleted successfully.';
|
||||||
|
$labels['filemovenotice'] = 'File(s) moved successfully.';
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Add table
Reference in a new issue