Skip to content

Commit

Permalink
MDL-65506 forms: get the correct value for advcheckbox fields in js
Browse files Browse the repository at this point in the history
  • Loading branch information
rezaies committed Jun 26, 2019
1 parent f1a8db6 commit 706c5b3
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 10 deletions.
4 changes: 2 additions & 2 deletions customfield/field/checkbox/classes/data_controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ public function instance_form_definition(\MoodleQuickForm $mform) {
$field = $this->get_field();
$config = $field->get('configdata');
$elementname = $this->get_form_element_name();
// TODO MDL-65506 element 'advcheckbox' does not support 'required' rule. If checkbox is required (i.e. "agree to terms")
// then use 'checkbox' form element.
// If checkbox is required (i.e. "agree to terms") then use 'checkbox' form element.
// The advcheckbox element cannot be used for required fields because advcheckbox elements always provide a value.
$isrequired = $field->get_configdata_property('required');
$mform->addElement($isrequired ? 'checkbox' : 'advcheckbox', $elementname, $this->get_field()->get_formatted_name());
$mform->setDefault($elementname, $config['checkbydefault']);
Expand Down
14 changes: 6 additions & 8 deletions lib/pear/HTML/QuickForm/RuleRegistry.php
Original file line number Diff line number Diff line change
Expand Up @@ -302,15 +302,13 @@ function _getJsValue(&$element, $elementName, $reset = false, $index = null)
" }\n";
}

} elseif ($element->getType() == 'advcheckbox') {
$value = " value{$jsIndex} = frm.elements['$elementName'][1].checked ?" .
" frm.elements['$elementName'][1].value : frm.elements['$elementName'][0].value;\n";
$tmp_reset .= $reset ? " field[1].checked = field[1].defaultChecked;\n" : '';
} elseif ($element->getType() == 'checkbox') {
if (is_a($element, 'html_quickform_advcheckbox')) {
$value = " value{$jsIndex} = frm.elements['$elementName'][1].checked? frm.elements['$elementName'][1].value: frm.elements['$elementName'][0].value;\n";
$tmp_reset .= $reset ? " field[1].checked = field[1].defaultChecked;\n" : '';
} else {
$value = " value{$jsIndex} = frm.elements['$elementName'].checked? '1': '';\n";
$tmp_reset .= $reset ? " field.checked = field.defaultChecked;\n" : '';
}

$value = " value{$jsIndex} = frm.elements['$elementName'].checked? '1': '';\n";
$tmp_reset .= $reset ? " field.checked = field.defaultChecked;\n" : '';
} elseif ($element->getType() == 'radio') {
$value = " value{$jsIndex} = '';\n" .
// Fix for bug #5644
Expand Down

0 comments on commit 706c5b3

Please sign in to comment.