2012-02-22 17 views

cevap

7

ne gerekir Eğer ical.js diyebiliriz şey (fullcalendar sağlanır gcal.js benzer) fullcalendar için kendi uzantısı yazmaktır

Tam bir ical ayrıştırıcının yazılmasının oldukça zor olabileceğini bilmelisiniz ki c Zorlayıcı bir sebebiniz olmadıkça, arka tarafınıza google takvimi yapıştırabilirsiniz.

-2

Sen alabilirsiniz: - (Bu eklenti hiç denemedim feragat here)

Eğer mevcut bir jquery ical ayrıştırıcı bir göz atmak istersin fullcalendar için kendi uzantısı developping kapısını kapatmadık mı Google Takvim’e girip Google Takvim’i FullCalendar’a aktarın.

+1

Bu korkunç bir çözümdür – MarkyPython

+0

Eh o O bir uzantısı yazmaktan daha kolaydır 2013 yılında benim için çalıştı. –

1

Bunu yapmayı beceriyorum. Düşündüğüm kadar zor değil. ical.js'u ics ayrıştırıcısı olarak kullanıyorum. Ayrıştırmadan sonra, ics'deki tüm bilgileri içeren bir json nesnesi alırım. Ve sonra onu çaprazlayın ve the definition of FullCalendar Event object'a göre olay nesnesini oluşturun. İşte

kodudur:

$.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' 
    } 
}); 
}); 
İlgili konular