diff --git fullcalendar.views.js fullcalendar.views.js index a84da16..03e741c 100644 --- fullcalendar.views.js +++ fullcalendar.views.js @@ -2,84 +2,88 @@ Drupal.behaviors.fullCalendar = { attach: function(context) { - $('#fullcalendar-content').hide(); //hide the failover display - $('#fullcalendar').fullCalendar({ - defaultView: Drupal.settings.fullcalendar.defaultView, - theme: Drupal.settings.fullcalendar.theme, - header: { - left: Drupal.settings.fullcalendar.left, - center: Drupal.settings.fullcalendar.center, - right: Drupal.settings.fullcalendar.right - }, - eventClick: function(calEvent, jsEvent, view) { - if (Drupal.settings.fullcalendar.colorbox) { - // Open in colorbox if exists, else open in new window. - if ($.colorbox) { - $.colorbox({href:calEvent.url, iframe:true, width:'80%', height:'80%'}); + $('#fullcalendar-content').hide(); // Hide the failover display. + + if($('.fc-content').length === 0) { // Prevents the fullcalendar being rendered twice while loading colorbox. + $('#fullcalendar').fullCalendar({ + defaultView: Drupal.settings.fullcalendar.defaultView, + theme: Drupal.settings.fullcalendar.theme, + header: { + left: Drupal.settings.fullcalendar.left, + center: Drupal.settings.fullcalendar.center, + right: Drupal.settings.fullcalendar.right + }, + eventClick: function(calEvent, jsEvent, view) { + if (Drupal.settings.fullcalendar.colorbox) { + // Open in colorbox if exists, else open in new window. + if ($.colorbox) { + var url = calEvent.url + " div#content"; + $.colorbox({href:url, width:'800', height:'80%'}); + } else { + window.open(calEvent.url); + } } else { window.open(calEvent.url); } - } else { - window.open(calEvent.url); - } - return false; - }, - year: (Drupal.settings.fullcalendar.year) ? Drupal.settings.fullcalendar.year : undefined, - month: (Drupal.settings.fullcalendar.month) ? Drupal.settings.fullcalendar.month : undefined, - day: (Drupal.settings.fullcalendar.day) ? Drupal.settings.fullcalendar.day : undefined, - timeFormat: { - agenda: (Drupal.settings.fullcalendar.clock) ? 'HH:mm{ - HH:mm}' : Drupal.settings.fullcalendar.agenda, - '': (Drupal.settings.fullcalendar.clock) ? 'HH:mm' : 'h(:mm)t' - }, - axisFormat: (Drupal.settings.fullcalendar.clock) ? 'HH:mm' : 'h(:mm)tt', - weekMode: Drupal.settings.fullcalendar.weekMode, - firstDay: Drupal.settings.fullcalendar.firstDay, - monthNames: Drupal.settings.fullcalendar.monthNames, - monthNamesShort: Drupal.settings.fullcalendar.monthNamesShort, - dayNames: Drupal.settings.fullcalendar.dayNames, - dayNamesShort: Drupal.settings.fullcalendar.dayNamesShort, - allDayText: Drupal.settings.fullcalendar.allDayText, - buttonText: { - today: Drupal.settings.fullcalendar.todayString, - day: Drupal.settings.fullcalendar.dayString, - week: Drupal.settings.fullcalendar.weekString, - month: Drupal.settings.fullcalendar.monthString - }, - events: function(start, end, callback) { - var events = []; + return false; + }, + year: (Drupal.settings.fullcalendar.year) ? Drupal.settings.fullcalendar.year : undefined, + month: (Drupal.settings.fullcalendar.month) ? Drupal.settings.fullcalendar.month : undefined, + day: (Drupal.settings.fullcalendar.day) ? Drupal.settings.fullcalendar.day : undefined, + timeFormat: { + agenda: (Drupal.settings.fullcalendar.clock) ? 'HH:mm{ - HH:mm}' : Drupal.settings.fullcalendar.agenda, + '': (Drupal.settings.fullcalendar.clock) ? 'HH:mm' : 'h(:mm)t' + }, + axisFormat: (Drupal.settings.fullcalendar.clock) ? 'HH:mm' : 'h(:mm)tt', + weekMode: Drupal.settings.fullcalendar.weekMode, + firstDay: Drupal.settings.fullcalendar.firstDay, + monthNames: Drupal.settings.fullcalendar.monthNames, + monthNamesShort: Drupal.settings.fullcalendar.monthNamesShort, + dayNames: Drupal.settings.fullcalendar.dayNames, + dayNamesShort: Drupal.settings.fullcalendar.dayNamesShort, + allDayText: Drupal.settings.fullcalendar.allDayText, + buttonText: { + today: Drupal.settings.fullcalendar.todayString, + day: Drupal.settings.fullcalendar.dayString, + week: Drupal.settings.fullcalendar.weekString, + month: Drupal.settings.fullcalendar.monthString + }, + events: function(start, end, callback) { + var events = []; - $('.fullcalendar_event').each(function() { - $(this).find('.fullcalendar_event_details').each(function() { - events.push({ - field: $(this).attr('field'), - index: $(this).attr('index'), - nid: $(this).attr('nid'), - title: $(this).attr('title'), - start: $(this).attr('start'), - end: $(this).attr('end'), - url: $(this).attr('href'), - allDay: ($(this).attr('allDay') === '1'), - className: $(this).attr('cn'), - editable: $(this).attr('editable') + $('.fullcalendar_event').each(function() { + $(this).find('.fullcalendar_event_details').each(function() { + events.push({ + field: $(this).attr('field'), + index: $(this).attr('index'), + nid: $(this).attr('nid'), + title: $(this).attr('title'), + start: $(this).attr('start'), + end: $(this).attr('end'), + url: $(this).attr('href'), + allDay: ($(this).attr('allDay') === '1'), + className: $(this).attr('cn'), + editable: $(this).attr('editable') + }); }); }); - }); - callback(events); - }, - eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc) { - $.post(Drupal.settings.basePath + '/fullcalendar/ajax/update/drop/'+ event.nid, - 'field=' + event.field + '&index=' + event.index + '&day_delta=' + dayDelta + '&minute_delta=' + minuteDelta + '&all_day=' + allDay, - fullcalendarUpdate); - return false; - }, - eventResize: function(event, dayDelta, minuteDelta, revertFunc) { - $.post(Drupal.settings.basePath + '/fullcalendar/ajax/update/resize/' + event.nid, - 'field=' + event.field + '&index=' + event.index + '&day_delta=' + dayDelta + '&minute_delta=' + minuteDelta, - fullcalendarUpdate); - return false; - } - }); + callback(events); + }, + eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc) { + $.post(Drupal.settings.basePath + '/fullcalendar/ajax/update/drop/'+ event.nid, + 'field=' + event.field + '&index=' + event.index + '&day_delta=' + dayDelta + '&minute_delta=' + minuteDelta + '&all_day=' + allDay, + fullcalendarUpdate); + return false; + }, + eventResize: function(event, dayDelta, minuteDelta, revertFunc) { + $.post(Drupal.settings.basePath + '/fullcalendar/ajax/update/resize/' + event.nid, + 'field=' + event.field + '&index=' + event.index + '&day_delta=' + dayDelta + '&minute_delta=' + minuteDelta, + fullcalendarUpdate); + return false; + } + }); + } var fullcalendarUpdate = function(result) { if ($('#fullcalendar-status').text() === '') { @@ -95,7 +99,7 @@ return false; }); - //trigger a window resize so that calendar will redraw itself as it loads funny in some browsers occasionally + // Trigger a window resize so that calendar will redraw itself as it loads funny in some browsers occasionally. $(window).resize(); } };