Skip to content

Commit

Permalink
- fixed JavaScript code generation for group rules (added via addGrou…
Browse files Browse the repository at this point in the history
…pRule())

- example file: added new group rule for the group of radio buttons
- update changelog and prepare for release


git-svn-id: http://svn.php.net/repository/pear/packages/HTML_QuickForm_DHTMLRulesTableless/trunk@223852 c90b9560-bf6c-de11-be94-00142212c4b1
  • Loading branch information
Mark Wiesemann committed Nov 24, 2006
1 parent abbb613 commit c76370d
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 21 deletions.
35 changes: 19 additions & 16 deletions HTML/QuickForm/DHTMLRulesTableless.php
Expand Up @@ -177,15 +177,15 @@ function qf_errorHandler(element, _qfMsg) {
foreach ($test as $elementName => $jsArr) {
// remove group element part of the element name to avoid JS errors
$singleElementName = $elementName;
$elementNameForJS = $elementName;
$shortNameForJS = $elementName;
$bracketPos = strpos($elementName, '[');
if ($bracketPos !== false) {
$elementNameForJS = str_replace(array('[', ']'), '__', $elementName);
$shortNameForJS = str_replace(array('[', ']'), '__', $elementName);
$singleElementName = substr($elementName, 0, $bracketPos);
$groupElementName = substr($elementName, $bracketPos + 1, -1);
}
$js .= '
function validate_' . $this->_attributes['id'] . '_' . $elementNameForJS . '(element) {
function validate_' . $this->_attributes['id'] . '_' . $shortNameForJS . '(element) {
var value = \'\';
var errFlag = new Array();
var _qfGroups = {};
Expand All @@ -198,26 +198,29 @@ function validate_' . $this->_attributes['id'] . '_' . $elementNameForJS . '(ele
return qf_errorHandler(element, _qfMsg);
}
';
$validateJS .= '
ret = validate_' . $this->_attributes['id'] . '_' . $elementNameForJS . '(frm.elements[\'' . $elementName.'\']) && ret;';
unset($element);
if ($singleElementName == $elementName) { // not a group
$element =& $this->getElement($elementName);
$element =& $this->getElement($singleElementName);
$elementNameForJS = 'frm.elements[\'' . $elementName . '\']';
if ($element->getType() === 'group' && $singleElementName === $elementName) {
$elementNameForJS = 'document.getElementById(\'' . $element->_elements[0]->getAttribute('id') . '\')';
}
$validateJS .= '
ret = validate_' . $this->_attributes['id'] . '_' . $shortNameForJS . '('. $elementNameForJS . ') && ret;';
if ($element->getType() !== 'group') { // not a group
$valFunc = 'validate_' . $this->_attributes['id'] . '_' . $elementName . '(this)';
$onBlur = $element->getAttribute('onBlur');
$onChange = $element->getAttribute('onChange');
$element->updateAttributes(array('onBlur' => $onBlur . $valFunc,
'onChange' => $onChange . $valFunc));
} else { // group
$group =& $this->getElement($singleElementName);
$elements =& $group->getElements();
foreach ($elements as $element) {
if ($element->getAttribute('name') == $groupElementName) {
$valFunc = 'validate_' . $this->_attributes['id'] . '_' . $elementNameForJS . '(this)';
$onBlur = $element->getAttribute('onBlur');
$onChange = $element->getAttribute('onChange');
$element->updateAttributes(array('onBlur' => $onBlur . $valFunc,
'onChange' => $onChange . $valFunc));
$elements =& $element->getElements();
for ($i = 0; $i < count($elements); $i++) {
if ($elements[$i]->getAttribute('name') == $groupElementName) {
$valFunc = 'validate_' . $this->_attributes['id'] . '_' . $shortNameForJS . '(this)';
$onBlur = $elements[$i]->getAttribute('onBlur');
$onChange = $elements[$i]->getAttribute('onChange');
$elements[$i]->updateAttributes(array('onBlur' => $onBlur . $valFunc,
'onChange' => $onChange . $valFunc));
}
}
}
Expand Down
1 change: 1 addition & 0 deletions docs/examples/contact_dhtmlrules.php
Expand Up @@ -133,6 +133,7 @@
$radio[] = &HTML_QuickForm::createElement('radio', 'country', null, 'Austria', 'austria');
$radio[] = &HTML_QuickForm::createElement('radio', 'country', null, 'Other', 'other');
$form->addGroup($radio, 'group1', 'Choose a country:', ' ');
$form->addGroupRule('group1', 'Please select a country', 'required', null, 1, client);

$form->addElement('date', 'date', 'Date:', array('format' => 'Y-m-d H:i', 'optionIncrement' => array('i' => 5)));

Expand Down
10 changes: 5 additions & 5 deletions package2.xml
Expand Up @@ -19,10 +19,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
<email>wiesemann@php.net</email>
<active>yes</active>
</lead>
<date>2006-11-02</date>
<time>19:10:00</time>
<date>2006-11-24</date>
<time>23:40:00</time>
<version>
<release>0.2.1</release>
<release>0.2.2</release>
<api>0.2.0</api>
</version>
<stability>
Expand All @@ -31,8 +31,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
</stability>
<license>New BSD</license>
<notes>
- no code changes, just adopted the stylesheet changes from the tableless
renderer into the example file
- fixed JavaScript code generation for group rules (added via addGroupRule())
- example file: added new group rule for the group of radio buttons
</notes>
<contents>
<dir name="/">
Expand Down

0 comments on commit c76370d

Please sign in to comment.