/** * Constructor. * @param $template string the path to the form template file */ function Form($template = null, $callHooks = true, $requiredLocale = null, $supportedLocales = null) { if ($callHooks === true && checkPhpVersion('4.3.0')) { $trace = debug_backtrace(); // Call hooks based on the calling entity, assuming // this method is only called by a subclass. Results // in hook calls named e.g. "papergalleyform::Constructor" // Note that class names are always lower case. HookRegistry::call(strtolower($trace[1]['class']) . '::Constructor', array(&$this, &$template)); } if ($requiredLocale === null) { $requiredLocale = Locale::getPrimaryLocale(); } $this->requiredLocale = $requiredLocale; if ($supportedLocales === null) { $supportedLocales = Locale::getSupportedFormLocales(); } $this->supportedLocales = $supportedLocales; $this->_template = $template; $this->_data = array(); $this->_checks = array(); $this->_errors = array(); $this->errorsArray = array(); $this->errorFields = array(); $this->formSectionErrors = array(); $this->fbvStyles = array('size' => array('SMALL' => 'SMALL', 'MEDIUM' => 'MEDIUM', 'LARGE' => 'LARGE'), 'float' => array('RIGHT' => 'RIGHT', 'LEFT' => 'LEFT'), 'align' => array('RIGHT' => 'RIGHT', 'LEFT' => 'LEFT'), 'measure' => array('1OF1' => '1OF1', '1OF2' => '1OF2', '1OF3' => '1OF3', '2OF3' => '2OF3', '1OF4' => '1OF4', '3OF4' => '3OF4', '1OF5' => '1OF5', '2OF5' => '2OF5', '3OF5' => '3OF5', '4OF5' => '4OF5', '1OF10' => '1OF10', '8OF10' => '8OF10'), 'layout' => array('THREE_COLUMNS' => 'THREE_COLUMNS', 'TWO_COLUMNS' => 'TWO_COLUMNS', 'ONE_COLUMN' => 'ONE_COLUMN')); }
/** * Display the form. * @param $request PKPRequest * @param $fetch boolean if set to true will return the rendered * form rather than sending the response to the user * @return string the rendered form if fetch is true, otherwise null */ function display($request = null, $fetch = false) { if (checkPhpVersion('4.3.0')) { $returner = null; $trace = debug_backtrace(); // Call hooks based on the calling entity, assuming // this method is only called by a subclass. Results // in hook calls named e.g. "papergalleyform::display" // Note that class names are always lower case. if (HookRegistry::call(strtolower($trace[1]['class']) . '::' . $trace[0]['function'], array(&$this, &$returner))) { return $returner; } } $templateMgr =& TemplateManager::getManager($request); $templateMgr->setCacheability(CACHEABILITY_NO_STORE); $templateMgr->register_function('fieldLabel', array(&$this, 'smartyFieldLabel')); $templateMgr->register_function('form_language_chooser', array(&$this, 'smartyFormLanguageChooser')); $templateMgr->register_function('modal_language_chooser', array(&$this, 'smartyModalLanguageChooser')); $templateMgr->register_block('form_locale_iterator', array(&$this, 'formLocaleIterator')); // modifier vocabulary for creating forms $templateMgr->register_block('fbvFormSection', array(&$this, 'smartyFBVFormSection')); $templateMgr->register_block('fbvCustomElement', array(&$this, 'smartyFBVCustomElement')); $templateMgr->register_block('fbvFormArea', array(&$this, 'smartyFBVFormArea')); $templateMgr->register_function('fbvButton', array(&$this, 'smartyFBVButton')); $templateMgr->register_function('fbvTextInput', array(&$this, 'smartyFBVTextInput')); $templateMgr->register_function('fbvTextarea', array(&$this, 'smartyFBVTextArea')); $templateMgr->register_function('fbvSelect', array(&$this, 'smartyFBVSelect')); $templateMgr->register_function('fbvElement', array(&$this, 'smartyFBVElement')); $templateMgr->register_function('fbvElementMultilingual', array(&$this, 'smartyFBVElementMultilingual')); $templateMgr->register_function('fbvCheckbox', array(&$this, 'smartyFBVCheckbox')); $templateMgr->register_function('fbvRadioButton', array(&$this, 'smartyFBVRadioButton')); $templateMgr->register_function('fbvFileInput', array(&$this, 'smartyFBVFileInput')); $templateMgr->assign('fbvStyles', $this->fbvStyles); $templateMgr->assign($this->_data); $templateMgr->assign('isError', !$this->isValid()); $templateMgr->assign('errors', $this->getErrorsArray()); $templateMgr->assign('formLocales', Locale::getSupportedFormLocales()); // Determine the current locale to display fields with $formLocale = Request::getUserVar('formLocale'); if (empty($formLocale)) { $formLocale = Locale::getLocale(); } if (!in_array($formLocale, array_keys(Locale::getSupportedFormLocales()))) { $formLocale = Locale::getPrimaryLocale(); } $templateMgr->assign('formLocale', $formLocale); if ($fetch) { return $templateMgr->fetch($this->_template); } else { $templateMgr->display($this->_template); return null; } }