Home » HTML » HTML_QuickForm » Bug #7099
Choice of element name causes hierselect failure
Details
| Submitted | 2006-03-12 13:50 UTC |
|---|---|
| From | mccarty at io dot com |
| Status | Bogus |
| Package | HTML_QuickForm |
| PHP Version | 5.1.2 |
| OS | WinXP |
| Roadmaps | (Not assigned) |
Comments
[2006-03-12 13:50 UTC] mccarty at io dot com
Description:
------------
I discovered something interesting. The Javascript generated for a hierselect element seems to be sensitive to the element name. In particular, using the element name "role" seems to cause problems. If I define a hierselect element as follows:
$main['UC'] = "Unit Commissioner";
$main['ADC'] = "Assistant District Commissioner";
$main['DC'] = "District Commissioner";
$adcareas = array();
$adcareas['Area 1'] = "Area 1";
$adcareas['Area 2'] = "Area 2";
$adcareas['Area 3'] = "Area 3";
$adcareas['Area 4'] = "Area 4";
$adcareas['Area 5'] = "Area 5";
$adcareas['Area 6'] = "Area 6";
$adcareas['Area 7'] = "Area 7";
$adcareas['Area 8'] = "Area 8";
$adcareas['Area 9'] = "Area 9";
$adcareas['Area 10'] = "Area 10";
$secondary['UC']['0'] = "n/a";
$secondary['DC']['0'] = "n/a";
foreach($adcareas as $key=>$value) {
$secondary['ADC'][$key] = $value;
}
$opts[] = $main;
$opts[] = $secondary;
// Interesting... If I name the element "role" it doesn't work correctly.
$hs =& $form->addElement('hierselect', 'role', 'Commissioner Role: ',
null, ' <b>ADC Area: </b>');
$hs->setOptions($opts);
...then the following Javascript is (incorrectly) generated:
_hs_options['role'] = [
];
_hs_defaults['role'] = ['UC', 'UC'];
//]]>
However, if I change the name of the hierselect element to something else, say "commrole", this Javascript is generated:
_hs_options['commrole'] = [
{ 'UC': { '0': 'n/a' }, 'DC': { '0': 'n/a' }, 'ADC': { 'Area 1': 'Area 1', 'Area 2': 'Area 2', 'Area 3': 'Area 3', 'Area 4': 'Area 4', 'Area 5': 'Area 5', 'Area 6': 'Area 6', 'Area 7': 'Area 7', 'Area 8': 'Area 8', 'Area 9': 'Area 9', 'Area 10': 'Area 10' } }
];
_hs_defaults['commrole'] = ['UC', 0];
//]]>
"role" isn't defined anywhere else in the script...