*/
_toggleCompletionClass: function(taskId)
{
- var row = $(taskId);
- if (row.length == 0) {
+ var row = $$('tr[taskId=' + taskId + ']');
+ if (row.length != 1) {
// FIXME: Show some error?
return;
}
- var col = row.down('td.kronolithTaskCol', 0), div = col.down('div.kronolithTaskCheckbox', 0);
+ var col = row[0].down('td.kronolithTaskCol', 0), div = col.down('div.kronolithTaskCheckbox', 0);
col.toggleClassName('kronolithTask');
col.toggleClassName('kronolithTaskCompleted');
e.stop();
return;
} else if (elt.hasClassName('kronolithTaskCheckbox')) {
- var taskId = elt.up('tr.kronolithTaskRow', 0).readAttribute('id'),
+ var taskId = elt.up('tr.kronolithTaskRow', 0).readAttribute('taskId'),
taskList = elt.up('tr.kronolithTaskRow', 0).readAttribute('tasklist');
this._toggleCompletionClass(taskId);
this.doAction('ToggleCompletion',
if (calClass == 'remote' || calClass == 'external') {
if (calClass == 'external' && calendar.startsWith('tasks/')) {
var taskList = calendar.substr(6);
- if (typeof this.tcache.get(taskList) == 'undefined' &&
+ if (Object.isUndefined(this.tcache.get(taskList)) &&
this.view == 'tasks') {
this._loadTasks(this.taskType,[taskList]);
} else {
'type' => '{urn:horde}hashHash'
);
-$_services['completeTask'] = array(
+$_services['toggleCompletion'] = array(
'args' => array('task_id' => 'string', 'tasklist_id' => 'string'),
'type' => 'boolean'
);
}
$task = Nag::getTask($tasklist_id, $task_id);
+ if (is_a($task, 'PEAR_Error')) {
+ return $task;
+ }
+
$task->completed = !$task->completed;
if ($task->completed) {
$task->completed_date = time();