118 lines
3.8 KiB
JavaScript
118 lines
3.8 KiB
JavaScript
var ai1ec = (function(){
|
|
var API = {}, json = [], events = [];
|
|
|
|
//Categorie di eventi
|
|
API.cats = {
|
|
single: 34,
|
|
repeat: 87
|
|
};
|
|
|
|
var getCleanId = function(uid){
|
|
var initChar = uid.indexOf('-'),
|
|
endChar = uid.indexOf('@');
|
|
|
|
return uid.substr(initChar+1, uid.length - uid.substr(endChar -1).length - initChar );
|
|
};
|
|
|
|
//Parser di un evento dell'array tornato da getXmlData
|
|
API.event = {
|
|
getId : function(event) {
|
|
return event.properties.uid ? getCleanId(event.properties.uid.text) : null;
|
|
},
|
|
|
|
getTitle : function(event) {
|
|
return event.properties.summary.text || null;
|
|
},
|
|
|
|
getDescription : function(event) {
|
|
return event.properties.description.text || "";
|
|
},
|
|
|
|
getInitDate : function(event) {
|
|
return event.properties.dtstart && event.properties.dtstart["date-time"] ? event.properties.dtstart["date-time"] : "";
|
|
},
|
|
|
|
getEndDate : function(event) {
|
|
return event.properties.dtend && event.properties.dtend["date-time"] ? event.properties.dtend["date-time"] : "";
|
|
},
|
|
|
|
getCats : function(event) {
|
|
return event.properties.categories.text || "";
|
|
},
|
|
|
|
getTags : function(event) {
|
|
return event.properties["x-tags"] && event.properties["x-tags"]._ ? event.properties["x-tags"]._ : "";
|
|
},
|
|
|
|
getUrl : function(event) {
|
|
return event.properties.url && event.properties.url.uri && event.properties.url.uri ? event.properties.url.uri : "";
|
|
},
|
|
|
|
getContact : function(event) {
|
|
return event.properties.contact || "";
|
|
},
|
|
|
|
getGeo : function(event) {
|
|
return event.properties.location.text || "";
|
|
},
|
|
|
|
//Regole per gli eventi ripetitivi
|
|
getRule : function(event) {
|
|
return event.properties.rrule || "";
|
|
},
|
|
|
|
getImage : function(event){
|
|
return event.properties['x-wp-images-url'] && event.properties['x-wp-images-url'].unknown ? event.properties['x-wp-images-url'].unknown : "";
|
|
},
|
|
};
|
|
|
|
var getXmlData = function(url, catId, callback) {
|
|
$.ajax({
|
|
url: url,
|
|
dataType: 'xml',
|
|
method: 'GET',
|
|
success: function(res) {
|
|
json[catId] = $.xml2json(res);
|
|
events[catId] = json[catId]["#document"].icalendar.vcalendar.components.vevent;
|
|
console.log(events[catId]);
|
|
return callback(events[catId]);
|
|
},
|
|
error: function(err){
|
|
console.log("Err: status ", err.status);
|
|
return callback(events[catId]);
|
|
}
|
|
});
|
|
};
|
|
|
|
var getDefaultUrl = function(catId){
|
|
catId = catId || API.cats.single;
|
|
|
|
return API.remote.site + API.remote.q + "&" + API.remote.catq + catId + "&" + API.remote.xmlq;
|
|
};
|
|
|
|
//Oggetto che gestisce attività remote
|
|
API.remote = {
|
|
site : 'http://www.ecn.org/xm24',
|
|
q : '/?plugin=all-in-one-event-calendar&controller=ai1ec_exporter_controller&action=export_events',
|
|
post: 'ai1ec_post_ids=',
|
|
catq : 'ai1ec_cat_ids=',
|
|
xmlq : 'xml=true',
|
|
win : 'window=true',
|
|
//post_ids
|
|
|
|
//Torna un array con tutti gli eventi organizzati da xm24, un array vuoto se errore.
|
|
getAllEvents : function(catId, callback) {
|
|
var url = getDefaultUrl(catId);
|
|
getXmlData(url, catId, callback);
|
|
},
|
|
|
|
//Torna un array con gli eventi tra -30 e +30 giorni da oggi, un array vuoto se errore.
|
|
getLastEvents : function(catId, callback) {
|
|
var url = getDefaultUrl(catId) + '&' + API.remote.win;
|
|
getXmlData(url, catId, callback);
|
|
},
|
|
|
|
}
|
|
|
|
return API;
|
|
})();
|