Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java,v diff -u -r1.63 -r1.64 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 11 Nov 2015 01:16:44 -0000 1.63 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 12 Nov 2015 23:26:07 -0000 1.64 @@ -93,6 +93,7 @@ import org.lamsfoundation.lams.tool.assessment.model.AssessmentUnit; import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser; import org.lamsfoundation.lams.tool.assessment.model.QuestionReference; +import org.lamsfoundation.lams.tool.assessment.util.AssessmentEscapeUtils; import org.lamsfoundation.lams.tool.assessment.util.AssessmentQuestionResultComparator; import org.lamsfoundation.lams.tool.assessment.util.AssessmentSessionComparator; import org.lamsfoundation.lams.tool.assessment.util.AssessmentToolContentHandler; @@ -908,7 +909,7 @@ sessionDtos.add(sessionDTO); } - AssessmentServiceImpl.escapeQuotes(sessionDtos); + AssessmentEscapeUtils.escapeQuotes(sessionDtos); return sessionDtos; } @@ -922,7 +923,7 @@ new AssessmentQuestionResultComparator()); questionResults.addAll(lastFinishedResult.getQuestionResults()); lastFinishedResult.setQuestionResults(questionResults); - AssessmentServiceImpl.escapeQuotes(lastFinishedResult); + AssessmentEscapeUtils.escapeQuotes(lastFinishedResult); } return lastFinishedResult; @@ -975,7 +976,7 @@ } userSummary.setUserSummaryItems(userSummaryItems); - AssessmentServiceImpl.escapeQuotes(userSummary); + AssessmentEscapeUtils.escapeQuotes(userSummary); return userSummary; } @@ -986,10 +987,6 @@ AssessmentQuestion question = assessmentQuestionDao.getByUid(questionUid); questionSummary.setQuestion(question); - //TODO -// float averageMark = assessmentQuestionResultDao.getNumberWrongAnswersDoneBefore(assessmentUid, userId, questionUid); -// questionSummary.setAverageMark(averageMark); - return questionSummary; } @@ -1058,7 +1055,7 @@ float averageMark = (count == 0) ? 0 : total / count; questionSummary.setAverageMark(averageMark); - AssessmentServiceImpl.escapeQuotes(questionSummary); + AssessmentEscapeUtils.escapeQuotes(questionSummary); return questionSummary; } @@ -1501,75 +1498,6 @@ // private methods // ***************************************************************************** - /** - * Escapes all characters that may brake JS code on assigning Java value to JS String variable (particularly escapes - * all quotes in the following way \"). - */ - private static void escapeQuotes(Object object) { - if (object instanceof UserSummary) { - UserSummary userSummary = (UserSummary) object; - for (UserSummaryItem userSummaryItem : userSummary.getUserSummaryItems()) { - for (AssessmentQuestionResult questionResult : userSummaryItem.getQuestionResults()) { - AssessmentServiceImpl.escapeQuotesInQuestionResult(questionResult); - } - } - } else if (object instanceof QuestionSummary) { - QuestionSummary questionSummary = (QuestionSummary) object; - - for (List sessionQuestionResults : questionSummary - .getQuestionResultsPerSession()) { - for (AssessmentQuestionResult questionResult : sessionQuestionResults) { - AssessmentServiceImpl.escapeQuotesInQuestionResult(questionResult); - } - } - } else if (object instanceof List) { - List sessionDtos = (List) object; - - for (SessionDTO sessionDTO : sessionDtos) { - for (AssessmentResult result : sessionDTO.getAssessmentResults()) { - for (AssessmentQuestionResult questionResult : result.getQuestionResults()) { - AssessmentServiceImpl.escapeQuotesInQuestionResult(questionResult); - } - } - } - } else if (object instanceof AssessmentResult) { - AssessmentResult assessmentResult = (AssessmentResult) object; - - for (AssessmentQuestionResult questionResult : assessmentResult.getQuestionResults()) { - AssessmentServiceImpl.escapeQuotesInQuestionResult(questionResult); - } - } - } - - private static void escapeQuotesInQuestionResult(AssessmentQuestionResult questionResult) { - String answerString = questionResult.getAnswerString(); - if (answerString != null) { - String answerStringEscaped = StringEscapeUtils.escapeJavaScript(answerString); - questionResult.setAnswerStringEscaped(answerStringEscaped); - } - - AssessmentQuestion question = questionResult.getAssessmentQuestion(); - String title = question.getTitle(); - if (title != null) { - String titleEscaped = StringEscapeUtils.escapeJavaScript(title); - question.setTitleEscaped(titleEscaped); - } - - for (AssessmentQuestionOption option : question.getOptions()) { - String questionStr = option.getQuestion(); - if (questionStr != null) { - String questionEscaped = StringEscapeUtils.escapeJavaScript(questionStr); - option.setQuestionEscaped(questionEscaped); - } - - String optionStr = option.getOptionString(); - if (optionStr != null) { - String optionEscaped = StringEscapeUtils.escapeJavaScript(optionStr); - option.setOptionStringEscaped(optionEscaped); - } - } - } - private Assessment getDefaultAssessment() throws AssessmentApplicationException { Long defaultAssessmentId = getToolDefaultContentIdBySignature(AssessmentConstants.TOOL_SIGNATURE); Assessment defaultAssessment = getAssessmentByContentId(defaultAssessmentId); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/util/AssessmentEscapeUtils.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/util/AssessmentEscapeUtils.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/util/AssessmentEscapeUtils.java 12 Nov 2015 23:26:06 -0000 1.1 @@ -0,0 +1,343 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id: AssessmentEscapeUtils.java,v 1.1 2015/11/12 23:26:06 andreyb Exp $ */ +package org.lamsfoundation.lams.tool.assessment.util; + +import java.util.List; +import java.util.Set; + +import org.apache.commons.lang.StringEscapeUtils; +import org.lamsfoundation.lams.tool.assessment.AssessmentConstants; +import org.lamsfoundation.lams.tool.assessment.dto.QuestionSummary; +import org.lamsfoundation.lams.tool.assessment.dto.SessionDTO; +import org.lamsfoundation.lams.tool.assessment.dto.UserSummary; +import org.lamsfoundation.lams.tool.assessment.dto.UserSummaryItem; +import org.lamsfoundation.lams.tool.assessment.model.AssessmentOptionAnswer; +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; + +public class AssessmentEscapeUtils { + + /** + * Escapes all characters that may brake JS code on assigning Java value to JS String variable (particularly escapes + * all quotes in the following way \"). + */ + public static void escapeQuotes(Object object) { + if (object instanceof UserSummary) { + UserSummary userSummary = (UserSummary) object; + for (UserSummaryItem userSummaryItem : userSummary.getUserSummaryItems()) { + for (AssessmentQuestionResult questionResult : userSummaryItem.getQuestionResults()) { + AssessmentEscapeUtils.escapeQuotesInQuestionResult(questionResult); + } + } + } else if (object instanceof QuestionSummary) { + QuestionSummary questionSummary = (QuestionSummary) object; + + for (List sessionQuestionResults : questionSummary + .getQuestionResultsPerSession()) { + for (AssessmentQuestionResult questionResult : sessionQuestionResults) { + AssessmentEscapeUtils.escapeQuotesInQuestionResult(questionResult); + } + } + } else if (object instanceof List) { + List sessionDtos = (List) object; + + for (SessionDTO sessionDTO : sessionDtos) { + for (AssessmentResult result : sessionDTO.getAssessmentResults()) { + for (AssessmentQuestionResult questionResult : result.getQuestionResults()) { + AssessmentEscapeUtils.escapeQuotesInQuestionResult(questionResult); + } + } + } + } else if (object instanceof AssessmentResult) { + AssessmentResult assessmentResult = (AssessmentResult) object; + + for (AssessmentQuestionResult questionResult : assessmentResult.getQuestionResults()) { + AssessmentEscapeUtils.escapeQuotesInQuestionResult(questionResult); + } + } + } + + public static void escapeQuotesInQuestionResult(AssessmentQuestionResult questionResult) { + String answerString = questionResult.getAnswerString(); + if (answerString != null) { + String answerStringEscaped = StringEscapeUtils.escapeJavaScript(answerString); + questionResult.setAnswerStringEscaped(answerStringEscaped); + } + + AssessmentQuestion question = questionResult.getAssessmentQuestion(); + String title = question.getTitle(); + if (title != null) { + String titleEscaped = StringEscapeUtils.escapeJavaScript(title); + question.setTitleEscaped(titleEscaped); + } + + for (AssessmentQuestionOption option : question.getOptions()) { + String questionStr = option.getQuestion(); + if (questionStr != null) { + String questionEscaped = StringEscapeUtils.escapeJavaScript(questionStr); + option.setQuestionEscaped(questionEscaped); + } + + String optionStr = option.getOptionString(); + if (optionStr != null) { + String optionEscaped = StringEscapeUtils.escapeJavaScript(optionStr); + option.setOptionStringEscaped(optionEscaped); + } + } + } + + public static String printResponsesForJqgrid(AssessmentQuestionResult questionResult) { + StringBuilder responseStr = new StringBuilder(); + final String DELIMITER = "
"; + + if (questionResult != null) { + + Set options = questionResult.getAssessmentQuestion().getOptions(); + Set optionAnswers = questionResult.getOptionAnswers(); + + switch (questionResult.getAssessmentQuestion().getType()) { + case AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS: + String str = ""; + if (optionAnswers != null) { + for (AssessmentQuestionOption option : options) { + str += "
"; + str += "
"; + str += option.getQuestion(); + str += "
"; + str += "
"; + str += " - "; + + for (AssessmentOptionAnswer optionAnswer : optionAnswers) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { + for (AssessmentQuestionOption option2 : options) { + if (option2.getUid() == optionAnswer.getAnswerInt()) { + str += option2.getOptionString(); + } + } + } + } + + str += "
"; + str += "
"; + str += DELIMITER; + + } + } + return str; + + case AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE: + + if (optionAnswers != null) { + for (AssessmentOptionAnswer optionAnswer : optionAnswers) { + if (optionAnswer.getAnswerBoolean()) { + for (AssessmentQuestionOption option : options) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { + responseStr.append(option.getOptionString() + DELIMITER); + } + } + } + } + } + break; + + case AssessmentConstants.QUESTION_TYPE_NUMERICAL: + case AssessmentConstants.QUESTION_TYPE_SHORT_ANSWER: + case AssessmentConstants.QUESTION_TYPE_ESSAY: + responseStr.append(questionResult.getAnswerString()); + break; + + case AssessmentConstants.QUESTION_TYPE_ORDERING: + if (optionAnswers != null) { + for (int i = 0; i < optionAnswers.size(); i++) { + for (AssessmentOptionAnswer optionAnswer : optionAnswers) { + if (optionAnswer.getAnswerInt() == i) { + for (AssessmentQuestionOption option : options) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { + responseStr.append(option.getOptionString()); + } + } + } + } + } + } + break; + + case AssessmentConstants.QUESTION_TYPE_TRUE_FALSE: + if (questionResult.getAnswerString() != null) { + responseStr.append(questionResult.getAnswerBoolean()); + } + break; + + case AssessmentConstants.QUESTION_TYPE_MARK_HEDGING: + + if (optionAnswers != null) { + for (AssessmentQuestionOption option : options) { + responseStr.append("
"); + responseStr.append("
"); + responseStr.append( option.getOptionString()); + responseStr.append("
"); + + responseStr.append("
"); + responseStr.append(" - "); + for (AssessmentOptionAnswer optionAnswer : optionAnswers) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { + responseStr.append(optionAnswer.getAnswerInt()); + } + } + responseStr.append("
"); + + responseStr.append("
"); + responseStr.append(DELIMITER); + + } + + if (questionResult.getAssessmentQuestion().isHedgingJustificationEnabled()) { + responseStr.append(questionResult.getAnswerString()); + responseStr.append(DELIMITER); + } + } + break; + + default: + return null; + } + } + return responseStr.toString(); + } + + /** + * Used only for excell export (for getUserSummaryData() method). + */ + public static Object printResponsesForExcelExport(AssessmentQuestionResult questionResult) { + Object ret = null; + + if (questionResult != null) { + switch (questionResult.getAssessmentQuestion().getType()) { + case AssessmentConstants.QUESTION_TYPE_ESSAY: + String answerString = questionResult.getAnswerString(); + return (answerString == null) ? "" : answerString.replaceAll("\\<.*?>", "").replaceAll(" ", " "); + case AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS: + return getOptionResponse(questionResult, AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS); + case AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE: + return getOptionResponse(questionResult, AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE); + case AssessmentConstants.QUESTION_TYPE_NUMERICAL: + return questionResult.getAnswerString(); + case AssessmentConstants.QUESTION_TYPE_ORDERING: + return getOptionResponse(questionResult, AssessmentConstants.QUESTION_TYPE_ORDERING); + case AssessmentConstants.QUESTION_TYPE_SHORT_ANSWER: + return questionResult.getAnswerString(); + case AssessmentConstants.QUESTION_TYPE_TRUE_FALSE: + return questionResult.getAnswerBoolean(); + case AssessmentConstants.QUESTION_TYPE_MARK_HEDGING: + return getOptionResponse(questionResult, AssessmentConstants.QUESTION_TYPE_MARK_HEDGING); + default: + return null; + } + } + return ret; + } + + /** + * Used only for excell export (for getUserSummaryData() method). + */ + private static String getOptionResponse(AssessmentQuestionResult questionResult, short type) { + + StringBuilder sb = new StringBuilder(); + //whether there is a need to remove last comma + boolean trimLastComma = false; + + Set options = questionResult.getAssessmentQuestion().getOptions(); + Set optionAnswers = questionResult.getOptionAnswers(); + if (optionAnswers != null) { + + if (type == AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE) { + for (AssessmentOptionAnswer optionAnswer : optionAnswers) { + if (optionAnswer.getAnswerBoolean()) { + for (AssessmentQuestionOption option : options) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { + sb.append(option.getOptionString() + ", "); + trimLastComma = true; + } + } + } + } + + } else if (type == AssessmentConstants.QUESTION_TYPE_ORDERING) { + for (int i = 0; i < optionAnswers.size(); i++) { + for (AssessmentOptionAnswer optionAnswer : optionAnswers) { + if (optionAnswer.getAnswerInt() == i) { + for (AssessmentQuestionOption option : options) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { + sb.append(option.getOptionString() + ", "); + trimLastComma = true; + } + } + } + } + } + + } else if (type == AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS) { + + for (AssessmentQuestionOption option : options) { + sb.append("[" + option.getOptionString() + ", "); + + for (AssessmentOptionAnswer optionAnswer : optionAnswers) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { + for (AssessmentQuestionOption option2 : options) { + if (option2.getUid() == optionAnswer.getAnswerInt()) { + sb.append(option2.getOptionString() + "] "); + } + } + } + } + + } + + } else if (type == AssessmentConstants.QUESTION_TYPE_MARK_HEDGING) { + + for (AssessmentQuestionOption option : options) { + sb.append("[" + option.getOptionString() + ", "); + + for (AssessmentOptionAnswer optionAnswer : optionAnswers) { + if (option.getUid().equals(optionAnswer.getOptionUid())) { + sb.append(optionAnswer.getAnswerInt() + "] "); + } + } + + } + } + + } + String ret = sb.toString().replaceAll("\\<.*?\\>", ""); + + if (trimLastComma) { + ret = ret.substring(0, ret.lastIndexOf(",")); + } + + return ret; + } + +} Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java,v diff -u -r1.27 -r1.28 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java 11 Nov 2015 01:16:44 -0000 1.27 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java 12 Nov 2015 23:26:06 -0000 1.28 @@ -65,7 +65,9 @@ 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.AssessmentServiceImpl; import org.lamsfoundation.lams.tool.assessment.service.IAssessmentService; +import org.lamsfoundation.lams.tool.assessment.util.AssessmentEscapeUtils; import org.lamsfoundation.lams.tool.assessment.util.SequencableComparator; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.DateUtil; @@ -429,10 +431,11 @@ JSONArray userData = new JSONArray(); if (questionResultUid != null) { AssessmentQuestionResult questionResult = service.getAssessmentQuestionResultByUid(questionResultUid); + userData.put(questionResultUid); userData.put(questionResult.getMaxMark()); userData.put(fullName); - userData.put(getAnswerObject(questionResult, true)); + userData.put(AssessmentEscapeUtils.printResponsesForJqgrid(questionResult)); userData.put(questionResult.getMark()); } else { @@ -663,7 +666,7 @@ userResultRow[2] = new ExcelCell(assessmentResult.getStartDate(), false); userResultRow[3] = new ExcelCell(questionResult .getAssessmentQuestion().getTitle(), false); - userResultRow[4] = new ExcelCell(getAnswerObject(questionResult, false), + userResultRow[4] = new ExcelCell(AssessmentEscapeUtils.printResponsesForExcelExport(questionResult), false); userResultRow[5] = new ExcelCell(questionResult.getMark(), false); data.add(userResultRow); @@ -673,7 +676,7 @@ userResultRow[1] = new ExcelCell(assessmentResult.getStartDate(), false); userResultRow[2] = new ExcelCell(questionResult .getAssessmentQuestion().getTitle(), false); - userResultRow[3] = new ExcelCell(getAnswerObject(questionResult, false), + userResultRow[3] = new ExcelCell(AssessmentEscapeUtils.printResponsesForExcelExport(questionResult), false); userResultRow[4] = new ExcelCell(questionResult.getMark(), false); data.add(userResultRow); @@ -791,7 +794,7 @@ userResultRow[4] = new ExcelCell(questionResult.getUser().getUserId(), false); userResultRow[5] = new ExcelCell(questionResult.getUser().getFullName(), false); userResultRow[6] = new ExcelCell(questionResult.getFinishDate(), false); - userResultRow[7] = new ExcelCell(getAnswerObject(questionResult, false), false); + userResultRow[7] = new ExcelCell(AssessmentEscapeUtils.printResponsesForExcelExport(questionResult), false); AssessmentResult assessmentResult = questionResult.getAssessmentResult(); Date finishDate = questionResult.getFinishDate(); @@ -826,7 +829,7 @@ userResultRow[3] = new ExcelCell(maxMark, false); userResultRow[4] = new ExcelCell(questionResult.getUser().getUserId(), false); userResultRow[5] = new ExcelCell(questionResult.getFinishDate(), false); - userResultRow[6] = new ExcelCell(getAnswerObject(questionResult, false), false); + userResultRow[6] = new ExcelCell(AssessmentEscapeUtils.printResponsesForExcelExport(questionResult), false); if (questionResult.getAssessmentResult() != null) { Date startDate = questionResult.getAssessmentResult().getStartDate(); @@ -920,153 +923,6 @@ } } - /** - * Used only for excell export (for getUserSummaryData() method). - */ - private Object getAnswerObject(AssessmentQuestionResult questionResult, boolean isMonitoring) { - Object ret = null; - - if (questionResult != null) { - switch (questionResult.getAssessmentQuestion().getType()) { - case AssessmentConstants.QUESTION_TYPE_ESSAY: - return removeHTMLTags(questionResult.getAnswerString()); - case AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS: - return getOptionResponse(questionResult, AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS, isMonitoring); - case AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE: - return getOptionResponse(questionResult, AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE, isMonitoring); - case AssessmentConstants.QUESTION_TYPE_NUMERICAL: - return questionResult.getAnswerString(); - case AssessmentConstants.QUESTION_TYPE_ORDERING: - return getOptionResponse(questionResult, AssessmentConstants.QUESTION_TYPE_ORDERING, isMonitoring); - case AssessmentConstants.QUESTION_TYPE_SHORT_ANSWER: - return questionResult.getAnswerString(); - case AssessmentConstants.QUESTION_TYPE_TRUE_FALSE: - return questionResult.getAnswerBoolean(); - case AssessmentConstants.QUESTION_TYPE_MARK_HEDGING: - return getOptionResponse(questionResult, AssessmentConstants.QUESTION_TYPE_MARK_HEDGING, isMonitoring); - default: - return null; - } - } - return ret; - } - - /** - * Used only for excell export (for getUserSummaryData() method). - */ - private String getOptionResponse(AssessmentQuestionResult questionResult, short type, boolean isMonitoring) { - - StringBuilder sb = new StringBuilder(); - //whether there is a need to remove last comma - boolean trimLastComma = false; - final String DELIMITER = isMonitoring ? "
" : ", "; - - Set options = questionResult.getAssessmentQuestion().getOptions(); - Set optionAnswers = questionResult.getOptionAnswers(); - if (optionAnswers != null) { - - if (type == AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE) { - for (AssessmentOptionAnswer optionAnswer : optionAnswers) { - if (optionAnswer.getAnswerBoolean()) { - for (AssessmentQuestionOption option : options) { - if (option.getUid().equals(optionAnswer.getOptionUid())) { - sb.append(option.getOptionString() + DELIMITER); - trimLastComma = true; - } - } - } - } - - } else if (type == AssessmentConstants.QUESTION_TYPE_ORDERING) { - for (int i = 0; i < optionAnswers.size(); i++) { - for (AssessmentOptionAnswer optionAnswer : optionAnswers) { - if (optionAnswer.getAnswerInt() == i) { - for (AssessmentQuestionOption option : options) { - if (option.getUid().equals(optionAnswer.getOptionUid())) { - sb.append(option.getOptionString() + DELIMITER); - trimLastComma = true; - } - } - } - } - } - - } else if (type == AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS) { - - for (AssessmentQuestionOption option : options) { - if (isMonitoring) { - sb.append("
"); - sb.append("
"); - sb.append( option.getQuestion()); - sb.append("
"); - sb.append("
"); - sb.append(" - "); - - } else { - sb.append("[" + option.getQuestion() + ", "); - } - - for (AssessmentOptionAnswer optionAnswer : optionAnswers) { - if (option.getUid().equals(optionAnswer.getOptionUid())) { - for (AssessmentQuestionOption option2 : options) { - if (option2.getUid() == optionAnswer.getAnswerInt()) { - sb.append(option2.getOptionString()); - } - } - } - } - - if (isMonitoring) { - sb.append("
"); - sb.append("
"); - sb.append(DELIMITER); - } else { - sb.append("] "); - } - - } - - } else if (type == AssessmentConstants.QUESTION_TYPE_MARK_HEDGING) { - - for (AssessmentQuestionOption option : options) { - if (isMonitoring) { - sb.append(option.getOptionString() + " - "); - } else { - sb.append("[" + option.getOptionString() + ", "); - } - - for (AssessmentOptionAnswer optionAnswer : optionAnswers) { - if (option.getUid().equals(optionAnswer.getOptionUid())) { - sb.append(optionAnswer.getAnswerInt()); - } - } - - if (isMonitoring) { - sb.append(DELIMITER); - } else { - sb.append("] "); - } - - } - } - - } - - String ret; - if (isMonitoring) { - ret = StringEscapeUtils.escapeCsv(sb.toString()); - - } else { - ret = sb.toString().replaceAll("\\<.*?\\>", ""); - - if (trimLastComma) { - ret = ret.substring(0, ret.lastIndexOf(",")); - } - } - - return ret; - } - // ************************************************************************************* // Private method // ************************************************************************************* @@ -1079,14 +935,4 @@ return service; } - /** - * Removes all the html tags from a string - * - * @param string - * @return - */ - private String removeHTMLTags(String string) { - return (string == null) ? "" : string.replaceAll("\\<.*?>", "").replaceAll(" ", " "); - } - } Index: lams_tool_assessment/web/pages/monitoring/summary.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/monitoring/summary.jsp,v diff -u -r1.29 -r1.30 --- lams_tool_assessment/web/pages/monitoring/summary.jsp 11 Nov 2015 01:16:45 -0000 1.29 +++ lams_tool_assessment/web/pages/monitoring/summary.jsp 12 Nov 2015 23:26:07 -0000 1.30 @@ -31,7 +31,7 @@ {name:'userId',index:'userId', width:0}, {name:'sessionId',index:'sessionId', width:0}, {name:'userName',index:'userName', width:350, searchoptions: { clearSearch: false }}, - {name:'total',index:'total', width:120,align:"right",sorttype:"float", search:false} + {name:'total',index:'total', width:120,align:"right", formatter:'number', search:false} ], ondblClickRow: function(rowid) { var userId = jQuery("#list${sessionDto.sessionId}").getCell(rowid, 'userId'); Index: lams_tool_assessment/web/pages/monitoring/parts/masterDetailLoadUp.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/monitoring/parts/masterDetailLoadUp.jsp,v diff -u -r1.9 -r1.10 --- lams_tool_assessment/web/pages/monitoring/parts/masterDetailLoadUp.jsp 2 Jun 2015 16:36:12 -0000 1.9 +++ lams_tool_assessment/web/pages/monitoring/parts/masterDetailLoadUp.jsp 12 Nov 2015 23:26:06 -0000 1.10 @@ -19,8 +19,7 @@ title:"${fn:escapeXml(title)}", response:responseStr, grade:"" - }); - + }); // set maxGrade attribute to cell DOM element table.setCell(${i.index + 1}, "grade", "", null, {"maxGrade" : ${questionResult.maxMark}}); Index: lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp,v diff -u -r1.17 -r1.18 --- lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp 11 Nov 2015 01:16:44 -0000 1.17 +++ lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp 12 Nov 2015 23:26:06 -0000 1.18 @@ -79,10 +79,6 @@ jQuery("#session${sessionDto.sessionId}").restoreCell(iRow,iCol); } else { isEdited = true; - - var numberOfValues = jQuery("#myGrid").jqGrid('getGridParam', 'records'); - var averageMark = (eval($("#averageMark").html())*numberOfValues - eval(previousCellValue) + eval(val))/numberOfValues; - $("#averageMark").html(averageMark); } }, beforeSubmitCell : function (rowid,name,val,iRow,iCol){ @@ -193,18 +189,7 @@ - - - +

@@ -217,9 +202,8 @@
- + -