Index: lams_build/lib/lams/lams.jar
===================================================================
diff -u -r39ceb19b74c579d46fb624c3b3ab02fd8e79683a -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
Binary files differ
Index: lams_central/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -r07a59166a5fe8fe3c450631d3f8c7ff14de10116 -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
--- lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 07a59166a5fe8fe3c450631d3f8c7ff14de10116)
+++ lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 248e47a1f8714d3e57be1e4dc12b4fae4f396cb3)
@@ -732,6 +732,7 @@
authoring.fla.weights.weight =Weight
authoring.fla.weights.sum =Sum
authoring.fla.weights.sum.error =Output weights do not sum up to 100%. Adjust them in Weights dialog.
+authoring.fla.weights.none =No activities with weightable gradebook output
label.tab.advanced.field.gradebook.complete =Display activity scores on completion
index.kumalive =Kumalive
index.kumalive.tooltip =Enter a live lesson
Index: lams_central/web/authoring/authoring.jsp
===================================================================
diff -u -ra83cc751c307aa62dd4c7fa568dccfb7c51bdc60 -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
--- lams_central/web/authoring/authoring.jsp (.../authoring.jsp) (revision a83cc751c307aa62dd4c7fa568dccfb7c51bdc60)
+++ lams_central/web/authoring/authoring.jsp (.../authoring.jsp) (revision 248e47a1f8714d3e57be1e4dc12b4fae4f396cb3)
@@ -134,7 +134,10 @@
FOLDER_MOVE_TO_CHILD_ERROR : decoderDiv.html('').text(),
WEIGHTS_SUM_ERROR : decoderDiv.html('').text(),
+
+ WEIGHTS_NONE_FOUND_ERROR : decoderDiv.html('').text(),
+
// HandlerLib
TRANSITION_FROM_EXISTS_ERROR : decoderDiv.html('').text(),
Index: lams_central/web/includes/javascript/authoring/authoringActivity.js
===================================================================
diff -u -r64e6623bc68b11257c7f5d71f3953154f80b6fde -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
--- lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision 64e6623bc68b11257c7f5d71f3953154f80b6fde)
+++ lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision 248e47a1f8714d3e57be1e4dc12b4fae4f396cb3)
@@ -1322,12 +1322,14 @@
if (activity.gradebookToolOutputDefinitionName) {
if (this.name == activity.gradebookToolOutputDefinitionName) {
activity.gradebookToolOutputDefinitionDescription = this.description;
+ activity.gradebookToolOutputDefinitionWeightable = this.weightable;
return false;
}
} else {
if (this.isDefaultGradebookMark){
activity.gradebookToolOutputDefinitionName = this.name;
activity.gradebookToolOutputDefinitionDescription = this.description;
+ activity.gradebookToolOutputDefinitionWeightable = this.weightable;
return false;
}
}
Index: lams_central/web/includes/javascript/authoring/authoringGeneral.js
===================================================================
diff -u -r4f6c07c270475353380998f303bb19e3caaa063f -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
--- lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 4f6c07c270475353380998f303bb19e3caaa063f)
+++ lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 248e47a1f8714d3e57be1e4dc12b4fae4f396cb3)
@@ -1008,53 +1008,57 @@
'title' : LABELS.WEIGHTS_TITLE,
'data' : {
'prepareForOpen' : function(){
- var tbody = $('tbody', weightsDialogContents).empty();
- if (layout.activities.length == 0) {
- tbody.append($('
').append($(' | ').text('No activities with selected gradebook output')));
- $('#sumWeightCell', layout.weightsDialog).empty();
- return;
- }
- $.each(layout.activities, function(){
- if (this.gradebookToolOutputDefinitionName) {
- var activity = this,
- row = $('
').appendTo(tbody).data('activity', activity).hover(
- function(){
- var row = $(this);
- row.siblings().each(function(){
+ var tbody = $('tbody', weightsDialogContents).empty(),
+ weightsEnabled = false;
+ if (layout.activities.length > 0) {
+ $.each(layout.activities, function(){
+ if (this.gradebookToolOutputDefinitionName && this.gradebookToolOutputDefinitionWeightable) {
+ weightsEnabled = true;
+ var activity = this,
+ row = $('
').appendTo(tbody).data('activity', activity).hover(
+ function(){
+ var row = $(this);
+ row.siblings().each(function(){
+ $(this).removeClass('selected');
+ });
+ row.addClass('selected');
+ ActivityLib.removeSelectEffect();
+ ActivityLib.addSelectEffect(row.data('activity'), false);
+ },
+ function(){
$(this).removeClass('selected');
- });
- row.addClass('selected');
- ActivityLib.removeSelectEffect();
- ActivityLib.addSelectEffect(row.data('activity'), false);
+ ActivityLib.removeSelectEffect($(this).data('activity'));
+ }),
+ weight = $('');
+ $(' | ').text(activity.title).appendTo(row);
+ $(' | ').text(activity.gradebookToolOutputDefinitionDescription).appendTo(row);
+ $(' | ').append(weight).appendTo(row);
+ weight.spinner({
+ 'min' : 0,
+ 'max' : 100,
+ 'change' : function(){
+ var value = $(this).val();
+ if (value == "" || isNaN(value)) {
+ value = null;
+ }
+ activity.gradebookToolOutputWeight = value;
+ layout.weightsDialog.data('sumWeights')();
},
- function(){
- $(this).removeClass('selected');
- ActivityLib.removeSelectEffect($(this).data('activity'));
- }),
- weight = $('');
- $(' | ').text(activity.title).appendTo(row);
- $(' | ').text(activity.gradebookToolOutputDefinitionDescription).appendTo(row);
- $(' | ').append(weight).appendTo(row);
- weight.spinner({
- 'min' : 0,
- 'max' : 100,
- 'change' : function(){
- var value = $(this).val();
- if (value == "" || isNaN(value)) {
- value = null;
+ 'spin' : function(event, ui) {
+ activity.gradebookToolOutputWeight = ui.value;
+ layout.weightsDialog.data('sumWeights')();
}
- activity.gradebookToolOutputWeight = value;
- layout.weightsDialog.data('sumWeights')();
- },
- 'spin' : function(event, ui) {
- activity.gradebookToolOutputWeight = ui.value;
- layout.weightsDialog.data('sumWeights')();
- }
- }).val(activity.gradebookToolOutputWeight);
- }
- });
+ }).val(activity.gradebookToolOutputWeight);
+ }
+ });
+ }
- layout.weightsDialog.data('sumWeights')(true);
+ if (weightsEnabled) {
+ layout.weightsDialog.data('sumWeights')(true);
+ } else {
+ tbody.append($('
').append($(' | ').text(LABELS.WEIGHTS_NONE_FOUND_ERROR)));
+ $('#sumWeightCell', layout.weightsDialog).empty();
+ }
},
'sumWeights' : function(firstRun){
Index: lams_central/web/includes/javascript/authoring/authoringProperty.js
===================================================================
diff -u -ra233bcdbfd2a5689b57a2a954cd9b5454b627b4f -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
--- lams_central/web/includes/javascript/authoring/authoringProperty.js (.../authoringProperty.js) (revision a233bcdbfd2a5689b57a2a954cd9b5454b627b4f)
+++ lams_central/web/includes/javascript/authoring/authoringProperty.js (.../authoringProperty.js) (revision 248e47a1f8714d3e57be1e4dc12b4fae4f396cb3)
@@ -715,6 +715,7 @@
$.each(activity.outputDefinitions, function(){
if (this.name == activity.gradebookToolOutputDefinitionName) {
activity.gradebookToolOutputDefinitionDescription = this.description;
+ activity.gradebookToolOutputDefinitionWeightable = this.weightable;
return false;
}
});
Index: lams_common/src/java/org/lamsfoundation/lams/tool/ToolOutputDefinition.java
===================================================================
diff -u -rb036e6dd6d2afe9c0e0b9143c9be3af1d53a1e0e -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
--- lams_common/src/java/org/lamsfoundation/lams/tool/ToolOutputDefinition.java (.../ToolOutputDefinition.java) (revision b036e6dd6d2afe9c0e0b9143c9be3af1d53a1e0e)
+++ lams_common/src/java/org/lamsfoundation/lams/tool/ToolOutputDefinition.java (.../ToolOutputDefinition.java) (revision 248e47a1f8714d3e57be1e4dc12b4fae4f396cb3)
@@ -56,6 +56,7 @@
private String name;
private String description;
private OutputType type;
+ private Boolean weightable = false;
private Object startValue;
private Object endValue;
private Object complexDefinition;
@@ -107,6 +108,17 @@
}
/**
+ * Can this output be used in weighting, i.e. does it have "max score" and % of this score can be calculated
+ */
+ public Boolean getWeightable() {
+ return weightable;
+ }
+
+ public void setWeightable(Boolean weightable) {
+ this.weightable = weightable;
+ }
+
+ /**
* If the output value may be compared to a range, then startValue and endValue are the inclusive start values and
* end values for the range. This may be used to customise fixed definitions to ranges appropriate for the current
* data.
Index: lams_common/src/java/org/lamsfoundation/lams/tool/dto/ToolOutputDefinitionDTO.java
===================================================================
diff -u -rb036e6dd6d2afe9c0e0b9143c9be3af1d53a1e0e -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
--- lams_common/src/java/org/lamsfoundation/lams/tool/dto/ToolOutputDefinitionDTO.java (.../ToolOutputDefinitionDTO.java) (revision b036e6dd6d2afe9c0e0b9143c9be3af1d53a1e0e)
+++ lams_common/src/java/org/lamsfoundation/lams/tool/dto/ToolOutputDefinitionDTO.java (.../ToolOutputDefinitionDTO.java) (revision 248e47a1f8714d3e57be1e4dc12b4fae4f396cb3)
@@ -39,43 +39,30 @@
* information about the ToolOutput for a ToolActivity
*/
public class ToolOutputDefinitionDTO {
-
private String name;
private String description;
private String type;
+ private Boolean weightable;
private String startValue;
private String endValue;
private String complexDefinition;
private Boolean showConditionNameOnly;
private Boolean isDefaultGradebookMark;
private ArrayList conditions;
- public ToolOutputDefinitionDTO(String name, String description, String type, String startValue, String endValue,
- String complexDefinition, Boolean showConditionNameOnly) {
- super();
- this.name = name;
- this.description = description;
- this.type = type;
-
- this.startValue = startValue;
- this.endValue = endValue;
-
- this.complexDefinition = complexDefinition;
-
- this.showConditionNameOnly = showConditionNameOnly;
- }
-
public ToolOutputDefinitionDTO(ToolOutputDefinition definition) {
super();
this.name = definition.getName();
this.description = definition.getDescription();
this.type = (definition.getType() != null) ? definition.getType().toString() : null;
+ this.weightable = definition.getWeightable();
this.startValue = (definition.getStartValue() != null) ? definition.getStartValue().toString() : null;
this.endValue = (definition.getEndValue() != null) ? definition.getEndValue().toString() : null;
this.complexDefinition = (definition.getComplexDefinition() != null)
- ? definition.getComplexDefinition().toString() : null;
+ ? definition.getComplexDefinition().toString()
+ : null;
this.showConditionNameOnly = definition.isShowConditionNameOnly();
if (definition.getConditions() != null && definition.getConditions().size() > 0) {
@@ -91,7 +78,7 @@
/**
* Returns the name.
- *
+ *
* @return
*/
public String getName() {
@@ -100,7 +87,7 @@
/**
* Returns the description.
- *
+ *
* @return
*/
public String getDescription() {
@@ -109,16 +96,24 @@
/**
* Returns the output type.
- *
+ *
* @return
*/
public String getType() {
return type;
}
+ public Boolean getWeightable() {
+ return weightable;
+ }
+
+ public void setWeightable(Boolean weightable) {
+ this.weightable = weightable;
+ }
+
/**
* Returns the start value.
- *
+ *
* @return
*/
public String getStartValue() {
@@ -127,7 +122,7 @@
/**
* Returns the end value.
- *
+ *
* @return
*/
public String getEndValue() {
@@ -136,7 +131,7 @@
/**
* Returns the complex definition.
- *
+ *
* @return
*/
public String getComplexDefinition() {
Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java
===================================================================
diff -u -ra78be3f1e9a9f6b7b69d12d63ca3a14f3c80b931 -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java (.../AssessmentOutputFactory.java) (revision a78be3f1e9a9f6b7b69d12d63ca3a14f3c80b931)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java (.../AssessmentOutputFactory.java) (revision 248e47a1f8714d3e57be1e4dc12b4fae4f396cb3)
@@ -20,7 +20,6 @@
* ****************************************************************
*/
-
package org.lamsfoundation.lams.tool.assessment.service;
import java.util.ArrayList;
@@ -71,16 +70,22 @@
;
definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE, new Long(0),
totalMarksPossible, true);
+ definition.setWeightable(true);
definitionMap.put(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE, definition);
definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_BEST_SCORE, new Long(0),
totalMarksPossible, false);
+ definition.setWeightable(true);
definitionMap.put(AssessmentConstants.OUTPUT_NAME_BEST_SCORE, definition);
+
definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_FIRST_SCORE, new Long(0),
totalMarksPossible, false);
+ definition.setWeightable(true);
definitionMap.put(AssessmentConstants.OUTPUT_NAME_FIRST_SCORE, definition);
+
definition = buildRangeDefinition(AssessmentConstants.OUTPUT_NAME_AVERAGE_SCORE, new Long(0),
totalMarksPossible, false);
+ definition.setWeightable(true);
definitionMap.put(AssessmentConstants.OUTPUT_NAME_AVERAGE_SCORE, definition);
int randomQuestionsCount = 1;
@@ -164,22 +169,22 @@
if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE)) {
return getLastTotalScore(assessmentService, learnerId, assessment);
-
+
} else if (name.equals(AssessmentConstants.OUTPUT_NAME_BEST_SCORE)) {
return getBestTotalScore(assessmentService, toolSessionId, learnerId);
-
+
} else if (name.equals(AssessmentConstants.OUTPUT_NAME_FIRST_SCORE)) {
return getFirstTotalScore(assessmentService, toolSessionId, learnerId);
-
+
} else if (name.equals(AssessmentConstants.OUTPUT_NAME_AVERAGE_SCORE)) {
return getAverageTotalScore(assessmentService, toolSessionId, learnerId);
-
+
} else if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_TIME_TAKEN)) {
return getTimeTaken(assessmentService, learnerId, assessment);
-
+
} else if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_NUMBER_ATTEMPTS)) {
return getNumberAttempts(assessmentService, learnerId, assessment);
-
+
} else {
Set questions = assessment.getQuestions();
for (AssessmentQuestion question : questions) {
@@ -192,32 +197,32 @@
}
return null;
}
-
+
public List getToolOutputs(String name, IAssessmentService assessmentService, Long toolContentId) {
if ((name != null) && (toolContentId != null)) {
if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE)) {
List results = assessmentService.getLastTotalScoresByContentId(toolContentId);
return convertToToolOutputs(results);
-
+
} else if (name.equals(AssessmentConstants.OUTPUT_NAME_BEST_SCORE)) {
List results = assessmentService.getBestTotalScoresByContentId(toolContentId);
return convertToToolOutputs(results);
-
+
} else if (name.equals(AssessmentConstants.OUTPUT_NAME_FIRST_SCORE)) {
List results = assessmentService.getFirstTotalScoresByContentId(toolContentId);
return convertToToolOutputs(results);
-
+
} else if (name.equals(AssessmentConstants.OUTPUT_NAME_AVERAGE_SCORE)) {
List results = assessmentService.getAverageTotalScoresByContentId(toolContentId);
return convertToToolOutputs(results);
-
+
} else if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_TIME_TAKEN)) {
return null;
-
+
} else if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_NUMBER_ATTEMPTS)) {
return null;
-
+
} else {
Assessment assessment = assessmentService.getAssessmentByContentId(toolContentId);
Set questions = assessment.getQuestions();
@@ -230,7 +235,7 @@
}
return null;
}
-
+
/**
* Simply converts List to List.
*
@@ -241,7 +246,7 @@
List toolOutputs = new ArrayList();
for (AssessmentUserDTO result : results) {
float totalScore = result.getGrade();
-
+
ToolOutput toolOutput = new ToolOutput(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE,
getI18NText(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE, true), totalScore);
toolOutput.setUserId(result.getUserId().intValue());
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java
===================================================================
diff -u -r1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java (.../MCOutputFactory.java) (revision 1d3ff83fba3454c6e0e4139dc15ad6cecdfa389c)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java (.../MCOutputFactory.java) (revision 248e47a1f8714d3e57be1e4dc12b4fae4f396cb3)
@@ -57,9 +57,9 @@
if (toolContentObject != null) {
McContent content = (McContent) toolContentObject;
-
definition = buildRangeDefinition(McAppConstants.OUTPUT_NAME_LEARNER_MARK, new Long(0),
new Long(content.getTotalMarksPossible().longValue()), true);
+ definition.setWeightable(true);
definitionMap.put(McAppConstants.OUTPUT_NAME_LEARNER_MARK, definition);
} else {
log.error(
Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieOutputFactory.java
===================================================================
diff -u -ree92eae8682d1b4674c6f918ec79b42dd06f80ec -r248e47a1f8714d3e57be1e4dc12b4fae4f396cb3
--- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieOutputFactory.java (.../ScratchieOutputFactory.java) (revision ee92eae8682d1b4674c6f918ec79b42dd06f80ec)
+++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieOutputFactory.java (.../ScratchieOutputFactory.java) (revision 248e47a1f8714d3e57be1e4dc12b4fae4f396cb3)
@@ -20,7 +20,6 @@
* ****************************************************************
*/
-
package org.lamsfoundation.lams.tool.scratchie.service;
import java.util.List;
@@ -33,7 +32,6 @@
import org.lamsfoundation.lams.tool.exception.ToolException;
import org.lamsfoundation.lams.tool.scratchie.ScratchieConstants;
import org.lamsfoundation.lams.tool.scratchie.model.Scratchie;
-import org.lamsfoundation.lams.tool.scratchie.model.ScratchieConfigItem;
import org.lamsfoundation.lams.tool.scratchie.model.ScratchieSession;
public class ScratchieOutputFactory extends OutputFactory {
@@ -69,6 +67,7 @@
ToolOutputDefinition definition = buildRangeDefinition(ScratchieConstants.LEARNER_MARK, new Long(0),
maxPossibleScore, true);
+ definition.setWeightable(true);
definitionMap.put(ScratchieConstants.LEARNER_MARK, definition);
}