plugins/tasklist
Thomas Brüderli
bruederli at kolabsys.com
Wed Nov 21 11:59:22 CET 2012
plugins/tasklist/tasklist.js | 53 +++++++++++++++++++++++++++++++------------
1 file changed, 39 insertions(+), 14 deletions(-)
New commits:
commit d690844582ff3b44350d899892e5127a06f261de
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Wed Nov 21 11:58:49 2012 +0100
Block the relevant UI elements while saving a task (#1125)
diff --git a/plugins/tasklist/tasklist.js b/plugins/tasklist/tasklist.js
index c0f7f6e..6138d80 100644
--- a/plugins/tasklist/tasklist.js
+++ b/plugins/tasklist/tasklist.js
@@ -220,7 +220,7 @@ function rcube_tasklist_ui(settings)
// ignore
if (!item.length)
- return;
+ return false;
var id = item.data('id'),
li = item.parent(),
@@ -235,18 +235,27 @@ function rcube_tasklist_ui(settings)
break;
case 'complete':
+ if (rcmail.busy)
+ return false;
+
rec.complete = e.target.checked ? 1 : 0;
li.toggleClass('complete');
save_task(rec, 'edit');
return true;
case 'flagged':
+ if (rcmail.busy)
+ return false;
+
rec.flagged = rec.flagged ? 0 : 1;
li.toggleClass('flagged');
save_task(rec, 'edit');
break;
case 'date':
+ if (rcmail.busy)
+ return false;
+
var link = $(e.target).html(''),
input = $('<input type="text" size="10" />').appendTo(link).val(rec.date || '')
@@ -299,7 +308,7 @@ function rcube_tasklist_ui(settings)
if (!item.hasClass('taskhead'))
item = item.closest('div.taskhead');
- if (item.length && (id = item.data('id')) && (rec = listdata[id])) {
+ if (!rcmail.busy && item.length && (id = item.data('id')) && (rec = listdata[id])) {
var list = rec.list && me.tasklists[rec.list] ? me.tasklists[rec.list] : {};
if (rec.readonly || !list.editable)
task_show_dialog(id);
@@ -578,6 +587,7 @@ function rcube_tasklist_ui(settings)
if (!rcmail.busy) {
saving_lock = rcmail.set_busy(true, 'tasklist.savingdata');
rcmail.http_post('tasks/task', { action:action, t:rec, filter:filtermask });
+ $('button.ui-button:ui-button').button('option', 'disabled', rcmail.busy);
return true;
}
@@ -589,8 +599,10 @@ function rcube_tasklist_ui(settings)
*/
function unlock_saving()
{
- if (saving_lock)
+ if (saving_lock) {
rcmail.set_busy(false, null, saving_lock);
+ $('button.ui-button:ui-button').button('option', 'disabled', false);
+ }
}
/**
@@ -789,6 +801,9 @@ function rcube_tasklist_ui(settings)
function droppable_accept(draggable)
{
+ if (rcmail.busy)
+ return false;
+
var drag_id = draggable.data('id'),
drop_id = $(this).data('id'),
drag_rec = listdata[drag_id] || {},
@@ -895,16 +910,23 @@ function rcube_tasklist_ui(settings)
}
// define dialog buttons
- var buttons = {};
- buttons[rcmail.gettext('edit','tasklist')] = function() {
- task_edit_dialog(me.selected_task.id, 'edit');
- $dialog.dialog('close');
- };
+ var buttons = [];
+ buttons.push({
+ text: rcmail.gettext('edit','tasklist'),
+ click: function() {
+ task_edit_dialog(me.selected_task.id, 'edit');
+ },
+ disabled: rcmail.busy
+ });
- buttons[rcmail.gettext('delete','tasklist')] = function() {
- if (delete_task(me.selected_task.id))
- $dialog.dialog('close');
- };
+ buttons.push({
+ text: rcmail.gettext('delete','tasklist'),
+ click: function() {
+ if (delete_task(me.selected_task.id))
+ $dialog.dialog('close');
+ },
+ disabled: rcmail.busy
+ });
// open jquery UI dialog
$dialog.dialog({
@@ -937,7 +959,7 @@ function rcube_tasklist_ui(settings)
list = rec.list && me.tasklists[rec.list] ? me.tasklists[rec.list] :
(me.selected_list ? me.tasklists[me.selected_list] : { editable: action=='new' });
- if (!list.editable || (action == 'edit' && (!rec || rec.readonly)))
+ if (rcmail.busy || !list.editable || (action == 'edit' && (!rec || rec.readonly)))
return false;
me.selected_task = $.extend({}, rec); // clone task object
@@ -1207,6 +1229,9 @@ function rcube_tasklist_ui(settings)
*/
function add_childtask(id)
{
+ if (rcmail.busy)
+ return false;
+
var rec = listdata[id];
task_edit_dialog(null, 'new', { parent_id:id, list:rec.list });
}
@@ -1217,7 +1242,7 @@ function rcube_tasklist_ui(settings)
function delete_task(id)
{
var rec = listdata[id];
- if (!rec || rec.readonly)
+ if (!rec || rec.readonly || rcmail.busy)
return false;
var html, buttons = [{
More information about the commits
mailing list