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:
Frederik Milling Pytlick 2024-05-29 14:43:33 +02:00
parent 9a72323f63
commit 3590629dca
2 changed files with 18 additions and 31 deletions

View File

@ -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;

View File

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