UNPKG

sheercms

Version:

Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.

114 lines (92 loc) 4.42 kB
app.controller('CalendarViewController', function($scope, $compile, ContentService) { $scope.viewData = { useCalendarCache: true }; $scope.$on('refreshItems', function(e) { $scope.viewData.useCalendarCache = false; $("#itemCalendar").fullCalendar('refetchEvents'); }); /* event source that calls a function on every view switch */ $scope.eventsF = function (start, end, timezone, callback) { //get the content for this date range ContentService.getItemsByDate($scope.data.group._id, start, end, $scope.viewData.useCalendarCache).then(function(data) { $scope.viewData.useCalendarCache = true; if (data.message && data.message.length > 0) $scope.setMessage(data.message, data.success ? "alert-danger" : "alert-success"); callback(data.events); }); }; $scope.eventSources = [$scope.eventsF]; $scope.calendarDayClick = function(date, jsEvent, view) { if(!$(jsEvent.target).is('a')) { var startDate = moment.utc(date); var endDate = moment.utc(date); if ($scope.calendarConfig.view === 'month') endDate = endDate.add('d', 1); else endDate = endDate.add('m', 30); //convert the dates to fix time zone issue var start = ContentService.getDateNoZone(startDate); var end = ContentService.getDateNoZone(endDate); $scope.showNewItem(start, end); } }; $scope.calendarEventClick = function( event, allDay, jsEvent, view ){ }; $scope.calendarEventDrop = function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view){ ContentService.changeItemDates(event.id, event.start, event.end, $scope.data.group._id).then(function(data) { $scope.setMessage("Content item dates updated successfully!", "alert-success", true); }); }; $scope.calendarEventResize = function(event, dayDelta, minuteDelta, revertFunc, jsEvent, ui, view ){ ContentService.changeItemDates(event.id, event.start, event.end, $scope.data.group._id).then(function(data) { $scope.setMessage("Content item dates updated successfully!", "alert-success", true); }); }; /* Change View */ $scope.changeCalendarView = function(view,calendar) { $scope.calendarConfig.view = view; calendar.fullCalendar('changeView',view); }; /* Change View */ $scope.renderCalender = function(calendar) { calendar.fullCalendar('render'); }; $scope.calendarEventAfterRender = function(event, element, view) { //build the tooltip content var html = '<div class="event-tip tip-box">' + ' <div class="tip-title"><span>' + event.title + '</div>' + ' <div><label>Start:</label><span>' + event.start.format("M/D/YYYY h:mm A") + '</span></div>' + ' <div><label>End:</label><span>' + event.end.format("M/D/YYYY h:mm A") + '</span></div>' + ' <div><label>Status:</label><span>' + event.statusText + '</span></div>' + ' <div class="tip-buttons">' + ' <a href="javascript:void(0);" ng-click="editItem(\'' + event.id + '\')" class="fa fa-pencil" title="Edit Properties"></a>'; if (event.status != 'D') { html += '<a href="javascript:void(0);" ng-click="publishItem(\'' + event.id + '\')" class="fa fa-cloud-upload" title="Publish"></a>' + '<a href="javascript:void(0);" ng-click="deleteItem(\'' + event.id + '\')" class="fa fa-trash-o" title="Delete"></a>'; } html += '</div></div>'; //assign the tooltip to the element $(element).tooltipster({ content: $($compile(html)($scope)), trigger: 'click' }); }; $scope.calendarConfig = { calendar: { height: 700, editable: true, header: { left: 'title', center: '', right: 'today prev,next' }, eventClick: $scope.calendarEventClick, eventDrop: $scope.calendarEventDrop, eventResize: $scope.calendarEventResize, dayClick: $scope.calendarDayClick, eventAfterRender: $scope.calendarEventAfterRender }, view: 'month' }; });