Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringAction.java =================================================================== diff -u -rd7ed1173946998f754a2efef09d68c9e3bfe307f -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringAction.java (.../TblMonitoringAction.java) (revision d7ed1173946998f754a2efef09d68c9e3bfe307f) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringAction.java (.../TblMonitoringAction.java) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -361,7 +361,6 @@ } else { request.setAttribute("isIraAssessmentAvailable", true); - request.setAttribute("iraAssessmentActivityTitle", toolTitle); } request.setAttribute("iraToolContentId", toolContentId); request.setAttribute("iraToolActivityId", toolActivityId); Index: lams_monitoring/web/tblmonitor/tblmonitor.jsp =================================================================== diff -u -rd7ed1173946998f754a2efef09d68c9e3bfe307f -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_monitoring/web/tblmonitor/tblmonitor.jsp (.../tblmonitor.jsp) (revision d7ed1173946998f754a2efef09d68c9e3bfe307f) +++ lams_monitoring/web/tblmonitor/tblmonitor.jsp (.../tblmonitor.jsp) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -48,7 +48,7 @@ } }); - function loadTab(method, toolContentID, isIraAssessment) { + function loadTab(method, toolContentID) { var url = ""; var options = {}; @@ -60,12 +60,9 @@ toolContentID = "${iraToolContentId}"; url = "tool/lamc11/tblmonitoring.do"; - } else if (method == "iraAssessment") { + } else if (method == "iraAssessment" || method == "iraAssessmentStudentChoices") { + toolContentID = "${iraToolContentId}"; url = "tool/laasse10/tblmonitoring.do"; - options = { - assessmentToolContentIds: "${iraToolContentId}", - assessmentActivityTitles: "${iraAssessmentActivityTitle}" - }; } else if (method == "aes" || method == "aesStudentChoices") { url = "tool/laasse10/tblmonitoring.do"; @@ -84,8 +81,7 @@ $.extend( options, { method: method, lessonID: ${lesson.lessonId}, - toolContentID: toolContentID, - isIraAssessment: isIraAssessment + toolContentID: toolContentID }); $("#tblmonitor-tab-content").load( Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java =================================================================== diff -u -rfeb6062a5128a445b1fa0095b8c9d6cf232af90f -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision feb6062a5128a445b1fa0095b8c9d6cf232af90f) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -81,4 +81,12 @@ int getAssessmentResultCount(Long assessmentUid, Long userId); AssessmentResult getAssessmentResultByUid(Long assessmentResultUid); + + /** + * Count how many last finished attempts selected specified option. + * + * @param optionUid + * @return + */ + int countAttemptsPerOption(Long optionUid); } \ No newline at end of file Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java =================================================================== diff -u -rb6b28d32fe5b2923cbb30a6c9b889c02e1ba29cf -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision b6b28d32fe5b2923cbb30a6c9b889c02e1ba29cf) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -259,7 +259,24 @@ } return (AssessmentResult) list.get(0); } + + @Override + public int countAttemptsPerOption(Long optionUid) { + String COUNT_ATTEMPTS_BY_OPTION_UID = "SELECT count(*) " + + "FROM tl_laasse10_assessment_result AS result " + + "JOIN tl_laasse10_question_result AS questionResult ON result.uid = questionResult.result_uid " + + "JOIN tl_laasse10_option_answer AS optionAnswer ON questionResult.uid = optionAnswer.question_result_uid AND optionAnswer.answer_boolean=1 AND optionAnswer.question_option_uid = :optionUid " + + "WHERE (result.finish_date IS NOT NULL) AND result.latest=1"; + SQLQuery query = getSession().createSQLQuery(COUNT_ATTEMPTS_BY_OPTION_UID); + query.setLong("optionUid", optionUid); + List list = query.list(); + if (list == null || list.size() == 0) { + return 0; + } + return ((Number) list.get(0)).intValue(); + } + private List convertResultsToAssessmentUserDTOList(List list) { List lastTotalScores = new ArrayList(); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java =================================================================== diff -u -r5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision 5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -190,7 +190,7 @@ public int getCountUsersByContentId(Long contentId) { String LOAD_USERS_ORDERED_BY_NAME = "SELECT COUNT(*) FROM " + AssessmentUser.class.getName() + " user" - + " WHERE user.assessment.contentId = :contentId "; + + " WHERE user.session.assessment.contentId = :contentId "; Query query = getSession().createQuery(LOAD_USERS_ORDERED_BY_NAME); query.setLong("contentId", contentId); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.java =================================================================== diff -u -rc97b41d72e071f6293126bd85f6eba0b756f7836 -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.java (.../AssessmentQuestionOption.java) (revision c97b41d72e071f6293126bd85f6eba0b756f7836) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.java (.../AssessmentQuestionOption.java) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -56,6 +56,8 @@ private String questionEscaped; private String optionStringEscaped; + + private float percentage; // ********************************************************** // Get/Set methods @@ -209,6 +211,14 @@ public void setOptionStringEscaped(String optionStringEscaped) { this.optionStringEscaped = optionStringEscaped; } + + public float getPercentage() { + return percentage; + } + + public void setPercentage(float percentage) { + this.percentage = percentage; + } @Override public Object clone() { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -914,6 +914,11 @@ public Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId) { return assessmentResultDao.getLastFinishedAssessmentResultTimeTaken(assessmentUid, userId); } + + @Override + public int countAttemptsPerOption(Long optionUid) { + return assessmentResultDao.countAttemptsPerOption(optionUid); + } @Override public AssessmentResult getLastFinishedAssessmentResultNotFromChache(Long assessmentUid, Long userId) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java =================================================================== diff -u -r5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -314,6 +314,11 @@ * @return */ Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId); + + /** + * Count how many last finished attempts selected specified option. + */ + int countAttemptsPerOption(Long optionUid); /** * Return the latest *finished* result (the same as the method above). But previously evicting it from the cache. It Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/TblMonitoringAction.java =================================================================== diff -u -r5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/TblMonitoringAction.java (.../TblMonitoringAction.java) (revision 5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/TblMonitoringAction.java (.../TblMonitoringAction.java) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -2,50 +2,38 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import javax.servlet.ServletException; -import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.commons.lang.StringEscapeUtils; import org.apache.log4j.Logger; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.tomcat.util.json.JSONException; -import org.lamsfoundation.lams.learningdesign.Activity; -import org.lamsfoundation.lams.learningdesign.ToolActivity; -import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.tool.assessment.AssessmentConstants; -import org.lamsfoundation.lams.tool.assessment.dto.TblAssessmentDTO; import org.lamsfoundation.lams.tool.assessment.dto.AssessmentResultDTO; -import org.lamsfoundation.lams.tool.assessment.dto.OptionDTO; -import org.lamsfoundation.lams.tool.assessment.dto.QuestionDTO; import org.lamsfoundation.lams.tool.assessment.dto.QuestionSummary; -import org.lamsfoundation.lams.tool.assessment.dto.SessionDTO; +import org.lamsfoundation.lams.tool.assessment.dto.TblAssessmentDTO; import org.lamsfoundation.lams.tool.assessment.dto.TblAssessmentQuestionDTO; import org.lamsfoundation.lams.tool.assessment.dto.TblAssessmentQuestionResultDTO; import org.lamsfoundation.lams.tool.assessment.model.Assessment; import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion; import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestionOption; import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestionResult; -import org.lamsfoundation.lams.tool.assessment.model.AssessmentResult; import org.lamsfoundation.lams.tool.assessment.model.AssessmentSession; import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser; import org.lamsfoundation.lams.tool.assessment.model.QuestionReference; import org.lamsfoundation.lams.tool.assessment.service.IAssessmentService; import org.lamsfoundation.lams.tool.assessment.util.AssessmentEscapeUtils; import org.lamsfoundation.lams.tool.assessment.util.AssessmentSessionComparator; import org.lamsfoundation.lams.tool.assessment.util.SequencableComparator; -import org.lamsfoundation.lams.util.ExcelCell; -import org.lamsfoundation.lams.util.ExcelUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -62,22 +50,73 @@ */ public ActionForward iraAssessment(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - initAssessmentService(); + initAssessmentService(); + Long toolContentId = WebUtil.readLongParam(request, "toolContentID"); - Long toolContentId = WebUtil.readLongParam(request, "assessmentToolContentIds"); - String assessmentActivityTitle = request.getParameter("assessmentActivityTitles"); - - String[] toolContentIds = new String[] {toolContentId.toString()}; - String[] activityTitles = new String[] {assessmentActivityTitle}; - + String[] toolContentIds = new String[] { toolContentId.toString() }; + String[] activityTitles = new String[] { "" }; List assessmentDtos = getAssessmentDtos(toolContentIds, activityTitles); request.setAttribute("assessmentDtos", assessmentDtos); - + request.setAttribute(AttributeNames.PARAM_TOOL_CONTENT_ID, toolContentId); request.setAttribute("isIraAssessment", true); return mapping.findForward("assessment"); - } + } + /** + * Shows ira page in case of Assessment activity + */ + public ActionForward iraAssessmentStudentChoices(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + initAssessmentService(); + + Long toolContentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + Assessment assessment = assessmentService.getAssessmentByContentId(toolContentId); + + //prepare list of the questions, filtering out questions that aren't supposed to be answered + Set questionList = new TreeSet(); + //in case there is at least one random question - we need to show all questions in a drop down select + if (assessment.hasRandomQuestion()) { + questionList.addAll(assessment.getQuestions()); + + //show only questions from question list otherwise + } else { + for (QuestionReference reference : (Set) assessment.getQuestionReferences()) { + questionList.add(reference.getQuestion()); + } + } + //keep only MCQ type of questions + Set mcqQuestions = new TreeSet(); + int maxOptionsInQuestion = 0; + for (AssessmentQuestion question : questionList) { + if (AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE == question.getType()) { + mcqQuestions.add(question); + + //calculate maxOptionsInQuestion + if (question.getOptions().size() > maxOptionsInQuestion) { + maxOptionsInQuestion = question.getOptions().size(); + } + } + } + request.setAttribute("maxOptionsInQuestion", maxOptionsInQuestion); + + int totalNumberOfUsers = assessmentService.getCountUsersByContentId(toolContentId); + for (AssessmentQuestion question : mcqQuestions) { + + // build candidate dtos + for (AssessmentQuestionOption option : question.getOptions()) { + int optionAttemptCount = assessmentService.countAttemptsPerOption(option.getUid()); + + float percentage = (float)(optionAttemptCount * 100) / totalNumberOfUsers; + option.setPercentage(percentage); + } + } + request.setAttribute("questions", mcqQuestions); + + request.setAttribute(AttributeNames.PARAM_TOOL_CONTENT_ID, toolContentId); + return mapping.findForward("iraAssessmentStudentChoices"); + } + private List getAssessmentDtos(String[] toolContentIds, String[] activityTitles) { List assessmentDtos = new ArrayList(); int i = 0; @@ -288,39 +327,6 @@ return null; } - -// /** -// * Excel Summary Export. -// * -// * @param mapping -// * @param form -// * @param request -// * @param response -// * @return -// * @throws IOException -// */ -// public ActionForward exportExcelAssessment(ActionMapping mapping, ActionForm form, HttpServletRequest request, -// HttpServletResponse response) throws IOException, ServletException { -// initAssessmentService(); -// -// Long toolContentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); -// Assessment assessment = assessmentService.getAssessmentByContentId(toolContentId); -// -// List sessionDtos = assessmentService.getSessionDtos(toolContentId, false); -// boolean showUserNames = true; -// LinkedHashMap dataToExport = assessmentService.exportSummary(assessment, sessionDtos, -// showUserNames); -// -// response.setContentType("application/x-download"); -// String fileName = "assessment_" + assessment.getUid() + "_export.xlsx"; -// response.setHeader("Content-Disposition", "attachment;filename=" + fileName); -// log.debug("Exporting assessment to a spreadsheet: " + assessment.getContentId()); -// -// ServletOutputStream out = response.getOutputStream(); -// ExcelUtil.createExcel(out, dataToExport, "Exported on", true); -// -// return null; -// } /** * Get ModalDialog for Teams tab. @@ -338,106 +344,8 @@ AssessmentResultDTO result = assessmentService.getUserMasterDetail(user.getSession().getSessionId(), userId); request.setAttribute(AssessmentConstants.ATTR_ASSESSMENT_RESULT, result); - -// // release object from the cache (it's required when we have modified result object in the same request) -// AssessmentResult result = assessmentService.getLastFinishedAssessmentResultNotFromChache(assessment.getUid(), userId); -// -// for (Set questionsForOnePage : pagedQuestionDtos) { -// for (QuestionDTO questionDto : questionsForOnePage) { -// -// // find corresponding questionResult -// for (AssessmentQuestionResult questionResult : result.getQuestionResults()) { -// if (questionDto.getUid().equals(questionResult.getAssessmentQuestion().getUid())) { -// -// // copy questionResult's info to the question -// questionDto.setResponseSubmitted(questionResult.getFinishDate() != null); -// -// // required for showing right/wrong answers icons on results page correctly -// if (questionDto.getType() == AssessmentConstants.QUESTION_TYPE_SHORT_ANSWER -// || questionDto.getType() == AssessmentConstants.QUESTION_TYPE_NUMERICAL) { -// boolean isAnsweredCorrectly = false; -// for (OptionDTO optionDto : questionDto.getOptionDtos()) { -// if (optionDto.getUid().equals(questionResult.getSubmittedOptionUid())) { -// isAnsweredCorrectly = optionDto.getGrade() > 0; -// break; -// } -// } -// questionDto.setAnswerBoolean(isAnsweredCorrectly); -// } -// -// // required for markandpenalty area and if it's on - on question's summary page -// List questionResults = assessmentService.getAssessmentQuestionResultList(assessment.getUid(), -// userId, questionDto.getUid()); -// questionDto.setQuestionResults(questionResults); -// } -// } -// } -// } - return mapping.findForward("teams"); } - -// /** -// * Used only for excell export (for getUserSummaryData() method). -// */ -// private static TBLAssessmentQuestionResult getAssessmentTBLQuestionResult(AssessmentQuestionResult questionResult) { -// AssessmentQuestion question = questionResult.getAssessmentQuestion(); -// String answer = ""; -// -// switch (question.getType()) { -// case AssessmentConstants.QUESTION_TYPE_ESSAY: -// answer = questionResult.getAnswerString(); -// -// case AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS: -// for (AssessmentQuestionOption option : question.getOptions()) { -// sb.append("[" + option.getQuestion() + ", " + option.getOptionString() + "] \n"); -// } -// return sb.toString(); -// -// case AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE: -// for (AssessmentQuestionOption option : question.getOptions()) { -// if (option.getGrade() == 100f) { -// return option.getOptionString(); -// } -// } -// -// case AssessmentConstants.QUESTION_TYPE_NUMERICAL: -// return question.getAnswerString(); -// -// case AssessmentConstants.QUESTION_TYPE_ORDERING: -// TreeSet correctOptionSet = new TreeSet( -// new SequencableComparator()); -// correctOptionSet.addAll(question.getOptions()); -// -// for (AssessmentQuestionOption option : question.getOptions()) { -// sb.append(option.getOptionString() + "\n"); -// } -// return sb.toString(); -// -// case AssessmentConstants.QUESTION_TYPE_SHORT_ANSWER: -// return question.getAnswerString(); -// -// case AssessmentConstants.QUESTION_TYPE_TRUE_FALSE: -// return new Boolean(question.getAnswerBoolean()).toString(); -// -// case AssessmentConstants.QUESTION_TYPE_MARK_HEDGING: -// for (AssessmentQuestionOption option : question.getOptions()) { -// if (option.isCorrect()) { -// return option.getOptionString(); -// } -// } -// -// default: -// return null; -// } -// -// TBLAssessmentQuestionResult tblQuestionResult = new TBLAssessmentQuestionResult(); -// String answer = AssessmentEscapeUtils.printResponsesForJqgrid(questionResult); -// tblQuestionResult.setAnswer(answer); -// boolean correct = (questionResult.getPenalty() + questionResult.getMark() + 0.1) >= questionResult.getMaxMark(); -// tblQuestionResult.setCorrect(correct); -// return tblQuestionResult; -// } // ************************************************************************************* // Private method Index: lams_tool_assessment/web/WEB-INF/struts-config.xml =================================================================== diff -u -r5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_tool_assessment/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d) +++ lams_tool_assessment/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -381,6 +381,11 @@ path="/pages/tblmonitoring/teams.jsp" redirect="false" /> + - + + + + iraAssessmentStudentChoices + + + aesStudentChoices + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${ALPHABET_CAPITAL_LETTERS[i]} + + + + + + + + + + + ${i.index+1} + + + + + + % + + + + + + + + + + + + + + + + + + + + + + + + + + + Q${i.index+1}) ${question.question} + + + + + + + + bg-success + + + ${ALPHABET[j.index]}. + + + + + + % + + + + + + + + + + + + + + + + + + Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/action/TblMonitoringAction.java =================================================================== diff -u -r5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d -ra05411c3da91b4b357b1615cc5361ea25e3614da --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/action/TblMonitoringAction.java (.../TblMonitoringAction.java) (revision 5d1d1bc2d08ed13455ca34ceb5ab94e5f918855d) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/action/TblMonitoringAction.java (.../TblMonitoringAction.java) (revision a05411c3da91b4b357b1615cc5361ea25e3614da) @@ -108,7 +108,6 @@ } request.setAttribute("questionDtos", questionDtos); - request.setAttribute("questions", questions); request.setAttribute(AttributeNames.PARAM_TOOL_CONTENT_ID, toolContentId); return mapping.findForward("mcqStudentChoices"); }