Index: lams_build/lib/jabber/JabberHTTPBind-1.1.1.jar =================================================================== diff -u -r4b24094f139dd10a9779ce6e678cb8ca38317148 -r68d2988cca350af15ba4087814f74e1527a71997 Binary files differ Index: lams_build/lib/lams/lams-monitoring.jar =================================================================== diff -u -r8386a3fecd9c7baf6ed69d499016dedd8a83eac6 -r68d2988cca350af15ba4087814f74e1527a71997 Binary files differ Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r8386a3fecd9c7baf6ed69d499016dedd8a83eac6 -r68d2988cca350af15ba4087814f74e1527a71997 Binary files differ Index: lams_central/conf/flashxml/lams/defaultTheme.xml =================================================================== diff -u -r26cc52350052392fed362c09ccb27a8ef43ce845 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_central/conf/flashxml/lams/defaultTheme.xml (.../defaultTheme.xml) (revision 26cc52350052392fed362c09ccb27a8ef43ce845) +++ lams_central/conf/flashxml/lams/defaultTheme.xml (.../defaultTheme.xml) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -1 +1 @@ -
0x33364810Verdana0x669BF20x669BF20x669BF2insetdefaultbutton0x3336489Verdana0xBFFFBF0xBFFFBF0xBFFFBF0x669BF2label0x33364812VerdanaPIlabel0x33364810VerdanaCALabel0x33364811VerdananoneEndGatelabel0x3336487VerdanaLFWindow0x33364814Verdana0xBFFFBF0xBFFFBF0xBFFFBFinsettreeview0x33364814Verdana0xBFFFBF0xBFFFBF0xBFFFBFElasticdatagrid0x33364814Verdana0xBFFFBF0xBFFFBF0xBFFFBFElasticcombo0x33364811Verdana0xBFFFBF0xBFFFBF0xBFFFBFpicombo0x3336489Verdana0xBFFFBF0xBFFFBF0xBFFFBFLFMenuBar0x33364811Verdana0xBFFFBF0xBFFFBF0xBFFFBFBGPaneloutset0xC2D5FEFlowPanelnone0xC2D5FEWZPaneloutset0xDBE6FDMHPanelnone0xDBE6FDTAPaneloutset0xC2D5FE0x000000scrollpane0x669BF2textarea0x333648Verdana10CanvasPanel0xFCFCFCACTPanelNone0xC2D5FEACTPanel0None0xE1E7E7ACTPanel1None0xC2D5FEACTPanel2None0xFFFDBEACTPanel3None0xDDFCB1ACTPanel4None0xFFEEC8ACTPanel5None0xE9E2F5OptActContainerPanelinset0x25a56fOptActPanelnone0xd8ffefparallelHeadPaneloutset0x4684F7OptHeadPaneloutset0x4684F7ACTPanelNegativeNone0x000000smallLabel0x333648 10 VerdanaTAPanelSelected0x1B6BA7redLabel0xFF0000 12 VerdanaboldTAPanelRollover0xFFFFFFoutsetBGPanelShadow0xAFC8FFCAHighlightBorder0x266DEELTVLearnerText0x555555Verdana11bold0xE7EEFEsolidAboutDialogScpGeneralItem0x66666611VerdanaAboutDialogScpHeaderItem0x66666611VerdanaboldAboutDialogPanel0xFFFFFFnoneAlertDialog1000100010001000IndexBar0x1647BEIndexButtonTahoma12IndexTextFieldTahoma120x333333progressBar0xEAF9FF0x0033660xC4D6FF0x003366branchingDiagram0x0000000x0000000xCC0000BlueTextArea0xC2D5FE \ No newline at end of file +
0x33364810Verdana0x669BF20x669BF20x669BF2insetdefaultbutton0x3336489Verdana0xBFFFBF0xBFFFBF0xBFFFBF0x669BF2label0x33364812VerdanaPIlabel0x33364810VerdanaCALabel0x33364811VerdananoneEndGatelabel0x3336487VerdanaLFWindow0x33364814Verdana0xBFFFBF0xBFFFBF0xBFFFBFinsettreeview0x33364814Verdana0xBFFFBF0xBFFFBF0xBFFFBFElasticdatagrid0x33364814Verdana0xBFFFBF0xBFFFBF0xBFFFBFElasticcombo0x33364811Verdana0xBFFFBF0xBFFFBF0xBFFFBFpicombo0x3336489Verdana0xBFFFBF0xBFFFBF0xBFFFBFLFMenuBar0x33364811Verdana0xBFFFBF0xBFFFBF0xBFFFBFBGPaneloutset0xC2D5FEFlowPanelnone0xC2D5FEWZPaneloutset0xDBE6FDMHPanelnone0xDBE6FDTAPaneloutset0xC2D5FE0x000000scrollpane0x669BF2textarea0x333648Verdana10CanvasPanel0xFCFCFCACTPanelNone0xC2D5FEACTPanel0None0xE1E7E7ACTPanel1None0xC2D5FEACTPanel2None0xFFFDBEACTPanel3None0xDDFCB1ACTPanel4None0xFFEEC8ACTPanel5None0xE9E2F5OptActContainerPanelinset0x25a56fOptActPanelnone0xd8ffefparallelHeadPaneloutset0x4684F7OptHeadPaneloutset0x4684F7ACTPanelNegativeNone0x000000smallLabel0x333648 10 VerdanaTAPanelSelected0x1B6BA7redLabel0xFF0000 12 VerdanaboldTAPanelRollover0xFFFFFFoutsetBGPanelShadow0xAFC8FFCAHighlightBorder0x266DEELTVLearnerText0x555555Verdana11bold0xE7EEFEsolidAboutDialogScpGeneralItem0x66666611VerdanaAboutDialogScpHeaderItem0x66666611VerdanaboldAboutDialogPanel0xFFFFFFnoneAlertDialog1000100010001000IndexBar0x1647BEIndexButtonTahoma12IndexTextFieldTahoma120x333333progressBar0xEAF9FF0x0033660xC4D6FF0x003366branchingDiagram0x0000000x0000000xCC0000BlueTextArea0xC2D5FELightBlueTextArea0x669BF2None \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/webservice/LessonManagerSoapBindingImpl.java =================================================================== diff -u -r961e65c76e64f2fe8ed146302e3818daac94890d -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_central/src/java/org/lamsfoundation/lams/webservice/LessonManagerSoapBindingImpl.java (.../LessonManagerSoapBindingImpl.java) (revision 961e65c76e64f2fe8ed146302e3818daac94890d) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/LessonManagerSoapBindingImpl.java (.../LessonManagerSoapBindingImpl.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -72,7 +72,7 @@ countryIsoCode, langIsoCode, null); // 1. init lesson Lesson lesson = monitoringService.initializeLesson(title, desc, Boolean.TRUE, ldId, orgMap - .getOrganisation().getOrganisationId(), userMap.getUser().getUserId(), customCSV, Boolean.FALSE, Boolean.FALSE); + .getOrganisation().getOrganisationId(), userMap.getUser().getUserId(), customCSV, Boolean.FALSE, Boolean.FALSE, Boolean.FALSE); // 2. create lessonClass for lesson createLessonClass(lesson, orgMap.getOrganisation(), userMap.getUser()); // 3. start lesson @@ -94,7 +94,7 @@ countryIsoCode, langIsoCode, null); // 1. init lesson Lesson lesson = monitoringService.initializeLesson(title, desc, Boolean.TRUE, ldId, orgMap - .getOrganisation().getOrganisationId(), userMap.getUser().getUserId(), customCSV, Boolean.FALSE, Boolean.FALSE); + .getOrganisation().getOrganisationId(), userMap.getUser().getUserId(), customCSV, Boolean.FALSE, Boolean.FALSE, Boolean.FALSE); // 2. create lessonClass for lesson createLessonClass(lesson, orgMap.getOrganisation(), userMap.getUser()); // 3. schedule lesson Index: lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonJoinServlet.java =================================================================== diff -u -r961e65c76e64f2fe8ed146302e3818daac94890d -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonJoinServlet.java (.../LessonJoinServlet.java) (revision 961e65c76e64f2fe8ed146302e3818daac94890d) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonJoinServlet.java (.../LessonJoinServlet.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -251,6 +251,7 @@ Boolean learnerExportAvailable; Boolean learnerPresenceAvailable; Boolean learnerImAvailable; + Boolean liveEditEnabled; Integer ownerUserId; Organisation org = (Organisation)userService.findById(Organisation.class, orgId); String learnerGroupName; @@ -267,6 +268,7 @@ learnerExportAvailable = l.getLearnerExportAvailable(); learnerPresenceAvailable = l.getLearnerPresenceAvailable(); learnerImAvailable = l.getLearnerImAvailable(); + liveEditEnabled = l.getLiveEditEnabled(); ownerUserId = l.getUser().getUserId(); learnerGroupName = l.getLessonClass().getLearnersGroup().getGroupName(); staffGroupName = l.getLessonClass().getStaffGroup().getGroupName(); @@ -279,14 +281,15 @@ learnerExportAvailable = true; learnerPresenceAvailable = false; learnerImAvailable = false; + liveEditEnabled = false; ownerUserId = ld.getUser().getUserId(); learnerGroupName = org.getName() + " Learners"; staffGroupName = org.getName() + " Staff"; Vector userDTOs = userService.getUsersFromOrganisationByRole(orgId, Role.MONITOR, false); staffList = getUsersFromDTOs(userDTOs); } Lesson lesson = monitoringService.initializeLesson(lessonName, lessonDescription, learnerExportAvailable, - ldId, orgId, ownerUserId, null, learnerPresenceAvailable, learnerImAvailable); + ldId, orgId, ownerUserId, null, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); monitoringService.createLessonClassForLesson(lesson.getLessonId().longValue(), org, learnerGroupName, learnerList, staffGroupName, staffList, ownerUserId); monitoringService.startLesson(lesson.getLessonId().longValue(), ownerUserId); Index: lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java =================================================================== diff -u -r961e65c76e64f2fe8ed146302e3818daac94890d -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision 961e65c76e64f2fe8ed146302e3818daac94890d) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -288,7 +288,7 @@ Lesson lesson = monitoringService.initializeLesson(title, desc, Boolean.TRUE, ldId, orgMap.getOrganisation().getOrganisationId(), userMap.getUser().getUserId(), - customCSV, Boolean.FALSE, Boolean.FALSE); + customCSV, Boolean.FALSE, Boolean.FALSE, Boolean.FALSE); // 2. create lessonClass for lesson createLessonClass(lesson, orgMap.getOrganisation(), userMap .getUser()); @@ -319,7 +319,7 @@ Lesson lesson = monitoringService .initializeLesson(title, desc, Boolean.TRUE, ldId, orgMap .getOrganisation().getOrganisationId(), userMap - .getUser().getUserId(), customCSV, false, false); + .getUser().getUserId(), customCSV, false, false, false); // 2. create lessonClass for lesson createLessonClass(lesson, orgMap.getOrganisation(), userMap .getUser()); @@ -530,7 +530,7 @@ serverMap, userMap, courseId, countryIsoCode, langIsoCode, null); // 1. init lesson Lesson lesson = monitoringService - .initializeLessonForPreview(title, desc, ldId, userMap.getUser().getUserId(), customCSV, false, false); + .initializeLessonForPreview(title, desc, ldId, userMap.getUser().getUserId(), customCSV, false, false, false); // 2. create lessonClass for lesson monitoringService.createPreviewClassForLesson(userMap.getUser().getUserId(), lesson.getLessonId()); Index: lams_common/db/sql/create_lams_11_tables.sql =================================================================== diff -u -r8386a3fecd9c7baf6ed69d499016dedd8a83eac6 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_common/db/sql/create_lams_11_tables.sql (.../create_lams_11_tables.sql) (revision 8386a3fecd9c7baf6ed69d499016dedd8a83eac6) +++ lams_common/db/sql/create_lams_11_tables.sql (.../create_lams_11_tables.sql) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -652,6 +652,7 @@ , learner_exportport_avail TINYINT(1) DEFAULT 1 , learner_presence_avail TINYINT(1) DEFAULT 0 , learner_im_avail TINYINT(1) DEFAULT 0 + , live_edit_enabled TINYINT(1) DEFAULT 0 , locked_for_edit TINYINT DEFAULT 0 , version INTEGER DEFAULT 1 , PRIMARY KEY (lesson_id) Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch0013_updateFrom21.sql =================================================================== diff -u -r757be0772485996602597fd02ec0edd6b79a9cb4 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch0013_updateFrom21.sql (.../patch0013_updateFrom21.sql) (revision 757be0772485996602597fd02ec0edd6b79a9cb4) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch0013_updateFrom21.sql (.../patch0013_updateFrom21.sql) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -67,6 +67,9 @@ UPDATE lams_configuration SET config_key='TruststorePath' WHERE config_key='LDAPTruststorePath'; UPDATE lams_configuration SET config_key='TruststorePassword' WHERE config_key='LDAPTruststorePassword'; +-- LDEV-1260 - local live edit field added +ALTER TABLE lams_lesson ADD COLUMN live_edit_enabled TINYINT(1) DEFAULT 0; + ----------------------Put all sql statements above here------------------------- -- If there were no errors, commit and restore autocommit to on Index: lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java =================================================================== diff -u -r4b24094f139dd10a9779ce6e678cb8ca38317148 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java (.../Lesson.java) (revision 4b24094f139dd10a9779ce6e678cb8ca38317148) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java (.../Lesson.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -132,6 +132,9 @@ /** Persistent field. Defaults to FALSE if not set to anything by a constructor parameter. */ private Boolean learnerImAvailable; + /** Persistent field. Defaults to FALSE if not set to anything by a constructor parameter. */ + private Boolean liveEditEnabled; + //--------------------------------------------------------------------- // constructors //--------------------------------------------------------------------- @@ -146,10 +149,10 @@ */ public Lesson(String name,String description,Date createDateTime, User user, Integer lessonStateId, Integer previousLessonStateId, Boolean learnerExportAvailable, - LearningDesign learningDesign,Set learnerProgresses, Boolean learnerPresenceAvailable, Boolean learnerImAvailable) + LearningDesign learningDesign, Set learnerProgresses, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled) { this(null,name,description,createDateTime,null,null,user,lessonStateId,previousLessonStateId, - learnerExportAvailable,false, learningDesign,null,null,learnerProgresses, learnerPresenceAvailable, learnerImAvailable); + learnerExportAvailable,false, learningDesign,null,null,learnerProgresses, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); } /** @@ -159,17 +162,17 @@ */ public Lesson(String name,String description,Date createDateTime, User user, Integer lessonStateId, Integer previousLessonStateId, Boolean learnerExportAvailable, LearningDesign learningDesign, LessonClass lessonClass, - Organisation organisation, Set learnerProgresses, Boolean learnerPresenceAvailable, Boolean learnerImAvailable) + Organisation organisation, Set learnerProgresses, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled) { this(null,name,description,createDateTime,null,null,user,lessonStateId,previousLessonStateId, - learnerExportAvailable, false, learningDesign,lessonClass,organisation,learnerProgresses, learnerPresenceAvailable, learnerImAvailable); + learnerExportAvailable, false, learningDesign,lessonClass,organisation,learnerProgresses, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); } /** full constructor */ public Lesson(Long lessonId,String name,String description, Date createDateTime, Date startDateTime, Date endDateTime, User user, Integer lessonStateId, Integer previousLessonStateId, Boolean learnerExportAvailable, Boolean lockedForEdit, LearningDesign learningDesign, LessonClass lessonClass, - Organisation organisation, Set learnerProgresses, Boolean learnerPresenceAvailable, Boolean learnerImAvailable) + Organisation organisation, Set learnerProgresses, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled) { this.lessonId = lessonId; this.lessonName = name; @@ -187,7 +190,8 @@ this.learningDesign = learningDesign; this.lessonClass = lessonClass; this.organisation = organisation; - this.learnerProgresses = learnerProgresses; + this.learnerProgresses = learnerProgresses; + this.liveEditEnabled = liveEditEnabled; } /** * Factory method that create a new lesson. It initialized all necessary @@ -209,7 +213,8 @@ LearningDesign ld, LessonClass newLessonClass, Boolean learnerPresenceAvailable, - Boolean learnerImAvailable) + Boolean learnerImAvailable, + Boolean liveEditEnabled) { //setup new lesson return new Lesson(lessonName, @@ -224,6 +229,7 @@ organisation, new HashSet(), //learner progress false, + false, false); } @@ -243,7 +249,8 @@ Boolean learnerExportAvailable, LearningDesign ld, Boolean learnerPresenceAvailable, - Boolean learnerImAvailable) + Boolean learnerImAvailable, + Boolean liveEditEnabled) { return new Lesson(lessonName, lessonDescription, @@ -255,7 +262,8 @@ ld, new HashSet(), learnerPresenceAvailable, - learnerImAvailable); + learnerImAvailable, + liveEditEnabled); } //--------------------------------------------------------------------- // Getters and Setters @@ -458,6 +466,18 @@ this.learnerImAvailable = learnerImAvailable; } + /** + * @hibernate.property type="java.lang.Boolean" column="live_edit_enabled" + * length="1" + */ + public Boolean getLiveEditEnabled() { + return liveEditEnabled; + } + + public void setLiveEditEnabled(Boolean liveEditEnabled) { + this.liveEditEnabled = liveEditEnabled; + } + /** * @hibernate.property type="java.lang.Boolean" column="locked_for_edit" * length="1" Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dto/LessonDetailsDTO.java =================================================================== diff -u -r9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dto/LessonDetailsDTO.java (.../LessonDetailsDTO.java) (revision 9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dto/LessonDetailsDTO.java (.../LessonDetailsDTO.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -57,6 +57,9 @@ private Integer numberStartedLearners; private Boolean learnerExportAvailable; private Boolean locked_for_edit; + private Boolean learnerPresenceAvailable; + private Boolean learnerImAvailable; + private Boolean liveEditEnabled; /** Create the DTO based on the lesson. Sets up all the fields except numberStartedLearners */ public LessonDetailsDTO(Lesson lesson){ @@ -115,6 +118,11 @@ this.learnerExportAvailable = lesson.getLearnerExportAvailable(); + this.learnerPresenceAvailable = lesson.getLearnerPresenceAvailable(); + this.learnerImAvailable = lesson.getLearnerImAvailable(); + + this.liveEditEnabled = lesson.getLiveEditEnabled(); + this.locked_for_edit = lesson.getLockedForEdit(); } public Date getScheduleEndDate() { @@ -236,7 +244,16 @@ public Boolean getLearnerExportAvailable() { return learnerExportAvailable; } + public Boolean getLearnerPresenceAvailable() { + return learnerPresenceAvailable; + } + public Boolean getLearnerImAvailable() { + return learnerImAvailable; + } public Boolean getLockedForEdit() { return locked_for_edit; } + public Boolean getLiveEditEnabled() { + return liveEditEnabled; + } } Index: lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java =================================================================== diff -u -r4b24094f139dd10a9779ce6e678cb8ca38317148 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java (.../LessonDataAccessTestCase.java) (revision 4b24094f139dd10a9779ce6e678cb8ca38317148) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java (.../LessonDataAccessTestCase.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -250,7 +250,8 @@ testOrg, new HashSet(), false, - false);//learner progress + false, + false); } Index: lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java =================================================================== diff -u -r4b24094f139dd10a9779ce6e678cb8ca38317148 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java (.../TestLessonDAO.java) (revision 4b24094f139dd10a9779ce6e678cb8ca38317148) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java (.../TestLessonDAO.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -122,6 +122,7 @@ true, testLearningDesign, false, + false, false); try Index: lams_common/test/java/org/lamsfoundation/lams/lesson/service/TestLessonService.java =================================================================== diff -u -r4b24094f139dd10a9779ce6e678cb8ca38317148 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_common/test/java/org/lamsfoundation/lams/lesson/service/TestLessonService.java (.../TestLessonService.java) (revision 4b24094f139dd10a9779ce6e678cb8ca38317148) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/service/TestLessonService.java (.../TestLessonService.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -79,7 +79,7 @@ User test1 = userManagementService.getUserByLogin(TEST1_USER_LOGIN); // this lesson isn't valid as it doesn't have a learning design - Lesson newLesson = Lesson.createNewLessonWithoutClass("test lesson", "test lesson", mmm, true, null, false, false); + Lesson newLesson = Lesson.createNewLessonWithoutClass("test lesson", "test lesson", mmm, true, null, false, false, false); lessonDAO.saveLesson(newLesson); Organisation organisation = (Organisation) baseDAO.find(Organisation.class, TEST_ORG_ID); Index: lams_flash/src/central/flash/lam_addseq_wiz.fla =================================================================== diff -u -r53a530570087c6901259fb2958a4b7974df55372 -r68d2988cca350af15ba4087814f74e1527a71997 Binary files differ Index: lams_flash/src/central/flash/lams_wizard_main.fla =================================================================== diff -u -rde65d00b5bf887f55beabea327159f0df35f0933 -r68d2988cca350af15ba4087814f74e1527a71997 Binary files differ Index: lams_flash/src/central/flash/main_addseq.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/central/flash/main_addseq.as (.../main_addseq.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/central/flash/main_addseq.as (.../main_addseq.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -1,5 +1,6 @@ import org.lamsfoundation.lams.wizard.Application; import org.lamsfoundation.lams.common.util.StringUtils; +import org.lamsfoundation.lams.common.util.Debugger; //Temp values to be removed / repplaced at deployment /**/ @@ -30,7 +31,6 @@ Debugger.log('ClassID is not defined, using defualt:'+_root.classID,Debugger.CRITICAL,'main','ROOT'); } - if(StringUtils.isEmpty(build)){ _root.build = 2.0; Debugger.log('Build is not defined, using defualt:'+_root.build,Debugger.CRITICAL,'main','ROOT'); @@ -40,6 +40,11 @@ _root.langDate = "01-01-1970"; } +if(StringUtils.isEmpty(editOnFly)){ + _root.editOnFly = false; + Debugger.log('editOnFly is not defined, using defualt:'+_root.allowEditOnFly,Debugger.CRITICAL,'main','ROOT'); +} + //Set stage alignment to top left and prent scaling Stage.align = "TL"; Stage.scaleMode = "noScale"; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as =================================================================== diff -u -r64f42c88ebf08393b1c53bbd00c3cd4fec211c10 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 64f42c88ebf08393b1c53bbd00c3cd4fec211c10) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -647,11 +647,14 @@ * @param designID * @param orgID * @param lExportPortfolio + * @param enablePresence + * @param enableIm + * @param enableLiveEdit * * @return data obj */ - public static function getDataForInitializing(title:String, description:String, designID:Number, orgID:Number, lExportPortfolio:Boolean, enablePresence:Boolean, enableIm:Boolean):Object{ + public static function getDataForInitializing(title:String, description:String, designID:Number, orgID:Number, lExportPortfolio:Boolean, enablePresence:Boolean, enableIm:Boolean, enableLiveEdit:Boolean, numberLearnersSplit:Number, numberLessonsSplit:Number, learners:Hashtable, learnerGroupName:String, staff:Hashtable):Object{ var data:Object = new Object(); if(title) { data.lessonName = title; } @@ -661,15 +664,36 @@ if(orgID) { data.organisationID = orgID; } else { data.organisationID = Config.NUMERIC_NULL_VALUE; } - if(lExportPortfolio != null) { data.learnerExportPortfolio = lExportPortfolio } - else { data.learnerExportPortfolio = false } + if (lExportPortfolio != null) { data.learnerExportPortfolio = lExportPortfolio; } + else { data.learnerExportPortfolio = false; } - if(enablePresence != null) { data.enablePresence = enablePresence } - else { data.enablePresence = false } + if (enablePresence != null) { data.enablePresence = enablePresence; } + else { data.enablePresence = false; } - if(enableIm != null) { data.enableIm = enableIm } - else { data.enableIm = false } + if (enableIm != null) { data.enableIm = enableIm; } + else { data.enableIm = false; } + + if (enableLiveEdit != null) { data.enableLiveEdit = enableLiveEdit; } + else { data.enableLiveEdit = false; } + if (enableLiveEdit != null) { data.enableLiveEdit = enableLiveEdit; } + else { data.enableLiveEdit = false; } + + if (numberLearnersSplit != null) { data.numberLearnersSplit = numberLearnersSplit; } + else { data.numberLearnersSplit = Config.NUMERIC_NULL_VALUE; } + + if (numberLessonsSplit != null) { data.numberLessonsSplit = numberLessonsSplit; } + else { data.numberLessonsSplit = Config.NUMERIC_NULL_VALUE; } + + if (learners != null) { data.learners = learners; } + else { data.learners = null; } + + if (learnerGroupName != null) { data.learnerGroupName = learnerGroupName; } + else { data.learnerGroupName = ""; } + + if (staff != null) { data.staff = staff; } + else { data.staff = null; } + data.copyType = COPY_TYPE_ID_RUN; return data; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorView.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorView.as (.../MonitorView.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorView.as (.../MonitorView.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -235,7 +235,11 @@ private function editFlyShowHide(v:Boolean):Void{ Debugger.log("test root val: " + _root.editOnFly, Debugger.CRITICAL, "editFlyShowHide", "MonitorView"); - editFly_btn.visible = (v && _root.editOnFly == 'true') ? true : false; + var editOnFlyLocal:Boolean = Application.getInstance().sequence.liveEditEnabled; + + Debugger.log("test editOnFlyLocal val: " + editOnFlyLocal, Debugger.CRITICAL, "editFlyShowHide", "MonitorView"); + + editFly_btn.visible = (v && _root.editOnFly == 'true' && editOnFlyLocal) ? true : false; Debugger.log("visible: " + editFly_btn.visible, Debugger.CRITICAL, "editFlyShowHide", "MonitorView"); } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/Wizard.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/Wizard.as (.../Wizard.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/Wizard.as (.../Wizard.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -251,24 +251,45 @@ var learnerExpPortfolio:Boolean = resultDTO.learnerExpPortfolio; var enablePresence:Boolean = resultDTO.enablePresence; var enableIm:Boolean = resultDTO.enableIm; + var enableLiveEdit:Boolean = resultDTO.enableLiveEdit; + var learnerSelectMode:String = resultDTO.learnerSelectMode; + var learnersNbLessonsSplit:Number = resultDTO.learnersNbLessonsSplit; + var learnersNbLearnersSplit:Number = resultDTO.learnersNbLearnersSplit; + + var modelDto:Object = wizardModel.getLessonClassData(); + Debugger.log('modelDto: ' + modelDto,Debugger.MED,' initializeLesson','Wizard'); + var learners:Hashtable = modelDto.learners; + Debugger.log('learners: ' + learners,Debugger.MED,' initializeLesson','Wizard'); + var learnerGroupName:String = modelDto.groupName; + Debugger.log('learnerGroupName: ' + learnerGroupName,Debugger.MED,' initializeLesson','Wizard'); + var staff:Hashtable = modelDto.staff; + Debugger.log('staff: ' + staff,Debugger.MED,' initializeLesson','Wizard'); + // get data object to send to servlet - var data = DesignDataModel.getDataForInitializing(lessonName, lessonDesc, designId, orgId, learnerExpPortfolio, enablePresence, enableIm); + var data = DesignDataModel.getDataForInitializing(lessonName, lessonDesc, designId, orgId, learnerExpPortfolio, enablePresence, enableIm, enableLiveEdit, learnersNbLearnersSplit, learnersNbLessonsSplit, learners, learnerGroupName, staff); - trace(data.lessonName + data.enablePresence + data.enableIm); - Debugger.log(data.lessonName + data.enablePresence + data.enableIm, Debugger.MED, "initializeLesson", "Wizard"); + Debugger.log("calling servlet with data - lesson name: " + data.lessonName + " presence enabled: " +data.enablePresence + " im enabled: " +data.enableIm + " live edit enabled: " + data.enableLiveEdit + " learnersNbLessonsSplit: " + data.learnersNbLessonsSplit + " learnersNbLearnersSplit: " + data.learnersNbLearnersSplit, Debugger.MED, "initializeLesson", "Wizard"); // servlet call - Application.getInstance().getComms().sendAndReceive(data, 'monitoring/initializeLesson', callback, false); - + if (learnerSelectMode == "learnerSelectIndiv") { + Debugger.log("calling indiv initializeLesson servlet", Debugger.MED, "initializeLesson", "Wizard"); + Application.getInstance().getComms().sendAndReceive(data, 'monitoring/initializeLesson', callback, false); + } + else if (learnerSelectMode == "learnerSelectSplit") { + Debugger.log("calling split initializeLesson servlet (start lessons)", Debugger.MED, "initializeLesson", "Wizard"); + Application.getInstance().getComms().sendAndReceive(data, 'monitoring/initializeAndCreateLessons', callback, false); + } } public function startLesson(isScheduled:Boolean, lessonID:Number, datetime:String){ var callback:Function = Proxy.create(this, onStartLesson); - if(isScheduled){ + if (isScheduled) { + Debugger.log("calling start lesson scheduled", Debugger.MED, "startLesson", "Wizard"); Application.getInstance().getComms().getRequest('monitoring/monitoring.do?method=startOnScheduleLesson&lessonStartDate=' + datetime + '&lessonID=' + lessonID + '&userID=' + _root.userID, callback); } else { + Debugger.log("calling start lesson non-scheduled", Debugger.MED, "startLesson", "Wizard"); Application.getInstance().getComms().getRequest('monitoring/monitoring.do?method=startLesson&lessonID=' + lessonID + '&userID=' + _root.userID, callback); } } @@ -290,21 +311,73 @@ var dto:Object = wizardModel.getLessonClassData(); var callback:Function = Proxy.create(this,onCreateLessonClass); + Debugger.log("calling createLessonClass", Debugger.MED, "createLessonClass", "Wizard"); Application.getInstance().getComms().sendAndReceive(dto,"monitoring/createLessonClass?userID=" + _root.userID,callback,false); } public function onCreateLessonClass(r):Void{ if(r instanceof LFError) { r.showErrorAlert(); - } else if(r) { + } else if (r) { + Debugger.log("callback onCreateLessonClass called", Debugger.MED, "onCreateLessonClass", "Wizard"); // lesson class created wizardModel.broadcastViewUpdate("SAVED_LC", wizardModel.resultDTO.mode); } else { // failed creating lesson class } } + + public function startMultipleLessons():Void { + var callback:Function = Proxy.create(this, onStartMultipleLessons); + var lessonIDs:Array = wizardModel.lessonIDs; + var startedLessonsCount:Number = wizardModel.startedLessonsCount; + + 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); + } + + public function onStartMultipleLessons(b:Boolean):Void { + if (b) { + wizardModel.startedLessonsCount++; + Debugger.log("callback onStartMultipleLessons called:" + wizardModel.startedLessonsCount, Debugger.MED, "onStartMultipleLessons", "Wizard"); + if (wizardModel.startedLessonsCount == wizardModel.lessonIDs.length) { + Debugger.log("onStartMultipleLessons complete" + wizardModel.startedLessonsCount, Debugger.MED, "onStartMultipleLessons", "Wizard"); + wizardModel.broadcastViewUpdate("LESSON_STARTED", WizardView.FINISH_MODE); + } + else { + Debugger.log("calling startMultipleLessons " + (wizardModel.startedLessonsCount + 1), Debugger.MED, "onStartMultipleLessons", "Wizard"); + startMultipleLessons(); + } + } + } + public function startMultipleScheduledLessons():Void { + var callback:Function = Proxy.create(this, onStartMultipleScheduledLessons); + var lessonIDs:Array = wizardModel.lessonIDs; + var startedLessonsCount:Number = wizardModel.startedLessonsCount; + var scheduleDateTime:String = wizardModel.resultDTO.scheduleDateTime + + 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); + } + + public function onStartMultipleScheduledLessons(b:Boolean):Void { + if (b) { + wizardModel.startedLessonsCount++; + Debugger.log("callback onStartMultipleScheduledLessons called:" + wizardModel.startedLessonsCount, Debugger.MED, "onStartMultipleLessons", "Wizard"); + if (wizardModel.startedLessonsCount == wizardModel.lessonIDs.length) { + Debugger.log("onStartMultipleScheduledLessons complete" + wizardModel.startedLessonsCount, Debugger.MED, "onStartMultipleLessons", "Wizard"); + wizardModel.broadcastViewUpdate("LESSON_STARTED", WizardView.FINISH_MODE); + } + else { + Debugger.log("calling startMultipleScheduledLessons " + (wizardModel.startedLessonsCount + 1), Debugger.MED, "onStartMultipleLessons", "Wizard"); + startMultipleScheduledLessons(); + } + } + } + /** * * @usage Index: lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/WizardController.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/WizardController.as (.../WizardController.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/WizardController.as (.../WizardController.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -199,20 +199,31 @@ * */ - public function initializeLesson(resultDTO:Object){ + public function initializeLesson(resultDTO:Object) { + var callback:Function; _wizardModel.resultDTO = resultDTO; - var callback:Function = Proxy.create(this,saveLessonClass); + + if (resultDTO.learnerSelectMode == "learnerSelectIndiv") { + Debugger.log("Calling initializeLesson with indiv callback" ,Debugger.GEN,'initializeLesson','org.lamsfoundation.lams.MonitorController'); + callback = Proxy.create(this, saveLessonClass); + } + else if (resultDTO.learnerSelectMode == "learnerSelectSplit") { + Debugger.log("Calling initializeLesson with split callback" ,Debugger.GEN,'initializeLesson','org.lamsfoundation.lams.MonitorController'); + callback = Proxy.create(this, onCreateAndInitMultipleLessons); + } + _wizardModel.getWizard().initializeLesson(resultDTO, callback); } - + /** * Save Lesson Class after Lesson is initialized * * @param lessonID * @return */ - public function saveLessonClass(r){ + public function saveLessonClass(r) { + Debugger.log("Callback saveLessonClass called" ,Debugger.GEN,'saveLessonClass','org.lamsfoundation.lams.MonitorController'); if(r instanceof LFError) { r.showMessageConfirm(); } else { @@ -221,6 +232,17 @@ } } + public function onCreateAndInitMultipleLessons(r) { + Debugger.log("Callback onCreateAndInitMultipleLessons called" + r,Debugger.GEN,'onCreateAndInitMultipleLessons','org.lamsfoundation.lams.MonitorController'); + if(r instanceof LFError) { + r.showMessageConfirm(); + } else { + _wizardModel.lessonIDs = r; + Debugger.log("lessonIDs " + _wizardModel.lessonIDs + _wizardModel.lessonIDs[0], Debugger.GEN,'onCreateAndInitMultipleLessons','org.lamsfoundation.lams.MonitorController'); + _wizardModel.broadcastViewUpdate("SAVED_LC", _wizardModel.resultDTO.mode); + } + } + private function getView():WizardView{ return WizardView(super.getView()); } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/WizardModel.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/WizardModel.as (.../WizardModel.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/WizardModel.as (.../WizardModel.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -62,6 +62,9 @@ private var _org:Organisation; private var _lessonID:Number; + private var _lessonIDs:Array; + private var _startedLessonsCount:Number = 0; + private var selectedTab:Number; // state data @@ -437,6 +440,22 @@ _lessonID = a; } + public function get lessonIDs():Array{ + return _lessonIDs; + } + + public function set lessonIDs(a:Array){ + _lessonIDs = a; + } + + public function get startedLessonsCount():Number{ + return _startedLessonsCount; + } + + public function set startedLessonsCount(a:Number){ + _startedLessonsCount = a; + } + //Accessors for x + y coordinates public function get x():Number{ return __x; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/WizardView.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/WizardView.as (.../WizardView.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/WizardView.as (.../WizardView.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -615,10 +615,16 @@ updateScreen(wm.stepID, wm.stepID+1); break; case START_MODE : - wm.getWizard().startLesson(false, wm.lessonID); + if(wm.resultDTO.learnerSelectMode == "learnerSelectIndiv") + wm.getWizard().startLesson(false, wm.lessonID); + else if (wm.resultDTO.learnerSelectMode == "learnerSelectSplit") + wm.getWizard().startMultipleLessons(); break; case START_SCH_MODE : - wm.getWizard().startLesson(true, wm.lessonID, wm.resultDTO.scheduleDateTime); + if(wm.resultDTO.learnerSelectMode == "learnerSelectIndiv") + wm.getWizard().startLesson(true, wm.lessonID, wm.resultDTO.scheduleDateTime); + else if (wm.resultDTO.learnerSelectMode == "learnerSelectSplit") + wm.getWizard().startMultipleScheduledLessons(); break; default: break; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/steps/WizardLessonDetailsView.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/steps/WizardLessonDetailsView.as (.../WizardLessonDetailsView.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/steps/WizardLessonDetailsView.as (.../WizardLessonDetailsView.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -51,13 +51,14 @@ private var resourceDesc_txa:TextArea; public static var SUMMERY_X:Number = 11; - public static var SUMMERY_Y:Number = 140; + public static var SUMMERY_Y:Number = 114; public static var SUMMERY_W:Number = 500; public static var SUMMERY_H:Number = 20; public static var SUMMERY_OFFSET:Number = 2; private var schedule_cb:CheckBox; private var learner_expp_cb:CheckBox; + private var learner_eliveedit_cb:CheckBox; private var learner_enpres_cb:CheckBox; private var learner_enim_cb:CheckBox; private var start_btn:Button; @@ -151,6 +152,14 @@ schedule_time._visible = true; scheduleDate_dt.visible = true; + if (StringUtils.stringToBool(_root.editOnFly)) { + learner_eliveedit_cb.selected = true; + learner_eliveedit_cb.visible = true; + } + else { + learner_eliveedit_cb.selected = false; + } + // check for NULL value if(resourceDesc_txa.text == WizardView.STRING_NULL){ resourceDesc_txa.text = ""; @@ -198,6 +207,7 @@ summery_scp.visible = false; summery_lbl.visible = false; learner_expp_cb.visible = false; + learner_eliveedit_cb.visible = false; learner_enpres_cb.visible = false; learner_enim_cb.visible = false; schedule_cb.visible = false; @@ -229,6 +239,7 @@ _parent.resultDTO.enablePresence = learner_enpres_cb.selected; _parent.resultDTO.enableIm = learner_enim_cb.selected; _parent.resultDTO.learnerExpPortfolio = learner_expp_cb.selected; + _parent.resultDTO.enableLiveEdit = learner_eliveedit_cb.selected; return valid; } @@ -276,7 +287,12 @@ summery_lbl = this['wizardSummery_lbl_staff']; // learners label - summery_lbl_arr.push(this.attachMovie('Label', 'wizardSummery_lbl_learners', this.getNextHighestDepth(), {_x:SUMMERY_X+_parent.panel._x - this._x, _y:summery_lbl._y + summery_lbl._height+ SUMMERY_OFFSET, _width: SUMMERY_W, _height: SUMMERY_H, styleName: _tm.getStyleObject('label'), text:Dictionary.getValue('summery_learners_lbl') + ' ' + String(_parent.resultDTO.selectedLearners.length) + '/' + _parent.resultDTO.learnersListTotal})); + if (_parent.resultDTO.learnerSelectMode == "learnerSelectIndiv") { + summery_lbl_arr.push(this.attachMovie('Label', 'wizardSummery_lbl_learners', this.getNextHighestDepth(), {_x:SUMMERY_X+_parent.panel._x - this._x, _y:summery_lbl._y + summery_lbl._height+ SUMMERY_OFFSET, _width: SUMMERY_W, _height: SUMMERY_H, styleName: _tm.getStyleObject('label'), text:Dictionary.getValue('summery_learners_lbl') + ' ' + String(_parent.resultDTO.selectedLearners.length) + '/' + _parent.resultDTO.learnersListTotal})); + } + else { + summery_lbl_arr.push(this.attachMovie('Label', 'wizardSummery_lbl_learners', this.getNextHighestDepth(), {_x:SUMMERY_X+_parent.panel._x - this._x, _y:summery_lbl._y + summery_lbl._height+ SUMMERY_OFFSET, _width: SUMMERY_W, _height: SUMMERY_H, styleName: _tm.getStyleObject('label'), text:Dictionary.getValue('summery_learners_lbl') + ' ' + Dictionary.getValue('wizard_splitLearners_splitSumShort', [String(_parent.resultDTO.learnersNbLessonsSplit), String(_parent.resultDTO.learnersNbLearnersSplit)])})); + } } public function getScheduleDateTime(date:Date, timeStr:String):Object{ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/steps/WizardOrganisationView.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/steps/WizardOrganisationView.as (.../WizardOrganisationView.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/steps/WizardOrganisationView.as (.../WizardOrganisationView.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -53,7 +53,7 @@ private var org_treeview:Tree; private var _staffList:Array; - private var _learnerList:Array; + private var _learnerList:Array = null; private var _learner_mc:MovieClip; private var _staff_mc:MovieClip; private var staff_scp:MovieClip; // staff/teachers container @@ -62,35 +62,103 @@ private var learner_lbl:Label; private var staff_selAll_cb:CheckBox; private var learner_selAll_cb:CheckBox; + private var learner_split_cb:CheckBox; + private var splitLearners_mc:MovieClip; + private var splitNbLearnersTotal_lbl:Label; + private var splitLearnersPerLesson_lbl:Label; + private var splitLearnersPerLesson_txi:TextInput; + private var splitSummary_txa:TextArea; + + private var intervalSetupSplitLabels:Number = 0; + private static var DATA_LOAD_CHECK_INTERVAL:Number = 500; + public static var LEARNER_SELECT_INDIV:String = "learnerSelectIndiv"; + public static var LEARNER_SELECT_SPLIT:String = "learnerSelectSplit"; + private var nbLessonsSplit:Number = 0; + private var _wizardController:WizardController; //Defined so compiler can 'see' events added at runtime by EventDispatcher private var dispatchEvent:Function; public var addEventListener:Function; public var removeEventListener:Function; + function WizardOrganisationView(){ mx.events.EventDispatcher.initialize(this); - } public function init(m:Observable,c:Controller) { super(m, c) + + splitNbLearnersTotal_lbl = splitLearners_mc["splitNbLearnersTotal_lbl"]; + splitLearnersPerLesson_lbl = splitLearners_mc["splitLearnersPerLesson_lbl"]; + splitLearnersPerLesson_txi = splitLearners_mc["splitLearnersPerLesson_txi"]; + splitSummary_txa = splitLearners_mc["splitSummary_txa"]; } public function setupContent():Void { staff_selAll_cb.addEventListener("click", Delegate.create(this, toogleStaffSelection)); learner_selAll_cb.addEventListener("click", Delegate.create(this, toogleLearnerSelection)); + learner_split_cb.addEventListener("click", Delegate.create(this, toggleSplitLesson)); + splitLearnersPerLesson_txi.addEventListener("keyUp", Delegate.create(this, updateSplitSummaryLabel)); } public function setupLabels():Void { staff_lbl.text = Dictionary.getValue('staff_lbl'); learner_lbl.text = Dictionary.getValue('learner_lbl'); staff_selAll_cb.label = Dictionary.getValue('wizard_selAll_cb_lbl'); learner_selAll_cb.label = Dictionary.getValue('wizard_selAll_cb_lbl'); + + intervalSetupSplitLabels = setInterval(Proxy.create(this, setupSplitLabels), DATA_LOAD_CHECK_INTERVAL); } + private function setupSplitLabels():Void { + if (_learnerList) { + splitNbLearnersTotal_lbl.text = Dictionary.getValue('wizard_splitLearners_leanersInGroup_lbl') + " " + String(_learnerList.length); + splitLearnersPerLesson_lbl.text = Dictionary.getValue('wizard_splitLearners_LearnersPerLesson_lbl'); + splitLearnersPerLesson_txi.text = "1"; + updateSplitSummaryLabel(); + clearInterval(intervalSetupSplitLabels); + } + } + + private function updateSplitSummaryLabel() { + Debugger.log("updateSplitSummaryLabel _learnerList length: " + _learnerList.length, Debugger.CRITICAL, "updateSplitSummaryLabel", "WizardOrganisationView"); + + Debugger.log("updateSplitSummaryLabel", Debugger.CRITICAL, "updateSplitSummaryLabel", "WizardOrganisationView"); + if (Number(splitLearnersPerLesson_txi.text) > _learnerList.length) { + Debugger.log("updateSplitSummaryLabel too high", Debugger.CRITICAL, "updateSplitSummaryLabel", "WizardOrganisationView"); + splitLearnersPerLesson_txi.text = String(_learnerList.length); + } + else if (splitLearnersPerLesson_txi.text == "") { + Debugger.log("updateSplitSummaryLabel is blank", Debugger.CRITICAL, "updateSplitSummaryLabel", "WizardOrganisationView"); + } + else if (Number(splitLearnersPerLesson_txi.text) < 1) { + Debugger.log("updateSplitSummaryLabel too low", Debugger.CRITICAL, "updateSplitSummaryLabel", "WizardOrganisationView"); + splitLearnersPerLesson_txi.text = "1"; + } + else if (!StringUtils.isANumber(splitLearnersPerLesson_txi.text)) { + Debugger.log("updateSplitSummaryLabel is not a number", Debugger.CRITICAL, "updateSplitSummaryLabel", "WizardOrganisationView"); + splitLearnersPerLesson_txi.text = "1"; + } + + nbLessonsSplit = Math.floor(_learnerList.length / Number(splitLearnersPerLesson_txi.text)); + + if (_learnerList.length % Number(splitLearnersPerLesson_txi.text) != 0) { + nbLessonsSplit++; + } + + if (splitLearnersPerLesson_txi.text == "" || nbLessonsSplit == NaN) { + splitSummary_txa.text = Dictionary.getValue('wizard_splitLearners_splitSum', ["-", "-"]); + } + else { + splitSummary_txa.text = Dictionary.getValue('wizard_splitLearners_splitSum', [String(nbLessonsSplit), splitLearnersPerLesson_txi.text]); + } + + Debugger.log("updateSplitSummaryLabel nbLessonsSplit = " + nbLessonsSplit, Debugger.CRITICAL, "updateSplitSummaryLabel", "WizardOrganisationView"); + } + public function setStyles(_tm:ThemeManager) { var styleObj = _tm.getStyleObject('label'); @@ -99,11 +167,16 @@ styleObj = _tm.getStyleObject('scrollpane'); staff_scp.setStyle('styleName',styleObj); - learner_scp.setStyle('styleName',styleObj); + learner_scp.setStyle('styleName', styleObj); + styleObj = _tm.getStyleObject('LightBlueTextArea'); + splitSummary_txa.setStyle('styleName', styleObj); } public function show(v:Boolean):Void { + splitLearners_mc._visible = false; + learner_split_cb.selected = false; + org_treeview.visible = v; staff_lbl.visible = v; @@ -113,6 +186,7 @@ learner_scp.visible = v; staff_selAll_cb.visible = v; learner_selAll_cb.visible = v; + learner_split_cb.visible = v; if(_parent.resultDTO.selectedJointLessonID != null) { staff_selAll_cb.enabled = false; @@ -155,14 +229,20 @@ } } - if(selectedLearners.length <= 0){ - valid = false; - } - if(selectedStaff.length <= 0){ valid = false; } + if (learner_split_cb.selected) { + if (nbLessonsSplit < 1 || nbLessonsSplit > _learnerList.length || splitLearnersPerLesson_txi.text == "" || nbLessonsSplit == NaN || !StringUtils.isANumber(splitLearnersPerLesson_txi.text)) { + valid = false; + } + } + else { + if(selectedLearners.length <= 0){ + valid = false; + } + } } if(valid){ @@ -177,10 +257,21 @@ _parent.resultDTO.courseName = pnode.attributes.data.name; } - _parent.resultDTO.selectedStaff = selectedStaff; - _parent.resultDTO.selectedLearners = selectedLearners; + if (learner_split_cb.selected) { + Debugger.log("adding lesson split variables to dto: " + LEARNER_SELECT_SPLIT + nbLessonsSplit + splitLearnersPerLesson_txi.text, Debugger.MED, "validate", "WizardOrganisationView"); + _parent.resultDTO.learnerSelectMode = LEARNER_SELECT_SPLIT; + _parent.resultDTO.learnersNbLessonsSplit = nbLessonsSplit; + _parent.resultDTO.learnersNbLearnersSplit = Number(splitLearnersPerLesson_txi.text); + } + else { + Debugger.log("adding lesson indiv variables to dto", Debugger.MED, "validate", "WizardOrganisationView"); + _parent.resultDTO.learnerSelectMode = LEARNER_SELECT_INDIV; + _parent.resultDTO.selectedLearners = selectedLearners; + _parent.resultDTO.learnersListTotal = learnerList.length; + } + + _parent.resultDTO.selectedStaff = selectedStaff; _parent.resultDTO.staffListTotal = staffList.length; - _parent.resultDTO.learnersListTotal = learnerList.length; var orgName:String = snode.attributes.data.name; _parent.resultDTO.staffGroupName = Dictionary.getValue('staff_group_name', [orgName]); @@ -202,7 +293,7 @@ * @param users Users to load */ - public function loadLearners(users:Array, _selected:Boolean):Void{ + public function loadLearners(users:Array, _selected:Boolean):Void { _learnerList = WizardView.clearScp(_learnerList); _learner_mc = learner_scp.content; @@ -223,7 +314,7 @@ learner_scp.redraw(true); } - + public function enableUsers(e:Boolean):Void { for(var i=0; i < _learnerList.length; i++) { if(e && !_learnerList[i].user_cb.enabled) _learnerList[i].user_cb.enabled = e; @@ -328,6 +419,24 @@ loadLearners(wm.organisation.getLearners(), target.selected); } + private function toggleSplitLesson(evt:Object) { + Debugger.log("Toggle split lesson", Debugger.GEN, "toogleSplitLesson", "WizardView"); + var wm:WizardModel = WizardModel(getModel()); + + if (!learner_split_cb.selected) { + Debugger.log("learner_split_cb.enabled - load learners", Debugger.GEN, "toogleSplitLesson", "WizardView"); + splitLearners_mc._visible = false; + learner_scp._visible = true; + learner_selAll_cb.visible = true; + } + else { + Debugger.log("!learner_split_cb.enabled - show movieclip", Debugger.GEN, "toogleSplitLesson", "WizardView"); + learner_selAll_cb.visible = false; + learner_scp._visible = false; + splitLearners_mc._visible = true; + } + } + /** * Overrides method in abstract view to ensure cortect type of controller is returned * @usage Index: lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/steps/WizardSummaryView.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/steps/WizardSummaryView.as (.../WizardSummaryView.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/wizard/steps/WizardSummaryView.as (.../WizardSummaryView.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -69,12 +69,19 @@ public function showConfirmMessage(mode:Number){ var msg:String = ""; var lessonName:String = "" + _parent.resultDTO.resourceTitle +""; + var nbLessons:String = "" + _parent.resultDTO.learnersNbLessonsSplit +""; switch(mode){ case WizardView.FINISH_MODE : msg = Dictionary.getValue('confirmMsg_3_txt', [lessonName]); break; case WizardView.START_MODE : - msg = Dictionary.getValue('confirmMsg_1_txt', [lessonName]); + if (_parent.resultDTO.learnerSelectMode == "learnerSelectIndiv") { + Debugger.log("showConfirmMessage confirmMessage3 indiv", Debugger.MED, "showConfirmMessage", "WizardSummaryView"); + msg = Dictionary.getValue('confirmMsg_1_txt', [lessonName]); + } + else { + msg = Dictionary.getValue('confirmMsg_4_txt', [nbLessons, lessonName]); + } break; case WizardView.START_SCH_MODE : msg = Dictionary.getValue('confirmMsg_2_txt', [lessonName, unescape(_parent.resultDTO.scheduleDateTime)]); Index: lams_flash/src/common/flash/org/lamsfoundation/lams/common/Sequence.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/common/flash/org/lamsfoundation/lams/common/Sequence.as (.../Sequence.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/common/flash/org/lamsfoundation/lams/common/Sequence.as (.../Sequence.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -89,6 +89,13 @@ public var addEventListener:Function; public var removeEventListener:Function; + // presence data + private var _learnerPresenceAvailable:Boolean; + private var _learnerImAvailable:Boolean; + + // live edit + private var _liveEditEnabled:Boolean; + /** * Constructor. */ @@ -126,7 +133,9 @@ trace('populating seq object for start date:' + dto.scheduleStartDate); Debugger.log('populating seq schedule date:'+dto.scheduleStartDate,Debugger.CRITICAL,'populateFromDTO','Sequence'); Debugger.log('populating seq start date:'+dto.startDateTime,Debugger.CRITICAL,'populateFromDTO','Sequence'); - Debugger.log('populating seq locked for eidt:'+dto.lockedForEdit,Debugger.CRITICAL,'populateFromDTO','Sequence'); + Debugger.log('populating seq locked for eidt:' + dto.lockedForEdit, Debugger.CRITICAL, 'populateFromDTO', 'Sequence'); + Debugger.log('populating seq presence:' + dto.learnerPresenceAvailable + "/" + dto.learnerImAvailable, Debugger.CRITICAL, 'populateFromDTO', 'Sequence'); + Debugger.log('populating seq liveEdit:'+dto.liveEditEnabled + "/" + dto.learnerImAvailable,Debugger.CRITICAL,'populateFromDTO','Sequence'); _seqID = dto.lessonID; _seqName = dto.lessonName; @@ -158,6 +167,11 @@ _learnerExportAvailable = dto.learnerExportAvailable; _locked_for_edit = dto.lockedForEdit; + + _learnerPresenceAvailable = dto.learnerPresenceAvailable; + _learnerImAvailable = dto.learnerImAvailable; + + _liveEditEnabled = dto.liveEditEnabled; } @@ -474,6 +488,30 @@ return _learnerExportAvailable; } + public function set learnerPresenceAvailable(b:Boolean) { + _learnerPresenceAvailable = b; + } + + public function get learnerPresenceAvailable():Boolean { + return _learnerPresenceAvailable; + } + + public function set learnerImAvailable(b:Boolean) { + _learnerImAvailable = b; + } + + public function get learnerImAvailable():Boolean { + return _learnerImAvailable; + } + + public function set liveEditEnabled(b:Boolean) { + _liveEditEnabled = b; + } + + public function get liveEditEnabled():Boolean { + return _liveEditEnabled; + } + public function set locked_for_edit(b:Boolean) { _locked_for_edit = b; } Index: lams_flash/src/common/flash/org/lamsfoundation/lams/common/util/StringUtils.as =================================================================== diff -u -r7b65bab3de4ed5068c5631a245c30cb4eaa8f098 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_flash/src/common/flash/org/lamsfoundation/lams/common/util/StringUtils.as (.../StringUtils.as) (revision 7b65bab3de4ed5068c5631a245c30cb4eaa8f098) +++ lams_flash/src/common/flash/org/lamsfoundation/lams/common/util/StringUtils.as (.../StringUtils.as) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -338,5 +338,31 @@ } return charArray; } + + public static function isANumber(s:String):Boolean { + for (var i:Number = 0; i < s.length; i++) { + Debugger.log("stringUtils isANumber char at " + i + ": " + s.charCodeAt(i), Debugger.MED, "isANumber", "StringUtils"); + if (s.charCodeAt(i) > 57 || s.charCodeAt(i) < 48) { + Debugger.log("stringUtils isANumber false strlen: " + s.length, Debugger.MED, "isANumber", "StringUtils"); + return false; + } + } + Debugger.log("stringUtils isANumber true with strlen: " + s.length, Debugger.MED, "isANumber", "StringUtils"); + return true; + } + public static function stringToBool(string:String):Boolean{ + switch(string){ + case "1": + case "true": + case "yes": + return true; + case "0": + case "false": + case "no": + return false; + default: + return Boolean(string); + } + } } \ No newline at end of file Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java =================================================================== diff -u -r77e7bd9d3814d4622d5bee45b40a96f7c101098d -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 77e7bd9d3814d4622d5bee45b40a96f7c101098d) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -80,7 +80,7 @@ */ public Lesson initializeLesson(String lessonName, String lessonDescription, Boolean learnerExportAvailable, long learningDesignId, Integer organisationId, Integer userID, String customCSV, - Boolean learnerPresenceAvailable, Boolean learnerImAvailable); + Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled); /** * Initialize a new lesson so as to start the learning process for a normal @@ -104,7 +104,7 @@ * design is not assigned to any workspace folder. */ public Lesson initializeLessonForPreview(String lessonName, String lessonDescription, long learningDesignId, - Integer userID, String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable); + Integer userID, String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled); /** * Create a lession according to the input lession WDDX package. The sample Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -r77e7bd9d3814d4622d5bee45b40a96f7c101098d -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 77e7bd9d3814d4622d5bee45b40a96f7c101098d) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -154,7 +154,7 @@ private ILearningDesignDAO learningDesignDAO; private IGroupingDAO groupingDAO; - + private IGroupDAO groupDAO; private ILearnerProgressDAO learnerProgressDAO; @@ -292,7 +292,7 @@ public void setGroupDAO(IGroupDAO groupDAO) { this.groupDAO = groupDAO; } - + /** * @param groupingDAO */ @@ -380,7 +380,7 @@ */ public Lesson initializeLesson(String lessonName, String lessonDescription, Boolean learnerExportAvailable, long learningDesignId, Integer organisationId, Integer userID, String customCSV, - Boolean learnerPresenceAvailable, Boolean learnerImAvailable) { + Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled) { LearningDesign originalLearningDesign = authoringService.getLearningDesign(new Long(learningDesignId)); if (originalLearningDesign == null) { @@ -415,7 +415,7 @@ User user = userID != null ? (User) baseDAO.find(User.class, userID) : null; return initializeLesson(lessonName, lessonDescription, learnerExportAvailable, originalLearningDesign, user, - runSeqFolder, LearningDesign.COPY_TYPE_LESSON, customCSV, learnerPresenceAvailable, learnerImAvailable); + runSeqFolder, LearningDesign.COPY_TYPE_LESSON, customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); } @@ -425,7 +425,7 @@ * design is not assigned to any workspace folder. */ public Lesson initializeLessonForPreview(String lessonName, String lessonDescription, long learningDesignId, - Integer userID, String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable) { + Integer userID, String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled) { LearningDesign originalLearningDesign = authoringService.getLearningDesign(new Long(learningDesignId)); if (originalLearningDesign == null) { throw new MonitoringServiceException("Learning design for id=" + learningDesignId @@ -434,12 +434,12 @@ User user = userID != null ? (User) baseDAO.find(User.class, userID) : null; return initializeLesson(lessonName, lessonDescription, Boolean.TRUE, originalLearningDesign, user, null, - LearningDesign.COPY_TYPE_PREVIEW, customCSV, learnerPresenceAvailable, learnerImAvailable); + LearningDesign.COPY_TYPE_PREVIEW, customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); } public Lesson initializeLesson(String lessonName, String lessonDescription, Boolean learnerExportAvailable, LearningDesign originalLearningDesign, User user, WorkspaceFolder workspaceFolder, int copyType, - String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable) { + String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled) { // copy the current learning design LearningDesign copiedLearningDesign = authoringService.copyLearningDesign(originalLearningDesign, new Integer( @@ -451,7 +451,7 @@ title = title != null ? title : "Unknown Lesson"; Lesson lesson = createNewLesson(title, lessonDescription, user, learnerExportAvailable, copiedLearningDesign, - learnerPresenceAvailable, learnerImAvailable); + learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); auditAction(MonitoringService.AUDIT_LESSON_CREATED_KEY, new Object[] { lessonName, copiedLearningDesign.getTitle(), learnerExportAvailable }); return lesson; @@ -480,6 +480,7 @@ boolean learnerPresenceAvailable = WDDXProcessor.convertToBoolean("enablePresence", table .get("enablePresence")); boolean learnerImAvailable = WDDXProcessor.convertToBoolean("enableIm", table.get("enableIm")); + boolean liveEditEnabled = WDDXProcessor.convertToBoolean("enableLiveEdit", table.get("enableLiveEdit")); String customCSV = WDDXProcessor.convertToString(WDDXTAGS.CUSTOM_CSV, table.get(WDDXTAGS.CUSTOM_CSV)); // initialize lesson @@ -488,10 +489,10 @@ if (copyType == LearningDesign.COPY_TYPE_PREVIEW) { newLesson = initializeLessonForPreview(title, desc, ldId, creatorUserId, customCSV, - learnerPresenceAvailable, learnerImAvailable); + learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); } else { newLesson = initializeLesson(title, desc, learnerExportAvailable, ldId, organisationId, creatorUserId, - customCSV, learnerPresenceAvailable, learnerImAvailable); + customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); } if (newLesson != null) { @@ -1362,7 +1363,10 @@ dto.setScheduleStartDateStr(DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, userLocale) .format(dto.getScheduleStartDate())); } - + + MonitoringService.log.debug(dto.toString()); + MonitoringService.log.debug(dto.getLiveEditEnabled()); + FlashMessage flashMessage; if (dto != null) { flashMessage = new FlashMessage("getLessonDetails", dto); @@ -1869,9 +1873,9 @@ */ private Lesson createNewLesson(String lessonName, String lessonDescription, User user, Boolean learnerExportAvailable, LearningDesign copiedLearningDesign, Boolean learnerPresenceAvailable, - Boolean learnerImAvailable) { + Boolean learnerImAvailable, Boolean liveEditEnabled) { Lesson newLesson = Lesson.createNewLessonWithoutClass(lessonName, lessonDescription, user, - learnerExportAvailable, copiedLearningDesign, learnerPresenceAvailable, learnerImAvailable); + learnerExportAvailable, copiedLearningDesign, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); lessonDAO.saveLesson(newLesson); return newLesson; } @@ -2624,16 +2628,17 @@ .get("enablePresence")); boolean learnerImAvailable = WDDXProcessor.convertToBoolean("enableIm", table.get("enableIm")); String customCSV = WDDXProcessor.convertToString(WDDXTAGS.CUSTOM_CSV, table.get(WDDXTAGS.CUSTOM_CSV)); + boolean liveEditEnabled = WDDXProcessor.convertToBoolean("enableLiveEdit", table.get("enableLiveEdit")); int numLessons = WDDXProcessor.convertToInt("numberLessonsSplit", table.get("numberLessonsSplit")); // initialise multiple lessons - if (numLessons > 0) { - for (int i = 1; i <= numLessons; i++) { - Lesson newLesson = initializeLesson(title + " " + i, desc, learnerExportAvailable, ldId, - organisationId, creatorUserId, customCSV, learnerPresenceAvailable, learnerImAvailable); - lessonIds.add(newLesson.getLessonId()); - } + if (numLessons > 0) { + for (int i = 1; i <= numLessons; i++) { + Lesson newLesson = initializeLesson(title + " " + i, desc, learnerExportAvailable, ldId, + organisationId, creatorUserId, customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); + lessonIds.add(newLesson.getLessonId()); + } } } catch (Exception e) { @@ -2743,13 +2748,13 @@ } return lessonIds; } - + /** * Set a group's name */ - public void setGroupName(Long groupID, String name) { - Group group = groupDAO.getGroupById(groupID); - group.setGroupName(name); - groupDAO.saveGroup(group); - } + public void setGroupName(Long groupID, String name) { + Group group = groupDAO.getGroupById(groupID); + group.setGroupName(name); + groupDAO.saveGroup(group); + } } \ No newline at end of file Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/InitializeAndCreateLessonsServlet.java =================================================================== diff -u -ra12c6f390a8244c5d5ecf5a41e53ef5664c41af6 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/InitializeAndCreateLessonsServlet.java (.../InitializeAndCreateLessonsServlet.java) (revision a12c6f390a8244c5d5ecf5a41e53ef5664c41af6) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/InitializeAndCreateLessonsServlet.java (.../InitializeAndCreateLessonsServlet.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -83,11 +83,7 @@ IMonitoringService monitoringService = getMonitoringService(); List lessonIds = monitoringService.initializeAndCreateLessons(userID, lessonPackage); if (lessonIds != null && lessonIds.size() > 0) { - String lessonIdsCSV = ""; - for (Long lessonId : lessonIds) { - lessonIdsCSV += lessonId + ","; - } - flashMessage = new FlashMessage(messageKey, lessonIdsCSV); + flashMessage = new FlashMessage(messageKey, lessonIds); } else { flashMessage = new FlashMessage(messageKey, ""); } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java =================================================================== diff -u -r4b24094f139dd10a9779ce6e678cb8ca38317148 -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 4b24094f139dd10a9779ce6e678cb8ca38317148) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -177,7 +177,8 @@ Boolean learnerExportAvailable = WebUtil.readBooleanParam(request, "learnerExportPortfolio", false); Boolean learnerPresenceAvailable = WebUtil.readBooleanParam(request, "learnerPresencePortfolio", false); Boolean learnerImAvailable = WebUtil.readBooleanParam(request, "learnerImPortfolio", false); - Lesson newLesson = monitoringService.initializeLesson(title,desc,learnerExportAvailable,ldId,organisationId,getUserId(), null, learnerPresenceAvailable, learnerImAvailable); + Boolean liveEditEnabled = WebUtil.readBooleanParam(request, "liveEditEnabled", false); + Lesson newLesson = monitoringService.initializeLesson(title,desc,learnerExportAvailable,ldId,organisationId,getUserId(), null, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); flashMessage = new FlashMessage("initializeLesson",newLesson.getLessonId()); } catch (Exception e) { Index: lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java =================================================================== diff -u -r961e65c76e64f2fe8ed146302e3818daac94890d -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision 961e65c76e64f2fe8ed146302e3818daac94890d) +++ lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -165,6 +165,7 @@ testUser.getUserId(), null, false, + false, false); TEST_LESSON_ID=testLesson.getLessonId(); Lesson createdLesson = lessonDao.getLesson(TEST_LESSON_ID); @@ -342,7 +343,7 @@ private Lesson startLesson(String testName, String testDesc) { try { - Lesson previewLesson = monitoringService.initializeLessonForPreview(testName,testDesc,TEST_LEARNING_DESIGN_SURVEY_ONLY_ID,TEST_USER_ID, null, false, false); + Lesson previewLesson = monitoringService.initializeLessonForPreview(testName,testDesc,TEST_LEARNING_DESIGN_SURVEY_ONLY_ID,TEST_USER_ID, null, false, false, false); assertNotNull("Lesson created",previewLesson); assertNotNull("Lesson has been saved - an id exists", previewLesson.getLessonId()); Index: lams_monitoring/web/addLesson.jsp =================================================================== diff -u -r14a58df061d85ab6ce3b3254c02b3bc1c30f096f -r68d2988cca350af15ba4087814f74e1527a71997 --- lams_monitoring/web/addLesson.jsp (.../addLesson.jsp) (revision 14a58df061d85ab6ce3b3254c02b3bc1c30f096f) +++ lams_monitoring/web/addLesson.jsp (.../addLesson.jsp) (revision 68d2988cca350af15ba4087814f74e1527a71997) @@ -84,10 +84,11 @@ String clientVersion = Configuration.get(ConfigurationKeys.MONITOR_CLIENT_VERSION); String serverLanguage = Configuration.get(ConfigurationKeys.SERVER_LANGUAGE); String languageDate = Configuration.get(ConfigurationKeys.DICTIONARY_DATE_CREATED); +String allowEditOnFly = Configuration.get(ConfigurationKeys.ALLOW_EDIT_ON_FLY); %> <%-- courseID and classID are passed in as request parameters by addLesson.jsp in lams_central. --%> - ?loadFile=monitoring/lams_wizard.swf&loadLibrary=monitoring/lams_wizard_library.swf&userID=&serverURL=&build=<%=clientVersion%>&lang=&country=&langDate=<%=languageDate%>&theme=&courseID=&classID= + ?loadFile=monitoring/lams_wizard.swf&loadLibrary=monitoring/lams_wizard_library.swf&userID=&serverURL=&build=<%=clientVersion%>&lang=&country=&langDate=<%=languageDate%>&theme=&courseID=&classID=&editOnFly=<%=allowEditOnFly%> ../lams_preloader.swf ../lams_preloader Index: lams_monitoring/web/lams_monitoring.swf =================================================================== diff -u -r550a64d591c6d54d4849d09efc0ae6c714bd8b80 -r68d2988cca350af15ba4087814f74e1527a71997 Binary files differ Index: lams_monitoring/web/lams_monitoring_library.swf =================================================================== diff -u -r550a64d591c6d54d4849d09efc0ae6c714bd8b80 -r68d2988cca350af15ba4087814f74e1527a71997 Binary files differ Index: lams_monitoring/web/lams_wizard.swf =================================================================== diff -u -r53a530570087c6901259fb2958a4b7974df55372 -r68d2988cca350af15ba4087814f74e1527a71997 Binary files differ Index: lams_monitoring/web/lams_wizard_library.swf =================================================================== diff -u -r53a530570087c6901259fb2958a4b7974df55372 -r68d2988cca350af15ba4087814f74e1527a71997 Binary files differ