diff --git a/ChangeLog b/ChangeLog index d8013d946..adc318c5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16,6 +16,8 @@ method to [SOGoAppointmentFolder importCalendar:]. * SoObjects/Appointments/SOGoWebAppointmentFolder.m (delete): Wrap the parent method to remove the calendar for the user's settings. + * SoObjects/Appointments/SOGoWebAppointmentFolder.m: Added some error + management, for when the url is invalid / not ical / etc. 2009-09-10 Wolfgang Sourdeau diff --git a/SoObjects/Appointments/SOGoWebAppointmentFolder.m b/SoObjects/Appointments/SOGoWebAppointmentFolder.m index 7459793d6..f6a65a2c1 100644 --- a/SoObjects/Appointments/SOGoWebAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoWebAppointmentFolder.m @@ -53,6 +53,10 @@ [[self ocsFolder] deleteAllContent]; imported = [self importCalendar: calendar]; } + else + { + imported = -1; + } } return imported; diff --git a/UI/Scheduler/UIxCalMainActions.m b/UI/Scheduler/UIxCalMainActions.m index f2889626b..24ae6ac95 100644 --- a/UI/Scheduler/UIxCalMainActions.m +++ b/UI/Scheduler/UIxCalMainActions.m @@ -62,8 +62,16 @@ if (folder) { imported = [folder loadWebCalendar: [r formValueForKey: @"url"]]; - [rc setObject: @"Web Calendar" forKey: @"displayname"]; - [rc setObject: name forKey: @"name"]; + + if (imported >= 0) + { + [rc setObject: @"Web Calendar" forKey: @"displayname"]; + [rc setObject: name forKey: @"name"]; + } + else + { + [folder delete]; + } [rc setObject: [NSNumber numberWithInt: imported] forKey: @"imported"]; } diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 793db201f..f4488ab83 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -1905,10 +1905,15 @@ function onCalendarWebAdd(event) { } function addWebCalendarCallback (http) { var data = http.responseText.evalJSON(true); - appendCalendar(data.displayname, "/" + data.name); - refreshEvents(); - refreshTasks(); - changeCalendarDisplay(); + if (data.imported > 0) { + appendCalendar(data.displayname, "/" + data.name); + refreshEvents(); + refreshTasks(); + changeCalendarDisplay(); + } + else { + alert (labels["An error occured while importing calendar."]); + } } function onCalendarExport(event) {