diff --git a/infolog/inc/class.infolog_export_ical.inc.php b/infolog/inc/class.infolog_export_ical.inc.php index 2a48d25a13..419aec0bc8 100644 --- a/infolog/inc/class.infolog_export_ical.inc.php +++ b/infolog/inc/class.infolog_export_ical.inc.php @@ -25,6 +25,7 @@ class infolog_export_ical extends infolog_export_csv { $options = $_definition->plugin_options; $this->bo = new infolog_bo(); $boical = new infolog_ical(); + $horde = new Horde_iCalendar(); $limit_exception = bo_merge::is_export_limit_excepted(); if (!$limit_exception) $export_limit = bo_merge::getExportLimit('infolog'); @@ -47,15 +48,17 @@ class infolog_export_ical extends infolog_export_csv { break; } - $ical = ''; + $horde->clear(); foreach($selection as $_selection) { $result = $boical->exportVTODO($_selection,'2.0','PUBLISH',false); + + // infolog_ical doesn't allow a nice call to get just the VTODO if($result) { - $ical .= $result; + $horde->parsevCalendar($result, 'VCALENDAR', 'utf-8', false); } } - fwrite($_stream, $ical); + fwrite($_stream, $horde->exportvCalendar()); } /** @@ -64,7 +67,7 @@ class infolog_export_ical extends infolog_export_csv { * @return string name */ public static function get_name() { - return lang('iCal export'); + return lang('Infolog iCal export'); } /** diff --git a/infolog/inc/class.infolog_import_ical.inc.php b/infolog/inc/class.infolog_import_ical.inc.php index 0fb9401f22..6bc1176472 100644 --- a/infolog/inc/class.infolog_import_ical.inc.php +++ b/infolog/inc/class.infolog_import_ical.inc.php @@ -116,7 +116,7 @@ class infolog_import_ical implements importexport_iface_import_plugin { * @return string name */ public static function get_name() { - return lang('iCal import'); + return lang('Infolog iCal import'); } /** diff --git a/infolog/inc/class.infolog_ui.inc.php b/infolog/inc/class.infolog_ui.inc.php index 854c8570f7..166b2b9c48 100644 --- a/infolog/inc/class.infolog_ui.inc.php +++ b/infolog/inc/class.infolog_ui.inc.php @@ -1222,14 +1222,20 @@ class infolog_ui if ($query['filter']) egw_cache::setSession('infolog', 'filter_reset_from', $query['filter']); return $this->index(array(),'sp',$checked,0); case 'ical': + // infolog_ical lets horde be auto-loaded, so it must go first $boical = new infolog_ical(); - $result = ''; - foreach($checked as $id) - { - $result .= $boical->exportVTODO($id,'2.0','PUBLISH',false); + $horde = new Horde_iCalendar(); + foreach($checked as $_selection) { + $result = $boical->exportVTODO($_selection,'2.0','PUBLISH',false); + + // infolog_ical doesn't allow a nice call to get just the VTODO + if($result) + { + $horde->parsevCalendar($result, 'VCALENDAR', 'utf-8', false); + } } - ExecMethod2('phpgwapi.browser.content_header','todo.ical','text/calendar'); - echo $result; + ExecMethod2('phpgwapi.browser.content_header','todo.ics','text/calendar'); + echo $horde->exportvCalendar(); common::egw_exit(); }