Index: lams_central/src/java/org/lamsfoundation/lams/web/PresenceServlet.java =================================================================== diff -u -rdeab1a0aef578ae38f893dd99735fd61cbb85936 -re067b86460735bebd9946535668f0482c5a577cc --- lams_central/src/java/org/lamsfoundation/lams/web/PresenceServlet.java (.../PresenceServlet.java) (revision deab1a0aef578ae38f893dd99735fd61cbb85936) +++ lams_central/src/java/org/lamsfoundation/lams/web/PresenceServlet.java (.../PresenceServlet.java) (revision e067b86460735bebd9946535668f0482c5a577cc) @@ -38,13 +38,18 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.learning.service.ICoreLearnerService; +import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; +import org.lamsfoundation.lams.lesson.dto.LessonDTO; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.dto.UserFlashDTO; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService; import org.lamsfoundation.lams.workspace.web.WorkspaceAction; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.util.XMPPUtil; import org.lamsfoundation.lams.util.wddx.FlashMessage; @@ -101,7 +106,13 @@ HttpServletRequest request, HttpServletResponse response)throws Exception{ - String xmppRoomName = (String)WebUtil.readStrParam(request,"xmppRoomName"); + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + + Long lessonId = (Long)WebUtil.readLongParam(request,"lessonId"); + LessonDTO dto = learnerService.getLessonData(lessonId); + String xmppRoomName = lessonId + dto.getCreateDateTimeString() + "@" + Configuration.get(ConfigurationKeys.XMPP_CONFERENCE); + xmppRoomName = xmppRoomName.replace(" ", "_"); + xmppRoomName = xmppRoomName.replace(":", "_"); Boolean xmppRoomCreated = XMPPUtil.createMultiUserChat(xmppRoomName); FlashMessage flashMessage = null; Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dto/LessonDTO.java =================================================================== diff -u -r4b24094f139dd10a9779ce6e678cb8ca38317148 -re067b86460735bebd9946535668f0482c5a577cc --- lams_common/src/java/org/lamsfoundation/lams/lesson/dto/LessonDTO.java (.../LessonDTO.java) (revision 4b24094f139dd10a9779ce6e678cb8ca38317148) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dto/LessonDTO.java (.../LessonDTO.java) (revision e067b86460735bebd9946535668f0482c5a577cc) @@ -53,6 +53,7 @@ private Integer lessonStateID; private Integer organisationID; private Date createDateTime; + private String createDateTimeString; private Date startDateTime; private Long learningDesignID; private Boolean learnerExportAvailable; @@ -76,6 +77,7 @@ Organisation org = lesson.getOrganisation(); this.organisationID = org != null ? org.getOrganisationId() : null; this.createDateTime = lesson.getCreateDateTime(); + this.createDateTimeString = lesson.getCreateDateTime().toString(); this.startDateTime = lesson.getStartDateTime(); this.learnerExportAvailable = lesson.getLearnerExportAvailable(); this.learnerPresenceAvailable = lesson.getLearnerPresenceAvailable(); @@ -126,7 +128,11 @@ public Date getStartDateTime() { return startDateTime; } - + + public String getCreateDateTimeString() { + return createDateTimeString; + } + public Integer getOrganisationID() { return organisationID; } @@ -160,6 +166,7 @@ sb.append("learningDesignID='" + getLearningDesignID() + "'; "); sb.append("organisationID='" + getOrganisationID() + "'; "); sb.append("createDateTime='" + getCreateDateTime() + "'; "); + sb.append("createDateTimeString='" + getCreateDateTimeString() + "'; "); sb.append("startDateTime='" + getStartDateTime() + "'; "); sb.append("learnerExportAvailable='" + getLearnerExportAvailable() + "'; "); sb.append("learnerPresenceAvailable='" + getLearnerPresenceAvailable() + "'; "); Index: lams_flash/src/central/flash/org/lamsfoundation/lams/learner/Presence.as =================================================================== diff -u -r12450cbea53946ad074ec52d10f5e94ae207e1f9 -re067b86460735bebd9946535668f0482c5a577cc --- lams_flash/src/central/flash/org/lamsfoundation/lams/learner/Presence.as (.../Presence.as) (revision 12450cbea53946ad074ec52d10f5e94ae207e1f9) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/learner/Presence.as (.../Presence.as) (revision e067b86460735bebd9946535668f0482c5a577cc) @@ -141,9 +141,11 @@ var h = myDate.getHours().toString(), m = myDate.getMinutes().toString(), s = myDate.getSeconds().toString(); var resource = "LAMSPRESENCE"+h+""+m+""+s; var nickName:String = _root.firstName + " " + _root.lastName; + var roomName:String = _root.lessonID + _lessonModel.createDateTimeString; nickName = StringUtils.correctPresenceName(nickName); - Debugger.log("PRESENCE: with arguements - " + String(_root.presenceServerUrl) + " " + String(_root.userID) + " " + String(_root.userID) + " " + String(resource) + " " + String(_root.lessonID) + " " + nickName + " " + "false" + " " + "true",Debugger.MED,'attemptConnection','Presence'); - _root.proxy.call("doLogin", _root.presenceServerUrl, _root.userID, _root.userID, resource, _root.lessonID, nickName, false, true); + roomName = StringUtils.correctPresenceRoomName(roomName); + Debugger.log("PRESENCE: with arguements - " + String(_root.presenceServerUrl) + " " + String(_root.userID) + " " + String(_root.userID) + " " + String(resource) + " " + roomName + " " + nickName + " " + "false" + " " + "true",Debugger.MED,'attemptConnection','Presence'); + _root.proxy.call("doLogin", _root.presenceServerUrl, _root.userID, _root.userID, resource, roomName, nickName, false, true); } // Attempts to register to the Jabber server Index: lams_flash/src/central/flash/org/lamsfoundation/lams/learner/ls/LessonModel.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -re067b86460735bebd9946535668f0482c5a577cc --- lams_flash/src/central/flash/org/lamsfoundation/lams/learner/ls/LessonModel.as (.../LessonModel.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/learner/ls/LessonModel.as (.../LessonModel.as) (revision e067b86460735bebd9946535668f0482c5a577cc) @@ -64,6 +64,8 @@ private var _learnerExportAvailable:Boolean; private var _learnerPresenceAvailable:Boolean; private var _learnerImAvailable:Boolean; + private var _createDateTime:String; + private var _createDateTimeString:String; /* the learningDesignModel gets set when you join a lesson */ private var _learningDesignModel:DesignDataModel; @@ -108,6 +110,8 @@ _learnerExportAvailable = dto.learnerExportAvailable; _learnerPresenceAvailable = dto.learnerPresenceAvailable; _learnerImAvailable = dto.learnerImAvailable; + _createDateTime = dto.createDateTime; + _createDateTimeString = dto.createDateTimeString; Debugger.log("PRESENCE: " + dto.lessonID + " " + dto.lessonName + " " + dto.learnerExportAvailable + " " + dto.learnerPresenceAvailable + " " + dto.learnerImAvailable,Debugger.MED,'populateUserFromDTO','LessonModel'); @@ -221,7 +225,7 @@ public function get userFirstName():String{ return _userFirstName; } - + /** * Set the userLastName * @@ -314,6 +318,30 @@ return _lessonDescription; } + public function getCreateDateTime():String { + return _createDateTime; + } + + public function get createDateTime():String{ + return _createDateTime; + } + + public function setCreateDateTime(s:String) { + _createDateTime= s; + } + + public function getCreateDateTimeString():String { + return _createDateTimeString; + } + + public function get createDateTimeString():String{ + return _createDateTimeString; + } + + public function setCreateDateTimeString(s:String) { + _createDateTimeString = s; + } + public function setLessonStateID(lessonStateID:Number) { _lessonStateID = lessonStateID; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/Wizard.as =================================================================== diff -u -r12450cbea53946ad074ec52d10f5e94ae207e1f9 -re067b86460735bebd9946535668f0482c5a577cc --- lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/Wizard.as (.../Wizard.as) (revision 12450cbea53946ad074ec52d10f5e94ae207e1f9) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/Wizard.as (.../Wizard.as) (revision e067b86460735bebd9946535668f0482c5a577cc) @@ -288,8 +288,7 @@ //if (wizardModel.resultDTO.enablePresence) { Debugger.log("presence enabled, creating xmpp room", Debugger.MED, "startLesson", "Wizard"); //var callback:Function = Proxy.create(this, onCreateXmppRoom); - var roomName:String = String(lessonID) + "@conference." + _root.presenceServerUrl; - Application.getInstance().getComms().getRequest('Presence.do?method=createXmppRoom&xmppRoomName=' + roomName, null, false); + Application.getInstance().getComms().getRequest('Presence.do?method=createXmppRoom&lessonId=' + lessonID, null, false); if (isScheduled) { Debugger.log("calling start lesson scheduled", Debugger.MED, "startLesson", "Wizard"); @@ -344,10 +343,8 @@ //if (wizardModel.resultDTO.enablePresence) { Debugger.log("presence enabled, creating xmpp room", Debugger.MED, "startMultipleLessons", "Wizard"); //var callback:Function = Proxy.create(this, onCreateXmppRoom); - var roomName:String = String(lessonIDs[startedLessonsCount]) + "@conference." + _root.presenceServerUrl; - Application.getInstance().getComms().getRequest('Presence.do?method=createXmppRoom&xmppRoomName=' + roomName, null, false); + Application.getInstance().getComms().getRequest('Presence.do?method=createXmppRoom&lessonId=' + lessonIDs[startedLessonsCount], null, false); - Debugger.log("calling start lesson non-scheduled", Debugger.MED, "startMultipleLessons", "Wizard"); Debugger.log("monitoring/monitoring.do?method=startLesson&lessonID=" + lessonIDs[startedLessonsCount] + '&userID=' + _root.userID, Debugger.MED, "startMultipleLessons", "Wizard"); Application.getInstance().getComms().getRequest('monitoring/monitoring.do?method=startLesson&lessonID=' + lessonIDs[startedLessonsCount] + '&userID=' + _root.userID, callback); @@ -377,8 +374,7 @@ //if (wizardModel.resultDTO.enablePresence) { Debugger.log("presence enabled, creating xmpp room", Debugger.MED, "startMultipleScheduledLessons", "Wizard"); //var callback:Function = Proxy.create(this, onCreateXmppRoom); - var roomName:String = String(lessonIDs[startedLessonsCount]) + "@conference." + _root.presenceServerUrl; - Application.getInstance().getComms().getRequest('Presence.do?method=createXmppRoom&xmppRoomName=' + roomName, null, false); + Application.getInstance().getComms().getRequest('Presence.do?method=createXmppRoom&lessonId=' + lessonIDs[startedLessonsCount], null, false); Debugger.log("calling start lesson scheduled", Debugger.MED, "startMultipleScheduledLessons", "Wizard"); Application.getInstance().getComms().getRequest('monitoring/monitoring.do?method=startOnScheduleLesson&lessonStartDate=' + scheduleDateTime + '&lessonID=' + lessonIDs[startedLessonsCount] + '&userID=' + _root.userID, callback); Index: lams_flash/src/common/flash/org/lamsfoundation/lams/common/util/StringUtils.as =================================================================== diff -u -r12450cbea53946ad074ec52d10f5e94ae207e1f9 -re067b86460735bebd9946535668f0482c5a577cc --- lams_flash/src/common/flash/org/lamsfoundation/lams/common/util/StringUtils.as (.../StringUtils.as) (revision 12450cbea53946ad074ec52d10f5e94ae207e1f9) +++ lams_flash/src/common/flash/org/lamsfoundation/lams/common/util/StringUtils.as (.../StringUtils.as) (revision e067b86460735bebd9946535668f0482c5a577cc) @@ -408,7 +408,28 @@ } - Debugger.log("correctPresenceName originalNick: " + s + " correctedNick: " + newNick, Debugger.MED, "isANumber", "StringUtils"); + Debugger.log("correctPresenceName originalNick: " + s + " correctedNick: " + newNick, Debugger.MED, "correctPresenceName", "StringUtils"); return newNick; } + + public static function correctPresenceRoomName(s:String):String { + var newRoomName:String = new String(""); + for (var i:Number = 0; i < s.length; i++) { + switch(s.charAt(i)) { + case " ": { + newRoomName += "_"; + break; + } + case ":": { + newRoomName += "_"; + break; + } + default: { + newRoomName += s.charAt(i); + } + } + } + Debugger.log("correctPresenceRoomName originalRoomName: " + s + " correctedRoomName: " + newRoomName, Debugger.MED, "correctPresenceRoomName", "StringUtils"); + return newRoomName; + } } \ No newline at end of file Index: lams_learning/web/lams_learner.swf =================================================================== diff -u -r282e4e9c8bf4c8981506594ec789acc7ec344a6f -re067b86460735bebd9946535668f0482c5a577cc Binary files differ Index: lams_monitoring/web/lams_wizard.swf =================================================================== diff -u -r12450cbea53946ad074ec52d10f5e94ae207e1f9 -re067b86460735bebd9946535668f0482c5a577cc Binary files differ Index: lams_monitoring/web/lams_wizard_library.swf =================================================================== diff -u -r12450cbea53946ad074ec52d10f5e94ae207e1f9 -re067b86460735bebd9946535668f0482c5a577cc Binary files differ