Add listTimeObjects calendars to the choice of calendars to display in blocks.
authorMichael J. Rubinsky <mrubinsk@horde.org>
Thu, 13 May 2010 19:26:05 +0000 (15:26 -0400)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Thu, 13 May 2010 19:27:39 +0000 (15:27 -0400)
Ticket: 8530

kronolith/lib/Block/month.php
kronolith/lib/Block/monthlist.php
kronolith/lib/Block/summary.php

index ff81f78..3d871bb 100644 (file)
@@ -28,6 +28,15 @@ class Horde_Block_Kronolith_month extends Horde_Block {
             $params['calendar']['values'][$id] = $cal->get('name');
         }
 
+        foreach ($GLOBALS['all_external_calendars'] as $api => $categories) {
+            if (count($categories)) {
+                $app = $GLOBALS['registry']->get('name', $GLOBALS['registry']->hasInterface($api));
+                $externals[$app] = array();
+                foreach ($categories as $id => $name) {
+                    $params['calendar']['values'][$api . '/' . $id] = $name;
+                }
+            }
+        }
         return $params;
     }
 
@@ -42,11 +51,16 @@ class Horde_Block_Kronolith_month extends Horde_Block {
         $url = Horde::url($GLOBALS['registry']->getInitialPage(), true);
         if (isset($this->_params['calendar']) &&
             $this->_params['calendar'] != '__all') {
-            try {
-                $this->_share = $GLOBALS['kronolith_shares']->getShare($this->_params['calendar']);
-                $url->add('display_cal', $this->_params['calendar']);
-                $title = htmlspecialchars($this->_share->get('name'));
-            } catch (Exception $e) {
+            if (strpos($this->_params['calendar'], '/') !== false) {
+                list($api, $c) = split('/', $this->_params['calendar']);
+                $app = $GLOBALS['registry']->get('name', $GLOBALS['registry']->hasInterface($api));
+                $title = htmlspecialchars($app . ' ' . $c);
+            } else {
+                try {
+                    $this->_share = $GLOBALS['kronolith_shares']->getShare($this->_params['calendar']);
+                    $url->add('display_cal', $this->_params['calendar']);
+                    $title = htmlspecialchars($this->_share->get('name'));
+                } catch (Exception $e) {}
             }
         }
         $date = new Horde_Date(time());
@@ -63,7 +77,8 @@ class Horde_Block_Kronolith_month extends Horde_Block {
     {
         global $prefs;
 
-        if (isset($this->_params['calendar']) && $this->_params['calendar'] != '__all') {
+        if (isset($this->_params['calendar']) && $this->_params['calendar'] != '__all' &&
+            strpos($this->_params['calendar'], '/') === false) {
             if (empty($this->_share)) {
                 try {
                     $this->_share = $GLOBALS['kronolith_shares']->getShare($this->_params['calendar']);
@@ -129,7 +144,16 @@ class Horde_Block_Kronolith_month extends Horde_Block {
         try {
             if (isset($this->_params['calendar']) &&
                 $this->_params['calendar'] != '__all') {
-                $all_events = Kronolith::listEvents($startDate,$endDate, array($this->_params['calendar']), true, false, false);
+
+                if (strpos($this->_params['calendar'], '/') !== false) {
+                    /* listTimeObjects */
+                    $driver = Kronolith::getDriver('Horde');
+                    $driver->open($this->_params['calendar']);
+                    $all_events = $driver->listEvents($startDate, $endDate, true, false, false, true);
+                } else {
+                    $all_events = Kronolith::listEvents($startDate,$endDate, array($this->_params['calendar']), true, false, false);
+                }
+
             } else {
                 $all_events = Kronolith::listEvents($startDate, $endDate, $GLOBALS['display_calendars']);
             }
index 2cffa5f..2494e3d 100644 (file)
@@ -36,6 +36,15 @@ class Horde_Block_Kronolith_monthlist extends Horde_Block {
             $params['calendar']['values'][$id] = $cal->get('name');
         }
 
+        foreach ($GLOBALS['all_external_calendars'] as $api => $categories) {
+            if (count($categories)) {
+                $app = $GLOBALS['registry']->get('name', $GLOBALS['registry']->hasInterface($api));
+                $externals[$app] = array();
+                foreach ($categories as $id => $name) {
+                    $params['calendar']['values'][$api . '/' . $id] = $name;
+                }
+            }
+        }
         return $params;
     }
 
@@ -75,14 +84,21 @@ class Horde_Block_Kronolith_monthlist extends Horde_Block {
         try {
             if (isset($this->_params['calendar']) &&
                 $this->_params['calendar'] != '__all') {
-                try {
-                    $calendar = $GLOBALS['kronolith_shares']->getShare($this->_params['calendar']);
-                    if (!$calendar->hasPermission(Horde_Auth::getAuth(), Horde_Perms::SHOW)) {
-                        return _("Permission Denied");
-                    }
-                } catch (Exception $e) {
+
+                if (strpos($this->_params['calendar'], '/') !== false) {
+                    /* listTimeObjects */
+                    $driver = Kronolith::getDriver('Horde');
+                    $driver->open($this->_params['calendar']);
+                    $all_events = $driver->listEvents($startDate, $endDate, true, false, false, true);
+                } else {
+                    try {
+                        $calendar = $GLOBALS['kronolith_shares']->getShare($this->_params['calendar']);
+                        if (!$calendar->hasPermission(Horde_Auth::getAuth(), Horde_Perms::SHOW)) {
+                            return _("Permission Denied");
+                        }
+                    } catch (Exception $e) {}
+                    $all_events = Kronolith::listEvents($startDate, $endDate, array($this->_params['calendar']), true, false, false);
                 }
-                $all_events = Kronolith::listEvents($startDate, $endDate, array($this->_params['calendar']), true, false, false);
             } else {
                 $all_events = Kronolith::listEvents($startDate, $endDate, $GLOBALS['display_calendars']);
             }
index 310e2c0..48d3ef9 100644 (file)
@@ -54,6 +54,16 @@ class Horde_Block_Kronolith_summary extends Horde_Block {
             $params['calendar']['values'][$id] = $cal->get('name');
         }
 
+        foreach ($GLOBALS['all_external_calendars'] as $api => $categories) {
+            if (count($categories)) {
+                $app = $GLOBALS['registry']->get('name', $GLOBALS['registry']->hasInterface($api));
+                $externals[$app] = array();
+                foreach ($categories as $id => $name) {
+                    $params['calendar']['values'][$api . '/' . $id] = $name;
+                }
+            }
+        }
+
         return $params;
     }
 
@@ -91,17 +101,25 @@ class Horde_Block_Kronolith_summary extends Horde_Block {
         try {
             if (isset($this->_params['calendar']) &&
                 $this->_params['calendar'] != '__all') {
-                try {
-                    $calendar = $GLOBALS['kronolith_shares']->getShare($this->_params['calendar']);
-                    if (!$calendar->hasPermission(Horde_Auth::getAuth(), Horde_Perms::SHOW)) {
-                        return _("Permission Denied");
+
+                if (strpos($this->_params['calendar'], '/') !== false) {
+                    /* listTimeObjects */
+                    $driver = Kronolith::getDriver('Horde');
+                    $driver->open($this->_params['calendar']);
+                    $all_events = $driver->listEvents($startDate, $endDate, true, false, false, true);
+                } else {
+                    try {
+                        $calendar = $GLOBALS['kronolith_shares']->getShare($this->_params['calendar']);
+                        if (!$calendar->hasPermission(Horde_Auth::getAuth(), Horde_Perms::SHOW)) {
+                            return _("Permission Denied");
+                        }
+                    } catch (Exception $e) {
                     }
-                } catch (Exception $e) {
+                    $all_events = Kronolith::listEvents($startDate,
+                                                        $endDate,
+                                                        array($this->_params['calendar']),
+                                                        true, false, false);
                 }
-                $all_events = Kronolith::listEvents($startDate,
-                                                    $endDate,
-                                                    array($this->_params['calendar']),
-                                                    true, false, false);
             } else {
                 $all_events = Kronolith::listEvents($startDate,
                                                     $endDate,