Path: blob/master/web-gui/buildyourownbotnet/assets/js/fullcalendar/gcal.js
1293 views
/*!1* FullCalendar v1.6.4 Google Calendar Plugin2* Docs & License: http://arshaw.com/fullcalendar/3* (c) 2013 Adam Shaw4*/56(function($) {789var fc = $.fullCalendar;10var formatDate = fc.formatDate;11var parseISO8601 = fc.parseISO8601;12var addDays = fc.addDays;13var applyAll = fc.applyAll;141516fc.sourceNormalizers.push(function(sourceOptions) {17if (sourceOptions.dataType == 'gcal' ||18sourceOptions.dataType === undefined &&19(sourceOptions.url || '').match(/^(http|https):\/\/www.google.com\/calendar\/feeds\//)) {20sourceOptions.dataType = 'gcal';21if (sourceOptions.editable === undefined) {22sourceOptions.editable = false;23}24}25});262728fc.sourceFetchers.push(function(sourceOptions, start, end) {29if (sourceOptions.dataType == 'gcal') {30return transformOptions(sourceOptions, start, end);31}32});333435function transformOptions(sourceOptions, start, end) {3637var success = sourceOptions.success;38var data = $.extend({}, sourceOptions.data || {}, {39'start-min': formatDate(start, 'u'),40'start-max': formatDate(end, 'u'),41'singleevents': true,42'max-results': 999943});4445var ctz = sourceOptions.currentTimezone;46if (ctz) {47data.ctz = ctz = ctz.replace(' ', '_');48}4950return $.extend({}, sourceOptions, {51url: sourceOptions.url.replace(/\/basic$/, '/full') + '?alt=json-in-script&callback=?',52dataType: 'jsonp',53data: data,54startParam: false,55endParam: false,56success: function(data) {57var events = [];58if (data.feed.entry) {59$.each(data.feed.entry, function(i, entry) {60var startStr = entry['gd$when'][0]['startTime'];61var start = parseISO8601(startStr, true);62var end = parseISO8601(entry['gd$when'][0]['endTime'], true);63var allDay = startStr.indexOf('T') == -1;64var url;65$.each(entry.link, function(i, link) {66if (link.type == 'text/html') {67url = link.href;68if (ctz) {69url += (url.indexOf('?') == -1 ? '?' : '&') + 'ctz=' + ctz;70}71}72});73if (allDay) {74addDays(end, -1); // make inclusive75}76events.push({77id: entry['gCal$uid']['value'],78title: entry['title']['$t'],79url: url,80start: start,81end: end,82allDay: allDay,83location: entry['gd$where'][0]['valueString'],84description: entry['content']['$t']85});86});87}88var args = [events].concat(Array.prototype.slice.call(arguments, 1));89var res = applyAll(success, this, args);90if ($.isArray(res)) {91return res;92}93return events;94}95});9697}9899100// legacy101fc.gcalFeed = function(url, sourceOptions) {102return $.extend({}, sourceOptions, { url: url, dataType: 'gcal' });103};104105106})(jQuery);107108109