Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java
===================================================================
diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b)
@@ -276,6 +276,12 @@
public static final String LEARNING_MODE = "learningMode";
public static final String EXPORT_USER_ID = "exportUserId";
public static final String REFLECT = "reflect";
+
+ //output definitions
+ public static final String ATTR_ACTIVITY_EVALUATION = "activityEvaluation";
+ public static final String ATTR_TOOL_OUTPUT_DEFINITIONS = "toolOutputDefinitions";
+ public static final String OUTPUT_NAME_LEARNER_MARK = "learner.mark";
+ public static final String OUTPUT_NAME_LEARNER_ALL_CORRECT = "learner.all.correct";
/*
* exception constants
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml
===================================================================
diff -u -r3446506b8acd4257a342ac698bede2317c3fcdda -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 3446506b8acd4257a342ac698bede2317c3fcdda)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b)
@@ -94,6 +94,7 @@
PROPAGATION_REQUIRED,-McApplicationException
PROPAGATION_REQUIRED,-McApplicationException
PROPAGATION_REQUIRED, -McApplicationException
+ PROPAGATION_REQUIRED,-McApplicationException
PROPAGATION_REQUIRED,-McApplicationException
PROPAGATION_REQUIRED, -MccpApplicationException
PROPAGATION_REQUIRED,-McApplicationException
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java
===================================================================
diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b)
@@ -171,6 +171,18 @@
* @return
*/
boolean isGroupedActivity(long toolContentID);
+
+ /**
+ * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions
+ * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created
+ * for a particular activity such as the answer to the third question contains the word Koala and hence the need for
+ * the toolContentId
+ *
+ * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition
+ */
+ String getActivityEvaluation(Long toolContentId);
+
+ void setActivityEvaluation(Long toolContentId, String toolOutputDefinition);
/**
* @param mcContent
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java
===================================================================
diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java (.../MCOutputFactory.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java (.../MCOutputFactory.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b)
@@ -31,6 +31,7 @@
import org.lamsfoundation.lams.tool.OutputFactory;
import org.lamsfoundation.lams.tool.ToolOutput;
import org.lamsfoundation.lams.tool.ToolOutputDefinition;
+import org.lamsfoundation.lams.tool.mc.McAppConstants;
import org.lamsfoundation.lams.tool.mc.pojos.McContent;
import org.lamsfoundation.lams.tool.mc.pojos.McOptsContent;
import org.lamsfoundation.lams.tool.mc.pojos.McQueContent;
@@ -40,9 +41,6 @@
public class MCOutputFactory extends OutputFactory {
- protected static final String OUTPUT_NAME_LEARNER_MARK = "learner.mark";
- protected static final String OUTPUT_NAME_LEARNER_ALL_CORRECT = "learner.all.correct";
-
/**
* @see org.lamsfoundation.lams.tool.OutputDefinitionFactory#getToolOutputDefinitions(java.lang.Object)
*/
@@ -51,15 +49,15 @@
int definitionType) {
TreeMap definitionMap = new TreeMap();
- ToolOutputDefinition definition = buildBooleanOutputDefinition(OUTPUT_NAME_LEARNER_ALL_CORRECT);
- definitionMap.put(OUTPUT_NAME_LEARNER_ALL_CORRECT, definition);
+ ToolOutputDefinition definition = buildBooleanOutputDefinition(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT);
+ definitionMap.put(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, definition);
if (toolContentObject != null) {
McContent content = (McContent) toolContentObject;
- definition = buildRangeDefinition(OUTPUT_NAME_LEARNER_MARK, new Long(0),
+ definition = buildRangeDefinition(McAppConstants.OUTPUT_NAME_LEARNER_MARK, new Long(0),
new Long(content.getTotalMarksPossible().longValue()), true);
- definitionMap.put(OUTPUT_NAME_LEARNER_MARK, definition);
+ definitionMap.put(McAppConstants.OUTPUT_NAME_LEARNER_MARK, definition);
} else {
log.error(
"Unable to build content based output definitions for Multiple Choice as no tool content object supplied. Only including the definitions that do not need any content.");
@@ -79,11 +77,12 @@
McQueUsr queUser = mcService.getMcUserBySession(learnerId, session.getUid());
if (queUser != null) {
- if (names == null || names.contains(OUTPUT_NAME_LEARNER_MARK)) {
- output.put(OUTPUT_NAME_LEARNER_MARK, getLearnerMark(queUser));
+ if (names == null || names.contains(McAppConstants.OUTPUT_NAME_LEARNER_MARK)) {
+ output.put(McAppConstants.OUTPUT_NAME_LEARNER_MARK, getLearnerMark(queUser));
}
- if (names == null || names.contains(OUTPUT_NAME_LEARNER_ALL_CORRECT)) {
- output.put(OUTPUT_NAME_LEARNER_ALL_CORRECT, getLearnerAllCorrect(mcService, queUser));
+ if (names == null || names.contains(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT)) {
+ output.put(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT,
+ getLearnerAllCorrect(mcService, queUser));
}
}
}
@@ -98,9 +97,9 @@
McQueUsr queUser = mcService.getMcUserBySession(learnerId, session.getUid());
if (queUser != null) {
- if (name.equals(OUTPUT_NAME_LEARNER_MARK)) {
+ if (name.equals(McAppConstants.OUTPUT_NAME_LEARNER_MARK)) {
return getLearnerMark(queUser);
- } else if (name.equals(OUTPUT_NAME_LEARNER_ALL_CORRECT)) {
+ } else if (name.equals(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT)) {
return getLearnerAllCorrect(mcService, queUser);
}
}
@@ -120,8 +119,8 @@
} else {
mark = new Long(0);
}
- return new ToolOutput(MCOutputFactory.OUTPUT_NAME_LEARNER_MARK,
- getI18NText(MCOutputFactory.OUTPUT_NAME_LEARNER_MARK, true), mark);
+ return new ToolOutput(McAppConstants.OUTPUT_NAME_LEARNER_MARK,
+ getI18NText(McAppConstants.OUTPUT_NAME_LEARNER_MARK, true), mark);
}
/**
@@ -130,8 +129,8 @@
*/
private ToolOutput getLearnerAllCorrect(IMcService mcService, McQueUsr queUser) {
boolean allCorrect = allQuestionsCorrect(mcService, queUser);
- return new ToolOutput(MCOutputFactory.OUTPUT_NAME_LEARNER_ALL_CORRECT,
- getI18NText(MCOutputFactory.OUTPUT_NAME_LEARNER_ALL_CORRECT, true), allCorrect);
+ return new ToolOutput(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT,
+ getI18NText(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, true), allCorrect);
}
// written to cope with more than one correct option for each question but only tested with
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java
===================================================================
diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java (.../McMonitoringAction.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java (.../McMonitoringAction.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b)
@@ -261,6 +261,32 @@
}
/**
+ * Set tool's activityEvaluation
+ *
+ * @param mapping
+ * @param form
+ * @param request
+ * @param response
+ * @return
+ * @throws JSONException
+ * @throws IOException
+ */
+ public ActionForward setActivityEvaluation(ActionMapping mapping, ActionForm form, HttpServletRequest request,
+ HttpServletResponse response) throws JSONException, IOException {
+ IMcService service = McServiceProxy.getMcService(getServlet().getServletContext());
+
+ Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID);
+ String activityEvaluation = WebUtil.readStrParam(request, McAppConstants.ATTR_ACTIVITY_EVALUATION);
+ service.setActivityEvaluation(contentID, activityEvaluation);
+
+ JSONObject responseJSON = new JSONObject();
+ responseJSON.put("success", "true");
+ response.setContentType("application/json;charset=utf-8");
+ response.getWriter().print(new String(responseJSON.toString()));
+ return null;
+ }
+
+ /**
* Populate user jqgrid table on summary page.
*/
public ActionForward userMasterDetail(ActionMapping mapping, ActionForm form, HttpServletRequest request,
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java
===================================================================
diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b)
@@ -22,6 +22,7 @@
package org.lamsfoundation.lams.tool.mc.web;
+import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;
@@ -174,6 +175,14 @@
request.setAttribute("submissionDeadline", tzSubmissionDeadline.getTime());
}
+ //prepare toolOutputDefinitions and activityEvaluation
+ List toolOutputDefinitions = new ArrayList();
+ toolOutputDefinitions.add(McAppConstants.OUTPUT_NAME_LEARNER_MARK);
+ toolOutputDefinitions.add(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT);
+ String activityEvaluation = mcService.getActivityEvaluation(content.getMcContentId());
+ request.setAttribute(McAppConstants.ATTR_TOOL_OUTPUT_DEFINITIONS, toolOutputDefinitions);
+ request.setAttribute(McAppConstants.ATTR_ACTIVITY_EVALUATION, activityEvaluation);
+
boolean isGroupedActivity = mcService.isGroupedActivity(new Long(content.getMcContentId()));
request.setAttribute("isGroupedActivity", isGroupedActivity);
}