Support links to timeobjects and load them in an iframe.
authorJan Schneider <jan@horde.org>
Mon, 9 Nov 2009 22:46:53 +0000 (23:46 +0100)
committerJan Schneider <jan@horde.org>
Mon, 9 Nov 2009 22:46:53 +0000 (23:46 +0100)
kronolith/js/kronolith.js
kronolith/lib/Event.php
kronolith/lib/Event/Horde.php

index 127e3a8..72d351a 100644 (file)
@@ -302,19 +302,24 @@ KronolithCore = {
             break;
 
         case 'event':
+            // Load view first if necessary.
             if (!this.view) {
                 this.go(Kronolith.conf.login_view);
                 this.go.bind(this, fullloc, data).defer();
                 return;
             }
+
             switch (locParts.length) {
             case 0:
+                // New event.
                 this.editEvent();
                 break;
             case 1:
+                // New event on a certain date.
                 this.editEvent(null, null, locParts[0]);
                 break;
             case 2:
+                // Editing event.
                 this.editEvent(locParts[0], locParts[1]);
                 break;
             }
@@ -455,6 +460,7 @@ KronolithCore = {
         if (this.view && this.view != loc) {
             $('kronolithView' + this.view.capitalize()).fade({ 'queue': 'end' });
         }
+        this.view = null;
     },
 
     /**
@@ -1846,6 +1852,8 @@ KronolithCore = {
 
     iframeContent: function(name, loc)
     {
+        this.closeView();
+
         if (name === null) {
             name = loc;
         }
@@ -1858,8 +1866,8 @@ KronolithCore = {
             $('kronolithViewIframe').insert(iframe);
         }
 
-        this.view = null;
         $('kronolithViewIframe').appear({ 'queue': 'end' });
+        this.view = 'iframe';
     },
 
     onResize: function(noupdate, nowait)
@@ -2400,6 +2408,13 @@ KronolithCore = {
         }
 
         var ev = r.response.event;
+
+        if (!Object.isUndefined(ev.ln)) {
+            this.iframeContent('event', ev.ln);
+            this._closeRedBox();
+            return;
+        }
+
         $('kronolithEventId').value = ev.id;
         $('kronolithEventCalendar').value = ev.ty + '|' + ev.c;
         $('kronolithEventTitle').value = ev.t;
index 4bc9f41..cca42cc 100644 (file)
@@ -2225,6 +2225,8 @@ abstract class Kronolith_Event
         } elseif ($this->remoteCal) {
             $params['calendar'] = '**remote';
             $params['remoteCal'] = $this->remoteCal;
+        } elseif (!empty($this->external_link)) {
+            return $this->external_link;
         } else {
             $params['calendar'] = $this->getCalendar();
         }
index 354efcf..4e308b0 100644 (file)
@@ -96,7 +96,7 @@ class Kronolith_Event_Horde extends Kronolith_Event
         if ($this->ajax_link) {
             $json->aj = $this->ajax_link;
         } else {
-            $json->ln = $this->getLink();
+            $json->ln = $this->getViewUrl(array(), true);
         }
         return $json;
     }