X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/5517dbf1904795f710675847cd2a49f64009286c..914ba42493e01bc0f79053b0d3cd6348fcdfa0f8:/cookbooks/dmca/files/default/html/HTML/QuickForm/PageDHTMLRulesTableless.php diff --git a/cookbooks/dmca/files/default/html/HTML/QuickForm/PageDHTMLRulesTableless.php b/cookbooks/dmca/files/default/html/HTML/QuickForm/PageDHTMLRulesTableless.php new file mode 100644 index 000000000..6d4215034 --- /dev/null +++ b/cookbooks/dmca/files/default/html/HTML/QuickForm/PageDHTMLRulesTableless.php @@ -0,0 +1,296 @@ + + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * The names of the authors may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category HTML + * @package HTML_QuickForm_DHTMLRulesTableless + * @author Alexey Borzov + * @author Adam Daniel + * @author Bertrand Mansion + * @author Justin Patrin + * @author Mark Wiesemann + * @license http://www.opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: PageDHTMLRulesTableless.php,v 1.3 2007/10/24 20:36:11 wiesemann Exp $ + * @link http://pear.php.net/package/HTML_QuickForm_DHTMLRulesTableless + */ + +require_once 'HTML/QuickForm/Page.php'; + +/** + * This is a DHTML replacement for the standard JavaScript alert window for + * client-side validation of forms built with HTML_QuickForm + * + * @category HTML + * @package HTML_QuickForm_DHTMLRulesTableless + * @author Alexey Borzov + * @author Adam Daniel + * @author Bertrand Mansion + * @author Justin Patrin + * @author Mark Wiesemann + * @license http://www.opensource.org/licenses/bsd-license.php New BSD License + * @version Release: 0.3.3 + * @link http://pear.php.net/package/HTML_QuickForm_DHTMLRulesTableless + */ +class HTML_QuickForm_PageDHTMLRulesTableless extends HTML_QuickForm_Page +{ + /** + * Class constructor + * + * @access public + */ + function HTML_QuickForm_PageDHTMLRulesTableless($formName, $method = 'post', + $target = '', $attributes = null) + { + $this->HTML_QuickForm_Page($formName, $method, '', $target, $attributes); + } + + // {{{ getValidationScript() + + /** + * Returns the client side validation script + * + * The code here was copied from HTML_QuickForm and slightly modified to run rules per-element + * + * @access public + * @return string Javascript to perform validation, empty string if no 'client' rules were added + */ + function getValidationScript() + { + if (empty($this->_rules) || empty($this->_attributes['onsubmit'])) { + return ''; + } + + include_once('HTML/QuickForm/RuleRegistry.php'); + $registry =& HTML_QuickForm_RuleRegistry::singleton(); + $test = array(); + $js_escape = array( + "\r" => '\r', + "\n" => '\n', + "\t" => '\t', + "'" => "\\'", + '"' => '\"', + '\\' => '\\\\' + ); + + foreach ($this->_rules as $elementName => $rules) { + foreach ($rules as $rule) { + if ('client' == $rule['validation']) { + unset($element); + + $dependent = isset($rule['dependent']) && is_array($rule['dependent']); + $rule['message'] = strtr($rule['message'], $js_escape); + + if (isset($rule['group'])) { + $group =& $this->getElement($rule['group']); + // No JavaScript validation for frozen elements + if ($group->isFrozen()) { + continue 2; + } + $elements =& $group->getElements(); + foreach (array_keys($elements) as $key) { + if ($elementName == $group->getElementName($key)) { + $element =& $elements[$key]; + break; + } + } + } elseif ($dependent) { + $element = array(); + $element[] =& $this->getElement($elementName); + foreach ($rule['dependent'] as $idx => $elName) { + $element[] =& $this->getElement($elName); + } + } else { + $element =& $this->getElement($elementName); + } + // No JavaScript validation for frozen elements + if (is_object($element) && $element->isFrozen()) { + continue 2; + } elseif (is_array($element)) { + foreach (array_keys($element) as $key) { + if ($element[$key]->isFrozen()) { + continue 3; + } + } + } + + $test[$elementName][] = $registry->getValidationScript($element, $elementName, $rule); + } + } + } + $js = ' +'; + return $js; + } // end func getValidationScript + + // }}} + + function display() { + $this->getValidationScript(); + return parent::display(); + } +} + +?> \ No newline at end of file