Index: lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties,v diff -u -r1.5 -r1.6 --- lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties 4 Feb 2009 00:19:20 -0000 1.5 +++ lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties 4 Feb 2009 18:03:05 -0000 1.6 @@ -190,6 +190,7 @@ error.title.empty =Title can not be blank error.form.validation.error =You have 1 error in a form. It has been highlighted error.form.validation.errors =You have {0} errors in a form. They have been highlighted +error.form.validation.hundred.score =One of the answers should have a grade of 100% so it is possible to get full marks for this question. message.msg.maxFileSize =Max 250K label.open =Open label.delete =Delete Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentAnswerOption.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/Attic/AssessmentAnswerOption.java,v diff -u -r1.2 -r1.3 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentAnswerOption.java 2 Feb 2009 22:20:28 -0000 1.2 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentAnswerOption.java 4 Feb 2009 18:03:05 -0000 1.3 @@ -50,6 +50,9 @@ private float grade; private String feedback; + + // *************** NON Persist Fields ******************** + private String acceptedErrorStr = "0.0";; // ********************************************************** // Get/Set methods @@ -173,6 +176,13 @@ public void setFeedback(String feedback) { this.feedback = feedback; } + + public String getAcceptedErrorStr() { + return acceptedErrorStr; + } + public void setAcceptedErrorStr(String acceptedErrorStr) { + this.acceptedErrorStr = acceptedErrorStr; + } @Override public Object clone() { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java,v diff -u -r1.4 -r1.5 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java 4 Feb 2009 00:19:20 -0000 1.4 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java 4 Feb 2009 18:03:05 -0000 1.5 @@ -106,7 +106,7 @@ Set set = new HashSet(); while (iter.hasNext()) { AssessmentAnswerOption answerOption = (AssessmentAnswerOption) iter.next(); - AssessmentAttachment newAnswerOption = (AssessmentAttachment) answerOption.clone(); + AssessmentAnswerOption newAnswerOption = (AssessmentAnswerOption) answerOption.clone(); set.add(newAnswerOption); } obj.answerOptions = set; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java,v diff -u -r1.1 -r1.2 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java 4 Feb 2009 00:19:20 -0000 1.1 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java 4 Feb 2009 18:03:05 -0000 1.2 @@ -42,6 +42,10 @@ private String unit; private float multiplier; + + // *************** NON Persist Fields ******************** + private String multiplierStr = "0.0"; + // ********************************************************** // Get/Set methods @@ -93,6 +97,14 @@ this.multiplier = multiplier; } + public String getMultiplierStr() { + return multiplierStr; + } + + public void setMultiplierStr(String multiplierStr) { + this.multiplierStr = multiplierStr; + } + /** * @hibernate.property column="unit" * 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.1 -r1.2 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 29 Jan 2009 05:59:05 -0000 1.1 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 4 Feb 2009 18:03:05 -0000 1.2 @@ -755,8 +755,6 @@ try { exportContentService.registerFileClassForExport(AssessmentAttachment.class.getName(), "fileUuid", "fileVersionId"); - exportContentService.registerFileClassForExport(AssessmentQuestion.class.getName(), "fileUuid", - "fileVersionId"); exportContentService.exportToolContent(toolContentId, toolContentObj, assessmentToolContentHandler, rootPath); } catch (ExportToolContentException e) { @@ -770,8 +768,6 @@ try { exportContentService.registerFileClassForImport(AssessmentAttachment.class.getName(), "fileUuid", "fileVersionId", "fileName", "fileType", null, null); - exportContentService.registerFileClassForImport(AssessmentQuestion.class.getName(), "fileUuid", - "fileVersionId", "fileName", "fileType", null, "initialItem"); Object toolPOJO = exportContentService.importToolContent(toolContentPath, assessmentToolContentHandler, fromVersion, toVersion); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java,v diff -u -r1.5 -r1.6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java 4 Feb 2009 00:19:20 -0000 1.5 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java 4 Feb 2009 18:03:05 -0000 1.6 @@ -620,9 +620,10 @@ HttpServletResponse response) { String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + String contentFolderID = (String) sessionMap.get(AttributeNames.PARAM_CONTENT_FOLDER_ID); AssessmentQuestionForm questionForm = (AssessmentQuestionForm) form; questionForm.setSessionMapID(sessionMapID); - questionForm.setContentFolderID((String) sessionMap.get(AttributeNames.PARAM_CONTENT_FOLDER_ID)); + questionForm.setContentFolderID(contentFolderID); questionForm.setDefaultGrade("1"); questionForm.setPenaltyFactor("0.1"); @@ -646,6 +647,7 @@ short type = (short) NumberUtils.stringToInt(request.getParameter(AssessmentConstants.ATTR_QUESTION_TYPE)); sessionMap.put(AssessmentConstants.ATTR_QUESTION_TYPE, type); + request.setAttribute(AttributeNames.PARAM_CONTENT_FOLDER_ID, contentFolderID); return findForward(type, mapping); } @@ -664,7 +666,8 @@ // get back sessionMAP String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - + String contentFolderID = (String) sessionMap.get(AttributeNames.PARAM_CONTENT_FOLDER_ID); + int questionIdx = NumberUtils.stringToInt(request.getParameter(AssessmentConstants.PARAM_QUESTION_INDEX), -1); AssessmentQuestion question = null; if (questionIdx != -1) { @@ -674,10 +677,11 @@ if (question != null) { AssessmentQuestionForm questionForm = (AssessmentQuestionForm) form; populateQuestionToForm(questionIdx, question, questionForm, request); - questionForm.setContentFolderID((String) sessionMap.get(AttributeNames.PARAM_CONTENT_FOLDER_ID)); + questionForm.setContentFolderID(contentFolderID); } } sessionMap.put(AssessmentConstants.ATTR_QUESTION_TYPE, question.getType()); + request.setAttribute(AttributeNames.PARAM_CONTENT_FOLDER_ID, contentFolderID); return findForward(question == null ? -1 : question.getType(), mapping); } @@ -817,6 +821,8 @@ option.setGrade(0); optionList.add(option); + request.setAttribute(AttributeNames.PARAM_CONTENT_FOLDER_ID, WebUtil.readStrParam(request, + AttributeNames.PARAM_CONTENT_FOLDER_ID)); request.setAttribute(AssessmentConstants.ATTR_QUESTION_TYPE, WebUtil.readIntParam(request, AssessmentConstants.ATTR_QUESTION_TYPE)); request.setAttribute(AssessmentConstants.ATTR_OPTION_LIST, optionList); @@ -846,6 +852,8 @@ // delList.add(question); } + request.setAttribute(AttributeNames.PARAM_CONTENT_FOLDER_ID, WebUtil.readStrParam(request, + AttributeNames.PARAM_CONTENT_FOLDER_ID)); request.setAttribute(AssessmentConstants.ATTR_QUESTION_TYPE, WebUtil.readIntParam(request, AssessmentConstants.ATTR_QUESTION_TYPE)); request.setAttribute(AssessmentConstants.ATTR_OPTION_LIST, optionList); @@ -905,6 +913,8 @@ optionList.addAll(rList); } + request.setAttribute(AttributeNames.PARAM_CONTENT_FOLDER_ID, WebUtil.readStrParam(request, + AttributeNames.PARAM_CONTENT_FOLDER_ID)); request.setAttribute(AssessmentConstants.ATTR_QUESTION_TYPE, WebUtil.readIntParam(request, AssessmentConstants.ATTR_QUESTION_TYPE)); request.setAttribute(AssessmentConstants.ATTR_OPTION_LIST, optionList); @@ -1272,10 +1282,10 @@ * Get answer options from HttpRequest * * @param request - * @param skipBlankOptions whether the blank options will be preserved or not + * @param isForSaving whether the blank options will be preserved or not * */ - private TreeSet getOptionsFromRequest(HttpServletRequest request, boolean skipBlankOptions) { + private TreeSet getOptionsFromRequest(HttpServletRequest request, boolean isForSaving) { Map paramMap = splitRequestParameter(request, AssessmentConstants.ATTR_OPTION_LIST); int count = NumberUtils.stringToInt(paramMap.get(AssessmentConstants.ATTR_OPTION_COUNT)); @@ -1284,49 +1294,52 @@ for (int i = 0; i < count; i++) { if ((questionType == AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE) || (questionType == AssessmentConstants.QUESTION_TYPE_SHORT_ANSWER)) { + String answerString = paramMap.get(AssessmentConstants.ATTR_OPTION_ANSWER_PREFIX + i); - float grade = Float.valueOf(paramMap.get(AssessmentConstants.ATTR_OPTION_GRADE_PREFIX + i)); - String feedback = paramMap.get(AssessmentConstants.ATTR_OPTION_FEEDBACK_PREFIX + i); - String sequenceId = paramMap.get(AssessmentConstants.ATTR_OPTION_SEQUENCE_ID_PREFIX + i); - - if ((answerString == null) && skipBlankOptions) { + if ((answerString == null) && isForSaving) { continue; } + AssessmentAnswerOption option = new AssessmentAnswerOption(); + String sequenceId = paramMap.get(AssessmentConstants.ATTR_OPTION_SEQUENCE_ID_PREFIX + i); option.setSequenceId(NumberUtils.stringToInt(sequenceId)); option.setAnswerString(answerString); - option.setGrade(grade); - option.setFeedback(feedback); + float grade = Float.valueOf(paramMap.get(AssessmentConstants.ATTR_OPTION_GRADE_PREFIX + i)); + option.setGrade(grade); + option.setFeedback((String) paramMap.get(AssessmentConstants.ATTR_OPTION_FEEDBACK_PREFIX + i)); optionList.add(option); } else if (questionType == AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS) { - String answerString = paramMap.get(AssessmentConstants.ATTR_OPTION_ANSWER_PREFIX + i); String question = paramMap.get(AssessmentConstants.ATTR_OPTION_QUESTION_PREFIX + i); - String sequenceId = paramMap.get(AssessmentConstants.ATTR_OPTION_SEQUENCE_ID_PREFIX + i); - - if ((question == null) && skipBlankOptions) { + if ((question == null) && isForSaving) { continue; } + AssessmentAnswerOption option = new AssessmentAnswerOption(); + String sequenceId = paramMap.get(AssessmentConstants.ATTR_OPTION_SEQUENCE_ID_PREFIX + i); option.setSequenceId(NumberUtils.stringToInt(sequenceId)); - option.setAnswerString(answerString); + option.setAnswerString((String) paramMap.get(AssessmentConstants.ATTR_OPTION_ANSWER_PREFIX + i)); option.setQuestion(question); optionList.add(option); } else if (questionType == AssessmentConstants.QUESTION_TYPE_NUMERICAL) { String answerString = paramMap.get(AssessmentConstants.ATTR_OPTION_ANSWER_PREFIX + i); - float acceptedError = Float.valueOf(paramMap.get(AssessmentConstants.ATTR_OPTION_ACCEPTED_ERROR_PREFIX + i)); - float grade = Float.valueOf(paramMap.get(AssessmentConstants.ATTR_OPTION_GRADE_PREFIX + i)); - String feedback = paramMap.get(AssessmentConstants.ATTR_OPTION_FEEDBACK_PREFIX + i); - String sequenceId = paramMap.get(AssessmentConstants.ATTR_OPTION_SEQUENCE_ID_PREFIX + i); - - if ((answerString == null) && skipBlankOptions) { + if ((answerString == null) && isForSaving) { continue; } + AssessmentAnswerOption option = new AssessmentAnswerOption(); + String sequenceId = paramMap.get(AssessmentConstants.ATTR_OPTION_SEQUENCE_ID_PREFIX + i); option.setSequenceId(NumberUtils.stringToInt(sequenceId)); option.setAnswerString(answerString); - option.setAcceptedError(acceptedError); - option.setGrade(grade); - option.setFeedback(feedback); + String acceptedErrorStr = paramMap.get(AssessmentConstants.ATTR_OPTION_ACCEPTED_ERROR_PREFIX + i); + if (isForSaving && !StringUtils.isBlank(acceptedErrorStr)) { + float acceptedError = Float.valueOf(acceptedErrorStr); + option.setAcceptedError(acceptedError); + } else { + option.setAcceptedErrorStr(acceptedErrorStr); + } + float grade = Float.valueOf(paramMap.get(AssessmentConstants.ATTR_OPTION_GRADE_PREFIX + i)); + option.setGrade(grade); + option.setFeedback((String) paramMap.get(AssessmentConstants.ATTR_OPTION_FEEDBACK_PREFIX + i)); optionList.add(option); } } @@ -1338,28 +1351,28 @@ * * @param request */ - private TreeSet getUnitsFromRequest(HttpServletRequest request, boolean skipBlankUnits) { + private TreeSet getUnitsFromRequest(HttpServletRequest request, boolean isForSaving) { Map paramMap = splitRequestParameter(request, AssessmentConstants.ATTR_UNIT_LIST); int count = NumberUtils.stringToInt(paramMap.get(AssessmentConstants.ATTR_UNIT_COUNT)); TreeSet unitList = new TreeSet(new AssessmentUnitComparator()); for (int i = 0; i < count; i++) { String unitStr = paramMap.get(AssessmentConstants.ATTR_UNIT_UNIT_PREFIX + i); - float multiplier = Float.valueOf(paramMap.get(AssessmentConstants.ATTR_UNIT_MULTIPLIER_PREFIX + i)); - String sequenceId = paramMap.get(AssessmentConstants.ATTR_UNIT_SEQUENCE_ID_PREFIX + i); - - if (StringUtils.isBlank(unitStr) && skipBlankUnits) { + if (StringUtils.isBlank(unitStr) && isForSaving) { continue; } + AssessmentUnit unit = new AssessmentUnit(); + String sequenceId = paramMap.get(AssessmentConstants.ATTR_UNIT_SEQUENCE_ID_PREFIX + i); unit.setSequenceId(NumberUtils.stringToInt(sequenceId)); unit.setUnit(unitStr); - unit.setMultiplier(multiplier); -// if (!StringUtils.isBlank(unitStr)) { -// int gradeBoundary = NumberUtils.stringToInt(paramMap -// .get(AssessmentConstants.ATTR_OVERALL_FEEDBACK_GRADE_BOUNDARY_PREFIX + i)); -// unit.setGradeBoundary(gradeBoundary); -// } + String multiplierStr = (String) paramMap.get(AssessmentConstants.ATTR_UNIT_MULTIPLIER_PREFIX + i); + if (isForSaving && !StringUtils.isBlank(multiplierStr)) { + float multiplier = Float.valueOf(multiplierStr); + unit.setMultiplier(multiplier); + } else { + unit.setMultiplierStr(multiplierStr); + } unitList.add(unit); } return unitList; Index: lams_tool_assessment/web/includes/javascript/assessmentoption.js =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/includes/javascript/assessmentoption.js,v diff -u -r1.2 -r1.3 --- lams_tool_assessment/web/includes/javascript/assessmentoption.js 2 Feb 2009 22:20:28 -0000 1.2 +++ lams_tool_assessment/web/includes/javascript/assessmentoption.js 4 Feb 2009 18:03:05 -0000 1.3 @@ -7,22 +7,27 @@ // var addOptionUrl = ""; function addOption(){ var url= addOptionUrl; - var optionList = $("#optionForm").serialize(true); + var contentFolderID= $("#contentFolderID").val(); prepareFCKEditorsForAjaxSubmit(); + var optionList = $("#optionForm").serialize(true); $(optionTargetDiv).load( url, { + contentFolderID: contentFolderID, questionType: questionType, optionList: optionList } ); } function removeOption(idx){ var url= removeOptionUrl; + var contentFolderID= $("#contentFolderID").val(); + prepareFCKEditorsForAjaxSubmit(); var optionList = $("#optionForm").serialize(true); $(optionTargetDiv).load( url, { + contentFolderID: contentFolderID, questionType: questionType, optionIndex: idx, optionList: optionList @@ -31,10 +36,13 @@ } function upOption(idx){ var url= upOptionUrl; + var contentFolderID= $("#contentFolderID").val(); + prepareFCKEditorsForAjaxSubmit(); var optionList = $("#optionForm").serialize(true); $(optionTargetDiv).load( url, { + contentFolderID: contentFolderID, questionType: questionType, optionIndex: idx, optionList: optionList @@ -43,20 +51,30 @@ } function downOption(idx){ var url= downOptionUrl; + var contentFolderID= $("#contentFolderID").val(); + prepareFCKEditorsForAjaxSubmit(); var optionList = $("#optionForm").serialize(true); $(optionTargetDiv).load( url, { + contentFolderID: contentFolderID, questionType: questionType, optionIndex: idx, optionList: optionList } ); } function prepareFCKEditorsForAjaxSubmit(){ - //$("input[id^=optionFeedback]").each(function() { - // this.val(FCKeditorAPI.GetInstance($(this).id).GetXHTML()); - //}); + if ((questionType == 1) || (questionType == 3) || (questionType == 4)) { + $("[name^=optionFeedback]").each(function() { + this.value = FCKeditorAPI.GetInstance(this.name).GetXHTML(); + }); + } + if (questionType == 2) { + $("[name^=optionQuestion]").each(function() { + this.value = FCKeditorAPI.GetInstance(this.name).GetXHTML(); + }); + } } Index: lams_tool_assessment/web/pages/authoring/authoring.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/authoring/authoring.jsp,v diff -u -r1.1 -r1.2 --- lams_tool_assessment/web/pages/authoring/authoring.jsp 29 Jan 2009 05:59:05 -0000 1.1 +++ lams_tool_assessment/web/pages/authoring/authoring.jsp 4 Feb 2009 18:03:05 -0000 1.2 @@ -40,8 +40,8 @@ } function doUploadOffline() { - var myForm = $("authoringForm"); - myForm.action = ""; + var myForm = $("#authoringForm"); + myForm.attr("action", ""); myForm.submit(); } Index: lams_tool_assessment/web/pages/authoring/instructions.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/authoring/Attic/instructions.jsp,v diff -u -r1.1 -r1.2 --- lams_tool_assessment/web/pages/authoring/instructions.jsp 29 Jan 2009 05:59:05 -0000 1.1 +++ lams_tool_assessment/web/pages/authoring/instructions.jsp 4 Feb 2009 18:03:05 -0000 1.2 @@ -1,9 +1,6 @@ <%@ include file="/common/taglibs.jsp"%> -<%@ page - import="org.lamsfoundation.lams.contentrepository.client.IToolContentHandler"%> - +<%@ page import="org.lamsfoundation.lams.contentrepository.client.IToolContentHandler"%> +