diff --git a/mozilla/calendar/providers/caldav/calDavCalendar.js b/mozilla/calendar/providers/caldav/calDavCalendar.js index 678e6271937..5fe13026084 100644 --- a/mozilla/calendar/providers/caldav/calDavCalendar.js +++ b/mozilla/calendar/providers/caldav/calDavCalendar.js @@ -1626,34 +1626,33 @@ calDavCalendar.prototype = { && aCalIdParts[0] != "https" ) { return; } - mailto_aCalId = aCalIdParts.join(":"); + var mailto_aCalId = aCalIdParts.join(":"); var thisCalendar = this; var organizer = this.calendarUserAddress; - var dtstamp = now().getInTimezone(UTC()).icalString; - var dtstart = aRangeStart.getInTimezone(UTC()).icalString; - var dtend = aRangeEnd.getInTimezone(UTC()).icalString; - var uuid = getUUID(); - - var fbQuery = "BEGIN:VCALENDAR\n"; - fbQuery += "VERSION:" + calGetProductVersion() + "\n"; - fbQuery += "PRODID:-" + calGetProductId() + "\n"; - fbQuery += "METHOD:REQUEST\n"; - fbQuery += "BEGIN:VFREEBUSY\n"; - fbQuery += "DTSTAMP:" + dtstamp + "\n"; - fbQuery += "ORGANIZER:" + organizer + "\n"; - fbQuery += "DTSTART:" + dtstart + "\n"; - fbQuery += "DTEND:" + dtend + "\n"; - fbQuery += "UID:" + uuid + "\n"; - var attendee = "ATTENDEE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL:" + mailto_aCalId + "\n"; - var attendeeFolded = this.foldLine(attendee); - fbQuery += attendeeFolded; - fbQuery += "END:VFREEBUSY\n"; - fbQuery += "END:VCALENDAR\n"; - // RFC 2445 is specific about how lines end... - fbQuery = fbQuery.replace(/\n/g, "\r\n"); + var fbQuery = getIcsService().createIcalComponent("VCALENDAR"); + calSetProdidVersion(fbQuery); + var prop = getIcsService().createIcalProperty("METHOD"); + prop.value = "REQUEST"; + fbQuery.addProperty(prop); + var fbComp = getIcsService().createIcalComponent("VFREEBUSY"); + fbComp.stampTime = now().getInTimezone(UTC()); + prop = getIcsService().createIcalProperty("ORGANIZER"); + prop.value = organizer; + fbComp.addProperty(prop); + fbComp.startTime = aRangeStart.getInTimezone(UTC()); + fbComp.endTime = aRangeEnd.getInTimezone(UTC()); + fbComp.uid = getUUID(); + prop = getIcsService().createIcalProperty("ATTENDEE"); + prop.setParameter("PARTSTAT", "NEEDS-ACTION"); + prop.setParameter("ROLE", "REQ-PARTICIPANT"); + prop.setParameter("CUTYPE", "INDIVIDUAL"); + prop.value = mailto_aCalId; + fbComp.addProperty(prop); + fbQuery.addSubcomponent(fbComp); + fbQuery = fbQuery.serializeToICS(); if (this.verboseLogging()) { LOG("CalDAV: send (Originator=" + organizer + ",Recipient=" + mailto_aCalId + "): " + fbQuery); @@ -1694,8 +1693,6 @@ calDavCalendar.prototype = { if (str.substr(0,6) == "