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 @@
+
+
+
+
',