You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by se...@apache.org on 2012/04/29 17:22:21 UTC
svn commit: r1331922 - in /incubator/openmeetings/trunk/singlewebapp:
WebContent/src/modules/settings/privatemessages/
src/org/openmeetings/app/remote/ src/org/openmeetings/app/templates/
Author: sebawagner
Date: Sun Apr 29 15:22:21 2012
New Revision: 1331922
URL: http://svn.apache.org/viewvc?rev=1331922&view=rev
Log:
OPENMEETINGS-160 Enable sending messages to external users from the private messages including invitations to conference rooms and events
Modified:
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/settings/privatemessages/newPrivateMessage.lzx
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/settings/privatemessages/privateMessages.lzx
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/UserService.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/FeedbackTemplate.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/InvitationTemplate.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/RequestContactConfirmTemplate.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/RequestContactTemplate.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/ResetPasswordTemplate.java
Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/settings/privatemessages/newPrivateMessage.lzx
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/settings/privatemessages/newPrivateMessage.lzx?rev=1331922&r1=1331921&r2=1331922&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/settings/privatemessages/newPrivateMessage.lzx (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/settings/privatemessages/newPrivateMessage.lzx Sun Apr 29 15:22:21 2012
@@ -122,9 +122,9 @@
<netparam><method name="getValue">return this.parent.parent._subject.getText();</method></netparam>
<netparam><method name="getValue">return parent.parent._richText.getText();</method></netparam>
<netparam><method name="getValue">return this.parent.parent._bookRoom.getValue();</method></netparam>
- <netparam><method name="getValue">return parent.parent._valid_from.getDate();</method></netparam>
+ <netparam><method name="getValue">return parseDateToStringTimeSeconds(parent.parent._valid_from.getDate());</method></netparam>
<netparam><method name="getValue">return parent.parent._timeFrom.getText();</method></netparam>
- <netparam><method name="getValue">return parent.parent._valid_to.getDate();</method></netparam>
+ <netparam><method name="getValue">return parseDateToStringTimeSeconds(parent.parent._valid_to.getDate());</method></netparam>
<netparam><method name="getValue">return parent.parent._timeTo.getText();</method></netparam>
<netparam><method name="getValue">return parent.parent.parentMessageId;</method></netparam>
<netparam><method name="getValue">return Number(parent.parent._roomtype.getValue());</method></netparam>
Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/settings/privatemessages/privateMessages.lzx
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/settings/privatemessages/privateMessages.lzx?rev=1331922&r1=1331921&r2=1331922&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/settings/privatemessages/privateMessages.lzx (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/settings/privatemessages/privateMessages.lzx Sun Apr 29 15:22:21 2012
@@ -1056,7 +1056,11 @@
this._answer_area.setAttribute("visibility","visible");
this.from.setAttribute("text",refObj.from.firstname+' '+refObj.from.lastname+' <'+refObj.from.adresses.email+'>');
- this.to.setAttribute("text",refObj.to.firstname+' '+refObj.to.lastname+' <'+refObj.to.adresses.email+'>');
+ if (refObj.to != null) {
+ this.to.setAttribute("text",refObj.to.firstname+' '+refObj.to.lastname+' <'+refObj.to.adresses.email+'>');
+ } else {
+ this.to.setAttribute("text","");
+ }
this.subject.setAttribute("text",refObj.subject);
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/UserService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/UserService.java?rev=1331922&r1=1331921&r2=1331922&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/UserService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/UserService.java Sun Apr 29 15:22:21 2012
@@ -25,6 +25,7 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
+import java.util.TimeZone;
import org.openmeetings.app.OpenmeetingsVariables;
import org.openmeetings.app.conference.session.RoomClient;
@@ -36,6 +37,7 @@ import org.openmeetings.app.data.basic.d
import org.openmeetings.app.data.beans.basic.SearchResult;
import org.openmeetings.app.data.calendar.daos.AppointmentDaoImpl;
import org.openmeetings.app.data.calendar.daos.MeetingMemberDaoImpl;
+import org.openmeetings.app.data.conference.Invitationmanagement;
import org.openmeetings.app.data.conference.Roommanagement;
import org.openmeetings.app.data.user.Organisationmanagement;
import org.openmeetings.app.data.user.Salutationmanagement;
@@ -45,6 +47,7 @@ import org.openmeetings.app.data.user.da
import org.openmeetings.app.data.user.dao.UserContactsDaoImpl;
import org.openmeetings.app.data.user.dao.UsersDaoImpl;
import org.openmeetings.app.persistence.beans.domain.Organisation;
+import org.openmeetings.app.persistence.beans.invitation.Invitations;
import org.openmeetings.app.persistence.beans.lang.Fieldlanguagesvalues;
import org.openmeetings.app.persistence.beans.rooms.Rooms;
import org.openmeetings.app.persistence.beans.user.PrivateMessageFolder;
@@ -59,6 +62,7 @@ import org.openmeetings.app.templates.Re
import org.openmeetings.utils.crypt.ManageCryptStyle;
import org.openmeetings.utils.mail.MailHandler;
import org.openmeetings.utils.math.CalendarPatterns;
+import org.openmeetings.utils.math.TimezoneUtil;
import org.red5.io.utils.ObjectMap;
import org.red5.logging.Red5LoggerFactory;
import org.red5.server.api.IScope;
@@ -117,6 +121,10 @@ public class UserService {
private RequestContactConfirmTemplate requestContactConfirmTemplate;
@Autowired
private AuthLevelmanagement authLevelManagement;
+ @Autowired
+ private TimezoneUtil timezoneUtil;
+ @Autowired
+ private Invitationmanagement invitationManagement;
/**
* get your own user-object
@@ -906,7 +914,7 @@ public class UserService {
return null;
}
- private Calendar createCalendar(Date date, String time) {
+ private Date createCalendarDate(TimeZone timezone, String dateOnly, String time) {
Integer hour = Integer.valueOf(
time.substring(0, 2)).intValue();
Integer minute = Integer.valueOf(
@@ -915,19 +923,18 @@ public class UserService {
log.info("createCalendar Hour: " + hour);
log.info("createCalendar Minute: " + minute);
- Calendar cal = Calendar.getInstance();
- cal.setTime(date);
+ Calendar cal = TimezoneUtil.getCalendarInTimezone(dateOnly, timezone);
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
- return cal;
+ return cal.getTime();
}
public Long composeMail(String SID, List<String> recipients,
String subject, String message, Boolean bookedRoom,
- Date validFromDate, String validFromTime, Date validToDate,
+ String validFromDate, String validFromTime, String validToDate,
String validToTime, Long parentMessageId, Long roomtype_id,
String domain, String port, String webapp) {
try {
@@ -936,12 +943,11 @@ public class UserService {
Long user_level = userManagement.getUserLevelByID(users_id);
// users only
if (authLevelManagement.checkUserLevel(user_level)) {
- Calendar calFrom = createCalendar(validFromDate, validFromTime);
-
- Calendar calTo = createCalendar(validToDate, validToTime);
-
- Date appointmentstart = calFrom.getTime();
- Date appointmentend = calTo.getTime();
+
+ TimeZone timezone = timezoneUtil.getTimezoneByUser(usersDao.getUser(users_id));
+
+ Date appointmentstart = createCalendarDate(timezone, validFromDate, validFromTime);
+ Date appointmentend = createCalendarDate(timezone, validToDate, validToTime);
log.info("validFromDate: "
+ CalendarPatterns
@@ -953,9 +959,19 @@ public class UserService {
Users from = userManagement.getUserById(users_id);
Rooms room = null;
+
+ String baseURL = "http://" + domain + ":" + port + webapp;
+ if (port.equals("80")) {
+ baseURL = "http://" + domain + webapp;
+ } else if (port.equals("443")) {
+ baseURL = "https://" + domain + webapp;
+ }
+ Long room_id = null;
+ Long appointmentId = null;
+
if (bookedRoom) {
- Long room_id = roommanagement.addRoom(3, // Userlevel
+ room_id = roommanagement.addRoom(3, // Userlevel
subject, // name
roomtype_id, // RoomType
"", // Comment
@@ -986,21 +1002,23 @@ public class UserService {
);
room = roommanagement.getRoomById(room_id);
+
+ String sendJNameTimeZone = from.getOmTimeZone().getJname();
+
+ appointmentId = this.addAppointmentToUser(subject, message, from,
+ recipients, room, appointmentstart,
+ appointmentend, true, true,
+ sendJNameTimeZone);
}
recipients.add(from.getAdresses().getEmail());
String sendJNameTimeZone = from.getOmTimeZone().getJname();
-
- String baseURL = "http://" + domain + ":" + port + webapp;
- if (port.equals("80")) {
- baseURL = "http://" + domain + webapp;
- } else if (port.equals("443")) {
- baseURL = "https://" + domain + webapp;
- }
-
+
String profile_link = baseURL + "?cuser=1";
+
+
for (String email : recipients) {
@@ -1008,7 +1026,6 @@ public class UserService {
// String email = receipent.get("email").toString();
- Boolean invitor = false;
Long language_id = from.getLanguage_id();
if (language_id == null) {
language_id = Long.valueOf(
@@ -1016,15 +1033,55 @@ public class UserService {
"default_lang_id").getConf_value())
.longValue();
}
-
+ String invitation_link = null;
Users to = userManagement.getUserByEmail(email);
+
+
+ if (bookedRoom) {
+ // Add the appointment to the calendar of the user (if its an internal user)
+ // if the user is the sender then we already added the appointment as we created the
+ // room, the invitations always belong to the appointment of the meeting creator
+ if (to != null && !to.getUser_id().equals(from.getUser_id())) {
+ this.addAppointmentToUser(subject, message, to,
+ recipients, room, appointmentstart,
+ appointmentend, false, true,
+ sendJNameTimeZone);
+ }
+
+ Invitations invitation = invitationManagement
+ .addInvitationLink(
+ new Long(2), // userlevel
+ from.getFirstname() + " " + from.getLastname(), // username
+ message,
+ baseURL, // baseURl
+ from.getAdresses().getEmail(), // email
+ subject, // subject
+ room_id, // room_id
+ "public",
+ false, // passwordprotected
+ "", // invitationpass
+ 2, // valid type
+ appointmentstart, // valid from
+ appointmentend, // valid to
+ from.getUser_id(), // created by
+ baseURL,
+ from.getUser_id(),
+ false, // really send mail sendMail
+ appointmentstart,
+ appointmentend,
+ appointmentId,
+ from.getFirstname() + " " + from.getLastname());
+
+ invitation_link = baseURL + "?invitationHash="
+ + invitation.getHash();
+
+
+ }
+
if (to != null) {
- if (email.equals(from.getAdresses().getEmail())) {
- invitor = true;
- } else {
-
+ if (!to.getUser_id().equals(from.getUser_id())) {
// One message to the Send
privateMessagesDao.addPrivateMessage(subject, message,
parentMessageId, from, to, from, bookedRoom,
@@ -1034,7 +1091,7 @@ public class UserService {
privateMessagesDao.addPrivateMessage(subject, message,
parentMessageId, from, to, to, bookedRoom,
room, false, 0L, email);
-
+
// One copy of the Inbox message to the user
if (to.getLanguage_id() != null) {
language_id = to.getLanguage_id();
@@ -1051,33 +1108,45 @@ public class UserService {
//there is no Inbox for external users
}
+
+ //We do not send an email to the one that has created the private message
+ if (to != null && to.getUser_id().equals(from.getUser_id())) {
+ continue;
+ }
+
Fieldlanguagesvalues fValue1301 = fieldmanagment
.getFieldByIdAndLanguage(1301L, language_id);
Fieldlanguagesvalues fValue1302 = fieldmanagment
.getFieldByIdAndLanguage(1302L, language_id);
+ Fieldlanguagesvalues labelid504 = fieldmanagment
+ .getFieldByIdAndLanguage(new Long(504), language_id);
+ Fieldlanguagesvalues labelid503 = fieldmanagment
+ .getFieldByIdAndLanguage(new Long(503), language_id);
String aLinkHTML = "";
if (to != null) {
aLinkHTML = "<br/><br/><a href='" + profile_link
+ "'>" + fValue1302.getValue() + "</a><br/>";
}
+
+ if (invitation_link == null) {
+ invitation_link = "";
+ } else {
+ invitation_link =
+ "<br/>" //
+ + CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(appointmentstart, timezone)
+ + "<br/> - <br/>" //
+ + CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(appointmentstart, timezone)
+ + "<br/>" + labelid503.getValue() + "<br/><a href='" + invitation_link
+ + "'>" + labelid504.getValue() + "</a><br/>";
+ }
mailHandler.sendMail(email, fValue1301.getValue() + " "
+ subject, message.replaceAll("\\<.*?>", "")
- + aLinkHTML);
-
- if (bookedRoom) {
+ + aLinkHTML
+ + invitation_link);
- // But add the appointment to everybody
-
- if (to != null) {
- this.addAppointmentToUser(subject, message, to,
- recipients, room, appointmentstart,
- appointmentend, invitor, true,
- sendJNameTimeZone);
- }
-
- }
+
}
}
@@ -1092,13 +1161,11 @@ public class UserService {
* Date appointmentstart = calFrom.getTime(); Date appointmentend =
* calTo.getTime();
*/
- private void addAppointmentToUser(String subject, String message, Users to,
+ private Long addAppointmentToUser(String subject, String message, Users to,
List<String> recipients, Rooms room, Date appointmentstart,
Date appointmentend, Boolean invitor, Boolean isConnectedEvent,
String sendJNameTimeZone) throws Exception {
-
-
Long appointmentId = appointmentDao.addAppointment(subject,
to.getUser_id(), "", message, appointmentstart, appointmentend,
false, false, false, false, 1L, 2L, room, to.getLanguage_id(),
@@ -1125,6 +1192,8 @@ public class UserService {
}
}
+
+ return appointmentId;
}
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/FeedbackTemplate.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/FeedbackTemplate.java?rev=1331922&r1=1331921&r2=1331922&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/FeedbackTemplate.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/FeedbackTemplate.java Sun Apr 29 15:22:21 2012
@@ -28,7 +28,7 @@ import org.slf4j.Logger;
public class FeedbackTemplate extends VelocityLoader {
- private static final String tamplateName = "feedback.vm";
+ private static final String templateName = "feedback.vm";
private static final Logger log = Red5LoggerFactory.getLogger(
FeedbackTemplate.class, OpenmeetingsVariables.webAppRootKey);
@@ -55,7 +55,7 @@ public class FeedbackTemplate extends Ve
/* lets render a template */
StringWriter w = new StringWriter();
- Velocity.mergeTemplate(tamplateName, "UTF-8", context, w);
+ Velocity.mergeTemplate(templateName, "UTF-8", context, w);
return w.toString();
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/InvitationTemplate.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/InvitationTemplate.java?rev=1331922&r1=1331921&r2=1331922&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/InvitationTemplate.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/InvitationTemplate.java Sun Apr 29 15:22:21 2012
@@ -32,7 +32,7 @@ import org.springframework.beans.factory
public class InvitationTemplate extends VelocityLoader {
- private static final String tamplateName = "invitation.vm";
+ private static final String templateName = "invitation.vm";
@Autowired
private Fieldmanagment fieldmanagment;
@@ -82,7 +82,7 @@ public class InvitationTemplate extends
/* lets render a template */
StringWriter w = new StringWriter();
- Velocity.mergeTemplate(tamplateName, "UTF-8", context, w);
+ Velocity.mergeTemplate(templateName, "UTF-8", context, w);
return w.toString();
@@ -137,7 +137,7 @@ public class InvitationTemplate extends
/* lets render a template */
StringWriter w = new StringWriter();
- Velocity.mergeTemplate(tamplateName, "UTF-8", context, w);
+ Velocity.mergeTemplate(templateName, "UTF-8", context, w);
return w.toString();
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/RequestContactConfirmTemplate.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/RequestContactConfirmTemplate.java?rev=1331922&r1=1331921&r2=1331922&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/RequestContactConfirmTemplate.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/RequestContactConfirmTemplate.java Sun Apr 29 15:22:21 2012
@@ -28,7 +28,7 @@ import org.slf4j.Logger;
public class RequestContactConfirmTemplate extends VelocityLoader {
- private static final String tamplateName = "requestcontactconfirm.vm";
+ private static final String templateName = "requestcontactconfirm.vm";
private static final Logger log = Red5LoggerFactory.getLogger(
RequestContactConfirmTemplate.class,
@@ -48,7 +48,7 @@ public class RequestContactConfirmTempla
/* lets render a template */
StringWriter w = new StringWriter();
- Velocity.mergeTemplate(tamplateName, "UTF-8", context, w);
+ Velocity.mergeTemplate(templateName, "UTF-8", context, w);
return w.toString();
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/RequestContactTemplate.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/RequestContactTemplate.java?rev=1331922&r1=1331921&r2=1331922&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/RequestContactTemplate.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/RequestContactTemplate.java Sun Apr 29 15:22:21 2012
@@ -28,7 +28,7 @@ import org.slf4j.Logger;
public class RequestContactTemplate extends VelocityLoader {
- private static final String tamplateName = "requestcontact.vm";
+ private static final String templateName = "requestcontact.vm";
private static final Logger log = Red5LoggerFactory
.getLogger(RequestContactTemplate.class,
@@ -52,7 +52,7 @@ public class RequestContactTemplate exte
/* lets render a template */
StringWriter w = new StringWriter();
- Velocity.mergeTemplate(tamplateName, "UTF-8", context, w);
+ Velocity.mergeTemplate(templateName, "UTF-8", context, w);
return w.toString();
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/ResetPasswordTemplate.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/ResetPasswordTemplate.java?rev=1331922&r1=1331921&r2=1331922&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/ResetPasswordTemplate.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/templates/ResetPasswordTemplate.java Sun Apr 29 15:22:21 2012
@@ -34,7 +34,7 @@ public class ResetPasswordTemplate exten
@Autowired
private Fieldmanagment fieldmanagment;
- private static final String tamplateName = "resetPass.vm";
+ private static final String templateName = "resetPass.vm";
private static final Logger log = Red5LoggerFactory.getLogger(
FeedbackTemplate.class, OpenmeetingsVariables.webAppRootKey);
@@ -65,7 +65,7 @@ public class ResetPasswordTemplate exten
/* lets render a template */
StringWriter w = new StringWriter();
- Velocity.mergeTemplate(tamplateName, "UTF-8", context, w);
+ Velocity.mergeTemplate(templateName, "UTF-8", context, w);
return w.toString();