Index: lams_central/conf/security/Owasp.CsrfGuard.properties =================================================================== diff -u -r39fdd7cb1c86ad3abab880c2496f71b7f20a7cae -rec9b0ffc2e88f3504fd7505ee8474f86d89a2458 --- lams_central/conf/security/Owasp.CsrfGuard.properties (.../Owasp.CsrfGuard.properties) (revision 39fdd7cb1c86ad3abab880c2496f71b7f20a7cae) +++ lams_central/conf/security/Owasp.CsrfGuard.properties (.../Owasp.CsrfGuard.properties) (revision ec9b0ffc2e88f3504fd7505ee8474f86d89a2458) @@ -170,7 +170,7 @@ org.owasp.csrfguard.protected.leaderAuthoringSave=/lams/tool/lalead11/authoring/updateContent.do org.owasp.csrfguard.protected.leaderAuthoringDefineLater=/lams/tool/lalead11/authoring/definelater.do org.owasp.csrfguard.protected.leaderSaveLeaders=/lams/tool/lalead11/monitoring/saveLeaders.do -org.owasp.csrfguard.protected.leaderTblmonitoringChangeLeader=/lams/tool/lalead11/tblmonitoring/changeLeader.do +org.owasp.csrfguard.protected.leaderTblmonitoringChangeLeader=/lams/tool/lalead11/monitoring/changeLeader.do org.owasp.csrfguard.protected.laqaAuthoringSave=/lams/tool/laqa11/authoring/submitAllContent.do org.owasp.csrfguard.protected.laqaAuthoringDefineLater=/lams/tool/laqa11/authoring/definelater.do Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java =================================================================== diff -u -r2db58f73e88ecef930d486c60cc53fb3fa483415 -rec9b0ffc2e88f3504fd7505ee8474f86d89a2458 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java (.../ILamsToolService.java) (revision 2db58f73e88ecef930d486c60cc53fb3fa483415) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java (.../ILamsToolService.java) (revision ec9b0ffc2e88f3504fd7505ee8474f86d89a2458) @@ -30,6 +30,7 @@ import org.lamsfoundation.lams.confidencelevel.ConfidenceLevelDTO; import org.lamsfoundation.lams.confidencelevel.VsaAnswerDTO; import org.lamsfoundation.lams.learning.service.LearnerServiceException; +import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.tool.Tool; import org.lamsfoundation.lams.tool.ToolOutput; @@ -92,7 +93,7 @@ * in case of problems. */ String completeToolSession(Long toolSessionId, Long learnerId); - + /** * Checks whether specified activity is the last one in the learning design. */ @@ -123,6 +124,8 @@ */ Boolean isGroupedActivity(long toolContentID); + Group getGroup(long toolSessionId); + /** * Audit log the teacher has started editing activity in monitor. * @@ -179,6 +182,8 @@ */ Set getLeaderUserId(Long leaderSelectionActivityId); + Long getNearestLeaderSelectionToolContentId(long toolSessionId); + /** * Returns all activities that precede specified activity and produce confidence levels. * @@ -187,7 +192,7 @@ * @return */ Set getActivitiesProvidingConfidenceLevels(Long toolContentId); - + /** * Returns all activities that precede specified activity and can provide VSA answers. * @@ -210,7 +215,7 @@ */ List getConfidenceLevelsByActivity(Integer confidenceLevelActivityUiid, Integer requestorUserId, Long requestorToolSessionId); - + /** * Returns VSA answers from the specified activity. * @@ -224,7 +229,7 @@ */ Collection getVsaAnswersFromAssessment(Integer activityUiidProvidingVsaAnswers, Integer requestorUserId, Long requestorToolSessionId); - + /** * Recalculate marks for all Scratchie activities that use specified QbQuestion with given answer. */ Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java =================================================================== diff -u -r2db58f73e88ecef930d486c60cc53fb3fa483415 -rec9b0ffc2e88f3504fd7505ee8474f86d89a2458 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (.../LamsToolService.java) (revision 2db58f73e88ecef930d486c60cc53fb3fa483415) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (.../LamsToolService.java) (revision ec9b0ffc2e88f3504fd7505ee8474f86d89a2458) @@ -45,6 +45,7 @@ import org.lamsfoundation.lams.learningdesign.ActivityEvaluation; import org.lamsfoundation.lams.learningdesign.DataFlowObject; import org.lamsfoundation.lams.learningdesign.FloatingActivity; +import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.learningdesign.Transition; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; @@ -54,6 +55,7 @@ import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.logevent.service.ILogEventService; +import org.lamsfoundation.lams.tool.GroupedToolSession; import org.lamsfoundation.lams.tool.Tool; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolSession; @@ -171,6 +173,12 @@ } @Override + public Group getGroup(long toolSessionId) { + GroupedToolSession session = activityDAO.find(GroupedToolSession.class, toolSessionId); + return session == null ? null : session.getSessionGroup(); + } + + @Override public void auditLogStartEditingActivityInMonitor(long toolContentID) { logEventService.logStartEditingActivityInMonitor(toolContentID); } @@ -232,8 +240,7 @@ ToolSession toolSession = this.getToolSession(toolSessionId); ToolActivity specifiedActivity = toolSession.getToolActivity(); - Activity leaderSelectionActivity = getNearestLeaderSelectionActivity(specifiedActivity, learnerId, - toolSession.getLesson().getLessonId()); + Activity leaderSelectionActivity = getNearestLeaderSelectionActivity(specifiedActivity, learnerId); // check if there is leaderSelectionTool available if (leaderSelectionActivity != null) { @@ -260,8 +267,7 @@ ToolSession toolSession = this.getToolSession(toolSessionId); ToolActivity specifiedActivity = toolSession.getToolActivity(); - Activity leaderSelectionActivity = getNearestLeaderSelectionActivity(specifiedActivity, learnerId, - toolSession.getLesson().getLessonId()); + Activity leaderSelectionActivity = getNearestLeaderSelectionActivity(specifiedActivity, learnerId); // check if there is leaderSelectionTool available if (leaderSelectionActivity != null) { @@ -290,14 +296,26 @@ return result; } + @Override + public Long getNearestLeaderSelectionToolContentId(long toolSessionId) { + ToolSession session = activityDAO.find(ToolSession.class, toolSessionId); + ToolActivity leaderSelection = getNearestLeaderSelectionActivity(session.getToolActivity(), null); + return leaderSelection == null ? null : leaderSelection.getToolContentId(); + } + /** * Finds the nearest Leader Select activity. Works recursively. Tries to find Leader Select activity in the previous * activities set first, and then inside the parent set. */ @SuppressWarnings("rawtypes") - private Activity getNearestLeaderSelectionActivity(Activity activity, Integer userId, Long lessonId) { + private ToolActivity getNearestLeaderSelectionActivity(Activity activity, Integer userId) { // check if current activity is Leader Select one. if so - stop searching and return it. Class activityClass = Hibernate.getClass(activity); + + if (userId == null && activityClass.equals(FloatingActivity.class)) { + return null; + } + if (activityClass.equals(ToolActivity.class)) { ToolActivity toolActivity; @@ -312,17 +330,18 @@ } if (ILamsToolService.LEADER_SELECTION_TOOL_SIGNATURE.equals(toolActivity.getTool().getToolSignature())) { - return activity; + return toolActivity; } //in case of a floating activity } else if (activityClass.equals(FloatingActivity.class)) { + Long lessonId = activity.getLearningDesign().getLessons().iterator().next().getLessonId(); LearnerProgress learnerProgress = lessonService.getUserProgressForLesson(userId, lessonId); Map completedActivities = learnerProgress.getCompletedActivities(); //find the earliest finished Leader Select Activity Date leaderSelectActivityFinishDate = null; - Activity leaderSelectionActivity = null; + ToolActivity leaderSelectionActivity = null; for (Activity completedActivity : completedActivities.keySet()) { if (completedActivity instanceof ToolActivity) { @@ -349,13 +368,13 @@ Transition transitionTo = activity.getTransitionTo(); if (transitionTo != null) { Activity fromActivity = transitionTo.getFromActivity(); - return getNearestLeaderSelectionActivity(fromActivity, userId, lessonId); + return getNearestLeaderSelectionActivity(fromActivity, userId); } // check parent activity Activity parent = activity.getParentActivity(); if (parent != null) { - return getNearestLeaderSelectionActivity(parent, userId, lessonId); + return getNearestLeaderSelectionActivity(parent, userId); } return null; Index: lams_monitoring/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -rf5c66dec0b21a25db202a56a6973ee2a8461b9a5 -rec9b0ffc2e88f3504fd7505ee8474f86d89a2458 --- lams_monitoring/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision f5c66dec0b21a25db202a56a6973ee2a8461b9a5) +++ lams_monitoring/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision ec9b0ffc2e88f3504fd7505ee8474f86d89a2458) @@ -427,7 +427,6 @@ label.attendance = Attendance label.users.knocking.on.gate = {0} users knocking on the gate... label.comparison = Comparison -label.change.leader = Change leader label.bar.chart = Bar chart label.score = Score label.ira.responses.for = iRAT responses for Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringController.java =================================================================== diff -u -r40de3afab4e8d589660daffb6efd6e568e87f8fa -rec9b0ffc2e88f3504fd7505ee8474f86d89a2458 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringController.java (.../TblMonitoringController.java) (revision 40de3afab4e8d589660daffb6efd6e568e87f8fa) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringController.java (.../TblMonitoringController.java) (revision ec9b0ffc2e88f3504fd7505ee8474f86d89a2458) @@ -112,8 +112,14 @@ traGradebookUserActivities = gradebookService.getGradebookUserActivities(traToolActivityId); } - Set leaderUserIds = leaderselectionToolActivityId == null ? new HashSet<>() - : lamsToolService.getLeaderUserId(leaderselectionToolActivityId); + Set leaderUserIds = null; + if (leaderselectionToolActivityId != null) { + leaderUserIds = lamsToolService.getLeaderUserId(leaderselectionToolActivityId); + ToolActivity leaderSelection = activityDAO.find(ToolActivity.class, leaderselectionToolActivityId); + request.setAttribute("leaderSelectionToolContentId", leaderSelection.getToolContentId()); + } else { + leaderUserIds = new HashSet<>(); + } GroupingActivity groupingActivity = getGroupingActivity(lesson); Grouping grouping = groupingActivity == null ? null : groupingActivity.getCreateGrouping(); @@ -284,12 +290,12 @@ //in case of branching activity - add all activities based on their orderId if (activity.isBranchingActivity()) { BranchingActivity branchingActivity = (BranchingActivity) activity; - Set sequenceActivities = new TreeSet(new ActivityOrderComparator()); + Set sequenceActivities = new TreeSet<>(new ActivityOrderComparator()); sequenceActivities.addAll((Set) (Set) branchingActivity.getActivities()); for (Activity sequenceActivityNotInitialized : sequenceActivities) { SequenceActivity sequenceActivity = (SequenceActivity) monitoringService .getActivityById(sequenceActivityNotInitialized.getActivityId()); - Set childActivities = new TreeSet(new ActivityOrderComparator()); + Set childActivities = new TreeSet<>(new ActivityOrderComparator()); childActivities.addAll(sequenceActivity.getActivities()); //add one by one in order to initialize all activities @@ -303,7 +309,7 @@ // They will be sorted by orderId } else if (activity.isComplexActivity()) { ComplexActivity complexActivity = (ComplexActivity) activity; - Set childActivities = new TreeSet(new ActivityOrderComparator()); + Set childActivities = new TreeSet<>(new ActivityOrderComparator()); childActivities.addAll(complexActivity.getActivities()); // add one by one in order to initialize all activities Index: lams_monitoring/web/tblmonitor/teams.jsp =================================================================== diff -u -ra5b247dd91cb3ffabf9de46cba029e5537fad087 -rec9b0ffc2e88f3504fd7505ee8474f86d89a2458 --- lams_monitoring/web/tblmonitor/teams.jsp (.../teams.jsp) (revision a5b247dd91cb3ffabf9de46cba029e5537fad087) +++ lams_monitoring/web/tblmonitor/teams.jsp (.../teams.jsp) (revision ec9b0ffc2e88f3504fd7505ee8474f86d89a2458) @@ -14,31 +14,7 @@ @@ -283,8 +275,9 @@ - - @@ -331,7 +324,7 @@