MDL-47146 core_grades: Use a checkbox to override weights

Part of: MDL-46576
This commit is contained in:
Frederic Massart
2014-10-03 13:54:39 +08:00
committed by Adrian Greeve
parent 6723bc66e1
commit 6c37563e00
4 changed files with 40 additions and 10 deletions
+12
View File
@@ -69,6 +69,18 @@ function update_category_aggregation(e, args) {
window.location = 'index.php?id='+args.courseid+'&category='+args.category+'&aggregationtype='+selectmenu.get('value')+'&sesskey='+args.sesskey;
}
/**
* The weight override checkboxes toggle the disabled status of their associated weight fields.
*/
YUI().use('node', 'delegate', function(Y) {
Y.on('domready', function() {
Y.delegate('click', function(e) {
var t = e.currentTarget,
itemid = t.get('id').split('_')[1];
Y.one('input[name=weight_' + itemid + ']').set('disabled', t.get('checked') ? false : true);
}, Y.config.doc.body, 'input.weightoverride');
});
});
/* TODO: finish and rewrite for YUI3...
Y.YUI2.namespace('grade_edit_tree');
+15 -3
View File
@@ -197,10 +197,9 @@ if ($data = data_submitted() and confirm_sesskey()) {
// Convert weight to aggregation coef2.
$aggcoef = $grade_item->get_coefstring();
if ($aggcoef == 'aggregationcoefextraweightsum') {
// The field 'weight' should only be sent when the checkbox 'weighoverride' is checked,
// so there is not need to set weightoverride here, it is done below.
$value = $value / 100.0;
if (round($grade_item->aggregationcoef2, 4) != round($value, 4)) {
$grade_item->weightoverride = 1;
}
$grade_item->aggregationcoef2 = $value;
} else if ($aggcoef == 'aggregationcoefweight' || $aggcoef == 'aggregationcoefextraweight') {
$grade_item->aggregationcoef = $value;
@@ -208,6 +207,19 @@ if ($data = data_submitted() and confirm_sesskey()) {
$grade_item->update();
$recreatetree = true;
// Grade item checkbox inputs.
} elseif (preg_match('/^(weightoverride)_([0-9]+)$/', $key, $matches)) {
$param = $matches[1];
$aid = $matches[2];
$value = clean_param($value, PARAM_BOOL);
$grade_item = grade_item::fetch(array('id' => $aid, 'courseid' => $courseid));
$grade_item->$param = $value;
$grade_item->update();
$recreatetree = true;
}
}
+12 -6
View File
@@ -375,10 +375,15 @@ class grade_edit_tree {
'<input type="text" size="6" id="weight_'.$item->id.'" name="weight_'.$item->id.'"
value="'.grade_edit_tree::format_number($item->aggregationcoef).'" />';
} else if ($aggcoef == 'aggregationcoefextraweightsum') {
$label = '';
if ($item->weightoverride && $parent_category->aggregation == GRADE_AGGREGATE_SUM) {
$label = ' '.get_string('adjusted', 'grades');
}
$checkboxname = 'weightoverride_' . $item->id;
$checkboxlbl = html_writer::tag('label', get_string('overrideweight', 'grades'),
array('for' => $checkboxname, 'class' => 'accesshide'));
$checkbox = html_writer::empty_tag('input', array('name' => $checkboxname,
'type' => 'hidden', 'value' => 0));
$checkbox .= html_writer::empty_tag('input', array('name' => $checkboxname,
'type' => 'checkbox', 'value' => 1, 'id' => $checkboxname, 'class' => 'weightoverride',
'checked' => ($item->weightoverride ? 'checked' : null)));
$name = 'weight_' . $item->id;
$hiddenlabel = html_writer::tag(
@@ -397,11 +402,12 @@ class grade_edit_tree {
'size' => 6,
'id' => $name,
'name' => $name,
'value' => grade_edit_tree::format_number($item->aggregationcoef2 * 100.0)
'value' => grade_edit_tree::format_number($item->aggregationcoef2 * 100.0),
'disabled' => ($item->weightoverride ? null : 'disabled')
)
);
$str .= $hiddenlabel . $input . $label;
$str .= $checkboxlbl . $checkbox . $hiddenlabel . $input;
if ($item->aggregationcoef > 0) {
$str .= ' ' . html_writer::tag('abbr', get_string('aggregationcoefextrasumabbr', 'grades'),
+1 -1
View File
@@ -34,7 +34,6 @@ $string['additem'] = 'Add grade item';
$string['addoutcome'] = 'Add an outcome';
$string['addoutcomeitem'] = 'Add outcome item';
$string['addscale'] = 'Add a scale';
$string['adjusted'] = 'Adjusted';
$string['adjustedweight'] = 'Weight adjusted';
$string['aggregateextracreditmean'] = 'Mean of grades (with extra credits)';
$string['aggregatemax'] = 'Highest grade';
@@ -512,6 +511,7 @@ When a grade is edited in the grader report, the overridden checkbox is ticked a
$string['overriddennotice'] = 'Your final grade from this activity was manually adjusted.';
$string['overridesitedefaultgradedisplaytype'] = 'Override site defaults';
$string['overridesitedefaultgradedisplaytype_help'] = 'If ticked, grade letters and boundaries for the course may be set, rather than using the site defaults.';
$string['overrideweight'] = 'Override weight';
$string['parentcategory'] = 'Parent category';
$string['pctoftotalgrade'] = '% of total grade';
$string['percent'] = 'Percent';