Author: solomax
Date: Tue Aug 28 06:02:04 2012
New Revision: 1377980
URL: http://svn.apache.org/viewvc?rev=1377980&view=rev
Log:
OPENMEETINGS-316 ical invitations/updates/cancelations seems to work as
expected in OL/Gmail/Thunderbird
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/IcalHandler.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java?rev=1377980&r1=1377979&r2=1377980&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
Tue Aug 28 06:02:04 2012
@@ -756,12 +756,12 @@ public class Invitationmanagement {
Vector<HashMap<String, String>> atts = new
Vector<HashMap<String, String>>();
atts.add(attendeeInDerHashMap);
- HashMap<String, String> attendeeList =
handler.getAttendeeData(user
+ HashMap<String, String> organizer = handler.getAttendeeData(user
.getAdresses().getEmail(), user.getLogin(),
invitor);
handler.addNewMeeting(startdate, enddate,
point.getAppointmentName(), atts,
- subject, attendeeList, point.getIcalId(),
timezone);
+ subject, organizer, point.getIcalId(),
timezone);
log.debug(handler.getICalDataAsString());
@@ -803,11 +803,11 @@ public class Invitationmanagement {
Vector<HashMap<String, String>> atts = new
Vector<HashMap<String, String>>();
atts.add(attendeeInDerHashMap);
- HashMap<String, String> attendeeList =
handler.getAttendeeData(user
+ HashMap<String, String> organizer = handler.getAttendeeData(user
.getAdresses().getEmail(), user.getLogin(),
invitor);
handler.addNewMeeting(starttime, endtime,
point.getAppointmentName(), atts,
- subject, attendeeList, point.getIcalId(),
timeZone);
+ subject, organizer, point.getIcalId(),
timeZone);
log.debug(handler.getICalDataAsString());
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/IcalHandler.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/IcalHandler.java?rev=1377980&r1=1377979&r2=1377980&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/IcalHandler.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/IcalHandler.java
Tue Aug 28 06:02:04 2012
@@ -31,15 +31,17 @@ import net.fortuna.ical4j.model.TimeZone
import net.fortuna.ical4j.model.TimeZoneRegistry;
import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
import net.fortuna.ical4j.model.component.VEvent;
-import net.fortuna.ical4j.model.component.VTimeZone;
import net.fortuna.ical4j.model.parameter.Cn;
import net.fortuna.ical4j.model.parameter.Role;
import net.fortuna.ical4j.model.property.Attendee;
import net.fortuna.ical4j.model.property.CalScale;
import net.fortuna.ical4j.model.property.Description;
+import net.fortuna.ical4j.model.property.Location;
+import net.fortuna.ical4j.model.property.Method;
import net.fortuna.ical4j.model.property.Organizer;
import net.fortuna.ical4j.model.property.ProdId;
import net.fortuna.ical4j.model.property.Sequence;
+import net.fortuna.ical4j.model.property.Transp;
import net.fortuna.ical4j.model.property.Uid;
import net.fortuna.ical4j.model.property.Version;
import net.fortuna.ical4j.util.UidGenerator;
@@ -66,38 +68,28 @@ public class IcalHandler {
// private TimeZoneRegistry timeRegistry;
/** Creation of a new Event */
- public final static String ICAL_METHOD_REQUEST = "REQUEST";
- public final static String ICAL_METHOD_CANCEL = "CANCEL";
- public final static String ICAL_METHOD_REFRESH = "REFRESH";
+ public final static Method ICAL_METHOD_REQUEST = Method.REQUEST;
+ public final static Method ICAL_METHOD_CANCEL = Method.CANCEL;
+ public final static Method ICAL_METHOD_REFRESH = Method.REFRESH;
/**
* Konstruktor with DefaultTimeZone
*
- * @param methodType
+ * @param method
* (@see IcalHandler Constants)
* @throws Exception
*/
- public IcalHandler(String methodType) {
- log.debug("Icalhandler method type : " + methodType);
+ public IcalHandler(Method method) {
+ log.debug("Icalhandler method type : " + method);
icsCalendar = new net.fortuna.ical4j.model.Calendar();
icsCalendar.getProperties().add(
new ProdId("-//Events Calendar//iCal4j
1.0//EN"));
- icsCalendar.getProperties().add(CalScale.GREGORIAN);
icsCalendar.getProperties().add(Version.VERSION_2_0);
+ icsCalendar.getProperties().add(CalScale.GREGORIAN);
- // Switch Method Type
- // we comment out the Method type for now: The event type needs
an organizer
- // set, actually this leads to errors in displaying the email
as iCal invitation
- // in gmail, so we removed it for now. issue 1563
-// if (methodType.equals(ICAL_METHOD_REFRESH))
-// icsCalendar.getProperties().add(Method.REFRESH);
-// else if (methodType.equals(ICAL_METHOD_CANCEL))
-// icsCalendar.getProperties().add(Method.CANCEL);
-// else
-// icsCalendar.getProperties().add(Method.REQUEST);
-
+ icsCalendar.getProperties().add(method);
}
/**
@@ -136,14 +128,10 @@ public class IcalHandler {
VEvent meeting = new VEvent(start, end, name);
- // add timezone info..
- VTimeZone tz = timeZone.getVTimeZone();
-
- meeting.getProperties().add(tz.getTimeZoneId());
-
meeting.getProperties().add(new Description(description));
-
- meeting.getProperties().add(new Sequence(1));
+ meeting.getProperties().add(new Sequence(0));
+ meeting.getProperties().add(new Location(""));
+ meeting.getProperties().add(Transp.OPAQUE);
// generate unique identifier (if not submitted)
Uid ui = null;
@@ -178,6 +166,7 @@ public class IcalHandler {
meeting.getProperties().add(orger);
+ icsCalendar.getComponents().add(timeZone.getVTimeZone());
icsCalendar.getComponents().add(meeting);
return ui.getValue();
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java?rev=1377980&r1=1377979&r2=1377980&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java
Tue Aug 28 06:02:04 2012
@@ -61,18 +61,31 @@ public class MailiCalThread extends Mail
// -- Create a new message --
Multipart multipart = new MimeMultipart();
+ Multipart multiBody = new MimeMultipart("alternative");
BodyPart html = new MimeBodyPart();
html.setDataHandler(new DataHandler(new
ByteArrayDataSource(
- htmlBody, "text/html;
charset=\"utf-8\"")));
+ htmlBody, "text/html; charset=UTF-8")));
+ multiBody.addBodyPart(html);
- BodyPart iCalAttachment = new MimeBodyPart();
- iCalAttachment.setDataHandler(new DataHandler(
+ BodyPart iCalContent = new MimeBodyPart();
+ iCalContent.addHeader("content-class",
"urn:content-classes:calendarmessage");
+ iCalContent.setDataHandler(new DataHandler(
new ByteArrayDataSource(
new
ByteArrayInputStream(iCalMimeBody),
-
"text/calendar;method=REQUEST;charset=\"UTF-8\"")));
+ "text/calendar;
charset=UTF-8; method=REQUEST")));
+ multiBody.addBodyPart(iCalContent);
+ BodyPart body = new MimeBodyPart();
+ body.setContent(multiBody);
+ multipart.addBodyPart(body);
+
+ BodyPart iCalAttachment = new MimeBodyPart();
+ iCalAttachment.setDataHandler(new DataHandler(
+ new ByteArrayDataSource(new
ByteArrayInputStream(iCalMimeBody), "application/ics")));
+
iCalAttachment.removeHeader("Content-Transfer-Encoding");
+ iCalAttachment.addHeader("Content-Transfer-Encoding",
"base64");
+ iCalAttachment.removeHeader("Content-Type");
+ iCalAttachment.addHeader("Content-Type",
"application/ics");
iCalAttachment.setFileName("invite.ics");
-
- multipart.addBodyPart(html);
multipart.addBodyPart(iCalAttachment);
msg.setContent(multipart);