2012-02-22 22 views

risposta

7

quello che si avrebbe bisogno è quello di scrivere il proprio interno su fullcalendar (simile ai gcal.js che è dotato di fullcalendar) qualcosa che si potrebbe chiamare ical.js

Dovresti sapere che scrivere un parser ical completo può essere abbastanza drenante quindi potresti voler chiunque altro si attenga al calendario di google per il tuo back-end a meno che tu non abbia una ragione costringente.

dovrebbe andare lungo la strada del sviluppando proprio interno per fullcalendar si consiglia di dare un'occhiata a un parser iCal jquery esistente (here - disclaimer: non ho mai provato questo plugin)

0

se si dispone di un sito web wordpress, c'è un'app per questo. http://wordpress.org/extend/plugins/amr-ical-events-list/

se non si dispone di un sito web wordpress, si prega di fornire qualche informazione in più in modo che le persone possano consigliare in modo più adeguato rispetto alla vostra situazione - ci sono alcuni script iCalendar dedicati - non ho guardato a loro per un mentre, quindi non posso garantire per qualsiasi esempio: http://phpicalendar.net/

-2

È possibile importare in Google Calendar e quindi importa Google Calendar in FullCalendar.

+1

Questa è una soluzione terribile – MarkyPython

+0

Bene ha funzionato per me nel 2013. E 'più facile che scrivere una proroga. –

1

Sono riuscito a farlo. Non così difficile come pensavo. Io uso ical.js come parser ics. Dopo l'analisi, ottengo un oggetto json che contiene tutte le informazioni in ics. E quindi attraversarlo e costruire l'oggetto evento in base a the definition of FullCalendar Event object.

Ecco il codice:

$.get(calendarUrl).then(function (data) { 
// parse the ics data 
var jcalData = ICAL.parse(data.trim()); 
var comp = new ICAL.Component(jcalData); 
var eventComps = comp.getAllSubcomponents("vevent"); 
// console.log(JSON.stringify(eventComps)); 
// map them to FullCalendar events 
var events = $.map(eventComps, function (item) { 
    if (item.getFirstPropertyValue("class") == "PRIVATE") { 
     return null; 
    } 
    else { 
     return { 
      "title": item.getFirstPropertyValue("summary") + ";", 
      "start": item.getFirstPropertyValue("dtstart").toJSDate(), 
      "end": item.getFirstPropertyValue("dtend").toJSDate(), 
      "location": item.getFirstPropertyValue("location") 
     }; 
    } 
}); 

// refresh the control 
calendarCtrl.fullCalendar('destroy'); 
calendarCtrl.fullCalendar({ 
    events: events, 
    timeFormat: "H:mm", 
    displayEventEnd: true, 
    eventRender: function (event, element) { 
     // console.log(element); 
     // append location 
     if (event.location != null && event.location != "") { 
      element.append("<span>" + event.location + "</span>"); 
     } 
    }, 
    header: { 
     left: 'title', 
     center: '', 
     right: 'today,month,basicWeek,listDay prev,next' 
    } 
}); 
}); 
Problemi correlati