123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- 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;
- })();
|