PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

Home » HTML » HTML_QuickForm » Bug #7099

Choice of element name causes hierselect failure

Details

Submitted2006-03-12 13:50 UTC
Frommccarty at io dot com
StatusBogus
PackageHTML_QuickForm
PHP Version5.1.2
OSWinXP
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...