/**
  * Called when visiting a form, before processing any form elements
  *
  * @param    object      An HTML_QuickForm object being visited
  * @access   public
  * @return   void
  */
 function startForm(&$form)
 {
     $this->_fieldsetsOpen = 0;
     parent::startForm($form);
 }
Example #2
0
 /**
  * Gets the html for the group element and adds it to the array by calling
  * parent::finishGroup()
  *
  * @param    HTML_QuickForm_group   group being visited
  * @access   public
  * @return   void
  */
 function finishGroup(&$group)
 {
     $this->_html = '';
     parent::finishGroup($group);
     $this->renderedElements[] = array('name' => $group->getName(), 'value' => $group->getValue(), 'html' => $this->_html, 'rendered' => false);
     $this->_html = '';
 }
    function toHtml()
    {
        $this->_js = '';
        if (!$this->_flagFrozen) {
            // set the onchange attribute for each element except last
            $keys = array_keys($this->_elements);
            $onChange = array();
            for ($i = 0; $i < count($keys) - 1; $i++) {
                $select =& $this->_elements[$keys[$i]];
                $onChange[$i] = $select->getAttribute('onchange');
                $select->updateAttributes(array('onchange' => '_hs_swapOptions(this.form, \'' . $this->_escapeString($this->getName()) . '\', ' . $keys[$i] . ');' . $onChange[$i]));
            }
            // create the js function to call
            if (!defined('HTML_QUICKFORM_HIERSELECT_EXISTS')) {
                $this->_js .= <<<JAVASCRIPT
function _hs_findOptions(ary, keys)
{
    var key = keys.shift();
    if (!key in ary) {
        return {};
    } else if (0 == keys.length) {
        return ary[key];
    } else {
        return _hs_findOptions(ary[key], keys);
    }
}

function _hs_findSelect(form, groupName, selectIndex)
{
    if (groupName+'['+ selectIndex +']' in form) {
        return form[groupName+'['+ selectIndex +']'];
    } else {
        return form[groupName+'['+ selectIndex +'][]'];
    }
}

function _hs_unescapeEntities(str)
{
    var div = document.createElement('div');
    div.innerHTML = str;
    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
}

function _hs_replaceOptions(ctl, optionList)
{
    var j = 0;
    ctl.options.length = 0;
    for (i in optionList) {
        var optionText = (-1 == optionList[i].indexOf('&'))? optionList[i]: _hs_unescapeEntities(optionList[i]);
        ctl.options[j++] = new Option(optionText, i, false, false);
    }
}

function _hs_setValue(ctl, value)
{
    var testValue = {};
    if (value instanceof Array) {
        for (var i = 0; i < value.length; i++) {
            testValue[value[i]] = true;
        }
    } else {
        testValue[value] = true;
    }
    for (var i = 0; i < ctl.options.length; i++) {
        if (ctl.options[i].value in testValue) {
            ctl.options[i].selected = true;
        }
    }
}

function _hs_swapOptions(form, groupName, selectIndex)
{
    var hsValue = [];
    for (var i = 0; i <= selectIndex; i++) {
        hsValue[i] = _hs_findSelect(form, groupName, i).value;
    }

    _hs_replaceOptions(_hs_findSelect(form, groupName, selectIndex + 1),
                       _hs_findOptions(_hs_options[groupName][selectIndex], hsValue));
    if (selectIndex + 1 < _hs_options[groupName].length) {
        _hs_swapOptions(form, groupName, selectIndex + 1);
    }
}

function _hs_onReset(form, groupNames)
{
    for (var i = 0; i < groupNames.length; i++) {
        try {
            for (var j = 0; j <= _hs_options[groupNames[i]].length; j++) {
                _hs_setValue(_hs_findSelect(form, groupNames[i], j), _hs_defaults[groupNames[i]][j]);
                if (j < _hs_options[groupNames[i]].length) {
                    _hs_replaceOptions(_hs_findSelect(form, groupNames[i], j + 1),
                                       _hs_findOptions(_hs_options[groupNames[i]][j], _hs_defaults[groupNames[i]].slice(0, j + 1)));
                }
            }
        } catch (e) {
            if (!(e instanceof TypeError)) {
                throw e;
            }
        }
    }
}

function _hs_setupOnReset(form, groupNames)
{
    setTimeout(function() { _hs_onReset(form, groupNames); }, 25);
}

function _hs_onReload()
{
    var ctl;
    for (var i = 0; i < document.forms.length; i++) {
        for (var j in _hs_defaults) {
            if (ctl = _hs_findSelect(document.forms[i], j, 0)) {
                for (var k = 0; k < _hs_defaults[j].length; k++) {
                    _hs_setValue(_hs_findSelect(document.forms[i], j, k), _hs_defaults[j][k]);
                }
            }
        }
    }

    if (_hs_prevOnload) {
        _hs_prevOnload();
    }
}

var _hs_prevOnload = null;
if (window.onload) {
    _hs_prevOnload = window.onload;
}
window.onload = _hs_onReload;

var _hs_options = {};
var _hs_defaults = {};

JAVASCRIPT;
                define('HTML_QUICKFORM_HIERSELECT_EXISTS', true);
            }
            // option lists
            $jsParts = array();
            for ($i = 1; $i < $this->_nbElements; $i++) {
                $jsParts[] = $this->_convertArrayToJavascript($this->_options[$i]);
            }
            $this->_js .= "\n_hs_options['" . $this->_escapeString($this->getName()) . "'] = [\n" . implode(",\n", $jsParts) . "\n];\n";
            // default value; if we don't actually have any values yet just use
            // the first option (for single selects) or empty array (for multiple)
            $values = array();
            foreach (array_keys($this->_elements) as $key) {
                if (is_array($v = $this->_elements[$key]->getValue())) {
                    $values[] = count($v) > 1 ? $v : $v[0];
                } else {
                    // XXX: accessing the supposedly private _options array
                    $values[] = $this->_elements[$key]->getMultiple() || empty($this->_elements[$key]->_options[0]) ? array() : $this->_elements[$key]->_options[0]['attr']['value'];
                }
            }
            $this->_js .= "_hs_defaults['" . $this->_escapeString($this->getName()) . "'] = " . $this->_convertArrayToJavascript($values, false) . ";\n";
        }
        include_once 'HTML/QuickForm/Renderer/Default.php';
        $renderer = new HTML_QuickForm_Renderer_Default();
        $renderer->setElementTemplate('{element}');
        parent::accept($renderer);
        if (!empty($onChange)) {
            $keys = array_keys($this->_elements);
            for ($i = 0; $i < count($keys) - 1; $i++) {
                $this->_elements[$keys[$i]]->updateAttributes(array('onchange' => $onChange[$i]));
            }
        }
        return (empty($this->_js) ? '' : "<script type=\"text/javascript\">\n//<![CDATA[\n" . $this->_js . "//]]>\n</script>") . $renderer->toHtml();
    }
Example #4
0
 /**
  * Returns HTML for submitlink form element.
  *
  * @return string
  */
 function toHtml()
 {
     require_once 'HTML/QuickForm/Renderer/Default.php';
     $renderer = new HTML_QuickForm_Renderer_Default();
     $renderer->setElementTemplate('{element}');
     parent::accept($renderer);
     return $renderer->toHtml();
 }
Example #5
0
 /**
  * Returns Html for the group
  *
  * @since       1.0
  * @access      public
  * @return      string
  */
 function toHtml()
 {
     // Modified by Ivan Tcholakov, 16-MAR-2010. Suppressing a deprecation warning on PHP 5.3
     //$renderer =& new HTML_QuickForm_Renderer_Default();
     $renderer = new HTML_QuickForm_Renderer_Default();
     //
     $renderer->setElementTemplate('{element}');
     $this->accept($renderer);
     return $renderer->toHtml();
 }
Example #6
0
 function HTML_QuickForm_Renderer_Dataface(&$form)
 {
     $this->_skinTool =& Dataface_SkinTool::getInstance();
     parent::HTML_QuickForm_Renderer_Default();
     $this->setRequiredNoteTemplate('');
 }
Example #7
0
 /**
  * Returns Html for the group
  * 
  * @since       1.0
  * @access      public
  * @return      string
  */
 function toHtml()
 {
     include_once(dirname(__FILE__) . '/Renderer/Default.php');
     $renderer = new HTML_QuickForm_Renderer_Default();
     $renderer->setElementTemplate('{element}');
     $this->accept($renderer);
     return $renderer->toHtml();
 } //end func toHtml
Example #8
0
 /**
  * Called when visiting a form, after processing all form elements
  * Adds required note, form attributes, validation javascript and form content.
  * 
  * @param    object      An HTML_QuickForm object being visited
  * @access   public
  * @return   void
  */
 function finishForm(&$form)
 {
     if ($this->_fieldsetIsOpen) {
         $this->_html .= $this->_closeFieldsetTemplate;
     }
     parent::finishForm($form);
 }
Example #9
0
 /**
  * Returns Html for the group
  * 
  * @access    public
  * @return    string
  */
 function toHtml()
 {
     if ($this->_flagFrozen) {
         $this->_js = '';
     } else {
         // set the onchange attribute for each element
         $keys = array_keys($this->_elements);
         $nbElements = count($keys);
         $nbElementsUsingFnc = $nbElements - 1;
         // last element doesn't need it
         for ($i = 0; $i < $nbElementsUsingFnc; $i++) {
             $select = $this->_elements[$keys[$i]];
             $select->updateAttributes(array('onChange' => 'swapOptions(this, \'' . $this->getName() . '\', ' . $keys[$i] . ', ' . $nbElements . ', \'' . $this->_jsArrayName . '\');'));
         }
         // create the js function to call
         if (!defined('HTML_QUICKFORM_HIERSELECT_EXISTS')) {
             $this->_js .= "function swapOptions(frm, grpName, eleIndex, nbElements, arName)\n" . "{\n" . "  var n = \"\";\n" . "  var ctl;\n\n" . "  for (var i = 0; i < nbElements; i++) {\n" . "    ctl = frm.form[grpName+'['+i+']'];\n" . "    if (!ctl) {\n" . "      ctl = frm.form[grpName+'['+i+'][]'];\n" . "    }\n" . "    if (i <= eleIndex) {\n" . "      n += \"_\"+ctl.value;\n" . "    } else {\n" . "      ctl.length = 0;\n" . "    }\n" . "  }\n\n" . "  var t = eval(\"typeof(\"+arName + n +\")\");\n" . "  if (t != 'undefined') {\n" . "    var the_array = eval(arName+n);\n" . "    var j = 0;\n" . "    n = eleIndex + 1;\n" . "    ctl = frm.form[grpName+'['+ n +']'];\n" . "    if (!ctl) {\n" . "      ctl = frm.form[grpName+'['+ n +'][]'];\n" . "    }\n" . "    for (var i in the_array) {\n" . "      opt = new Option(the_array[i], i, false, false);\n" . "      ctl.options[j++] = opt;\n" . "    }\n" . "  }\n" . "  if (eleIndex+1 < nbElements) {\n" . "    swapOptions(frm, grpName, eleIndex+1, nbElements, arName);\n" . "  }\n" . "}\n";
             define('HTML_QUICKFORM_HIERSELECT_EXISTS', true);
         }
     }
     include_once 'HTML/QuickForm/Renderer/Default.php';
     $renderer = new HTML_QuickForm_Renderer_Default();
     $renderer->setElementTemplate('{element}');
     parent::accept($renderer);
     return "<script type=\"text/javascript\">\n//<![CDATA[\n" . $this->_js . "//]]>\n</script>" . $renderer->toHtml();
 }
Example #10
0
 function toHtml()
 {
     include_once 'HTML/QuickForm/Renderer/Default.php';
     $renderer = new HTML_QuickForm_Renderer_Default();
     $renderer->setElementTemplate('{element}');
     $renderer->setGroupElementTemplate('<div>{element}</div>', $this->_elementName);
     parent::accept($renderer);
     return str_replace('&nbsp;', '', $renderer->toHtml());
 }
Example #11
0
 public function export_for_template(renderer_base $output)
 {
     global $OUTPUT;
     $context = $this->export_for_template_base($output);
     $this->_renderedfromtemplate = true;
     include_once 'HTML/QuickForm/Renderer/Default.php';
     $elements = [];
     $name = $this->getName();
     $i = 0;
     foreach ($this->_elements as $key => $element) {
         $elementname = '';
         if ($this->_appendName) {
             $elementname = $element->getName();
             if (isset($elementname)) {
                 $element->setName($name . '[' . (strlen($elementname) ? $elementname : $key) . ']');
             } else {
                 $element->setName($name);
             }
         }
         $element->_generateId();
         $out = $OUTPUT->mform_element($element, false, false, '', true);
         if (empty($out)) {
             $renderer = new HTML_QuickForm_Renderer_Default();
             $renderer->setElementTemplate('{element}');
             $element->accept($renderer);
             $out = $renderer->toHtml();
         }
         // Replicates the separator logic from 'pear/HTML/QuickForm/Renderer/Default.php'.
         $separator = '';
         if ($i > 0) {
             if (is_array($this->_separator)) {
                 $separator = $this->_separator[($i - 1) % count($this->_separator)];
             } else {
                 if ($this->_separator === null) {
                     $separator = '&nbsp;';
                 } else {
                     $separator = (string) $this->_separator;
                 }
             }
         }
         $elements[] = ['separator' => $separator, 'html' => $out];
         // Restore the element's name.
         if ($this->_appendName) {
             $element->setName($elementname);
         }
         $i++;
     }
     $context['elements'] = $elements;
     return $context;
 }
Example #12
0
 function toHtml()
 {
     $this->_js = '';
     if (!defined('HTML_QUICKFORM_ADVANDATE_EXISTS')) {
         $this->_js .= "\n\n\t\t\t    var advandate_Update = function(groupName) {\n\t\t\t\t\t  value=\$('select[name=\"'+groupName+'[firstselect]\"]').val();\n\t\t\t\t\t\tfirstD = \$('select[name^=\"'+groupName+'[firstdate]\"]');\n            \$(firstD).hide();\n\t\t\t\t\t\tsecD = \$('select[name^=\"'+groupName+'[seconddate]\"]');\n            \$(secD).hide();\n\t\t\t\t\t\tnbunits=\$('select[name=\"'+groupName+'[nbunits]\"]');\n            \$(nbunits).hide();\n\t\t\t\t\t\tunit=\$('select[name=\"'+groupName+'[unit]\"]');\n            \$(unit).hide();\n\t\t\t\t\t\tseparator=\$('#" . $this->_escapeString($this->getName()) . "_dates_separator');\n\t\t\t\t\t\tseparator.hide();\n\t\t\t\t  if( value=='is' && \$(\"input[name='created_at[firstselect]']\").val() != 'is' )\n\t\t\t\t  {\n            today = new Date();\n            \$(firstD[0]).val(today.getDate());\n            \$(firstD[1]).val(today.getMonth()+1);\n            \$(firstD[2]).val(today.getFullYear());\n\t\t\t\t  }\n\t\t\t\t\tif(value=='before' || value=='after' || value=='is') {\n            \$(firstD).show();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (value=='between'){\n              \$(firstD).show();\n              \$(secD).show();\n\t\t\t\t\t\t\tseparator.show();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (value=='inthelast'){\n                \$(nbunits).show();\n                \$(unit).show();\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (value=='lastmonth'){\n\t\t\t\t\t\t\t\t\t// Nothing to show\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}";
         define('HTML_QUICKFORM_ADVANDATE_EXISTS', TRUE);
     }
     include_once 'HTML/QuickForm/Renderer/Default.php';
     $renderer = new HTML_QuickForm_Renderer_Default();
     $renderer->setElementTemplate('{element}');
     parent::accept($renderer);
     if (class_exists('Mtpl')) {
         $script = (empty($this->_js) ? '' : $this->_js) . "\n\$(function(){advandate_Update('" . $this->_escapeString($this->getName()) . "');\n            \$('select[name=\"" . $this->_escapeString($this->getName()) . "[firstselect]\"]').bind('change',function(){advandate_Update('" . $this->_escapeString($this->getName()) . "')});\n            });";
         Mtpl::addJSinline($script);
         return $renderer->toHtml();
     } else {
         return "<script type=\"text/javascript\">\n//<![CDATA[\n" . (empty($this->_js) ? '' : $this->_js) . "\n\$(function(){advandate_Update('" . $this->_escapeString($this->getName()) . "');\n            \$('select[name=\"" . $this->_escapeString($this->getName()) . "[firstselect]\"]').bind('change',function(){advandate_Update('" . $this->_escapeString($this->getName()) . "')});\n            });//]]>\n</script>" . $renderer->toHtml();
     }
 }
Example #13
0
 /**
  * Returns Html for the group
  *
  * @since       1.0
  * @access      public
  * @return string
  */
 public function toHtml()
 {
     include_once 'HTML/QuickForm/Renderer/Default.php';
     $renderer = new HTML_QuickForm_Renderer_Default();
     $renderer->setElementTemplate('{element}');
     $this->accept($renderer);
     return $renderer->toHtml();
 }
 /**
  * Returns HTML for advchecbox form element.
  *
  * @return string
  */
 function toHtml()
 {
     include_once 'HTML/QuickForm/Renderer/Default.php';
     $renderer = new HTML_QuickForm_Renderer_Default();
     $renderer->setElementTemplate('{element}');
     parent::accept($renderer);
     $html = $this->_wrap[0];
     if ($this->_usedcreateelement) {
         $html .= html_writer::tag('span', $renderer->toHtml(), array('class' => 'fdate_time_selector'));
     } else {
         $html .= $renderer->toHtml();
     }
     $html .= $this->_wrap[1];
     return $html;
 }
Example #15
0
 /**
  * Returns Html for the group
  *
  * @since       1.0
  * @access      public
  * @return      string
  */
 public function toHtml()
 {
     $renderer = new HTML_QuickForm_Renderer_Default();
     $renderer->setElementTemplate('{element}');
     $this->accept($renderer);
     return $renderer->toHtml();
 }
Example #16
0
 function toHtml()
 {
     include_once 'HTML/QuickForm/Renderer/Default.php';
     $renderer = new HTML_QuickForm_Renderer_Default();
     $renderer->setElementTemplate('{element}');
     parent::accept($renderer);
     return $this->_wrap[0] . $renderer->toHtml() . $this->_wrap[1];
 }
Example #17
0
 public function export_for_template(renderer_base $output)
 {
     global $OUTPUT;
     $context = $this->export_for_template_base($output);
     $this->_renderedfromtemplate = true;
     include_once 'HTML/QuickForm/Renderer/Default.php';
     $elements = [];
     $name = $this->getName();
     foreach ($this->_elements as $key => $element) {
         $elementname = '';
         if ($this->_appendName) {
             $elementname = $element->getName();
             if (isset($elementname)) {
                 $element->setName($name . '[' . (strlen($elementname) ? $elementname : $key) . ']');
             } else {
                 $element->setName($name);
             }
         }
         $element->_generateId();
         $out = $OUTPUT->mform_element($element, false, false, '', true);
         if (empty($out)) {
             $renderer = new HTML_QuickForm_Renderer_Default();
             $renderer->setElementTemplate('{element}');
             $element->accept($renderer);
             $out = $renderer->toHtml();
         }
         $elements[] = $out;
         // Restore the element's name.
         if ($this->_appendName) {
             $element->setName($elementname);
         }
     }
     $context['elements'] = $elements;
     return $context;
 }