Branch 'roundcubemail-plugins-kolab-format2-horde5' - plugins/calendar

Thomas Brüderli bruederli at kolabsys.com
Thu Sep 26 13:51:07 CEST 2013


 plugins/calendar/calendar_ui.js                 |   19 ++++++++++++++++++-
 plugins/calendar/drivers/kolab/kolab_driver.php |    1 +
 plugins/calendar/localization/de_CH.inc         |    1 +
 plugins/calendar/localization/de_DE.inc         |    1 +
 plugins/calendar/localization/en_US.inc         |    1 +
 5 files changed, 22 insertions(+), 1 deletion(-)

New commits:
commit 4c206f52842746e47e6d273fe430d77cba728aea
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Thu Sep 26 13:46:24 2013 +0200

    Correctly update calendar UI when deleting a calendar with sub-folders and show an according message if confirm dialog (#2283)

diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js
index 89e7fd9..5ac4eb0 100644
--- a/plugins/calendar/calendar_ui.js
+++ b/plugins/calendar/calendar_ui.js
@@ -1872,7 +1872,7 @@ function rcube_calendar_ui(settings)
 
     this.calendar_remove = function(calendar)
     {
-      if (confirm(rcmail.gettext('deletecalendarconfirm', 'calendar'))) {
+      if (confirm(rcmail.gettext(calendar.children ? 'deletecalendarconfirmrecursive' : 'deletecalendarconfirm', 'calendar'))) {
         rcmail.http_post('calendar', { action:'remove', c:{ id:calendar.id } });
         return true;
       }
@@ -1881,7 +1881,24 @@ function rcube_calendar_ui(settings)
 
     this.calendar_destroy_source = function(id)
     {
+      var delete_ids = [];
+
       if (this.calendars[id]) {
+        // find sub-calendars
+        if (this.calendars[id].children) {
+          for (var child_id in this.calendars) {
+            if (String(child_id).indexOf(id) == 0)
+              delete_ids.push(child_id);
+          }
+        }
+        else {
+          delete_ids.push(id);
+        }
+      }
+
+      // delete all calendars in the list
+      for (var i=0; i < delete_ids.length; i++) {
+        id = delete_ids[i];
         fc.fullCalendar('removeEventSource', this.calendars[id]);
         $(rcmail.get_folder_li(id, 'rcmlical')).remove();
         $('#edit-calendar option[value="'+id+'"]').remove();
diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php
index d81383c..22470ba 100644
--- a/plugins/calendar/drivers/kolab/kolab_driver.php
+++ b/plugins/calendar/drivers/kolab/kolab_driver.php
@@ -124,6 +124,7 @@ class kolab_driver extends calendar_driver
         'default'  => $cal->storage->default,
         'active'   => $cal->storage->is_subscribed(),
         'owner'    => $cal->get_owner(),
+        'children' => true,  // TODO: determine if that folder indeed has child folders
       );
     }
 
diff --git a/plugins/calendar/localization/de_CH.inc b/plugins/calendar/localization/de_CH.inc
index 0f0bafb..48c07ed 100644
--- a/plugins/calendar/localization/de_CH.inc
+++ b/plugins/calendar/localization/de_CH.inc
@@ -167,6 +167,7 @@ $labels['tabsharing'] = 'Freigabe';
 // messages
 $labels['deleteventconfirm'] = 'Möchten Sie diesen Termin wirklich löschen?';
 $labels['deletecalendarconfirm'] = 'Möchten Sie diesen Kalender mit allen Terminen wirklich löschen?';
+$labels['deletecalendarconfirmrecursive'] = 'Möchten Sie diesen Kalender mit allen Terminen und Unter-Kalendern wirklich löschen?';
 $labels['savingdata'] = 'Speichere Daten...';
 $labels['errorsaving'] = 'Fehler beim Speichern.';
 $labels['operationfailed'] = 'Die Aktion ist fehlgeschlagen.';
diff --git a/plugins/calendar/localization/de_DE.inc b/plugins/calendar/localization/de_DE.inc
index 579c656..cf9edcf 100644
--- a/plugins/calendar/localization/de_DE.inc
+++ b/plugins/calendar/localization/de_DE.inc
@@ -167,6 +167,7 @@ $labels['tabsharing'] = 'Freigabe';
 // messages
 $labels['deleteventconfirm'] = 'Möchten Sie diesen Termin wirklich löschen?';
 $labels['deletecalendarconfirm'] = 'Möchten Sie diesen Kalender mit allen Terminen wirklich löschen?';
+$labels['deletecalendarconfirmrecursive'] = 'Möchten Sie diesen Kalender mit allen Terminen und Unter-Kalendern wirklich löschen?';
 $labels['savingdata'] = 'Speichere Daten...';
 $labels['errorsaving'] = 'Fehler beim Speichern.';
 $labels['operationfailed'] = 'Die Aktion ist fehlgeschlagen.';
diff --git a/plugins/calendar/localization/en_US.inc b/plugins/calendar/localization/en_US.inc
index aa598be..71b5217 100644
--- a/plugins/calendar/localization/en_US.inc
+++ b/plugins/calendar/localization/en_US.inc
@@ -167,6 +167,7 @@ $labels['tabsharing'] = 'Sharing';
 // messages
 $labels['deleteventconfirm'] = 'Do you really want to delete this event?';
 $labels['deletecalendarconfirm'] = 'Do you really want to delete this calendar with all its events?';
+$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
 $labels['savingdata'] = 'Saving data...';
 $labels['errorsaving'] = 'Failed to save changes.';
 $labels['operationfailed'] = 'The requested operation failed.';




More information about the commits mailing list