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('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('listupdate', function(e){ rcmail.triggerEvent('listupdate', e); });
|
||||
|
||||
|
@ -356,6 +356,17 @@ kolab_files_list_select = function(list)
|
|||
// 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()
|
||||
{
|
||||
var files = [];
|
||||
|
@ -369,6 +380,11 @@ kolab_files_selected = function()
|
|||
return files;
|
||||
};
|
||||
|
||||
|
||||
/***********************************************************/
|
||||
/********** Commands **********/
|
||||
/***********************************************************/
|
||||
|
||||
rcube_webmail.prototype.files_sort = function(props)
|
||||
{
|
||||
var params = {},
|
||||
|
@ -507,7 +523,7 @@ function kolab_files_ui()
|
|||
$.each(this.env.folders, function(i, f) {
|
||||
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))
|
||||
.click(function() { file_api.folder_select(i); });
|
||||
|
||||
|
@ -516,6 +532,15 @@ function kolab_files_ui()
|
|||
|
||||
if (f.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);
|
||||
|
||||
|
@ -545,6 +570,46 @@ function kolab_files_ui()
|
|||
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)
|
||||
{
|
||||
if (!this.env.folder || !rcmail.gui_objects.filelist)
|
||||
|
@ -622,46 +687,6 @@ function kolab_files_ui()
|
|||
$(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)
|
||||
{
|
||||
if (value) {
|
||||
|
@ -708,6 +733,31 @@ function kolab_files_ui()
|
|||
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
|
||||
this.file_upload = function(form)
|
||||
{
|
||||
|
|
|
@ -462,7 +462,8 @@ class kolab_files_engine
|
|||
|
||||
$this->rc->output->add_label('deletefolderconfirm', 'kolab_files.folderdeleting',
|
||||
'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->send('kolab_files.files');
|
||||
|
|
|
@ -33,8 +33,10 @@ $labels['foldercreatenotice'] = 'Folder created successfully.';
|
|||
$labels['saveallnotice'] = 'Successfully saved $n file(s).';
|
||||
$labels['saveallerror'] = 'Saving $n file(s) failed.';
|
||||
$labels['attacherror'] = 'Failed to attach file(s) from the cloud';
|
||||
$labels['filemoving'] = 'Moving file(s)...';
|
||||
$labels['filedeleting'] = 'Deleting file(s)...';
|
||||
$labels['filedeleteconfirm'] = 'Are you sure you want to delete selected files?';
|
||||
$labels['filedeletenotice'] = 'File(s) deleted successfully.';
|
||||
$labels['filemovenotice'] = 'File(s) moved successfully.';
|
||||
|
||||
?>
|
||||
|
|
Loading…
Add table
Reference in a new issue