diff --git a/app/assets/javascripts/controllers/admin/calendar.js.erb b/app/assets/javascripts/controllers/admin/calendar.js.erb index 85d95c1db..71fbd47b3 100644 --- a/app/assets/javascripts/controllers/admin/calendar.js.erb +++ b/app/assets/javascripts/controllers/admin/calendar.js.erb @@ -813,8 +813,35 @@ Application.Controllers.controller('AdminICalendarController', ['$scope', 'iCale * @param calendar */ $scope.delete = function (calendar) { - const idx = $scope.calendars.indexOf(calendar); - $scope.calendars.splice(idx, 1); + ICalendar.delete( + { id: calendar.id }, + function () { + // success + const idx = $scope.calendars.indexOf(calendar); + $scope.calendars.splice(idx, 1); + }, function (error) { + // failed + growl.error(_t('icalendar.delete_failed')); + console.error(error); + }); + } + + /** + * Asynchronously re-fetches the events from the given calendar + * @param calendar + */ + $scope.sync = function (calendar) { + ICalendar.sync( + { id: calendar.id }, + function () { + // success + growl.info(_t('icalendar.refresh')); + }, function (error) { + // failed + growl.error(_t('icalendar.sync_failed')); + console.error(error); + } + ) } } ]); diff --git a/app/assets/javascripts/services/icalendar.js b/app/assets/javascripts/services/icalendar.js index 21d30843e..1e01bd5e3 100644 --- a/app/assets/javascripts/services/icalendar.js +++ b/app/assets/javascripts/services/icalendar.js @@ -6,6 +6,11 @@ Application.Services.factory('ICalendar', ['$resource', function ($resource) { events: { method: 'GET', url: '/api/i_calendar/events' + }, + sync: { + method: 'POST', + url: '/api/i_calendar/:id/sync', + params: { id: '@id' } } } ); diff --git a/app/assets/templates/admin/calendar/icalendar.html b/app/assets/templates/admin/calendar/icalendar.html index fec55b748..6c9411d48 100644 --- a/app/assets/templates/admin/calendar/icalendar.html +++ b/app/assets/templates/admin/calendar/icalendar.html @@ -33,7 +33,7 @@