MDL-50484 lib_formslib: Persistant input should have different id

Persistant input is appended for frozen elements
and should have different id then the actual element
This commit is contained in:
Rajesh Taneja 2016-02-05 13:59:26 +08:00
parent 2aacd415e1
commit 1ebda3eb8c
7 changed files with 83 additions and 5 deletions

View file

@ -577,6 +577,35 @@ class core_formslib_testcase extends advanced_testcase {
$this->assertTag(array('id' => 'id_grade_3_modgrade_point'), $html);
$this->assertTag(array('id' => 'id_grade_3_modgrade_scale'), $html);
}
/**
* Test persistant freeze elements have different id's.
*/
public function test_persistantrreeze_element() {
$this->resetAfterTest(true);
$form = new formslib_persistantrreeze_element();
ob_start();
$form->display();
$html = ob_get_clean();
// Test advcheckbox id's.
$this->assertTag(array('id' => 'id_advcheckboxpersistant'), $html);
$this->assertTag(array('id' => 'id_advcheckboxpersistant_persistant'), $html);
$this->assertTag(array('id' => 'id_advcheckboxnotpersistant'), $html);
$this->assertNotTag(array('id' => 'id_advcheckboxnotpersistant_persistant'), $html);
$this->assertTag(array('id' => 'id_advcheckboxfrozen'), $html);
$this->assertTag(array('id' => 'id_advcheckboxfrozen_persistant'), $html);
// Check text element id's.
$this->assertTag(array('id' => 'id_textpersistant'), $html);
$this->assertTag(array('id' => 'id_textpersistant_persistant'), $html);
$this->assertTag(array('id' => 'id_textnotpersistant'), $html);
$this->assertNotTag(array('id' => 'id_textnotpersistant_persistant'), $html);
$this->assertTag(array('id' => 'id_textfrozen'), $html);
$this->assertNotTag(array('id' => 'id_textfrozen_persistant'), $html);
}
}
@ -861,3 +890,42 @@ class formslib_multiple_modgrade_form extends moodleform {
$mform->addElement('modgrade', 'grade[3]', 'Grade 3');
}
}
/**
* Used to test frozen elements get unique id attributes.
*/
class formslib_persistantrreeze_element extends moodleform {
public function definition() {
$mform = $this->_form;
// Create advanced checkbox.
// Persistant.
$advcheckboxpersistant = $mform->addElement('advcheckbox', 'advcheckboxpersistant', 'advcheckbox');
$mform->setType('advcheckboxpersistant', PARAM_BOOL);
$advcheckboxpersistant->setChecked(true);
$advcheckboxpersistant->freeze();
$advcheckboxpersistant->setPersistantFreeze(true);
// Frozen.
$advcheckboxfrozen = $mform->addElement('advcheckbox', 'advcheckboxfrozen', 'advcheckbox');
$mform->setType('advcheckboxfrozen', PARAM_BOOL);
$advcheckboxfrozen->setChecked(true);
$advcheckboxfrozen->freeze();
// Neither persistant nor Frozen.
$mform->addElement('advcheckbox', 'advcheckboxnotpersistant', 'advcheckbox');
$mform->setType('advcheckboxnotpersistant', PARAM_BOOL);
// Create text fields.
// Persistant.
$elpersistant = $mform->addElement('text', 'textpersistant', 'test', 'test');
$mform->setType('textpersistant', PARAM_TEXT);
$elpersistant->freeze();
$elpersistant->setPersistantFreeze(true);
// Frozen.
$elfrozen = $mform->addElement('text', 'textfrozen', 'test', 'test');
$mform->setType('textfrozen', PARAM_TEXT);
$elfrozen->freeze();
// Neither persistant nor Frozen.
$mform->addElement('text', 'textnotpersistant', 'test', 'test');
$mform->setType('textnotpersistant', PARAM_TEXT);
}
}