185 lines
No EOL
7.5 KiB
JavaScript
185 lines
No EOL
7.5 KiB
JavaScript
var CalendarExternalEvents = function() {
|
|
|
|
var initExternalEvents = function() {
|
|
$('#m_calendar_external_events .fc-event').each(function() {
|
|
|
|
// store data so the calendar knows to render an event upon drop
|
|
$(this).data('event', {
|
|
title: $.trim($(this).text()), // use the element's text as the event title
|
|
stick: true, // maintain when user navigates (see docs on the renderEvent method)
|
|
className: $(this).data('color'),
|
|
description: 'Lorem ipsum dolor eius mod tempor labore'
|
|
});
|
|
|
|
// make the event draggable using jQuery UI
|
|
$(this).draggable({
|
|
zIndex: 999,
|
|
revert: true, // will cause the event to go back to its
|
|
revertDuration: 0 // original position after the drag
|
|
});
|
|
});
|
|
}
|
|
|
|
var initCalendar = function() {
|
|
var todayDate = moment().startOf('day');
|
|
var YM = todayDate.format('YYYY-MM');
|
|
var YESTERDAY = todayDate.clone().subtract(1, 'day').format('YYYY-MM-DD');
|
|
var TODAY = todayDate.format('YYYY-MM-DD');
|
|
var TOMORROW = todayDate.clone().add(1, 'day').format('YYYY-MM-DD');
|
|
|
|
var calendar = $('#m_calendar');
|
|
|
|
calendar.fullCalendar({
|
|
header: {
|
|
left: 'prev,next today',
|
|
center: 'title',
|
|
right: 'month,agendaWeek,agendaDay,listWeek'
|
|
},
|
|
eventLimit: true, // allow "more" link when too many events
|
|
navLinks: true,
|
|
events: [
|
|
{
|
|
title: 'All Day Event',
|
|
start: YM + '-01',
|
|
description: 'Lorem ipsum dolor sit incid idunt ut',
|
|
className: "m-fc-event--success"
|
|
},
|
|
{
|
|
title: 'Reporting',
|
|
start: YM + '-14T13:30:00',
|
|
description: 'Lorem ipsum dolor incid idunt ut labore',
|
|
end: YM + '-14',
|
|
className: "m-fc-event--accent"
|
|
},
|
|
{
|
|
title: 'Company Trip',
|
|
start: YM + '-02',
|
|
description: 'Lorem ipsum dolor sit tempor incid',
|
|
end: YM + '-03',
|
|
className: "m-fc-event--primary"
|
|
},
|
|
{
|
|
title: 'Expo',
|
|
start: YM + '-03',
|
|
description: 'Lorem ipsum dolor sit tempor inci',
|
|
end: YM + '-05',
|
|
className: "m-fc-event--primary"
|
|
},
|
|
{
|
|
title: 'Dinner',
|
|
start: YM + '-12',
|
|
description: 'Lorem ipsum dolor sit amet, conse ctetur',
|
|
end: YM + '-10'
|
|
},
|
|
{
|
|
id: 999,
|
|
title: 'Repeating Event',
|
|
start: YM + '-09T16:00:00',
|
|
description: 'Lorem ipsum dolor sit ncididunt ut labore',
|
|
className: "m-fc-event--danger"
|
|
},
|
|
{
|
|
id: 1000,
|
|
title: 'Repeating Event',
|
|
description: 'Lorem ipsum dolor sit amet, labore',
|
|
start: YM + '-16T16:00:00'
|
|
},
|
|
{
|
|
title: 'Conference',
|
|
start: YESTERDAY,
|
|
end: TOMORROW,
|
|
description: 'Lorem ipsum dolor eius mod tempor labore',
|
|
className: "m-fc-event--accent"
|
|
},
|
|
{
|
|
title: 'Meeting',
|
|
start: TODAY + 'T10:30:00',
|
|
end: TODAY + 'T12:30:00',
|
|
description: 'Lorem ipsum dolor eiu idunt ut labore'
|
|
},
|
|
{
|
|
title: 'Lunch',
|
|
start: TODAY + 'T12:00:00',
|
|
className: "m-fc-event--info",
|
|
description: 'Lorem ipsum dolor sit amet, ut labore'
|
|
},
|
|
{
|
|
title: 'Meeting',
|
|
start: TODAY + 'T14:30:00',
|
|
className: "m-fc-event--warning",
|
|
description: 'Lorem ipsum conse ctetur adipi scing'
|
|
},
|
|
{
|
|
title: 'Happy Hour',
|
|
start: TODAY + 'T17:30:00',
|
|
className: "m-fc-event--metal",
|
|
description: 'Lorem ipsum dolor sit amet, conse ctetur'
|
|
},
|
|
{
|
|
title: 'Dinner',
|
|
start: TODAY + 'T20:00:00',
|
|
description: 'Lorem ipsum dolor sit ctetur adipi scing'
|
|
},
|
|
{
|
|
title: 'Birthday Party',
|
|
start: TOMORROW + 'T07:00:00',
|
|
className: "m-fc-event--primary",
|
|
description: 'Lorem ipsum dolor sit amet, scing'
|
|
},
|
|
{
|
|
title: 'Click for Google',
|
|
url: 'http://google.com/',
|
|
start: YM + '-28',
|
|
description: 'Lorem ipsum dolor sit amet, labore'
|
|
}
|
|
],
|
|
|
|
editable: true,
|
|
droppable: true, // this allows things to be dropped onto the calendar
|
|
|
|
drop: function(date, jsEvent, ui, resourceId) {
|
|
var sdate = $.fullCalendar.moment(date.format()); // Create a clone of the dropped date.
|
|
sdate.stripTime(); // The time should already be stripped but lets do a sanity check.
|
|
sdate.time('08:00:00'); // Set a default start time.
|
|
|
|
var edate = $.fullCalendar.moment(date.format()); // Create a clone.
|
|
edate.stripTime(); // Sanity check.
|
|
edate.time('12:00:00'); // Set a default end time.
|
|
|
|
$(this).data('event').start = sdate;
|
|
$(this).data('event').end = edate;
|
|
|
|
// is the "remove after drop" checkbox checked?
|
|
if ($('#m_calendar_external_events_remove').is(':checked')) {
|
|
// if so, remove the element from the "Draggable Events" list
|
|
$(this).remove();
|
|
}
|
|
},
|
|
|
|
eventRender: function(event, element) {
|
|
// default render
|
|
if (element.hasClass('fc-day-grid-event')) {
|
|
element.data('content', event.description);
|
|
element.data('placement', 'top');
|
|
mApp.initPopover(element);
|
|
} else if (element.hasClass('fc-time-grid-event')) {
|
|
element.find('.fc-title').append('<div class="fc-description">' + event.description + '</div>');
|
|
} else if (element.find('.fc-list-item-title').lenght !== 0) {
|
|
element.find('.fc-list-item-title').append('<div class="fc-description">' + event.description + '</div>');
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
return {
|
|
//main function to initiate the module
|
|
init: function() {
|
|
initExternalEvents();
|
|
initCalendar();
|
|
}
|
|
};
|
|
}();
|
|
|
|
jQuery(document).ready(function() {
|
|
CalendarExternalEvents.init();
|
|
}); |