Add task form.
authorJan Schneider <jan@horde.org>
Fri, 6 Nov 2009 17:00:44 +0000 (18:00 +0100)
committerJan Schneider <jan@horde.org>
Fri, 6 Nov 2009 17:00:44 +0000 (18:00 +0100)
kronolith/js/kronolith.js
kronolith/templates/index/index.inc
kronolith/templates/index/task.inc [new file with mode: 0644]
kronolith/themes/screen.css

index 3ce887b..d3e093e 100644 (file)
@@ -323,6 +323,14 @@ KronolithCore = {
             break;
 
         case 'task':
+            switch (locParts.length) {
+            case 0:
+                this.editTask();
+                break;
+            case 2:
+                this.editTask(locParts[0], locParts[1]);
+                break;
+            }
             this._addHistory(fullloc);
             break;
 
@@ -1615,6 +1623,35 @@ KronolithCore = {
         col.toggleClassName('kronolithTaskCompleted');
     },
 
+    editTask: function(tasklist, id)
+    {
+        RedBox.onDisplay = function() {
+            try {
+                $('kronolithTaskForm').focusFirstElement();
+            } catch(e) {}
+            RedBox.onDisplay = null;
+        };
+
+        //this.updateTasklistDropDown();
+        if (id) {
+            RedBox.loading();
+            this.doAction('GetTask', { 'list': tasklist, 'id': id }, this._editTask.bind(this));
+        } else {
+            /*
+            $('kronolithTaskId').value = '';
+            $('kronolithTaskList').value = Kronolith.conf.default_tasklist;
+            $('kronolithTaskDelete').hide();
+            $('kronolithTaskStartDate').value = d.toString(Kronolith.conf.date_format);
+            $('kronolithTaskStartTime').value = d.toString(Kronolith.conf.time_format);
+            d.add(1).hour();
+            $('kronolithTaskEndDate').value = d.toString(Kronolith.conf.date_format);
+            $('kronolithTaskEndTime').value = d.toString(Kronolith.conf.time_format);
+            */
+            RedBox.showHtml($('kronolithTaskDialog').show());
+            this.taskForm = RedBox.getWindowContents();
+        }
+    },
+
     /**
      * Parses a date attribute string into a Date object.
      *
@@ -1944,6 +1981,16 @@ KronolithCore = {
                 e.stop();
                 return;
 
+            case 'kronolithTaskLinkDescription':
+            case 'kronolithTaskLinkReminder':
+            case 'kronolithTaskLinkUrl':
+                $('kronolithTaskDialog').select('.kronolithTabsOption').invoke('hide');
+                $(id.replace(/Link/, 'Tab')).show();
+                $('kronolithTaskDialog').select('.tabset li').invoke('removeClassName', 'activeTab');
+                elt.parentNode.addClassName('activeTab');
+                e.stop();
+                return;
+
             case 'kronolithEventLinkNone':
             case 'kronolithEventLinkDaily':
             case 'kronolithEventLinkWeekly':
@@ -1981,6 +2028,7 @@ KronolithCore = {
                 return;
 
             case 'kronolithEventCancel':
+            case 'kronolithTaskCancel':
                 this._closeRedBox();
                 window.history.back();
                 e.stop();
@@ -2135,6 +2183,11 @@ KronolithCore = {
                 $('kronolithEventTags').autocompleter.addNewItemNode(elt.getText());
                 e.stop();
                 return;
+
+            case 'kronolithTaskRow':
+                this.go('task:' + elt.retrieve('tasklist') + ':' + elt.retrieve('taskid'));
+                e.stop();
+                return;
             }
 
             if (elt.hasClassName('kronolithEvent')) {
index 1df983c..bc1cfd4 100644 (file)
     <a id="kronolithNavWeek" accesskey="2"><?php echo _("Week") ?></a>
     <a id="kronolithNavMonth" accesskey="3"><?php echo _("Month") ?></a>
     <a id="kronolithNavYear" accesskey="4"><?php echo _("Year") ?></a>
+    <?php if ($GLOBALS['registry']->hasInterface('tasks')): ?>
     <a id="kronolithNavTasks" accesskey="5"><?php echo _("Tasks") ?></a>
-    <a id="kronolithNavAgenda" accesskey="6"><?php echo _("Agenda") ?></a>
+    <?php endif; ?>
+    <a id="kronolithNavAgenda" accesskey="<?php echo $GLOBALS['registry']->hasInterface('tasks') ? 6 : 5 ?>"><?php echo _("Agenda") ?></a>
   </div>
 </div>
 <!-- end top bar -->
@@ -121,7 +123,10 @@ require dirname(__FILE__) . '/month.inc';
 require dirname(__FILE__) . '/week.inc';
 require dirname(__FILE__) . '/day.inc';
 require dirname(__FILE__) . '/year.inc';
-require dirname(__FILE__) . '/tasks.inc';
+if ($GLOBALS['registry']->hasInterface('tasks')) {
+    require dirname(__FILE__) . '/tasks.inc';
+    require dirname(__FILE__) . '/task.inc';
+}
 require dirname(__FILE__) . '/agenda.inc';
 ?>
 <div id="kronolithViewIframe" style="display:none"></div>
diff --git a/kronolith/templates/index/task.inc b/kronolith/templates/index/task.inc
new file mode 100644 (file)
index 0000000..490a7d3
--- /dev/null
@@ -0,0 +1,82 @@
+<div id="kronolithTaskDialog" style="display:none">
+<form id="kronolithTaskForm" action="">
+<input id="kronolithTaskId" type="hidden" name="task_id" />
+
+<div>
+  <label for="kronolithTaskTitle"><?php echo _("Name") ?>:</label><br />
+  <input type="text" name="name" id="kronolithTaskTitle" class="kronolithLongField" />
+</div>
+
+<div>
+  <label><input type="checkbox" name="" value="" /> <?php echo _("completed") ?></label>
+</div>
+
+<table cellspacing="" cellpadding="0" border="0"><tbody><tr>
+  <td>
+    <div>
+      <label for="kronolithTaskPriority"><?php echo _("Priority") ?>:</label><br />
+      <select name="priority" id="kronolithTaskPriority">
+        <?php foreach (array(1 => '1 ' . _("(highest)"), 2 => 2, 3 => 3, 4 => 4, 5 => '5 ' . _("(lowest)")) as $prio => $label): ?>
+        <option value="<?php echo $prio ?>"><?php echo $label ?></option>
+        <?php endforeach; ?>
+      </select>
+    </div>
+  </td>
+  <td>
+    <div>
+      <label for="kronolithTaskList"><?php echo _("Task List") ?>:</label><br />
+      <select name="tasklist_id" id="kronolithTaskList">
+      </select>
+    </div>
+  </td>
+  <td>
+    <div>
+      <label><?php echo _("Due date") ?>:</label><br />
+      <input type="text" name="due_date" id="kronolithTaskDueDate" size="10" class="kronolithDatePicker" />
+      <?php echo _("at") ?>
+      <input type="text" name="due_time" id="kronolithTaskDueTime" size="8" />
+    </div>
+  </td>
+</tr></tbody></table>
+
+<div class="tabset">
+  <ul>
+    <li class="activeTab"><a href="#" id="kronolithTaskLinkDescription"><?php echo _("Description") ?></a></li>
+    <li><a href="#" id="kronolithTaskLinkReminder"><?php echo _("Reminder") ?></a></li>
+    <li><a href="#" id="kronolithTaskLinkUrl"><?php echo _("URL") ?></a></li>
+  </ul>
+</div>
+<br class="clear" />
+
+<div id="kronolithTaskTabDescription" class="kronolithTabsOption">
+  <textarea name="desc" id="taskDescription" rows="5" cols="40" class="kronolithLongField"></textarea>
+</div>
+
+<div id="kronolithTaskTabReminder" class="kronolithTabsOption" style="display:none">
+   <label><input type="radio" name="nag_alarm[on]" value="0" checked="checked" /> <?php echo _("don't set") ?></label>
+   <?php echo _("or") ?>
+   <label><input type="radio" name="nag_alarm[on]" value="1" /> <?php echo _("set") ?></label>
+   <label>
+     <input type="text" name="nag_alarm[value]" size="3" value="15" class="kronolithEventValue" />
+     <select name="nag_alarm[unit]">
+       <option value="1"><?php echo _("minutes") ?></option>
+       <option value="60"><?php echo _("hours") ?></option>
+       <option value="1440"><?php echo _("days") ?></option>
+       <option value="10080"><?php echo _("weeks") ?></option>
+    </select>
+    <?php echo _("before due date") ?>
+  </label>
+</div>
+
+<div id="kronolithTaskTabUrl" class="kronolithTabsOption" style="display:none">
+  <input type="text" name="url" id="taskUrl" class="kronolithLongField" value="http://" />
+</div>
+
+<div id="kronolithTaskActions">
+  <input id="kronolithTaskSave" type="button" value="<?php echo _("Save") ?>" class="button ok" />
+  <input id="kronolithTaskDelete" type="button" value="<?php echo _("Delete") ?>" class="button ko" />
+  <span class="kronolithSep"><?php echo _("or") ?></span> <a id="kronolithTaskCancel" class="kronolithFormCancel"><?php echo _("Cancel") ?></a>
+</div>
+
+</form>
+</div>
index 95f5884..1b2128d 100644 (file)
@@ -517,6 +517,10 @@ span#kronolithQuickEvent {
 #kronolithQuickinsert label {
     font-weight: bold;
 }
+
+.kronolithFormCancel {
+    cursor: pointer;
+}
 .kronolithFormInfo {
     font-style: italic;
 }
@@ -603,24 +607,24 @@ span#kronolithQuickEvent {
     background-image: url("graphics/yearview.png");
 }
 
-/* Event form dialog */
-#kronolithEventDialog {
+/* Event/task form dialogs */
+#kronolithEventDialog, #kronolithTaskDialog {
     width: 700px;
     padding: 10px 20px;
     background: #efefef;
     border: 1px #c0c0c0 solid;
 }
-#kronolithEventDialog div {
+#kronolithEventDialog div, #kronolithTaskDialog div {
     margin-bottom: 5px;
 }
-#kronolithEventDialog td {
+#kronolithEventDialog td, #kronolithTaskDialog td {
     padding-right: 10px;
     vertical-align: top;
 }
-#kronolithEventForm label {
+#kronolithEventForm label, #kronolithTaskForm label {
     font-weight: bold;
 }
-#kronolithEventForm input.kronolithDatePicker {
+#kronolithEventForm input.kronolithDatePicker, #kronolithTaskForm input.kronolithDatePicker {
     padding-right: 20px;
     background-image: url("graphics/picker.png");
     background-position: right center;
@@ -629,7 +633,7 @@ span#kronolithQuickEvent {
 .kronolithLongField {
     width: 100%;
 }
-div#kronolithEventActions {
+div#kronolithEventActions, div#kronolithTaskActions {
     margin: 5px 0;
 }
 div#kronolithEventActions #kronolithEventAdvancedLink {
@@ -639,7 +643,7 @@ div#kronolithEventActions #kronolithEventAdvancedLink a {
     color: inherit;
 }
 
-#kronolithEventStartTime, #kronolithEventEndTime, .kronolithEventValue {
+#kronolithEventStartTime, #kronolithEventEndTime, #kronolithTaskDueTime, .kronolithEventValue {
     text-align: center;
 }
 #kronolithEventLocation {
@@ -663,13 +667,13 @@ div#kronolithEventTopTags span:hover {
     cursor: pointer;
 }
 
-#kronolithEventDialog .tabset {
+#kronolithEventDialog .tabset, #kronolithTaskDialog .tabset {
     float: none;
     width: auto;
     background: none;
     margin: 15px 0;
 }
-#kronolithEventDialog .tabset ul {
+#kronolithEventDialog .tabset ul, #kronolithTaskDialog .tabset ul {
     padding-left: 0;
 }
 
@@ -1017,10 +1021,10 @@ div.kronolithView div.kronolithViewBody div.kronolithRow {
 }
 #kronolithViewTasks tbody.kronolithViewBody td {
     padding: 4px 4px 4px 4px;
+    cursor: pointer;
 }
 #kronolithViewTasks tbody.kronolithViewBody div.kronolithTaskCheckbox {
     background: url("graphics/checkbox_off.png") no-repeat;
-    cursor: pointer;
     margin-right: 5px;
     float: left;
     width: 16px;