break;
case 'SaveTask':
- if (!$registry->hasMethod('tasks/updateTask')) {
- break;
- }
- if (is_null($id = Horde_Util::getFormData('task_id')) ||
- is_null($list = Horde_Util::getFormData('old_tasklist'))) {
+ if (!$registry->hasMethod('tasks/updateTask') ||
+ !$registry->hasMethod('tasks/addTask')) {
break;
}
+
+ $id = Horde_Util::getFormData('task_id');
+ $list = Horde_Util::getFormData('old_tasklist');
$task = Horde_Util::getFormData('task');
$due = trim($task['due_date'] . ' ' . $task['due_time']);
$task['alarm'] = 0;
}
- $result = $registry->tasks->updateTask($list, $id, $task);
+ if ($id && $list) {
+ $result = $registry->tasks->updateTask($list, $id, $task);
+ } else {
+ $result = $registry->tasks->addTask($task);
+ }
if (is_a($result, 'PEAR_Error')) {
$notification->push($result, 'horde.error');
break;
}
+ if (!$id) {
+ $id = $result[0];
+ }
$task = $registry->tasks->getTask($task['tasklist'], $id);
if (is_a($task, 'PEAR_Error')) {
$notification->push($task, 'horde.error');
} else {
$('kronolithTaskId').clear();
$('kronolithTaskOldList').clear();
- //$('kronolithTaskList').setValue(Kronolith.conf.default_tasklist);
+ $('kronolithTaskList').setValue(Kronolith.conf.tasks.default_tasklist);
+ $('kronolithTaskTitle').clear();
+ //$('kronolithTaskLocation').setValue('http://');
+ $('kronolithTaskDueDate').clear();
+ $('kronolithTaskDueTime').clear();
+ $('kronolithTaskDescription').clear();
+ $('kronolithTaskPriority').setValue(3);
+ $('kronolithTaskCompleted').setValue(0);
$('kronolithTaskDelete').hide();
- $('kronolithTaskDueDate').setValue(d.toString(Kronolith.conf.date_format));
- $('kronolithTaskDueTime').setValue(d.toString(Kronolith.conf.time_format));
RedBox.showHtml($('kronolithTaskDialog').show());
}
},
$('kronolithEventAlarmOff').setValue(true);
}
+ if (task.pe) {
+ $('kronolithTaskSave').show();
+ $('kronolithTaskForm').enable();
+ } else {
+ $('kronolithTaskSave').hide();
+ $('kronolithTaskForm').disable();
+ }
+ if (task.pd) {
+ $('kronolithTaskDelete').show();
+ } else {
+ $('kronolithTaskDelete').hide();
+ }
+
this.setTitle(task.n);
RedBox.showHtml($('kronolithTaskDialog').show());
},
return;
case 'kronolithTaskRow':
- this.go('task:' + elt.retrieve('tasklist') + ':' + elt.retrieve('taskid'));
+ if (elt.retrieve('taskid')) {
+ this.go('task:' + elt.retrieve('tasklist') + ':' + elt.retrieve('taskid'));
+ } else {
+ this.go('task');
+ }
e.stop();
return;
}
$kronolith_webroot = $registry->get('webroot');
$horde_webroot = $registry->get('webroot', 'horde');
+ $has_tasks = $GLOBALS['registry']->hasInterface('tasks');
/* Variables used in core javascript files. */
$code['conf'] = array(
'1440' => _("1 day")),
);
+ if ($has_tasks) {
+ $code['conf']['tasks'] = $GLOBALS['registry']->tasks->ajaxDefaults();
+ }
+
// Calendars
- $has_tasks = $GLOBALS['registry']->hasInterface('tasks');
foreach (array(true, false) as $my) {
foreach ($GLOBALS['all_calendars'] as $id => $calendar) {
$owner = $calendar->get('owner') == Horde_Auth::getAuth();
</caption>
<tbody id="kronolithViewTasksBody">
<tr class="kronolithTaskRow">
- <td class="kronolithTaskCol kronolithAddTask">
+ <td class="kronolithTaskCol kronolithAddTask button">
<div class="kronolithAddTaskIcon"></div><?php echo _("Add Task") ?>
</td>
</tr>
table.monthgrid {
border-top: 0;
}
+table.kronolithView td.button {
+ border-color: #999;
+}
);
/**
+ * Returns a number of defaults necessary for the ajax view.
+ *
+ * @return array A hash with default values.
+ */
+ public function ajaxDefaults()
+ {
+ require_once dirname(__FILE__) . '/base.php';
+ return array(
+ 'default_tasklist' => Nag::getDefaultTasklist(Horde_Perms::EDIT),
+ );
+ }
+
+ /**
* Retrieves the current user's task list from storage.
*
* This function will also sort the resulting list, if requested.
}
/**
+ * Adds a task.
+ *
+ * @param array $task A hash with overwriting task information.
+ */
+ public function addTask($task)
+ {
+ require_once dirname(__FILE__) . '/base.php';
+
+ if (!Horde_Auth::isAdmin() &&
+ !array_key_exists($task['tasklist'],
+ Nag::listTasklists(false, Horde_Perms::EDIT))) {
+ return PEAR::raiseError(_("Permission Denied"));
+ }
+
+ $storage = Nag_Driver::singleton($task['tasklist']);
+
+ return $storage->add(
+ isset($task['name']) ? $task['name'] : '',
+ isset($task['desc']) ? $task['desc'] : '',
+ isset($task['start']) ? $task['start'] : 0,
+ isset($task['due']) ? $task['due'] : 0,
+ isset($task['priority']) ? $task['priority'] : 3,
+ isset($task['estimate']) ? $task['estimate'] : 0,
+ !empty($task['completed']),
+ isset($task['category']) ? $task['category'] : '',
+ isset($task['alarm']) ? $task['alarm'] : 0,
+ isset($task['methods']) ? $task['alarm'] : null,
+ isset($task['uid']) ? $task['uid'] : null,
+ isset($task['parent_id']) ? $task['parent_id'] : '',
+ !empty($task['private']),
+ Horde_Auth::getAuth(),
+ isset($task['assignee']) ? $task['assignee'] : null);
+ }
+
+ /**
* Imports one or more tasks parsed from a string.
*
* @param string $text The text to parse into
$json->a = $this->alarm;
$json->m = $this->methods;
//$json->pv = (boolean)$this->private;
+
+ $share = $GLOBALS['nag_shares']->getShare($this->tasklist);
+ if (is_a($share, 'PEAR_Error')) {
+ return $share;
+ }
+ $json->pe = $share->hasPermission(Horde_Auth::getAuth(), Horde_Perms::EDIT);
+ $json->pd = $share->hasPermission(Horde_Auth::getAuth(), Horde_Perms::DELETE);
}
return $json;