_name = _("Tasks Summary"); } /** */ protected function _title() { global $registry; $label = !empty($this->_params['block_title']) ? $this->_params['block_title'] : $registry->get('name'); return Horde::url($registry->getInitialPage(), true)->link() . htmlspecialchars($label) . ''; } /** */ protected function _params() { $tasklists = array(); foreach (Nag::listTasklists() as $id => $tasklist) { $tasklists[$id] = Nag::getLabel($tasklist); } return array( 'block_title' => array( 'type' => 'text', 'name' => _("Block title"), 'default' => $GLOBALS['registry']->get('name') ), 'show_pri' => array( 'type' => 'checkbox', 'name' => _("Show priorities?"), 'default' => 1 ), 'show_actions' => array( 'type' => 'checkbox', 'name' => _("Show action buttons?"), 'default' => 1 ), 'show_due' => array( 'type' => 'checkbox', 'name' => _("Show due dates?"), 'default' => 1 ), 'show_tasklist' => array( 'type' => 'checkbox', 'name' => _("Show task list name?"), 'default' => 1 ), 'show_alarms' => array( 'type' => 'checkbox', 'name' => _("Show task alarms?"), 'default' => 1 ), 'show_overdue' => array( 'type' => 'checkbox', 'name' => _("Always show overdue tasks?"), 'default' => 1 ), 'show_completed' => array( 'type' => 'checkbox', 'name' => _("Always show completed and future tasks?"), 'default' => 1 ), 'show_tasklists' => array( 'type' => 'multienum', 'name' => _("Show tasks from these task lists"), 'default' => array(), 'values' => $tasklists ) ); } /** */ protected function _content() { global $conf, $prefs, $registry; $html = ''; if (!empty($this->_params['show_alarms'])) { $messages = array(); try { $alarmList = Nag::listAlarms($_SERVER['REQUEST_TIME']); } catch (Nag_Exception $e) { return '' . htmlspecialchars($e->getMessage()) . ''; } foreach ($alarmList as $task) { $differential = $task->getNextDue()->timestamp() - $_SERVER['REQUEST_TIME']; $key = $differential; while (isset($messages[$key])) { $key++; } $viewurl = Horde::url('view.php', true)->add(array( 'task' => $task->id, 'tasklist' => $task->tasklist )); $link = $viewurl->link() . (!empty($task->name) ? htmlspecialchars($task->name) : _("[none]")) . ''; if ($differential >= -60 && $differential < 60) { $messages[$key] = sprintf(_("%s is due now."), $link); } elseif ($differential >= 60) { $messages[$key] = sprintf( _("%s is due in %s"), $link, Nag::secondsToString($differential)); } } ksort($messages); foreach ($messages as $message) { $html .= '
| ' . $taskurl->copy()->add('actionID', 'modify_task')->link() . Horde::img('edit.png', $label) . ' | '; if ($task->completed) { $html .= '' . Horde::img('checked.png', _("Completed")) . ' | '; } else { $label = sprintf(_("Complete \"%s\""), $task->name); $html .= '' . Horde::url( $conf['urls']['pretty'] == 'rewrite' ? 't/complete' : 'task/complete.php' )->add(array( 'task' => $task->id, 'tasklist' => $task->tasklist, 'url' => Horde::selfUrl(true) ))->link() . Horde::img('unchecked.png', $label) . ' | '; } } if (!empty($this->_params['show_pri'])) { $html .= '' . Nag::formatPriority($task->priority) . ' | '; } if (!empty($this->_params['show_tasklist'])) { $html .= '' . htmlspecialchars(Nag::getLabel($GLOBALS['injector']->getInstance('Horde_Core_Factory_Share')->create()->getShare($task->tasklist))) . ' | '; } $html .= ''; $viewurl = Horde::url('view.php', true)->add(array( 'task' => $task->id, 'tasklist' => $task->tasklist )); $html .= $task->treeIcons() . $viewurl->link(array('title' => $task->desc)) . (!empty($task->name) ? htmlspecialchars($task->name) : _("[none]")) . ''; if ($due && empty($task->completed) && !empty($this->_params['show_due'])) { $html .= ' (' . $due->strftime($prefs->getValue('date_format')) . ')'; } $html .= ' | '; $html .= "