mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 04:22:07 +02:00
MDL-54105 mod_assign: Refactored the way that the default is set
Improved the way the default is set, now requiring less code and being more readable
This commit is contained in:
parent
9a72323f63
commit
3590629dca
@ -60,8 +60,8 @@ class MoodleQuickForm_modgrade extends MoodleQuickForm_group {
|
||||
/** @var int $currentscaleid The current scale id */
|
||||
public $currentscaleid = null;
|
||||
|
||||
/** @var ?string $currentgradetype The current gradetype - can either be 'none', 'scale', or 'point' */
|
||||
public $currentgradetype = null;
|
||||
/** @var string $currentgradetype The current gradetype - can either be 'none', 'scale', or 'point' */
|
||||
public $currentgradetype = 'none';
|
||||
|
||||
/** @var boolean $useratings Set to true if the activity is using ratings, false otherwise */
|
||||
public $useratings = false;
|
||||
@ -514,30 +514,18 @@ class MoodleQuickForm_modgrade extends MoodleQuickForm_group {
|
||||
// This means that the subelements data (inc const and default values) can be overridden by form code.
|
||||
// So - when we call this code really we can't be sure that will be the end value for the element.
|
||||
if (!empty($this->_elements)) {
|
||||
if (!$this->currentgradetype) {
|
||||
if (!empty($value)) {
|
||||
$this->currentgradetype = $value < 0 ? 'scale' : 'point';
|
||||
} else {
|
||||
$this->currentgradetype = 'none';
|
||||
if (!empty($value)) {
|
||||
if ($value < 0) {
|
||||
$this->gradetypeformelement->setValue('scale');
|
||||
$this->scaleformelement->setValue(($value * -1));
|
||||
} else if ($value > 0) {
|
||||
$this->gradetypeformelement->setValue('point');
|
||||
$maxvalue = !empty($this->currentgrade) ? (string)unformat_float($this->currentgrade) : $value;
|
||||
$this->maxgradeformelement->setValue($maxvalue);
|
||||
}
|
||||
}
|
||||
|
||||
$this->gradetypeformelement->setValue($this->currentgradetype);
|
||||
|
||||
switch ($this->currentgradetype) {
|
||||
case 'scale':
|
||||
if (!empty($value)) {
|
||||
$this->currentscaleid = $value * -1;
|
||||
}
|
||||
$this->scaleformelement->setValue($this->currentscaleid);
|
||||
break;
|
||||
case 'point':
|
||||
case 'none':
|
||||
if (!empty($value)) {
|
||||
$maxvalue = !empty($this->currentgrade) ? (string)unformat_float($this->currentgrade) : $value;
|
||||
}
|
||||
$this->maxgradeformelement->setValue($maxvalue ?? 100);
|
||||
break;
|
||||
} else {
|
||||
$this->gradetypeformelement->setValue('none');
|
||||
$this->maxgradeformelement->setValue(100);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -377,15 +377,16 @@ class mod_assign_mod_form extends moodleform_mod {
|
||||
$element = $mform->getElement('grade');
|
||||
|
||||
if (property_exists($settings, 'defaultgradetype')) {
|
||||
$modgradetype = $element->getName() . '[modgrade_type]';
|
||||
switch ((int)$settings->defaultgradetype) {
|
||||
case GRADE_TYPE_NONE :
|
||||
$element->currentgradetype = 'none';
|
||||
$mform->setDefault($modgradetype, 'none');
|
||||
break;
|
||||
case GRADE_TYPE_SCALE :
|
||||
$element->currentgradetype = 'scale';
|
||||
$mform->setDefault($modgradetype, 'scale');
|
||||
break;
|
||||
case GRADE_TYPE_VALUE :
|
||||
$element->currentgradetype = 'point';
|
||||
$mform->setDefault($modgradetype, 'point');
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -395,11 +396,9 @@ class mod_assign_mod_form extends moodleform_mod {
|
||||
$gradescale = grade_scale::fetch(['id' => (int)$settings->defaultgradescale, 'courseid' => 0]);
|
||||
|
||||
if ($gradescale) {
|
||||
$element->currentscaleid = $gradescale->id;
|
||||
$mform->setDefault($element->getName() . '[modgrade_scale]', $gradescale->id);
|
||||
}
|
||||
}
|
||||
|
||||
$element->onQuickFormEvent('updateValue', null, $mform);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user