Package home | Report new bug | New search | Development Roadmap Status: Open | Feedback | All | Closed Since Version 3.2.16

Bug #3049 Can not set default selected date/time values for HTML_QuickForm_Date element
Submitted: 2004-12-29 05:28 UTC
From: musicalpath at yahoo dot com Assigned: avb
Status: Closed Package: HTML_QuickForm
PHP Version: 4.3.10 OS: Windows XP SP2
Roadmaps: (Not assigned)    
Subscription  
Comments Add Comment Add patch


Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know! Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem : 26 + 7 = ?

 
 [2004-12-29 05:28 UTC] musicalpath at yahoo dot com
Description: ------------ There are actually 2 bug fixes here. I am using the date element from HTML_QuickForm. Calling the getElements() function on my newly created element returns null instead of an array of elements. After the fix below to getElements(), the setSelected() function for select elements incorrectly inserts the selected attribute. See code below. Reproduce code: --------------- Code that causes bug: $now = getdate(); $dateoptions = array( 'format' => 'F / d / Y', 'minYear' => '2005', 'maxYear' => '1900' ); $min_date =& $form->addElement( 'date', 'date_min', 'Min Date:', $dateoptions ); $elements =& $min_date->getElements(); $elMonth =& $elements[0]; $elMonth->setSelected( $now['mon'] ); var_dump( $elements ); Here's the patch for file group.php: /** * Gets the grouped elements * * @since 2.4 * @access public * @return array */ function &getElements() { /* Add the following 3 lines */ if (empty($this->_elements)) { $this->_createElements(); } return $this->_elements; } // end func getElements For select.php, function toHtml(): foreach ($this->_options as $option) { if (is_array($this->_values) && in_array((string)$option['attr']['value'], $this->_values)) { $this->_updateAttrArray($option['attr'], array('selected' => 'selected')); } $strHtml .= $tabs . "\t<option" . $this->_getAttrString($option['attr']) . '>' . $option['text'] . "</option>\n"; /* add this line in the function toHtml() (Yes, this is clearly a kludge) */ $strHtml = preg_replace( "/=\"selected\"/", "", $strHtml ); } Expected result: ---------------- For getElements() array 0 => object(html_quickform_select) var '_attributes' => array 'name' => 'F' var '_tabOffset' => 0 var '_tab' => ' ' var '_lineEnd' => ' ' var '_comment' => '' var '_label' => '' ...The rest of the dump... For toHtml() should output: <option value="12" selected>December</option> Actual result: -------------- For getElements(): array empty For toHtml() actual output: <option value="12" selected="selected">December</option>

Comments

 [2004-12-29 05:42 UTC] musicalpath at yahoo dot com
Here's a cleaner example of code that causes the problem. $dateoptions = array( 'format' => 'F / d / Y', 'minYear' => '2005', 'maxYear' => '1900' ); $min_date =& $form->addElement( 'date', 'date_min', 'Min Date:', $dateoptions ); $elements =& $min_date->getElements(); $elements[0]->setSelected( date('m') ); $elements[1]->setSelected( date('d') ); $elements[2]->setSelected( date('Y') );
 [2005-01-06 22:38 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!
 [2005-01-07 21:02 UTC] musicalpath at yahoo dot com
That is definitely a cleaner way to set the defaults (and it does work). But it has shown another possible bug. I've got text input, multi-selection boxes, and radio buttons on this form. When I use setDefaults as you describe, the radio buttons that i've checked are unchecked. The order I'm doing things is: create form add radio (name1, on) set radio checked add radio (name1, off) add date selection add multi-selection boxes set defaults for date selection Is setDefaults() supposed to clear old default values? If so, selected values in multi-selection boxes are not getting cleared. I'm currently clearing them with the code: selectionBoxElement->_values = null; As for the second bug, I see your point. I'll look into it more deeply. My DOCTYPE is currently: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 [2005-06-26 19:58 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!