diff --git a/kronolith/data.php b/kronolith/data.php index 61aeeb5ab20..9cfbc5dbd9a 100644 --- a/kronolith/data.php +++ b/kronolith/data.php @@ -71,6 +71,7 @@ switch ($actionID) { case Horde_Data::IMPORT_FILE: +case Horde_Data::IMPORT_URL: $storage->set('import_cal', Horde_Util::getFormData('importCal')); $storage->set('purge', Horde_Util::getFormData('purge')); break; @@ -79,9 +80,15 @@ if ($import_format) { $data = null; try { - $data = $injector->getInstance('Horde_Core_Factory_Data')->create($import_format, array('cleanup' => array($app_ob, 'cleanupData'))); + $data = $injector + ->getInstance('Horde_Core_Factory_Data') + ->create( + $import_format, + array('cleanup' => array($app_ob, 'cleanupData')) + ); - if ($actionID == Horde_Data::IMPORT_FILE) { + if ($actionID == Horde_Data::IMPORT_FILE || + $actionID == Horde_Data::IMPORT_URL) { $cleanup = true; try { if (!in_array($storage->get('import_cal'), array_keys(Kronolith::listCalendars(Horde_Perms::EDIT)))) { @@ -106,11 +113,21 @@ $next_step = $data->cleanup(); } else { $notification->push(_("This file format is not supported."), 'horde.error'); - $next_step = Horde_Data::IMPORT_FILE; + $next_step = in_array( + $actionID, + array(Horde_Data::IMPORT_FILE, Horde_Data::IMPORT_URL) + ) + ? $actionID + : Horde_Data::IMPORT_FILE; } } } +if (Horde_Util::getFormData('import_ajax')) { + $page_output->includeScriptFiles(); + $page_output->addInlineScript('(function(window){window.KronolithCore.loading--;if(!window.KronolithCore.loading)window.$(\'kronolithLoading\').hide();})(window.parent)'); +} + /* We have a final result set. */ if (is_array($next_step)) { $events = array(); @@ -211,8 +228,7 @@ $file_types[$storage->get('format')]), 'horde.success'); } if (Horde_Util::getFormData('import_ajax')) { - $page_output->includeScriptFiles(); - $page_output->addInlineScript('(function(window){window.KronolithCore.loading--;if(!window.KronolithCore.loading)window.$(\'kronolithLoading\').hide();window.KronolithCore.loadCalendar(\'' . $type . '\', \'' . $calendar . '\');})(window.parent)'); + $page_output->addInlineScript('(function(window){window.KronolithCore.loadCalendar(\'' . $type . '\', \'' . $calendar . '\');})(window.parent)'); } $next_step = $data->cleanup(); } diff --git a/kronolith/docs/CHANGES b/kronolith/docs/CHANGES index ef2d3dc35a5..40c866a023b 100644 --- a/kronolith/docs/CHANGES +++ b/kronolith/docs/CHANGES @@ -2,6 +2,7 @@ v4.3.0-git ---------- +[jan] Add importing of calendar data from a URL. ----------- diff --git a/kronolith/js/kronolith.js b/kronolith/js/kronolith.js index ae63814dbe3..426d929cd90 100644 --- a/kronolith/js/kronolith.js +++ b/kronolith/js/kronolith.js @@ -3769,7 +3769,13 @@ KronolithCore = { delete data.calendar; } if (r.saved) { - if ($F('kronolithCalendarinternalImport')) { + if ($F('kronolithCalendarinternalImport') || + $F('kronolithCalendarinternalImportUrl')) { + $('kronolithCalendarinternalImportAction').setValue( + $F('kronolithCalendarinternalImport') + ? Kronolith.conf.import_file + : Kronolith.conf.import_url + ); HordeCore.notify(Kronolith.text.import_warning, 'horde.message'); this.loading++; $('kronolithLoading').show(); diff --git a/kronolith/lib/Ajax.php b/kronolith/lib/Ajax.php index 9c9cbd7934c..7edbe762c0c 100644 --- a/kronolith/lib/Ajax.php +++ b/kronolith/lib/Ajax.php @@ -97,6 +97,8 @@ protected function _addBaseVars() Horde_Nls::getLangInfo(D_FMT) ), 'time_format' => $prefs->getValue('twentyFour') ? 'HH:mm' : 'hh:mm tt', + 'import_file' => Horde_Data::IMPORT_FILE, + 'import_url' => Horde_Data::IMPORT_URL, 'show_time' => Kronolith::viewShowTime(), 'default_alarm' => intval($prefs->getValue('default_alarm')), 'status' => array( diff --git a/kronolith/package.xml b/kronolith/package.xml index 776b340c59c..26faa0e4299 100644 --- a/kronolith/package.xml +++ b/kronolith/package.xml @@ -33,7 +33,7 @@ GPL-2.0 -* +* [jan] Add importing of calendar data from a URL. @@ -2383,7 +2383,7 @@ 2014-06-04 GPL-2.0 -* +* [jan] Add importing of calendar data from a URL. diff --git a/kronolith/templates/chunks/calendar.php b/kronolith/templates/chunks/calendar.php index f79b2e43931..2e0da91284e 100644 --- a/kronolith/templates/chunks/calendar.php +++ b/kronolith/templates/chunks/calendar.php @@ -43,7 +43,7 @@ - + @@ -144,6 +144,10 @@
+
+ +
+
',