69 $this->_fbvStyles = array(
70 'size' => array(
'SMALL' =>
'SMALL',
'MEDIUM' =>
'MEDIUM',
'LARGE' =>
'LARGE'),
71 'height' => array(
'SHORT' =>
'SHORT',
'MEDIUM' =>
'MEDIUM',
'TALL' =>
'TALL')
84 if ($form) assert(is_a($form,
'Form'));
116 assert(isset($params[
'id']));
118 $smarty->assign(array(
119 'FBV_class' => isset($params[
'class']) ? $params[
'class'] :
null,
120 'FBV_id' => $params[
'id'],
121 'FBV_content' => isset($content) ? $content :
null,
122 'FBV_translate' => isset($params[
'translate']) ? $params[
'translate'] :
true,
123 'FBV_title' => isset($params[
'title']) ? $params[
'title'] :
null,
125 return $smarty->fetch(
'form/formArea.tpl');
140 $smarty->assign(
'FBV_required', isset($params[
'required']) ? $params[
'required'] :
false);
141 $smarty->assign(
'FBV_id', isset($params[
'id']) ? $params[
'id'] :
null);
147 if (!empty($params[
'for'])) {
148 if (preg_match(
'/id="(' . preg_quote($params[
'for'],
'/') .
'\-[^"]+)"/', $content, $matches)) {
149 $smarty->assign(
'FBV_labelFor', $matches[1]);
151 $smarty->assign(
'FBV_labelFor', $params[
'for']);
154 $smarty->assign(
'FBV_labelFor',
null);
156 $smarty->assign(array(
157 'FBV_title' => isset($params[
'title']) ? $params[
'title'] :
null,
158 'FBV_label' => isset($params[
'label']) ? $params[
'label'] :
null,
160 'FBV_description' => isset($params[
'description']) ? $params[
'description'] :
null,
161 'FBV_content' => isset($content) ? $content:
null,
162 'FBV_translate' => isset($params[
'translate']) ? $params[
'translate'] :
true,
165 $class = $params[
'class'];
168 if (isset($form) && !empty($form->formSectionErrors)) {
169 $class = $class . (empty($class) ?
'' :
' ') .
'error';
170 $smarty->assign(
'FBV_sectionErrors', $form->formSectionErrors);
171 $form->formSectionErrors = array();
172 }
else $smarty->assign(
'FBV_sectionErrors',
null);
176 if (isset($params[
'list']) && $params[
'list'] !=
false) {
177 $smarty->assign(
'FBV_listSection',
true);
182 if (substr(trim($content), 0, 4) ==
"<li>") {
183 throw new Exception(
'FBV: list attribute not set on form section containing lists');
186 $smarty->assign(
'FBV_listSection',
false);
189 $smarty->assign(
'FBV_class', $class);
190 $smarty->assign(
'FBV_layoutColumns', empty($params[
'layout']) ?
false :
true);
192 return $smarty->fetch(
'form/formSection.tpl');
194 if (isset($form)) $form->formSectionErrors = array();
206 $smarty->assign(array(
207 'FBV_submitText' => isset($params[
'submitText']) ? $params[
'submitText'] :
'common.ok',
208 'FBV_submitDisabled' => isset($params[
'submitDisabled']) ? (
boolean)$params[
'submitDisabled'] :
false,
209 'FBV_confirmSubmit' => isset($params[
'confirmSubmit']) ? $params[
'confirmSubmit'] :
null,
210 'FBV_cancelText' => isset($params[
'cancelText']) ? $params[
'cancelText'] :
'common.cancel',
211 'FBV_hideCancel' => isset($params[
'hideCancel']) ? (
boolean)$params[
'hideCancel'] :
false,
212 'FBV_cancelAction' => isset($params[
'cancelAction']) ? $params[
'cancelAction'] :
null,
213 'FBV_cancelUrl' => isset($params[
'cancelUrl']) ? $params[
'cancelUrl'] :
null,
214 'FBV_cancelUrlTarget' => isset($params[
'cancelUrlTarget']) ? $params[
'cancelUrlTarget'] :
'',
215 'FBV_translate' => isset($params[
'translate']) ? $params[
'translate'] :
true,
216 'FBV_saveText' => isset($params[
'saveText']) ? $params[
'saveText'] :
null,
217 'FBV_saveValue' => isset($params[
'saveValue']) ? (
boolean)$params[
'saveValue'] :
null,
219 return $smarty->fetch(
'form/formButtons.tpl');
228 if (!isset($params[
'type']))
throw new Exception(
'FBV: Element type not set');
229 if (!isset($params[
'id']))
throw new Exception(
'FBV: Element ID not set');
232 $smarty->assign(array(
233 'FBV_id' => $params[
'id'],
234 'FBV_class' => isset($params[
'class']) ? $params[
'class'] :
null,
235 'FBV_required' => isset($params[
'required']) ? $params[
'required'] :
false,
237 'FBV_label' => isset($params[
'label']) ? $params[
'label'] :
null,
238 'FBV_for' => isset($params[
'for']) ? $params[
'for'] :
null,
239 'FBV_tabIndex' => isset($params[
'tabIndex']) ? $params[
'tabIndex'] :
null,
240 'FBV_translate' => isset($params[
'translate']) ? $params[
'translate'] :
true,
241 'FBV_keepLabelHtml' => isset($params[
'keepLabelHtml']) ? $params[
'keepLabelHtml'] :
false,
245 unset($params[
'class']);
249 $smarty->assign(
'FBV_validation', isset($params[
'validation']) ? $params[
'validation'] :
null);
262 unset($params[
'label']);
264 case 'checkboxgroup':
266 unset($params[
'label']);
282 unset($params[
'label']);
297 default: assert(
false);
300 unset($params[
'type']);
319 $smarty->assign(array(
'FBV_label' =>
null,
'FBV_disabled' =>
false));
320 foreach ($params as $key => $value) {
328 $smarty->assign(
'FBV_' . $key, $value);
330 default: $buttonParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
334 $smarty->assign(
'FBV_buttonParams', $buttonParams);
336 return $smarty->fetch(
'form/button.tpl');
346 assert(isset($params[
'autocompleteUrl']) && isset($params[
'id']));
349 $autocompleteId = $params[
'id'];
353 $params[
'id'] = $autocompleteId .
'_input';
356 $smarty->assign(array(
357 'FBV_autocompleteUrl' => $params[
'autocompleteUrl'],
358 'FBV_autocompleteValue' => isset($params[
'autocompleteValue']) ? $params[
'autocompleteValue'] :
null,
359 'FBV_disableSync' => isset($params[
'disableSync']) ?
true :
null,
362 unset($params[
'autocompleteUrl'], $params[
'autocompleteValue']);
364 $smarty->assign(array(
366 'FBV_id' => $autocompleteId,
369 return $smarty->fetch(
'form/autocompleteInput.tpl');
379 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
380 $params[
'subLabelTranslate'] = isset($params[
'subLabelTranslate']) ? (boolean) $params[
'subLabelTranslate'] :
true;
381 $params[
'uniqId'] = uniqid();
383 $textInputParams =
'';
384 $smarty->assign(array(
385 'FBV_isPassword' => isset($params[
'password']) ?
true :
false,
386 'FBV_isTypeURL' => $params[
'type'] ===
'url' ?
true :
false,
387 'FBV_isTypeSearch' => $params[
'type'] ===
'search' ?
true :
false,
388 'FBV_isTypeEmail' => $params[
'type'] ===
'email' ?
true :
false,
389 'FBV_isTypeTel' => $params[
'type'] ===
'tel' ?
true :
false,
390 'FBV_disabled' =>
false,
391 'FBV_readonly' =>
false,
392 'FBV_multilingual' =>
false,
395 'FBV_label_content' =>
null,
396 'FBV_uniqId' =>
null,
397 'FBV_urlValidationErrorMessage' =>
null,
399 foreach ($params as $key => $value) {
407 case 'subLabelTranslate':
409 case 'urlValidationErrorMsg':
410 if ($params[
'type'] ===
'url') {
411 $smarty->assign(
'FBV_urlValidationErrorMessage', __($value));
415 $textInputParams .=
'placeholder="' . htmlspecialchars(__($value), ENT_QUOTES, LOCALE_ENCODING) .
'" ';
424 $smarty->assign(
'FBV_' . $key, $value);
break;
426 if ($value) $textInputParams .=
'required="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'"';
429 $textInputParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING).
'" ';
433 $smarty->assign(
'FBV_textInputParams', $textInputParams);
435 return $smarty->fetch(
'form/textInput.tpl');
450 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
451 $params[
'rows'] = isset($params[
'rows']) ? $params[
'rows'] : 10;
452 $params[
'cols'] = isset($params[
'cols']) ? $params[
'cols'] : 80;
453 $params[
'subLabelTranslate'] = isset($params[
'subLabelTranslate']) ? (boolean) $params[
'subLabelTranslate'] :
true;
454 $params[
'uniqId'] = uniqid();
456 $textAreaParams =
'';
457 $smarty->assign(array(
458 'FBV_label_content' =>
null,
459 'FBV_disabled' =>
false,
460 'FBV_readonly' =>
false,
461 'FBV_multilingual' =>
false,
463 'FBV_height' =>
null,
465 'FBV_variables' =>
null,
466 'FBV_variablesType' =>
null,
468 foreach ($params as $key => $value) {
479 case 'variablesType':
482 $smarty->assign(
'FBV_' . $key, $value);
484 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
487 case 'inline':
break;
488 case 'subLabelTranslate':
break;
492 case $styles[
'height'][
'SHORT']: $smarty->assign(
'FBV_height',
'short');
break;
493 case $styles[
'height'][
'MEDIUM']: $smarty->assign(
'FBV_height',
'medium');
break;
494 case $styles[
'height'][
'TALL']: $smarty->assign(
'FBV_height',
'tall');
break;
496 throw new Exception(
'FBV: invalid height specified for textarea.');
500 default: $textAreaParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
504 $smarty->assign(
'FBV_textAreaParams', $textAreaParams);
506 return $smarty->fetch(
'form/textarea.tpl');
516 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
518 $hiddenInputParams =
'';
519 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_value' =>
null));
520 foreach ($params as $key => $value) {
525 $smarty->assign(
'FBV_' . $key, $value);
529 default: $hiddenInputParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
533 $smarty->assign(
'FBV_hiddenInputParams', $hiddenInputParams);
535 return $smarty->fetch(
'form/hiddenInput.tpl');
546 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
547 $params[
'translate'] = isset($params[
'translate']) ? $params[
'translate'] :
true;
548 $params[
'subLabelTranslate'] = isset($params[
'subLabelTranslate']) ? (boolean) $params[
'subLabelTranslate'] :
true;
552 $smarty->assign(array(
555 'FBV_selected' =>
null,
556 'FBV_label_content' =>
null,
557 'FBV_defaultValue' =>
null,
558 'FBV_defaultLabel' =>
null,
559 'FBV_required' =>
false,
560 'FBV_disabled' =>
false,
562 foreach ($params as $key => $value) {
571 $smarty->assign(
'FBV_' . $key, $value);
577 case 'subLabelTranslate':
break;
578 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
579 default: $selectParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
583 $smarty->assign(
'FBV_selectParams', $selectParams);
585 return $smarty->fetch(
'form/select.tpl');
596 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
597 $params[
'translate'] = isset($params[
'translate']) ? (boolean)$params[
'translate'] :
true;
598 $params[
'subLabelTranslate'] = isset($params[
'subLabelTranslate']) ? (boolean) $params[
'subLabelTranslate'] :
true;
599 $checkboxParams =
'';
601 $smarty->assign(array(
'FBV_from' =>
null,
'FBV_selected' =>
false,
'FBV_label_content' =>
null,
'FBV_defaultValue' =>
null,
'FBV_defaultLabel' =>
null));
602 foreach ($params as $key => $value) {
612 $smarty->assign(
'FBV_' . $key, $value);
615 case 'inline':
break;
616 case 'subLabelTranslate':
break;
617 default: $checkboxParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
621 $smarty->assign(
'FBV_checkboxParams', $checkboxParams);
623 return $smarty->fetch(
'form/checkboxGroup.tpl');
633 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
634 $params[
'translate'] = isset($params[
'translate']) ? (boolean)$params[
'translate'] :
true;
636 $checkboxParams =
'';
637 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_label' =>
null,
'FBV_checked' =>
false,
'FBV_disabled' =>
false));
638 foreach ($params as $key => $value) {
646 $smarty->assign(
'FBV_' . $key, $value);
648 default: $checkboxParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
652 $smarty->assign(
'FBV_checkboxParams', $checkboxParams);
654 return $smarty->fetch(
'form/checkbox.tpl');
664 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
665 $params[
'translate'] = isset($params[
'translate']) ? $params[
'translate'] :
true;
667 if (isset($params[
'label']) && isset($params[
'content'])) {
668 throw new Exception(
'FBV: radio button cannot have both a content and a label parameter. Label has precedence.');
672 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_label' =>
null,
'FBV_content' =>
null,
'FBV_checked' =>
false,
'FBV_disabled' =>
false));
673 foreach ($params as $key => $value) {
682 $smarty->assign(
'FBV_' . $key, $value);
684 default: $radioParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
688 $smarty->assign(
'FBV_radioParams', $radioParams);
690 return $smarty->fetch(
'form/radioButton.tpl');
700 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
701 $params[
'translate'] = isset($params[
'translate']) ? $params[
'translate'] :
true;
703 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_label_content' =>
null,
'FBV_checked' =>
false,
'FBV_disabled' =>
false,
'FBV_submit' =>
null));
704 foreach ($params as $key => $value) {
711 $smarty->assign(
'FBV_' . $key, $value);
713 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
717 return $smarty->fetch(
'form/fileInput.tpl');
727 $params[
'uniqId'] = uniqid();
729 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_label' =>
null,
'FBV_label_content' =>
null,
'FBV_currentKeywords' =>
null,
'FBV_multilingual' =>
false,
'FBV_sourceUrl' =>
null,
'FBV_disabled' =>
false));
730 $emptyFormLocaleMap = array_fill_keys(array_keys($smarty->getTemplateVars(
'formLocales')), array());
731 $smarty->assign(
'FBV_availableKeywords', $emptyFormLocaleMap);
732 foreach ($params as $key => $value) {
739 $smarty->assign(
'FBV_' . $key, $value);
741 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
742 case 'available': $smarty->assign(
743 'FBV_availableKeywords',
744 $thing = array_merge(
749 case 'current': $smarty->assign(
'FBV_currentKeywords', $value);
break;
750 case 'sourceUrl': $smarty->assign(
'FBV_sourceUrl', $value);
break;
754 return $smarty->fetch(
'form/keywordInput.tpl');
764 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_label' =>
null,
'FBV_label_content' =>
null,
'FBV_interests' =>
null));
765 $params[
'subLabelTranslate'] = isset($params[
'subLabelTranslate']) ? (boolean) $params[
'subLabelTranslate'] :
true;
766 foreach ($params as $key => $value) {
771 $smarty->assign(
'FBV_' . $key, $value);
773 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
777 return $smarty->fetch(
'form/interestsInput.tpl');
786 assert(isset($params[
'label']));
790 $smarty->assign(array(
'FBV_suppressId' =>
null,
'FBV_label' =>
null,
'FBV_required' =>
false,
'FBV_uniqId' =>
null,
'FBV_multilingual' =>
false,
'FBV_required' =>
false));
791 foreach ($params as $key => $value) {
793 case 'subLabelTranslate': $smarty->assign(
'FBV_subLabelTranslate', $value);
break;
799 $smarty->assign(
'FBV_' . $key, $value);
805 if (isset($form) && isset($form->errorFields[$params[
'name']])) {
806 $smarty->assign(
'FBV_error',
true);
807 $errors = $form->getErrorsArray();
808 $smarty->assign(
'FBV_subLabelTranslate',
false);
809 $smarty->assign(
'FBV_label', $errors[$params[
'name']]);
811 $smarty->assign(
'FBV_error',
false);
814 $returner = $smarty->fetch(
'form/subLabel.tpl');
828 $fieldId = $params[
'id'];
829 if (isset($form->cssValidation[$fieldId])) {
830 $params[
'validation'] = implode(
' ', $form->cssValidation[$fieldId]);
843 foreach ($params as $key => $value) {
847 case 'SMALL': $classes[] =
'pkp_helpers_quarter';
break;
848 case 'MEDIUM': $classes[] =
'pkp_helpers_half';
break;
849 CASE
'LARGE': $classes[] =
'pkp_helpers_threeQuarter';
break;
853 if($value) $classes[] =
'inline';
break;
856 if(!empty($classes)) {
857 return implode(
' ', $classes);
869 if (isset($params) && !empty($params)) {
870 if (isset($params[
'key'])) {
871 $params[
'label'] = __($params[
'key'], $params);
875 if (isset($form) && isset($form->errorFields[$params[
'name']])) {
876 $smarty->assign(
'FBV_class',
'error ' . $params[
'class']);
878 $smarty->assign(
'FBV_class', $params[
'class']);
881 $smarty->assign(array(
'FBV_suppressId' =>
null,
'FBV_label' =>
null,
'FBV_required' =>
false,
'FBV_disabled' =>
false,
'FBV_name' =>
null));
882 foreach ($params as $key => $value) {
889 $smarty->assign(
'FBV_' . $key, $value);
894 $returner = $smarty->fetch(
'form/fieldLabel.tpl');