fullcalendar
Advanced tools
Comparing version 3.4.0 to 3.5.0
v3.5.0 (2017-08-30) | ||
------------------- | ||
Features: | ||
- Bootstrap 3 theme support (#2334, #3566) | ||
- via `themeSystem: 'bootstrap3'` (the `theme` option is deprecated) | ||
- new `bootstrapGlyphicons` option | ||
- jQuery UI "Cupertino" theme no longer included in zip archive | ||
- improved theme switcher on demo page (#1436) | ||
(big thanks to @joankaradimov) | ||
- 25% event rendering performance improvement across the board (#2524) | ||
- console message for unknown method/calendar (#3253) | ||
- Serbian cyrilic/latin (#3656) | ||
- available via Packagist (#2999, #3617) | ||
Bugfixes: | ||
- slot time label invisible when minTime starts out of alignment (#2786) | ||
- bug with inverse-background event rendering when out of range (#3652) | ||
- wrongly disabled prev/next when current date outside of validRange (#3686, #3651) | ||
- updateEvent, error when changing allDay from false to true (#3518) | ||
- updateEvent doesn't support ID changes (#2928) | ||
- Promise then method doesn't forward result (#3744) | ||
- Korean typo (#3693) | ||
v3.4.0 (2017-04-27) | ||
------------------- | ||
- composer.js for Composer (PHP package manager) (#3617) | ||
- composer.json for Composer (PHP package manager) (#3617) | ||
- fix toISOString for locales with non-trivial postformatting (#3619) | ||
@@ -7,0 +32,0 @@ - fix for nested inverse-background events (#3609) |
## Reporting Bugs | ||
Each bug report MUST have a [JSFiddle/JSBin] recreation before any work can begin. [further instructions »](http://fullcalendar.io/wiki/Reporting-Bugs/) | ||
Each bug report MUST have a [Codepen/JSFiddle] recreation before any work can begin. [further instructions »](http://fullcalendar.io/wiki/Reporting-Bugs/) | ||
@@ -118,3 +118,3 @@ | ||
[JSFiddle/JSBin]: http://fullcalendar.io/wiki/Reporting-Bugs/ | ||
[Codepen/JSFiddle]: http://fullcalendar.io/wiki/Reporting-Bugs/ | ||
[Issue Tracker]: https://github.com/fullcalendar/fullcalendar/issues | ||
@@ -121,0 +121,0 @@ [Using Pull Requests]: https://help.github.com/articles/using-pull-requests/ |
332
dist/gcal.js
/*! | ||
* FullCalendar v3.4.0 Google Calendar Plugin | ||
* FullCalendar v3.5.0 Google Calendar Plugin | ||
* Docs & License: https://fullcalendar.io/ | ||
* (c) 2017 Adam Shaw | ||
*/ | ||
(function(factory) { | ||
@@ -20,150 +20,244 @@ if (typeof define === 'function' && define.amd) { | ||
var API_BASE = 'https://www.googleapis.com/calendar/v3/calendars'; | ||
var FC = $.fullCalendar; | ||
var Promise = FC.Promise; | ||
var EventSource = FC.EventSource; | ||
var JsonFeedEventSource = FC.JsonFeedEventSource; | ||
var EventSourceParser = FC.EventSourceParser; | ||
var applyAll = FC.applyAll; | ||
;; | ||
FC.sourceNormalizers.push(function(sourceOptions) { | ||
var googleCalendarId = sourceOptions.googleCalendarId; | ||
var url = sourceOptions.url; | ||
var match; | ||
var GcalEventSource = EventSource.extend({ | ||
// if the Google Calendar ID hasn't been explicitly defined | ||
if (!googleCalendarId && url) { | ||
// TODO: eventually remove "googleCalendar" prefix (API-breaking) | ||
googleCalendarApiKey: null, | ||
googleCalendarId: null, | ||
googleCalendarError: null, // optional function | ||
ajaxSettings: null, | ||
// detect if the ID was specified as a single string. | ||
// will match calendars like "asdf1234@calendar.google.com" in addition to person email calendars. | ||
if (/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(url)) { | ||
googleCalendarId = url; | ||
fetch: function(start, end, timezone) { | ||
var _this = this; | ||
var url = this.buildUrl(); | ||
var requestParams = this.buildRequestParams(start, end, timezone); | ||
var ajaxSettings = this.ajaxSettings; | ||
var onSuccess = ajaxSettings.success; | ||
if (!requestParams) { // could have failed | ||
return Promise.reject(); | ||
} | ||
// try to scrape it out of a V1 or V3 API feed URL | ||
else if ( | ||
(match = /^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(url)) || | ||
(match = /^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(url)) | ||
) { | ||
googleCalendarId = decodeURIComponent(match[1]); | ||
} | ||
if (googleCalendarId) { | ||
sourceOptions.googleCalendarId = googleCalendarId; | ||
return Promise.construct(function(onResolve, onReject) { | ||
$.ajax($.extend( | ||
{}, // destination | ||
JsonFeedEventSource.AJAX_DEFAULTS, | ||
ajaxSettings, | ||
{ | ||
url: url, | ||
data: requestParams, | ||
success: function(responseData) { | ||
var rawEventDefs; | ||
var successRes; | ||
if (responseData.error) { | ||
_this.reportError('Google Calendar API: ' + responseData.error.message, responseData.error.errors); | ||
onReject(); | ||
} | ||
else if (responseData.items) { | ||
rawEventDefs = _this.gcalItemsToRawEventDefs( | ||
responseData.items, | ||
requestParams.timeZone | ||
); | ||
successRes = applyAll( | ||
onSuccess, | ||
this, // forward `this` | ||
// call the success handler(s) and allow it to return a new events array | ||
[ rawEventDefs ].concat(Array.prototype.slice.call(arguments, 1)) | ||
); | ||
if ($.isArray(successRes)) { | ||
rawEventDefs = successRes; | ||
} | ||
onResolve(_this.parseEventDefs(rawEventDefs)); | ||
} | ||
} | ||
} | ||
)); | ||
}); | ||
}, | ||
gcalItemsToRawEventDefs: function(items, gcalTimezone) { | ||
var _this = this; | ||
return items.map(function(item) { | ||
return _this.gcalItemToRawEventDef(item, gcalTimezone); | ||
}); | ||
}, | ||
gcalItemToRawEventDef: function(item, gcalTimezone) { | ||
var url = item.htmlLink || null; | ||
// make the URLs for each event show times in the correct timezone | ||
if (url && gcalTimezone) { | ||
url = injectQsComponent(url, 'ctz=' + gcalTimezone); | ||
} | ||
} | ||
return { | ||
id: item.id, | ||
title: item.summary, | ||
start: item.start.dateTime || item.start.date, // try timed. will fall back to all-day | ||
end: item.end.dateTime || item.end.date, // same | ||
url: url, | ||
location: item.location, | ||
description: item.description | ||
}; | ||
}, | ||
if (googleCalendarId) { // is this a Google Calendar? | ||
// make each Google Calendar source uneditable by default | ||
if (sourceOptions.editable == null) { | ||
sourceOptions.editable = false; | ||
buildUrl: function() { | ||
return GcalEventSource.API_BASE + '/' + | ||
encodeURIComponent(this.googleCalendarId) + | ||
'/events?callback=?'; // jsonp | ||
}, | ||
buildRequestParams: function(start, end, timezone) { | ||
var apiKey = this.googleCalendarApiKey || this.calendar.opt('googleCalendarApiKey'); | ||
var params; | ||
if (!apiKey) { | ||
this.reportError("Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"); | ||
return null; | ||
} | ||
// We want removeEventSource to work, but it won't know about the googleCalendarId primitive. | ||
// Shoehorn it into the url, which will function as the unique primitive. Won't cause side effects. | ||
// This hack is obsolete since 2.2.3, but keep it so this plugin file is compatible with old versions. | ||
sourceOptions.url = googleCalendarId; | ||
} | ||
}); | ||
// The API expects an ISO8601 datetime with a time and timezone part. | ||
// Since the calendar's timezone offset isn't always known, request the date in UTC and pad it by a day on each | ||
// side, guaranteeing we will receive all events in the desired range, albeit a superset. | ||
// .utc() will set a zone and give it a 00:00:00 time. | ||
if (!start.hasZone()) { | ||
start = start.clone().utc().add(-1, 'day'); | ||
} | ||
if (!end.hasZone()) { | ||
end = end.clone().utc().add(1, 'day'); | ||
} | ||
params = $.extend( | ||
this.ajaxSettings.data || {}, | ||
{ | ||
key: apiKey, | ||
timeMin: start.format(), | ||
timeMax: end.format(), | ||
singleEvents: true, | ||
maxResults: 9999 | ||
} | ||
); | ||
FC.sourceFetchers.push(function(sourceOptions, start, end, timezone) { | ||
if (sourceOptions.googleCalendarId) { | ||
return transformOptions(sourceOptions, start, end, timezone, this); // `this` is the calendar | ||
} | ||
}); | ||
if (timezone && timezone !== 'local') { | ||
// when sending timezone names to Google, only accepts underscores, not spaces | ||
params.timeZone = timezone.replace(' ', '_'); | ||
} | ||
return params; | ||
}, | ||
function transformOptions(sourceOptions, start, end, timezone, calendar) { | ||
var url = API_BASE + '/' + encodeURIComponent(sourceOptions.googleCalendarId) + '/events?callback=?'; // jsonp | ||
var apiKey = sourceOptions.googleCalendarApiKey || calendar.opt('googleCalendarApiKey'); | ||
var success = sourceOptions.success; | ||
var data; | ||
var timezoneArg; // populated when a specific timezone. escaped to Google's liking | ||
function reportError(message, apiErrorObjs) { | ||
reportError: function(message, apiErrorObjs) { | ||
var calendar = this.calendar; | ||
var calendarOnError = calendar.opt('googleCalendarError'); | ||
var errorObjs = apiErrorObjs || [ { message: message } ]; // to be passed into error handlers | ||
// call error handlers | ||
(sourceOptions.googleCalendarError || $.noop).apply(calendar, errorObjs); | ||
(calendar.opt('googleCalendarError') || $.noop).apply(calendar, errorObjs); | ||
if (this.googleCalendarError) { | ||
this.googleCalendarError.apply(calendar, errorObjs); | ||
} | ||
if (calendarOnError) { | ||
calendarOnError.apply(calendar, errorObjs); | ||
} | ||
// print error to debug console | ||
FC.warn.apply(null, [ message ].concat(apiErrorObjs || [])); | ||
} | ||
}, | ||
if (!apiKey) { | ||
reportError("Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"); | ||
return {}; // an empty source to use instead. won't fetch anything. | ||
getPrimitive: function() { | ||
return this.googleCalendarId; | ||
}, | ||
applyManualRawProps: function(rawProps) { | ||
var superSuccess = EventSource.prototype.applyManualRawProps.apply(this, arguments); | ||
var googleCalendarId = rawProps.googleCalendarId; | ||
if (googleCalendarId == null && rawProps.url) { | ||
googleCalendarId = parseGoogleCalendarId(rawProps.url); | ||
} | ||
if (googleCalendarId != null) { | ||
this.googleCalendarId = googleCalendarId; | ||
return superSuccess; | ||
} | ||
return false; | ||
}, | ||
applyOtherRawProps: function(rawProps) { | ||
this.ajaxSettings = rawProps; | ||
} | ||
// The API expects an ISO8601 datetime with a time and timezone part. | ||
// Since the calendar's timezone offset isn't always known, request the date in UTC and pad it by a day on each | ||
// side, guaranteeing we will receive all events in the desired range, albeit a superset. | ||
// .utc() will set a zone and give it a 00:00:00 time. | ||
if (!start.hasZone()) { | ||
start = start.clone().utc().add(-1, 'day'); | ||
}); | ||
GcalEventSource.API_BASE = 'https://www.googleapis.com/calendar/v3/calendars'; | ||
GcalEventSource.allowRawProps({ | ||
// manually process... | ||
url: false, | ||
googleCalendarId: false, | ||
// automatically transfer... | ||
googleCalendarApiKey: true, | ||
googleCalendarError: true | ||
}); | ||
GcalEventSource.parse = function(rawInput, calendar) { | ||
var rawProps; | ||
if (typeof rawInput === 'object') { // long form. might fail in applyManualRawProps | ||
rawProps = rawInput; | ||
} | ||
if (!end.hasZone()) { | ||
end = end.clone().utc().add(1, 'day'); | ||
else if (typeof rawInput === 'string') { // short form | ||
rawProps = { url: rawInput }; // url will be parsed with parseGoogleCalendarId | ||
} | ||
// when sending timezone names to Google, only accepts underscores, not spaces | ||
if (timezone && timezone != 'local') { | ||
timezoneArg = timezone.replace(' ', '_'); | ||
if (rawProps) { | ||
return EventSource.parse.call(this, rawProps, calendar); | ||
} | ||
data = $.extend({}, sourceOptions.data || {}, { | ||
key: apiKey, | ||
timeMin: start.format(), | ||
timeMax: end.format(), | ||
timeZone: timezoneArg, | ||
singleEvents: true, | ||
maxResults: 9999 | ||
}); | ||
return false; | ||
}; | ||
return $.extend({}, sourceOptions, { | ||
googleCalendarId: null, // prevents source-normalizing from happening again | ||
url: url, | ||
data: data, | ||
startParam: false, // `false` omits this parameter. we already included it above | ||
endParam: false, // same | ||
timezoneParam: false, // same | ||
success: function(data) { | ||
var events = []; | ||
var successArgs; | ||
var successRes; | ||
if (data.error) { | ||
reportError('Google Calendar API: ' + data.error.message, data.error.errors); | ||
} | ||
else if (data.items) { | ||
$.each(data.items, function(i, entry) { | ||
var url = entry.htmlLink || null; | ||
function parseGoogleCalendarId(url) { | ||
var match; | ||
// make the URLs for each event show times in the correct timezone | ||
if (timezoneArg && url !== null) { | ||
url = injectQsComponent(url, 'ctz=' + timezoneArg); | ||
} | ||
events.push({ | ||
id: entry.id, | ||
title: entry.summary, | ||
start: entry.start.dateTime || entry.start.date, // try timed. will fall back to all-day | ||
end: entry.end.dateTime || entry.end.date, // same | ||
url: url, | ||
location: entry.location, | ||
description: entry.description | ||
}); | ||
}); | ||
// call the success handler(s) and allow it to return a new events array | ||
successArgs = [ events ].concat(Array.prototype.slice.call(arguments, 1)); // forward other jq args | ||
successRes = applyAll(success, this, successArgs); | ||
if ($.isArray(successRes)) { | ||
return successRes; | ||
} | ||
} | ||
return events; | ||
} | ||
}); | ||
// detect if the ID was specified as a single string. | ||
// will match calendars like "asdf1234@calendar.google.com" in addition to person email calendars. | ||
if (/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(url)) { | ||
return url; | ||
} | ||
// try to scrape it out of a V1 or V3 API feed URL | ||
else if ( | ||
(match = /^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(url)) || | ||
(match = /^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(url)) | ||
) { | ||
return decodeURIComponent(match[1]); | ||
} | ||
} | ||
@@ -181,2 +275,10 @@ | ||
// expose | ||
EventSourceParser.registerClass(GcalEventSource); | ||
FC.GcalEventSource = GcalEventSource; | ||
;; | ||
}); |
/*! | ||
* FullCalendar v3.4.0 Google Calendar Plugin | ||
* FullCalendar v3.5.0 Google Calendar Plugin | ||
* Docs & License: https://fullcalendar.io/ | ||
* (c) 2017 Adam Shaw | ||
*/ | ||
!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){function a(a,t,d,c,i){function s(o,r){var l=r||[{message:o}];(a.googleCalendarError||e.noop).apply(i,l),(i.opt("googleCalendarError")||e.noop).apply(i,l),n.warn.apply(null,[o].concat(r||[]))}var u,g,p=r+"/"+encodeURIComponent(a.googleCalendarId)+"/events?callback=?",m=a.googleCalendarApiKey||i.opt("googleCalendarApiKey"),f=a.success;return m?(t.hasZone()||(t=t.clone().utc().add(-1,"day")),d.hasZone()||(d=d.clone().utc().add(1,"day")),c&&"local"!=c&&(g=c.replace(" ","_")),u=e.extend({},a.data||{},{key:m,timeMin:t.format(),timeMax:d.format(),timeZone:g,singleEvents:!0,maxResults:9999}),e.extend({},a,{googleCalendarId:null,url:p,data:u,startParam:!1,endParam:!1,timezoneParam:!1,success:function(a){var r,n,t=[];if(a.error)s("Google Calendar API: "+a.error.message,a.error.errors);else if(a.items&&(e.each(a.items,function(e,a){var r=a.htmlLink||null;g&&null!==r&&(r=o(r,"ctz="+g)),t.push({id:a.id,title:a.summary,start:a.start.dateTime||a.start.date,end:a.end.dateTime||a.end.date,url:r,location:a.location,description:a.description})}),r=[t].concat(Array.prototype.slice.call(arguments,1)),n=l(f,this,r),e.isArray(n)))return n;return t}})):(s("Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"),{})}function o(e,a){return e.replace(/(\?.*?)?(#|$)/,function(e,o,r){return(o?o+"&":"?")+a+r})}var r="https://www.googleapis.com/calendar/v3/calendars",n=e.fullCalendar,l=n.applyAll;n.sourceNormalizers.push(function(e){var a,o=e.googleCalendarId,r=e.url;!o&&r&&(/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(r)?o=r:((a=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(r))||(a=/^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(r)))&&(o=decodeURIComponent(a[1])),o&&(e.googleCalendarId=o)),o&&(null==e.editable&&(e.editable=!1),e.url=o)}),n.sourceFetchers.push(function(e,o,r,n){if(e.googleCalendarId)return a(e,o,r,n,this)})}); | ||
!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){function r(e){var r;return/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(e)?e:(r=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(e))||(r=/^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(e))?decodeURIComponent(r[1]):void 0}function a(e,r){return e.replace(/(\?.*?)?(#|$)/,function(e,a,t){return(a?a+"&":"?")+r+t})}var t=e.fullCalendar,o=t.Promise,n=t.EventSource,l=t.JsonFeedEventSource,i=t.EventSourceParser,s=t.applyAll,c=n.extend({googleCalendarApiKey:null,googleCalendarId:null,googleCalendarError:null,ajaxSettings:null,fetch:function(r,a,t){var n=this,i=this.buildUrl(),c=this.buildRequestParams(r,a,t),u=this.ajaxSettings,d=u.success;return c?o.construct(function(r,a){e.ajax(e.extend({},l.AJAX_DEFAULTS,u,{url:i,data:c,success:function(t){var o,l;t.error?(n.reportError("Google Calendar API: "+t.error.message,t.error.errors),a()):t.items&&(o=n.gcalItemsToRawEventDefs(t.items,c.timeZone),l=s(d,this,[o].concat(Array.prototype.slice.call(arguments,1))),e.isArray(l)&&(o=l),r(n.parseEventDefs(o)))}}))}):o.reject()},gcalItemsToRawEventDefs:function(e,r){var a=this;return e.map(function(e){return a.gcalItemToRawEventDef(e,r)})},gcalItemToRawEventDef:function(e,r){var t=e.htmlLink||null;return t&&r&&(t=a(t,"ctz="+r)),{id:e.id,title:e.summary,start:e.start.dateTime||e.start.date,end:e.end.dateTime||e.end.date,url:t,location:e.location,description:e.description}},buildUrl:function(){return c.API_BASE+"/"+encodeURIComponent(this.googleCalendarId)+"/events?callback=?"},buildRequestParams:function(r,a,t){var o,n=this.googleCalendarApiKey||this.calendar.opt("googleCalendarApiKey");return n?(r.hasZone()||(r=r.clone().utc().add(-1,"day")),a.hasZone()||(a=a.clone().utc().add(1,"day")),o=e.extend(this.ajaxSettings.data||{},{key:n,timeMin:r.format(),timeMax:a.format(),singleEvents:!0,maxResults:9999}),t&&"local"!==t&&(o.timeZone=t.replace(" ","_")),o):(this.reportError("Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"),null)},reportError:function(e,r){var a=this.calendar,o=a.opt("googleCalendarError"),n=r||[{message:e}];this.googleCalendarError&&this.googleCalendarError.apply(a,n),o&&o.apply(a,n),t.warn.apply(null,[e].concat(r||[]))},getPrimitive:function(){return this.googleCalendarId},applyManualRawProps:function(e){var a=n.prototype.applyManualRawProps.apply(this,arguments),t=e.googleCalendarId;return null==t&&e.url&&(t=r(e.url)),null!=t&&(this.googleCalendarId=t,a)},applyOtherRawProps:function(e){this.ajaxSettings=e}});c.API_BASE="https://www.googleapis.com/calendar/v3/calendars",c.allowRawProps({url:!1,googleCalendarId:!1,googleCalendarApiKey:!0,googleCalendarError:!0}),c.parse=function(e,r){var a;return"object"==typeof e?a=e:"string"==typeof e&&(a={url:e}),!!a&&n.parse.call(this,a,r)},i.registerClass(c),t.GcalEventSource=c}); |
@@ -1,1 +0,1 @@ | ||
!function(e){"function"==typeof define&&define.amd?define(["jquery","moment"],e):"object"==typeof exports?module.exports=e(require("jquery"),require("moment")):e(jQuery,moment)}(function(e,t){!function(){t.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,d){return e<12?"오전":"오후"}})}(),e.fullCalendar.datepickerLocale("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),e.fullCalendar.locale("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개",noEventsMessage:"일정이 표시 없습니다"})}); | ||
!function(e){"function"==typeof define&&define.amd?define(["jquery","moment"],e):"object"==typeof exports?module.exports=e(require("jquery"),require("moment")):e(jQuery,moment)}(function(e,t){!function(){t.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,d){return e<12?"오전":"오후"}})}(),e.fullCalendar.datepickerLocale("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),e.fullCalendar.locale("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개",noEventsMessage:"일정이 없습니다"})}); |
@@ -1,1 +0,1 @@ | ||
!function(e){"function"==typeof define&&define.amd?define(["jquery","moment"],e):"object"==typeof exports?module.exports=e(require("jquery"),require("moment")):e(jQuery,moment)}(function(e,t){!function(){var e={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(t,a,r){var s=e.words[r];return 1===r.length?a?s[0]:s[1]:t+" "+e.correctGrammaticalCase(t,s)}};t.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(),e.fullCalendar.datepickerLocale("sr-cyrl","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sr-cyrl",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})}); | ||
!function(e){"function"==typeof define&&define.amd?define(["jquery","moment"],e):"object"==typeof exports?module.exports=e(require("jquery"),require("moment")):e(jQuery,moment)}(function(e,t){!function(){var e={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(t,a,r){var n=e.words[r];return 1===r.length?a?n[0]:n[1]:t+" "+e.correctGrammaticalCase(t,n)}};t.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(),e.fullCalendar.datepickerLocale("sr-cyrl","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sr-cyrl",{buttonText:{prev:"Претходна",next:"следећи",month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})}); |
@@ -1,1 +0,1 @@ | ||
!function(e){"function"==typeof define&&define.amd?define(["jquery","moment"],e):"object"==typeof exports?module.exports=e(require("jquery"),require("moment")):e(jQuery,moment)}(function(e,a){!function(){var e={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(a,t,r){var n=e.words[r];return 1===r.length?t?n[0]:n[1]:a+" "+e.correctGrammaticalCase(a,n)}};a.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(),e.fullCalendar.datepickerLocale("sr","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sr",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})}); | ||
!function(e){"function"==typeof define&&define.amd?define(["jquery","moment"],e):"object"==typeof exports?module.exports=e(require("jquery"),require("moment")):e(jQuery,moment)}(function(e,a){!function(){var e={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(a,t,r){var n=e.words[r];return 1===r.length?t?n[0]:n[1]:a+" "+e.correctGrammaticalCase(a,n)}};a.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(),e.fullCalendar.datepickerLocale("sr","sr-SR",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sr",{buttonText:{prev:"Prethodna",next:"Sledeći",month:"Mеsеc",week:"Nеdеlja",day:"Dan",list:"Planеr"},allDayText:"Cеo dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nеma događaja za prikaz"})}); |
@@ -28,4 +28,4 @@ { | ||
}, | ||
"version": "3.4.0", | ||
"releaseDate": "2017-04-27", | ||
"version": "3.5.0", | ||
"releaseDate": "2017-08-31", | ||
"devDependencies": { | ||
@@ -32,0 +32,0 @@ "bootstrap": "^3.3.7", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
1094814
16162