2012-02-22 25 views

Respuesta

7

lo que se necesita es escribir su propia extensión a fullcalendar (similar a los gcal.js que está dotado de fullcalendar) algo que podría llamar ical.js

Debe saber que escribir un analizador completo puede ser bastante agotador, por lo que es posible que desee c onsider se queda con el calendario de google para su back-end a menos que tenga una razón de peso.

En caso de ir por el camino de desarrollando su propia extensión para fullcalendar es posible que desee echar un vistazo a un analizador ical jQuery existente (here - exención de responsabilidad: nunca he probado este plugin)

0

si tiene un sitio web de wordpress, hay una aplicación para eso. http://wordpress.org/extend/plugins/amr-ical-events-list/

si no tiene un sitio web de WordPress, por favor proporcione más información para que la gente pueda asesorar de forma más adecuada con respecto a su situación - hay algunas secuencias de comandos dedicados iCalendar - No he mirado para una mientras que, por lo que no puede responder por cualquier ejemplo: http://phpicalendar.net/

-2

Puede importar en Google Calendar y luego importar Google Calendar en FullCalendar.

+1

Esta es una solución horrible – MarkyPython

+0

bien que funcionó para mí en 2013. Es más fácil que escribir una extensión. –

1

Me las arreglé para hacerlo. No es tan difícil como pensaba. Yo uso ical.js como analizador ics. Después de analizar, obtengo un objeto json que contiene toda la información en los ics. Y luego atravesarlo y construir el objeto de evento de acuerdo con the definition of FullCalendar Event object.

Aquí está el código:

$.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' 
    } 
}); 
}); 
Cuestiones relacionadas