From d5e87c3a653cbcbce3f863186ffddd5180150b84 Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Thu, 13 May 2010 15:26:05 -0400 Subject: [PATCH] Add listTimeObjects calendars to the choice of calendars to display in blocks. Ticket: 8530 --- kronolith/lib/Block/month.php | 38 +++++++++++++++++++++++++++++++------- kronolith/lib/Block/monthlist.php | 30 +++++++++++++++++++++++------- kronolith/lib/Block/summary.php | 36 +++++++++++++++++++++++++++--------- 3 files changed, 81 insertions(+), 23 deletions(-) diff --git a/kronolith/lib/Block/month.php b/kronolith/lib/Block/month.php index ff81f7849..3d871bbcf 100644 --- a/kronolith/lib/Block/month.php +++ b/kronolith/lib/Block/month.php @@ -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']); } diff --git a/kronolith/lib/Block/monthlist.php b/kronolith/lib/Block/monthlist.php index 2cffa5f43..2494e3dc6 100644 --- a/kronolith/lib/Block/monthlist.php +++ b/kronolith/lib/Block/monthlist.php @@ -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']); } diff --git a/kronolith/lib/Block/summary.php b/kronolith/lib/Block/summary.php index 310e2c08a..48d3ef987 100644 --- a/kronolith/lib/Block/summary.php +++ b/kronolith/lib/Block/summary.php @@ -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, -- 2.11.0