first shot at Quick Add feature. dieing somewhere in the js results at the moment
authorChuck Hagenbuch <chuck@horde.org>
Mon, 31 Aug 2009 04:24:35 +0000 (00:24 -0400)
committerChuck Hagenbuch <chuck@horde.org>
Mon, 31 Aug 2009 04:24:35 +0000 (00:24 -0400)
kronolith/ajax.php
kronolith/js/kronolith.js
kronolith/templates/index/index.inc

index 2b953b0..7326ea7 100644 (file)
@@ -196,6 +196,18 @@ try {
         $result = saveEvent($event);
         break;
 
+    case 'QuickSaveEvent':
+        if (!($kronolith_driver = getDriver(Horde_Util::getFormData('cal')))) {
+            break;
+        }
+        $uids = $registry->calendar->quickAdd(Horde_Util::getFormData('text'), Horde_Util::getFormData('cal'));
+        if (!count($uids)) {
+            break;
+        }
+        $event = $kronolith_driver->getByUid($uids[0]);
+        $result = saveEvent($event);
+        break;
+
     case 'UpdateEvent':
         if (!($kronolith_driver = getDriver(Horde_Util::getFormData('cal')))) {
             break;
index b3d1df6..8669b2b 100644 (file)
@@ -1757,6 +1757,12 @@ KronolithCore = {
                 e.stop();
                 return;
 
+            case 'kronolithQuickinsertSave':
+                $('kronolithQuickinsert').fade();
+                this.quickSaveEvent();
+                e.stop();
+                return;
+
             case 'kronolithEventDelete':
                 var cal = $F('kronolithEventCalendar'),
                     eventid = $F('kronolithEventId');
@@ -2072,6 +2078,31 @@ KronolithCore = {
                       }.bind(this));
     },
 
+    quickSaveEvent: function()
+    {
+        var cal = $F('kronolithEventCalendar'),
+            text = $F('kronolithQuickinsertQ'),
+            viewDates = this.viewDates(this.date, this.view),
+            start = viewDates[0].dateString(),
+            end = viewDates[1].dateString();
+
+        this.startLoading(cal, start, end);
+        this.doAction('QuickSaveEvent',
+                      $H({ text: text })
+                          .merge({
+                              'view': this.view,
+                              'view_start': start,
+                              'view_end': end
+                          }),
+                      function(r) {
+                          if (r.response.events && eventid) {
+                              this._removeEvent(eventid, cal);
+                          }
+                          this._loadEventsCallback(r);
+                          this._closeRedBox();
+                      }.bind(this));
+    },
+
     _topTags: function(r)
     {
         if (!r.response.tags) {
index e00bd11..a1aed7b 100644 (file)
@@ -35,7 +35,7 @@
 <div id="kronolithMenu">
   <div id="kronolithAddEvents">
     <span id="kronolithNewEvent"><?php echo _("New event") ?></span>
-    <span id="kronolithQuickEvent" onclick="$('kronolithQuickinsert').appear()">+</span>
+    <span id="kronolithQuickEvent" onclick="$('kronolithQuickinsert').appear({duration: 0.3, afterFinish: function() { $('kronolithQuickinsertQ').focus(); }})">+</span>
   </div>
 
   <div id="kronolithMenuCalendars">
@@ -129,7 +129,8 @@ require dirname(__FILE__) . '/agenda.inc';
 
 <div id="kronolithQuickinsert" style="display:none">
   <form action="#" method="post">
-    <input type="text" name="q" value="" /> <input type="button" value="ok" class="button ok" onclick="$('kronolithQuickinsert').fade()" /><br />
+    <input type="text" name="q" id="kronolithQuickinsertQ" value="" />
+    <input type="submit" id="kronolithQuickinsertSave" value="ok" class="button ok" /><br />
     <?php echo _("I.e. Dinner with John tomorrow 10am") ?><br />
   </form>
 </div>