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); }