Index: lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java =================================================================== diff -u -r9352c0f9470d3fd142e688234b7946d025ec0afb -rb39597d17e4c55346d4732e0867fd2be09393fa5 --- lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision 9352c0f9470d3fd142e688234b7946d025ec0afb) +++ lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision b39597d17e4c55346d4732e0867fd2be09393fa5) @@ -204,4 +204,10 @@ public static final String PARAM_LEARNER_IM_ENABLE = "learnerInstantMessaging"; public static final String PARAM_ENABLE_NOTIFICATIONS = "enableNotifications"; + + public static final String TOOL_SIGNATURE_ASSESSMENT = "laasse10"; + public static final String TOOL_SIGNATURE_FORUM = "lafrum11"; + public static final String TOOL_SIGNATURE_LEADERSELECTION = "lalead11"; + public static final String TOOL_SIGNATURE_MCQ = "lamc11"; + public static final String TOOL_SIGNATURE_SCRATCHIE = "lascrt11"; } \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java =================================================================== diff -u -r43bb5bd58ff80699bd474ac93a123324e79ba687 -rb39597d17e4c55346d4732e0867fd2be09393fa5 --- lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision 43bb5bd58ff80699bd474ac93a123324e79ba687) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision b39597d17e4c55346d4732e0867fd2be09393fa5) @@ -78,12 +78,6 @@ @SuppressWarnings("serial") public class LessonManagerServlet extends HttpServlet { - private static final String TOOL_SIGNATURE_ASSESSMENT = "laasse10"; - - public static final String TOOL_SIGNATURE_SCRATCHIE = "lascrt11"; - - public static final String TOOL_SIGNATURE_MCQ = "lamc11"; - private static Logger log = Logger.getLogger(LessonManagerServlet.class); private static IntegrationService integrationService = null; @@ -1302,8 +1296,9 @@ boolean hasNumericToolOutput = false; for (ToolActivity activity : activities) { String toolSignature = activity.getTool().getToolSignature(); - hasNumericToolOutput |= TOOL_SIGNATURE_ASSESSMENT.equals(toolSignature) - || TOOL_SIGNATURE_MCQ.equals(toolSignature) || TOOL_SIGNATURE_SCRATCHIE.equals(toolSignature); + hasNumericToolOutput |= CentralConstants.TOOL_SIGNATURE_ASSESSMENT.equals(toolSignature) + || CentralConstants.TOOL_SIGNATURE_MCQ.equals(toolSignature) + || CentralConstants.TOOL_SIGNATURE_SCRATCHIE.equals(toolSignature); } // Create the root node of the xml document Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r84fdcb946a3188efb2c259c4d264d95d46803a06 -rb39597d17e4c55346d4732e0867fd2be09393fa5 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 84fdcb946a3188efb2c259c4d264d95d46803a06) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision b39597d17e4c55346d4732e0867fd2be09393fa5) @@ -474,6 +474,11 @@ public GradebookUserActivity getGradebookUserActivity(Long activityID, Integer userID) { return gradebookDAO.getGradebookUserDataForActivity(activityID, userID); } + + @Override + public List getGradebookUserActivities(Long activityId) { + return gradebookDAO.getAllGradebookUserActivitiesForActivity(activityId); + } @Override public Double getAverageMarkForActivity(Long activityID, Long groupID) { Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== diff -u -r84fdcb946a3188efb2c259c4d264d95d46803a06 -rb39597d17e4c55346d4732e0867fd2be09393fa5 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 84fdcb946a3188efb2c259c4d264d95d46803a06) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision b39597d17e4c55346d4732e0867fd2be09393fa5) @@ -238,6 +238,15 @@ * @return */ GradebookUserActivity getGradebookUserActivity(Long activityID, Integer userID); + + /** + * Gets all available gradebookUserActivity objects for the specified activity + * + * @param activityID + * @param userID + * @return + */ + List getGradebookUserActivities(Long activityId); /** * Returns the average mark for a given activity. Activity can be grouped - then supply according groupId to receive Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java =================================================================== diff -u -rfe122f9f7ac40f3a3696a7c69043fc34df7994d4 -rb39597d17e4c55346d4732e0867fd2be09393fa5 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision fe122f9f7ac40f3a3696a7c69043fc34df7994d4) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision b39597d17e4c55346d4732e0867fd2be09393fa5) @@ -64,11 +64,13 @@ import org.lamsfoundation.lams.learningdesign.ComplexActivity; import org.lamsfoundation.lams.learningdesign.ContributionTypes; import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.OptionsWithSequencesActivity; import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.learningdesign.Transition; +import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO; import org.lamsfoundation.lams.learningdesign.exception.LearningDesignException; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; @@ -136,6 +138,9 @@ private static IUserManagementService userManagementService; + // *LKC* added the next variable + private static ILearningDesignDAO learningDesignDAO; + private static ILearnerService learnerService; private static ILamsToolService toolService; @@ -931,10 +936,66 @@ .isUserInRole(user.getUserID(), organisation.getOrganisationId(), Role.AUTHOR); request.setAttribute("enableLiveEdit", enableLiveEdit); request.setAttribute("lesson", lessonDTO); + request.setAttribute("isTBLSequence", isTBLSequence(lessonId)); return mapping.findForward("monitorLesson"); } + + /** + * If sequence starts with of Grouping->(MCQ or Assessment)->Leader Selection->Scratchie, + * there is a good chance this is a TBL sequence and all activities must be grouped. + */ + private boolean isTBLSequence(Long lessonId) { + Lesson lesson = getLessonService().getLesson(lessonId); + Long firstActivityId = lesson.getLearningDesign().getFirstActivity().getActivityId(); + //Hibernate CGLIB is failing to load the first activity in the sequence as a ToolActivity + Activity firstActivity = getMonitoringService().getActivityById(firstActivityId); + //the first activity should be a grouping + if (!(firstActivity instanceof GroupingActivity)) { + return false; + } + + Transition transitionFromGrouping = firstActivity.getTransitionFrom(); + if (transitionFromGrouping == null) { + return false; + } + // query activity from DB as transition holds only proxied activity object + Long secondActivityId = transitionFromGrouping.getToActivity().getActivityId(); + Activity secondActivity = monitoringService.getActivityById(secondActivityId); + //the second activity shall be a MCQ or Assessment + if (!(secondActivity.isToolActivity() && + (CentralConstants.TOOL_SIGNATURE_ASSESSMENT.equals(((ToolActivity) secondActivity).getTool().getToolSignature()) + || CentralConstants.TOOL_SIGNATURE_MCQ.equals(((ToolActivity) secondActivity).getTool().getToolSignature())))) { + return false; + } + + Transition transitionFromSecondActivity = secondActivity.getTransitionFrom(); + if (transitionFromSecondActivity == null) { + return false; + } + Long thirdActivityId = transitionFromSecondActivity.getToActivity().getActivityId(); + Activity thirdActivity = monitoringService.getActivityById(thirdActivityId); + //the third activity shall be a Leader Selection + if (!(thirdActivity.isToolActivity() && CentralConstants.TOOL_SIGNATURE_LEADERSELECTION + .equals(((ToolActivity) thirdActivity).getTool().getToolSignature()))) { + return false; + } + + Transition transitionFromThirdActivity = thirdActivity.getTransitionFrom(); + if (transitionFromThirdActivity == null) { + return false; + } + Long fourthActivityId = transitionFromThirdActivity.getToActivity().getActivityId(); + Activity fourthActivity = monitoringService.getActivityById(fourthActivityId); + //the third activity shall be a Scratchie + if (!(fourthActivity.isToolActivity() && CentralConstants.TOOL_SIGNATURE_SCRATCHIE + .equals(((ToolActivity) fourthActivity).getTool().getToolSignature()))) { + return false; + } + return true; + } + /** * Gets users whose progress bars will be displayed in Learner tab in Monitor. */