Author: vdegtyarev
Date: Fri Jul 26 04:48:30 2013
New Revision: 1507192
URL: http://svn.apache.org/r1507192
Log:
OPENMEETINGS-714 is improved;
OPENMEETINGS-716 is fixed
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java?rev=1507192&r1=1507191&r2=1507192&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
Fri Jul 26 04:48:30 2013
@@ -293,11 +293,8 @@ public class AppointmentDao {
urlPostfix = "#room/" + r.getRooms_id();
}
- meetingMemberLogic.addMeetingMemberInvitation(
- mm, a,
WebSession.get().getBaseUrl() + urlPostfix,
- u.getUser_id(),
timezoneUtil.getTimezoneByUser(u), u.getOmTimeZone(),
- u.getFirstname() + " "
+ u.getLastname()
- );
+
meetingMemberLogic.addMeetingMemberInvitation(mm, a,
+ WebSession.get().getBaseUrl() +
urlPostfix, u);
}
}
return a;
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java?rev=1507192&r1=1507191&r2=1507192&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
Fri Jul 26 04:48:30 2013
@@ -31,6 +31,7 @@ import org.apache.openmeetings.persisten
import org.apache.openmeetings.persistence.beans.invitation.Invitations;
import org.apache.openmeetings.persistence.beans.user.User;
import org.apache.openmeetings.utils.math.CalendarPatterns;
+import org.apache.openmeetings.utils.math.TimezoneUtil;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -50,6 +51,8 @@ public class MeetingMemberLogic {
private InvitationManager invitationManager;
@Autowired
private MeetingMemberDao meetingMemberDao;
+ @Autowired
+ private TimezoneUtil timezoneUtil;
/**
* This can be either an internal or an external user, internal users
have a
@@ -198,19 +201,16 @@ public class MeetingMemberLogic {
* @param meetingMember
* @param appointment
* @param baseUrl
- * @param meeting_organizer
+ * @param organizer
* @param timezone
* @param jNameInternalTimeZone
* @param invitorName
* @return
*/
public Long addMeetingMemberInvitation(MeetingMember member,
- Appointment appointment, String baseUrl, Long
meeting_organizer,
- TimeZone timezone, OmTimeZone omTimeZone, String
invitorName) {
+ Appointment appointment, String baseUrl, User
organizer) {
try {
- Boolean isInvitor = member.getInvitor();
-
Long invitationId = null;
if (appointment.getRemind() == null) {
@@ -221,9 +221,10 @@ public class MeetingMemberLogic {
log.debug(":::: addMeetingMemberInvitation ..... "
+ appointment.getRemind().getTypId());
- String subject =
formatSubject(member.getUserid().getLanguage_id(), appointment, timezone);
+ String subject =
formatSubject(member.getUserid().getLanguage_id(), appointment,
timezoneUtil.getTimezoneByUser(organizer));
- String message =
formatMessage(member.getUserid().getLanguage_id(), appointment, timezone,
+ String invitorName = organizer.getFirstname() + " " +
organizer.getLastname();
+ String message =
formatMessage(member.getUserid().getLanguage_id(), appointment,
timezoneUtil.getTimezoneByUser(organizer),
invitorName);
// appointment.getRemind().getTypId() == 1 will not
receive emails
@@ -233,28 +234,14 @@ public class MeetingMemberLogic {
Invitations invitation = invitationManager
.addInvitationLink(
- new Long(2), //
userlevel
-
member.getFirstname() + " " + member.getLastname(), // username
+ member,
+ appointment,
message,
baseUrl, //
baseURl
-
member.getUserid().getAdresses().getEmail(), // email
subject, //
subject
-
appointment.getRoom().getRooms_id(), // room_id
"public",
-
appointment.getIsPasswordProtected(), // passwordprotected
-
appointment.getPassword(), // invitationpass
2, // valid type
-
appointment.getAppointmentStarttime(), // valid from
-
appointment.getAppointmentEndtime(), // valid to
-
meeting_organizer, // created by
- baseUrl,
-
member.getUserid().getLanguage_id(),
- true, // really
send mail sendMail
-
appointment.getAppointmentStarttime(),
-
appointment.getAppointmentEndtime(),
-
appointment.getAppointmentId(),
- invitorName,
- omTimeZone);
+ organizer);
invitationId = invitation.getInvitations_id();
@@ -264,25 +251,15 @@ public class MeetingMemberLogic {
System.out.println("### SENDING iCAL EMAIL");
invitationId = invitationManager
- .addInvitationIcalLink(
- new Long(2), //
userlevel
-
member.getFirstname() + " " + member.getLastname(), // username
+ .addInvitationIcalLink(member,
+ appointment,
message,
baseUrl, //
baseURl
-
member.getUserid().getAdresses().getEmail(), // email
subject, //
subject
-
appointment.getRoom().getRooms_id(), // room_id
- "public",
-
appointment.getIsPasswordProtected(), // passwordprotected
-
appointment.getPassword(), // invitationpass
+ "public",
// conference domain
2, // valid
-
appointment.getAppointmentStarttime(), // valid from
-
appointment.getAppointmentEndtime(), // valid to
-
meeting_organizer, // created by
-
appointment.getAppointmentId(), isInvitor,
-
member.getUserid().getLanguage_id(), timezone,
-
appointment.getAppointmentId(),
- invitorName);
+ organizer //
created by
+ );
}
@@ -335,7 +312,8 @@ public class MeetingMemberLogic {
String message = fieldManager.getString(1151L,
language_id) + " "
+ point.getAppointmentName();
- if (point.getAppointmentDescription().length() != 0) {
+ if (point.getAppointmentDescription() != null &&
+
point.getAppointmentDescription().length() != 0) {
message += fieldManager.getString(1152L,
language_id)
+
point.getAppointmentDescription();
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java?rev=1507192&r1=1507191&r2=1507192&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java
Fri Jul 26 04:48:30 2013
@@ -49,6 +49,7 @@ import org.apache.openmeetings.persisten
import org.apache.openmeetings.persistence.beans.invitation.Invitations;
import org.apache.openmeetings.persistence.beans.lang.Fieldlanguagesvalues;
import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.persistence.beans.user.User.Type;
import org.apache.openmeetings.templates.InvitationTemplate;
import org.apache.openmeetings.utils.crypt.MD5;
import org.apache.openmeetings.utils.crypt.ManageCryptStyle;
@@ -210,6 +211,101 @@ public class InvitationManager {
return null;
}
+
+ /**
+ * @author vasya
+ *
+ * @param meetingMember
+ * @param appointment
+ * @param message
+ * @param baseurl
+ * @param subject
+ * @param conferencedomain
+ * @param valid
+ * @param createdBy
+ * @return
+ */
+ //
---------------------------------------------------------------------------------------------------------
+ public Invitations addInvitationLink(MeetingMember meetingMember,
+ Appointment appointment,
+ String message, String baseUrl, String subject,
+ String conferencedomain,
+ Integer valid,
+ User createdBy) {
+ try {
+ Invitations invitation = new Invitations();
+
invitation.setIsPasswordProtected(appointment.getIsPasswordProtected());
+ if (appointment.getIsPasswordProtected()) {
+ invitation.setInvitationpass(manageCryptStyle
+
.getInstanceOfCrypt().createPassPhrase(
+
appointment.getPassword()));
+ }
+
+ invitation.setInvitationWasUsed(false);
+ log.debug(baseUrl);
+ invitation.setBaseUrl(baseUrl);
+ invitation.setOmTimeZone(createdBy.getOmTimeZone());
+
+ // valid period of Invitation
+ if (valid == 1) {
+ // endless
+ invitation.setIsValidByTime(false);
+ invitation.setCanBeUsedOnlyOneTime(false);
+ } else if (valid == 2) {
+ // period
+ invitation.setIsValidByTime(true);
+ invitation.setCanBeUsedOnlyOneTime(false);
+
+ Date gmtTimeStartShifted = new
Date(appointment.getAppointmentStarttime().getTime()
+ - (5 * 60 * 1000));
+
+ invitation.setValidFrom(gmtTimeStartShifted);
+
invitation.setValidTo(appointment.getAppointmentEndtime());
+
+ } else {
+ // one-time
+ invitation.setIsValidByTime(false);
+ invitation.setCanBeUsedOnlyOneTime(true);
+ invitation.setInvitationWasUsed(false);
+ }
+
+ invitation.setDeleted(false);
+
+ String hashRaw = "HASH" + (System.currentTimeMillis());
+ invitation.setHash(MD5.do_checksum(hashRaw));
+
+ invitation.setInvitedBy(createdBy);
+ String userName = meetingMember.getFirstname() + " " +
meetingMember.getLastname();
+ invitation.setInvitedname(userName);
+ invitation.setInvitedEMail(meetingMember.getEmail());
+ invitation.setRoom(appointment.getRoom());
+ invitation.setConferencedomain(conferencedomain);
+ invitation.setStarttime(new Date());
+
invitation.setAppointmentId(appointment.getAppointmentId());
+
+ invitation = em.merge(invitation);
+ long invitationId = invitation.getInvitations_id();
+
+ invitation.setInvitations_id(invitationId);
+
+ if (invitationId > 0) {
+
+ this.sendInvitionLink(createdBy,
+ meetingMember,
+ appointment,
+ message,
+ baseUrl,
+ subject,
+ invitation.getHash());
+
+ return invitation;
+ }
+ } catch (Exception err) {
+ log.error("addInvitationLink", err);
+ }
+ return null;
+ }
+
//
----------------------------------------------------------------------------------------------------------------
/**
@@ -312,7 +408,8 @@ public class InvitationManager {
String message = fieldManager.getString(1157L,
language_id)
+ appointment.getAppointmentName();
- if (appointment.getAppointmentDescription().length() !=
0) {
+ if (appointment.getAppointmentDescription() != null &&
+
appointment.getAppointmentDescription().length() != 0) {
Fieldlanguagesvalues labelid1152 = fieldManager
.getFieldByIdAndLanguage(new
Long(1152), language_id);
@@ -583,7 +680,7 @@ public class InvitationManager {
if (invitationId > 0) {
this.sendInvitionIcalLink(username,
message, baseurl,
email, subject,
invitation.getHash(),
- appointMentId,
createdBy, invitor, language_id,
+ appointMentId, us,
invitor, language_id,
validFrom, validTo,
timezone, fromUserField);
return invitationId;
}
@@ -594,6 +691,93 @@ public class InvitationManager {
return null;
}
+ //
-----------------------------------------------------------------------------------------------
+
+ /**
+ * @author vasya
+ * @param meetingMember
+ * @param appointment
+ * @param message
+ * @param baseurl
+ * @param subject
+ * @param conferencedomain
+ * @param valid
+ * @param createdBy
+ * @return
+ */
+ //
---------------------------------------------------------------------------------------------------------
+ public Long addInvitationIcalLink(MeetingMember meetingMember,
Appointment appointment,
+ String message, String baseurl, String subject,
+ String conferencedomain, Integer valid, User createdBy)
{
+ log.debug("addInvitationIcalLink");
+
+ try {
+ Invitations invitation = new Invitations();
+
invitation.setIsPasswordProtected(appointment.getIsPasswordProtected());
+ if (appointment.getIsPasswordProtected()) {
+ invitation.setInvitationpass(manageCryptStyle
+
.getInstanceOfCrypt().createPassPhrase(
+
appointment.getPassword()));
+ }
+
+ String username = meetingMember.getFirstname() + " " +
meetingMember.getLastname();
+ invitation.setInvitationWasUsed(false);
+
+ // valid period of Invitation
+ if (valid == 1) {
+ // endless
+ invitation.setIsValidByTime(false);
+ invitation.setCanBeUsedOnlyOneTime(false);
+ } else if (valid == 2) {
+ // period
+ invitation.setIsValidByTime(true);
+ invitation.setCanBeUsedOnlyOneTime(false);
+
invitation.setValidFrom(appointment.getAppointmentStarttime());
+
invitation.setValidTo(appointment.getAppointmentEndtime());
+ } else {
+ // one-time
+ invitation.setIsValidByTime(false);
+ invitation.setCanBeUsedOnlyOneTime(true);
+ invitation.setInvitationWasUsed(false);
+ }
+
+ invitation.setDeleted(false);
+
+ if (meetingMember.getUserid().getType() ==
Type.contact) {
+ String hashRaw = "InvitationHash"
+ + (System.currentTimeMillis());
+ log.debug("addInvitationIcalLink : rawHash = "
+ hashRaw);
+ invitation.setHash(MD5.do_checksum(hashRaw));
+ } else {
+ invitation.setHash("");
+ }
+
+ invitation.setInvitedBy(createdBy);
+ invitation.setBaseUrl(baseurl);
+ invitation.setInvitedname(username);
+ invitation.setInvitedEMail(meetingMember.getEmail());
+ invitation.setRoom(appointment.getRoom());
+ invitation.setConferencedomain(conferencedomain);
+ invitation.setStarttime(new Date());
+
invitation.setAppointmentId(appointment.getAppointmentId());
+
+ invitation = em.merge(invitation);
+ long invitationId = invitation.getInvitations_id();
+
+ if (invitationId > 0) {
+ this.sendInvitionIcalLink(username, message,
baseurl,
+ meetingMember.getEmail(),
subject, invitation.getHash(),
+ appointment.getAppointmentId(),
createdBy, meetingMember.getInvitor(),
meetingMember.getUserid().getLanguage_id(),
+
appointment.getAppointmentStarttime(), appointment.getAppointmentEndtime(),
+
timezoneUtil.getTimezoneByUser(createdBy), createdBy.getFirstname() + " " +
createdBy.getLastname());
+ return invitationId;
+ }
+ } catch (Exception err) {
+ log.error("addInvitationIcalLink", err);
+ }
+ return null;
+ }
+
//
---------------------------------------------------------------------------------------------------------
public String sendInvitionLink(User us, Invitations inv, String
message, String baseurl, String subject, Long language_id) {
return sendInvitionLink(us != null ?
us.getAdresses().getEmail() : inv.getInvitedEMail()
@@ -638,6 +822,48 @@ public class InvitationManager {
return null;
}
+
+ /**
+ * @author vasya
+ *
+ * @param invitor
+ * @param meetingMember
+ * @param appointment
+ * @param message
+ * @param baseurl
+ * @param subject
+ * @param invitationsHash
+ */
+ private String sendInvitionLink(User invitor, MeetingMember
meetingMember,
+ Appointment appointment,
+ String message,
+ String baseurl, String subject,
+ String invitationsHash) {
+ try {
+
+ String invitation_link = baseurl;
+ if (meetingMember.getUserid().getType() ==
Type.contact) {
+ invitation_link += "?invitationHash="
+ + invitationsHash;
+
+ if (invitor.getLanguage_id() > 0) {
+ invitation_link += "&language=" +
invitor.getLanguage_id().toString();
+ }
+ }
+
+ String template =
invitationTemplate.getRegisterInvitationTemplate(
+ invitor.getFirstname() + " " +
invitor.getLastname(), message, invitation_link, invitor.getLanguage_id(),
+ appointment.getAppointmentStarttime(),
+ appointment.getAppointmentEndtime());
+
+ mailHandler.send(meetingMember.getEmail(),
invitor.getAdresses().getEmail(), subject, template);
+ return "success";
+ } catch (Exception err) {
+ log.error("sendInvitationLink", err);
+ }
+ return null;
+ }
+
/**
* @author o.becherer
* @param userName
@@ -853,17 +1079,20 @@ public class InvitationManager {
*/
public String sendInvitionIcalLink(String username, String message,
String baseurl, String email, String subject,
- String invitationsHash, Long appointMentId, Long
organizer_userId,
+ String invitationsHash, Long appointMentId, User
organizer,
Boolean invitor, Long language_id, Date starttime, Date
endtime,
TimeZone timezone, String fromUserField) {
try {
- String invitation_link = baseurl + "?invitationHash="
+ String invitation_link = baseurl;
+ if (invitationsHash.length() > 0) {
+ invitation_link += "?invitationHash="
+ invitationsHash;
- if (language_id > 0) {
- invitation_link += "&language=" + language_id.toString();
- }
+ if (language_id > 0) {
+ invitation_link += "&language=" +
language_id.toString();
+ }
+ }
String template =
invitationTemplate.getRegisterInvitationTemplate(
fromUserField, message,
invitation_link, language_id, starttime,
@@ -884,14 +1113,13 @@ public class InvitationManager {
atts.add(attendeeList);
// Defining Organizer
- User user = userManager.getUserById(organizer_userId);
HashMap<String, String> organizerAttendee = handler
.getAttendeeData(email, username,
invitor);
String replyToEmail = null;
- if (user != null) {
- replyToEmail = user.getAdresses().getEmail();
- organizerAttendee =
handler.getAttendeeData(replyToEmail, user.getLogin(), invitor);
+ if (organizer != null) {
+ replyToEmail =
organizer.getAdresses().getEmail();
+ organizerAttendee =
handler.getAttendeeData(replyToEmail, organizer.getLogin(), invitor);
}
// Create ICal Message
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java?rev=1507192&r1=1507191&r2=1507192&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
Fri Jul 26 04:48:30 2013
@@ -154,7 +154,11 @@ public class MainPage extends BaseInited
@Override
protected void respond(AjaxRequestTarget target) {
- StringValue baseUrl =
getRequestCycle().getRequest().getRequestParameters().getParameterValue("baseUrl");
+ StringValue url =
getRequestCycle().getRequest().getRequestParameters().getParameterValue("baseUrl");
+ String baseUrl = url.toString();
+ if (baseUrl.indexOf('#') > 0){
+ baseUrl = baseUrl.substring(0,
baseUrl.indexOf('#'));
+ }
WebSession.get().setBaseUrl(baseUrl.toString());
}
});