function __construct($formName = '', $method = 'POST', $action = '', $target = '', $attributes = null, $trackSubmit = true) { parent::__construct($formName, $method, $action, $target, $attributes, $trackSubmit); $this->id = $formName; $this->forceClientValidation = false; $this->hasRequiredFields = false; //register custom fields parent::registerElementType('html', MAX_PATH . '/lib/OA/Admin/UI/component/Html.php', 'OA_Admin_UI_Component_Html'); parent::registerElementType('controls', MAX_PATH . '/lib/OA/Admin/UI/component/FormControls.php', 'OA_Admin_UI_Component_FormControls'); parent::registerElementType('break', MAX_PATH . '/lib/OA/Admin/UI/component/FormBreak.php', 'OA_Admin_UI_Component_FormBreak'); parent::registerElementType('custom', MAX_PATH . '/lib/OA/Admin/UI/component/CustomFormElement.php', 'OA_Admin_UI_Component_CustomFormElement'); parent::registerElementType('plugin-custom', MAX_PATH . '/lib/OA/Admin/UI/component/CustomPluginFormElement.php', 'OA_Admin_UI_Component_CustomPluginFormElement'); parent::registerElementType('script', MAX_PATH . '/lib/OA/Admin/UI/component/ScriptFormElement.php', 'OA_Admin_UI_Component_ScriptFormElement'); parent::registerElementType('plugin-script', MAX_PATH . '/lib/OA/Admin/UI/component/PluginScriptFormElement.php', 'OA_Admin_UI_Component_PluginScriptFormElement'); //register additional rules $this->registerRule('wholenumber', 'regex', '/^\\d+$/'); $this->registerRule('wholenumber-', 'regex', '/^\\d+$|^\\-$/'); $this->registerRule('formattednumber', 'regex', '/^\\d+$|^\\d(,\\d{3})+$/'); $this->registerRule('decimal', 'regex', '/^([+-])?\\d+(\\.\\d+)?$/'); $this->registerRule('decimalplaces', 'rule', 'OA_Admin_UI_Rule_DecimalPlaces', MAX_PATH . '/lib/OA/Admin/UI/component/rule/DecimalPlaces.php'); $this->registerRule('min', 'rule', 'OA_Admin_UI_Rule_Min', MAX_PATH . '/lib/OA/Admin/UI/component/rule/Min.php'); $this->registerRule('max', 'rule', 'OA_Admin_UI_Rule_Max', MAX_PATH . '/lib/OA/Admin/UI/component/rule/Max.php'); $this->registerRule('unique', 'rule', 'OA_Admin_UI_Rule_Unique', MAX_PATH . '/lib/OA/Admin/UI/component/rule/Unique.php'); $this->registerRule('equal', 'rule', 'OA_Admin_UI_Rule_Equal', MAX_PATH . '/lib/OA/Admin/UI/component/rule/Equal.php'); //register jquery rule adaptors $this->registerJQueryRuleAdaptor('required', MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormRequiredRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryRequiredRule'); $this->registerJQueryRuleAdaptor('minlength', MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormMinLengthRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryMinLengthRule'); $this->registerJQueryRuleAdaptor('maxlength', MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormMaxLengthRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryMaxLengthRule'); $this->registerJQueryRuleAdaptor('email', MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormEmailRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryEmailRule'); $this->registerJQueryRuleAdaptor('numeric', MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormDigitsRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryDigitsRule'); $this->registerJQueryRuleAdaptor('nonzero', MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormNonZeroRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryNonZeroRule'); $this->registerJQueryRuleAdaptor('decimal', MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormNumberRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryNumberRule'); $this->registerJQueryRuleAdaptor('min', MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormMinRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryMinRule'); $this->registerJQueryRuleAdaptor('max', MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormMaxRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryMaxRule'); $this->registerJQueryRuleAdaptor('decimalplaces', MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormDecimalPlacesAdaptor.php', 'OA_Admin_UI_Rule_QuickFormDecimalPlacesAdaptor'); $this->registerJQueryRuleAdaptor("unique", MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormUniqueRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryUniqueRule'); $this->registerJQueryRuleAdaptor("equal", MAX_PATH . '/lib/OA/Admin/UI/component/rule/QuickFormEqualRuleAdaptor.php', 'OA_Admin_UI_Rule_JQueryEqualRule'); //register element decorators $this->registerElementDecorator('tag', MAX_PATH . '/lib/OA/Admin/UI/component/decorator/HTMLTagDecorator.php', 'OA_Admin_UI_HTMLTagDecorator'); $this->registerElementDecorator('process', MAX_PATH . '/lib/OA/Admin/UI/component/decorator/ProcessingDecorator.php', 'OA_Admin_UI_ProcessingDecorator'); //apply flat class $this->setAttribute("class", "flat"); //trim spaces from all data sent by the user $this->applyFilter('__ALL__', 'trim'); if (!defined('phpAds_installing')) { $this->addElement('hidden', 'token', phpAds_SessionGetToken()); $this->addRule('token', 'Missing request token', 'required'); $this->addRule('token', 'Invalid request token', 'callback', 'phpAds_SessionValidateToken'); } }
/** * Constructor * @param string $name Name of the form * @param string $method (optional Method ('post' (default) or 'get') * @param string $action (optional Action (default is $PHP_SELF) * @param string $target (optional Form's target defaults to '_self' * @param mixed $attributes (optional) Extra attributes for <form> tag * @param string $layout * @param bool $trackSubmit (optional) Whether to track if the form was * submitted by adding a special hidden field (default = true) */ public function __construct($name, $method = 'post', $action = '', $target = '', $attributes = array(), $layout = self::LAYOUT_HORIZONTAL, $trackSubmit = true) { // Default form class. if (is_array($attributes) && !isset($attributes['class']) || empty($attributes)) { $attributes['class'] = 'form-horizontal'; } if (isset($attributes['class']) && strpos($attributes['class'], 'form-search') !== false) { $layout = 'inline'; } $this->setLayout($layout); switch ($layout) { case self::LAYOUT_HORIZONTAL: $attributes['class'] = 'form-horizontal'; break; case self::LAYOUT_INLINE: case self::LAYOUT_BOX: $attributes['class'] = 'form-inline'; break; } parent::__construct($name, $method, $action, $target, $attributes, $trackSubmit); // Modify the default templates $renderer =& $this->defaultRenderer(); // Form template $formTemplate = $this->getFormTemplate(); $renderer->setFormTemplate($formTemplate); // Element template if (isset($attributes['class']) && $attributes['class'] == 'form-inline') { $elementTemplate = ' {label} {element} '; $renderer->setElementTemplate($elementTemplate); } elseif (isset($attributes['class']) && $attributes['class'] == 'form-search') { $elementTemplate = ' {label} {element} '; $renderer->setElementTemplate($elementTemplate); } else { $renderer->setElementTemplate($this->getDefaultElementTemplate()); // Display a gray div in the buttons $templateSimple = '<div class="form-actions">{label} {element}</div>'; $renderer->setElementTemplate($templateSimple, 'submit_in_actions'); //Display a gray div in the buttons + makes the button available when scrolling $templateBottom = '<div class="form-actions bottom_actions bg-form">{label} {element}</div>'; $renderer->setElementTemplate($templateBottom, 'submit_fixed_in_bottom'); //When you want to group buttons use something like this /* $group = array(); $group[] = $form->createElement('button', 'mark_all', get_lang('MarkAll')); $group[] = $form->createElement('button', 'unmark_all', get_lang('UnmarkAll')); $form->addGroup($group, 'buttons_in_action'); */ $renderer->setElementTemplate($templateSimple, 'buttons_in_action'); $templateSimpleRight = '<div class="form-actions"> <div class="pull-right">{label} {element}</div></div>'; $renderer->setElementTemplate($templateSimpleRight, 'buttons_in_action_right'); } //Set Header template $renderer->setHeaderTemplate('<legend>{header}</legend>'); //Set required field template $this->setRequiredNote('<span class="form_required">*</span> <small>' . get_lang('ThisFieldIsRequired') . '</small>'); $noteTemplate = <<<EOT \t<div class="form-group"> \t\t<div class="col-sm-offset-2 col-sm-10">{requiredNote}</div> \t</div> EOT; $renderer->setRequiredNoteTemplate($noteTemplate); }
/** * Constructor * @param string $form_name Name of the form * @param string $method (optional Method ('post' (default) or 'get') * @param string $action (optional Action (default is $PHP_SELF) * @param string $target (optional Form's target defaults to '_self' * @param mixed $attributes (optional) Extra attributes for <form> tag * @param bool $track_submit (optional) Whether to track if the form was * submitted by adding a special hidden field (default = true) */ public function __construct($form_name = null, $method = 'post', $action = '', $target = '', $attributes = null, $track_submit = true) { // Default form class if (is_array($attributes) && !isset($attributes['class']) || empty($attributes)) { $attributes['class'] = 'form-horizontal'; } // Fixing form search if (is_array($attributes) && isset($attributes['class'])) { //if (strpos($attributes['class'], 'form-search')) { if ($attributes['class'] == 'form-search') { // $attributes['class'] = str_replace('form-search', 'form-inline', $attributes['class']); $attributes['class'] = 'form-inline'; } } // Allow form with no names if (empty($form_name)) { $form_name = uniqid(); } parent::__construct($form_name, $method, $action, $target, $attributes, $track_submit); // Load some custom elements and rules $dir = api_get_path(LIBRARY_PATH) . 'formvalidator/'; $this->registerElementType('html_editor', $dir . 'Element/html_editor.php', 'HTML_QuickForm_html_editor'); $this->registerElementType('datepicker', $dir . 'Element/datepicker.php', 'HTML_QuickForm_datepicker'); $this->registerElementType('datepickerdate', $dir . 'Element/datepickerdate.php', 'HTML_QuickForm_datepickerdate'); $this->registerElementType('receivers', $dir . 'Element/receivers.php', 'HTML_QuickForm_receivers'); $this->registerElementType('select_language', $dir . 'Element/select_language.php', 'HTML_QuickForm_Select_Language'); $this->registerElementType('select_theme', $dir . 'Element/select_theme.php', 'HTML_QuickForm_Select_Theme'); $this->registerElementType('style_submit_button', $dir . 'Element/style_submit_button.php', 'HTML_QuickForm_stylesubmitbutton'); $this->registerElementType('button', $dir . 'Element/style_submit_button.php', 'HTML_QuickForm_stylesubmitbutton'); $this->registerElementType('captcha', 'HTML/QuickForm/CAPTCHA.php', 'HTML_QuickForm_CAPTCHA'); $this->registerElementType('CAPTCHA_Image', 'HTML/QuickForm/CAPTCHA/Image.php', 'HTML_QuickForm_CAPTCHA_Image'); $this->registerRule('date', null, 'HTML_QuickForm_Rule_Date', $dir . 'Rule/Date.php'); $this->registerRule('date_compare', null, 'HTML_QuickForm_Rule_DateCompare', $dir . 'Rule/DateCompare.php'); $this->registerRule('html', null, 'HTML_QuickForm_Rule_HTML', $dir . 'Rule/HTML.php'); $this->registerRule('username_available', null, 'HTML_QuickForm_Rule_UsernameAvailable', $dir . 'Rule/UsernameAvailable.php'); $this->registerRule('username', null, 'HTML_QuickForm_Rule_Username', $dir . 'Rule/Username.php'); $this->registerRule('filetype', null, 'HTML_QuickForm_Rule_Filetype', $dir . 'Rule/Filetype.php'); $this->registerRule('multiple_required', 'required', 'HTML_QuickForm_Rule_MultipleRequired', $dir . 'Rule/MultipleRequired.php'); $this->registerRule('url', null, 'HTML_QuickForm_Rule_Url', $dir . 'Rule/Url.php'); $this->registerRule('compare_fields', null, 'HTML_QuickForm_Compare_Fields', $dir . 'Rule/CompareFields.php'); $this->registerRule('compare_datetime_text', null, 'HTML_QuickForm_Rule_CompareDateTimeText', $dir . 'Rule/CompareDateTimeText.php'); $this->registerRule('CAPTCHA', 'rule', 'HTML_QuickForm_Rule_CAPTCHA', 'HTML/QuickForm/Rule/CAPTCHA.php'); // Modify the default templates /** @var HTML_QuickForm_Renderer_Default $renderer */ $renderer =& $this->defaultRenderer(); // Form template $renderer->setFormTemplate($this->getFormTemplate()); // Element template if (isset($attributes['class']) && $attributes['class'] == 'well form-inline') { $element_template = ' {label} {element} '; $renderer->setElementTemplate($element_template); } elseif (isset($attributes['class']) && $attributes['class'] == 'form-search') { $element_template = ' {label} {element} '; $renderer->setElementTemplate($element_template); } else { if (is_array($attributes) && isset($attributes['class']) && $attributes['class'] == 'form-inline') { $element_template = $this->getDefaultInlineElementTemplate(); } else { $element_template = $this->getDefaultElementTemplate(); } $renderer->setElementTemplate($element_template); // Display a gray div in the buttons $button_element_template_simple = '<div class="form-actions">{label} {element}</div>'; $renderer->setElementTemplate($button_element_template_simple, 'submit_in_actions'); //Display a gray div in the buttons + makes the button available when scrolling $button_element_template_in_bottom = '<div class="form-actions bottom_actions">{label} {element}</div>'; $renderer->setElementTemplate($button_element_template_in_bottom, 'submit_fixed_in_bottom'); $renderer->setElementTemplate($button_element_template_simple, 'buttons_in_action'); $button_element_template_simple_right = '<div class="form-actions"> <div class="pull-right">{label} {element}</div></div>'; $renderer->setElementTemplate($button_element_template_simple_right, 'buttons_in_action_right'); } // Set Header template $renderer->setHeaderTemplate('<h2>{header}</h2>'); //Set required field template HTML_QuickForm::setRequiredNote('<span class="form_required">*</span> <small>' . get_lang('ThisFieldIsRequired') . '</small>'); $required_note_template = <<<EOT \t<div class="form-group"> \t\t<div class="col-sm-2">{requiredNote}</div> \t</div> EOT; $renderer->setRequiredNoteTemplate($required_note_template); }
/** * Constructor * @param string $form_name Name of the form * @param string $method (optional Method ('post' (default) or 'get') * @param string $action (optional Action (default is $PHP_SELF) * @param string $target (optional Form's target defaults to '_self' * @param mixed $attributes (optional) Extra attributes for <form> tag * @param bool $track_submit (optional) Whether to track if the form was * submitted by adding a special hidden field (default = true) */ public function __construct($form_name, $method = 'post', $action = '', $target = '', $attributes = null, $track_submit = true) { // Default form class. if (is_array($attributes) && !isset($attributes['class']) || empty($attributes)) { $attributes['class'] = 'form-horizontal'; } parent::__construct($form_name, $method, $action, $target, $attributes, $track_submit); // Load some custom elements and rules $dir = api_get_path(LIBRARY_PATH) . 'formvalidator/'; $this->registerElementType('html_editor', $dir . 'Element/html_editor.php', 'HTML_QuickForm_html_editor'); $this->registerElementType('date_range_picker', $dir . 'Element/DateRangePicker.php', 'DateRangePicker'); $this->registerElementType('date_time_picker', $dir . 'Element/DateTimePicker.php', 'DateTimePicker'); $this->registerElementType('date_picker', $dir . 'Element/DatePicker.php', 'DatePicker'); $this->registerElementType('datepicker', $dir . 'Element/datepicker_old.php', 'HTML_QuickForm_datepicker'); $this->registerElementType('datepickerdate', $dir . 'Element/datepickerdate.php', 'HTML_QuickForm_datepickerdate'); $this->registerElementType('receivers', $dir . 'Element/receivers.php', 'HTML_QuickForm_receivers'); $this->registerElementType('select_language', $dir . 'Element/select_language.php', 'HTML_QuickForm_Select_Language'); $this->registerElementType('select_ajax', $dir . 'Element/select_ajax.php', 'HTML_QuickForm_Select_Ajax'); $this->registerElementType('select_theme', $dir . 'Element/select_theme.php', 'HTML_QuickForm_Select_Theme'); $this->registerElementType('style_submit_button', $dir . 'Element/style_submit_button.php', 'HTML_QuickForm_stylesubmitbutton'); $this->registerElementType('style_reset_button', $dir . 'Element/style_reset_button.php', 'HTML_QuickForm_styleresetbutton'); $this->registerElementType('button', $dir . 'Element/style_submit_button.php', 'HTML_QuickForm_stylesubmitbutton'); $this->registerElementType('captcha', 'HTML/QuickForm/CAPTCHA.php', 'HTML_QuickForm_CAPTCHA'); $this->registerElementType('CAPTCHA_Image', 'HTML/QuickForm/CAPTCHA/Image.php', 'HTML_QuickForm_CAPTCHA_Image'); $this->registerRule('date', null, 'HTML_QuickForm_Rule_Date', $dir . 'Rule/Date.php'); $this->registerRule('datetime', null, 'DateTimeRule', $dir . 'Rule/DateTimeRule.php'); $this->registerRule('date_compare', null, 'HTML_QuickForm_Rule_DateCompare', $dir . 'Rule/DateCompare.php'); $this->registerRule('html', null, 'HTML_QuickForm_Rule_HTML', $dir . 'Rule/HTML.php'); $this->registerRule('username_available', null, 'HTML_QuickForm_Rule_UsernameAvailable', $dir . 'Rule/UsernameAvailable.php'); $this->registerRule('username', null, 'HTML_QuickForm_Rule_Username', $dir . 'Rule/Username.php'); $this->registerRule('filetype', null, 'HTML_QuickForm_Rule_Filetype', $dir . 'Rule/Filetype.php'); $this->registerRule('multiple_required', 'required', 'HTML_QuickForm_Rule_MultipleRequired', $dir . 'Rule/MultipleRequired.php'); $this->registerRule('url', null, 'HTML_QuickForm_Rule_Url', $dir . 'Rule/Url.php'); $this->registerRule('mobile_phone_number', null, 'HTML_QuickForm_Rule_Mobile_Phone_Number', $dir . 'Rule/MobilePhoneNumber.php'); $this->registerRule('compare_fields', null, 'HTML_QuickForm_Compare_Fields', $dir . 'Rule/CompareFields.php'); $this->registerRule('CAPTCHA', 'rule', 'HTML_QuickForm_Rule_CAPTCHA', 'HTML/QuickForm/Rule/CAPTCHA.php'); // Modify the default templates $renderer =& $this->defaultRenderer(); //Form template $form_template = '<form{attributes}> <fieldset> {content} <div class="clear"></div> </fieldset> {hidden} </form>'; $renderer->setFormTemplate($form_template); //Element template if (isset($attributes['class']) && $attributes['class'] == 'well form-inline') { $element_template = ' {label} {element} '; $renderer->setElementTemplate($element_template); } elseif (isset($attributes['class']) && $attributes['class'] == 'form-search') { $element_template = ' {label} {element} '; $renderer->setElementTemplate($element_template); } else { $element_template = ' <div class="control-group {error_class}"> <label class="control-label" {label-for}> <!-- BEGIN required --><span class="form_required">*</span><!-- END required --> {label} </label> <div class="controls"> {element} <!-- BEGIN label_3 --> {label_3} <!-- END label_3 --> <!-- BEGIN label_2 --> <p class="help-block">{label_2}</p> <!-- END label_2 --> <!-- BEGIN error --> <span class="help-inline">{error}</span> <!-- END error --> </div> </div>'; $renderer->setElementTemplate($element_template); //Display a gray div in the buttons $button_element_template_simple = '<div class="form-actions">{label} {element}</div>'; $renderer->setElementTemplate($button_element_template_simple, 'submit_in_actions'); //Display a gray div in the buttons + makes the button available when scrolling $button_element_template_in_bottom = '<div class="form-actions bottom_actions bg-form">{label} {element}</div>'; $renderer->setElementTemplate($button_element_template_in_bottom, 'submit_fixed_in_bottom'); //When you want to group buttons use something like this /* $group = array(); $group[] = $form->createElement('button', 'mark_all', get_lang('MarkAll')); $group[] = $form->createElement('button', 'unmark_all', get_lang('UnmarkAll')); $form->addGroup($group, 'buttons_in_action'); */ $renderer->setElementTemplate($button_element_template_simple, 'buttons_in_action'); $button_element_template_simple_right = '<div class="form-actions"> <div class="pull-right">{label} {element}</div></div>'; $renderer->setElementTemplate($button_element_template_simple_right, 'buttons_in_action_right'); /* $renderer->setElementTemplate($button_element_template, 'submit_button'); $renderer->setElementTemplate($button_element_template, 'submit'); $renderer->setElementTemplate($button_element_template, 'button'); * */ } //Set Header template $renderer->setHeaderTemplate('<legend>{header}</legend>'); //Set required field template HTML_QuickForm::setRequiredNote('<span class="form_required">*</span> <small>' . get_lang('ThisFieldIsRequired') . '</small>'); $required_note_template = <<<EOT \t<div class="control-group"> \t\t<div class="controls">{requiredNote}</div> \t</div> EOT; $renderer->setRequiredNoteTemplate($required_note_template); }