mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 00:12:56 +02:00
MDL-59538 core_calendar: add event source logic to calendar
This commit is contained in:
parent
5472bdd091
commit
3d67e83f53
2
calendar/amd/build/calendar.min.js
vendored
2
calendar/amd/build/calendar.min.js
vendored
@ -1 +1 @@
|
||||
define(["jquery","core/ajax","core/str","core/templates","core/notification","core/custom_interaction_events","core/modal_factory","core_calendar/summary_modal","core_calendar/calendar_repository"],function(a,b,c,d,e,f,g,h,i){var j={ROOT:"[data-region='calendar']",EVENT_LINK:"[data-action='view-event']"},k=null,l=function(a){var b="type"+a;return c.get_string(b,"core_calendar").then(function(a){return a}).fail(e.exception)},m=function(a){var b=i.getEventById(a);return b.then(function(a){return a.event?a.event:void b.fail(e.exception)}).then(function(a){return l(a.eventtype).then(function(b){return a.eventtype=b,a})}).then(function(a){return k.done(function(b){b.setTitle(a.name),b.setBody(d.render("core_calendar/event_summary_body",a)),0==a.caneditevent&&b.setFooter(""),b.show()})})},n=function(b){b=a(b);var c=!1;b.on("click",j.EVENT_LINK,function(b){if(!c){c=!0,b.preventDefault();var d=a(b.target).closest(j.EVENT_LINK),e=d.attr("data-event-id");m(e).done(function(){c=!1})}})};return{init:function(){k=g.create({type:h.TYPE}),n(j.ROOT)}}});
|
||||
define(["jquery","core/ajax","core/str","core/templates","core/notification","core/custom_interaction_events","core/modal_factory","core_calendar/summary_modal","core_calendar/calendar_repository"],function(a,b,c,d,e,f,g,h,i){var j={ROOT:"[data-region='calendar']",EVENT_LINK:"[data-action='view-event']"},k=null,l=function(a){var b="type"+a;return c.get_string(b,"core_calendar").then(function(a){return a})},m=function(a){return c.get_string("subsource","core_calendar",a).then(function(b){return a.url?'<a href="'+a.url+'">'+b+"</a>":b})},n=function(b){var c=i.getEventById(b);return c.then(function(a){return a.event?a.event:void c.fail(e.exception)}).then(function(a){var b=l(a.eventtype);return b.then(function(c){return c?(a.eventtype=c,a):void b.fail(e.exception)})}).then(function(b){if(1==b.displayeventsource){b.subscription=JSON.parse(b.subscription);var c=m({url:b.subscription.url,name:b.subscription.name});c?(a.Deferred().resolve(),c.done(function(a){b.source=a})):c.fail(e.exception)}return k.done(function(a){a.setTitle(b.name),a.setBody(d.render("core_calendar/event_summary_body",b)),0==b.caneditevent&&a.setFooter(""),a.show()})})},o=function(b){b=a(b);var c=!1;b.on("click",j.EVENT_LINK,function(b){if(!c){c=!0,b.preventDefault();var d=a(b.target).closest(j.EVENT_LINK),f=d.attr("data-event-id");n(f).done(function(){c=!1}).fail(e.exception)}})};return{init:function(){k=g.create({type:h.TYPE}),o(j.ROOT)}}});
|
@ -36,13 +36,28 @@ define(['jquery', 'core/ajax', 'core/str', 'core/templates', 'core/notification'
|
||||
* Get the event type lang string.
|
||||
*
|
||||
* @param {String} eventType The event type.
|
||||
* @return {String} The lang string of the event type.
|
||||
* @return {promise} The lang string promise.
|
||||
*/
|
||||
var getEventType = function(eventType) {
|
||||
var lang = 'type' + eventType;
|
||||
return Str.get_string(lang, 'core_calendar').then(function(langStr) {
|
||||
return langStr;
|
||||
}).fail(Notification.exception);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the event source.
|
||||
*
|
||||
* @param {Object} subscription The event subscription object.
|
||||
* @return {promise} The lang string promise.
|
||||
*/
|
||||
var getEventSource = function(subscription) {
|
||||
return Str.get_string('subsource', 'core_calendar', subscription).then(function(langStr) {
|
||||
if (subscription.url) {
|
||||
return '<a href="' + subscription.url + '">' + langStr + '</a>';
|
||||
}
|
||||
return langStr;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
@ -53,20 +68,41 @@ define(['jquery', 'core/ajax', 'core/str', 'core/templates', 'core/notification'
|
||||
*/
|
||||
var renderEventSummaryModal = function(eventId) {
|
||||
|
||||
var promise = CalendarRepository.getEventById(eventId);
|
||||
|
||||
return promise.then(function(result) {
|
||||
// Calendar repository promise.
|
||||
var repositoryPromise = CalendarRepository.getEventById(eventId);
|
||||
return repositoryPromise.then(function(result) {
|
||||
if (!result.event) {
|
||||
promise.fail(Notification.exception);
|
||||
repositoryPromise.fail(Notification.exception);
|
||||
} else {
|
||||
return result.event;
|
||||
}
|
||||
}).then(function(eventdata) {
|
||||
return getEventType(eventdata.eventtype).then(function(langStr) {
|
||||
eventdata.eventtype = langStr;
|
||||
return eventdata;
|
||||
// Event type promise.
|
||||
var eventTypePromise = getEventType(eventdata.eventtype);
|
||||
return eventTypePromise.then(function(langStr) {
|
||||
if(!langStr) {
|
||||
eventTypePromise.fail(Notification.exception);
|
||||
} else {
|
||||
eventdata.eventtype = langStr;
|
||||
return eventdata;
|
||||
}
|
||||
});
|
||||
}).then(function(eventdata) {
|
||||
// If the calendar event has event source, get the language string or the link.
|
||||
if (eventdata.displayeventsource == true) {
|
||||
eventdata.subscription = JSON.parse(eventdata.subscription);
|
||||
var eventpromise = getEventSource({url: eventdata.subscription.url, name: eventdata.subscription.name});
|
||||
if (eventpromise) {
|
||||
$.Deferred().resolve();
|
||||
eventpromise.done(function(source) {
|
||||
eventdata.source = source;
|
||||
});
|
||||
} else {
|
||||
eventpromise.fail(Notification.exception);
|
||||
}
|
||||
|
||||
}
|
||||
return modalPromise.done(function(modal) {
|
||||
modal.setTitle(eventdata.name);
|
||||
modal.setBody(Templates.render('core_calendar/event_summary_body', eventdata));
|
||||
@ -99,7 +135,7 @@ define(['jquery', 'core/ajax', 'core/str', 'core/templates', 'core/notification'
|
||||
|
||||
renderEventSummaryModal(eventId).done(function() {
|
||||
loading = false;
|
||||
});
|
||||
}).fail(Notification.exception);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user