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']);
285 unset($params[
'label']);
303 default: assert(
false);
306 unset($params[
'type']);
325 $smarty->assign(array(
'FBV_label' =>
null,
'FBV_disabled' =>
false));
326 foreach ($params as $key => $value) {
334 $smarty->assign(
'FBV_' . $key, $value);
336 default: $buttonParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
340 $smarty->assign(
'FBV_buttonParams', $buttonParams);
342 return $smarty->fetch(
'form/button.tpl');
352 assert(isset($params[
'autocompleteUrl']) && isset($params[
'id']));
355 $autocompleteId = $params[
'id'];
359 $params[
'id'] = $autocompleteId .
'_input';
362 $smarty->assign(array(
363 'FBV_autocompleteUrl' => $params[
'autocompleteUrl'],
364 'FBV_autocompleteValue' => isset($params[
'autocompleteValue']) ? $params[
'autocompleteValue'] :
null,
365 'FBV_disableSync' => isset($params[
'disableSync']) ?
true :
null,
368 unset($params[
'autocompleteUrl'], $params[
'autocompleteValue']);
370 $smarty->assign(array(
372 'FBV_id' => $autocompleteId,
375 return $smarty->fetch(
'form/autocompleteInput.tpl');
385 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
386 $params[
'subLabelTranslate'] = isset($params[
'subLabelTranslate']) ? (boolean) $params[
'subLabelTranslate'] :
true;
387 $params[
'uniqId'] = uniqid();
389 $textInputParams =
'';
390 $smarty->assign(array(
391 'FBV_isPassword' => isset($params[
'password']) ?
true :
false,
392 'FBV_isTypeURL' => $params[
'type'] ===
'url' ?
true :
false,
393 'FBV_isTypeSearch' => $params[
'type'] ===
'search' ?
true :
false,
394 'FBV_disabled' =>
false,
395 'FBV_readonly' =>
false,
396 'FBV_multilingual' =>
false,
399 'FBV_label_content' =>
null,
400 'FBV_uniqId' =>
null,
401 'FBV_urlValidationErrorMessage' =>
null,
403 foreach ($params as $key => $value) {
405 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
408 case 'inline':
break;
409 case 'subLabelTranslate':
break;
410 case 'urlValidationErrorMsg':
411 if ($params[
'type'] ===
'url') {
412 $smarty->assign(
'FBV_urlValidationErrorMessage', __($value));
415 case 'placeholder': $textInputParams .=
'placeholder="' . htmlspecialchars(__($value), ENT_QUOTES, LOCALE_ENCODING) .
'" ';
break;
423 $smarty->assign(
'FBV_' . $key, $value);
break;
424 case 'required':
if ($value) $textInputParams .=
'required="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'"';
break;
425 default: $textInputParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING).
'" ';
429 $smarty->assign(
'FBV_textInputParams', $textInputParams);
431 return $smarty->fetch(
'form/textInput.tpl');
446 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
447 $params[
'rows'] = isset($params[
'rows']) ? $params[
'rows'] : 10;
448 $params[
'cols'] = isset($params[
'cols']) ? $params[
'cols'] : 80;
449 $params[
'subLabelTranslate'] = isset($params[
'subLabelTranslate']) ? (boolean) $params[
'subLabelTranslate'] :
true;
450 $params[
'uniqId'] = uniqid();
452 $textAreaParams =
'';
453 $smarty->assign(array(
454 'FBV_label_content' =>
null,
455 'FBV_disabled' =>
false,
456 'FBV_readonly' =>
false,
457 'FBV_multilingual' =>
false,
459 'FBV_height' =>
null,
461 'FBV_variables' =>
null,
462 'FBV_variablesType' =>
null,
464 foreach ($params as $key => $value) {
475 case 'variablesType':
478 $smarty->assign(
'FBV_' . $key, $value);
480 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
483 case 'inline':
break;
484 case 'subLabelTranslate':
break;
488 case $styles[
'height'][
'SHORT']: $smarty->assign(
'FBV_height',
'short');
break;
489 case $styles[
'height'][
'MEDIUM']: $smarty->assign(
'FBV_height',
'medium');
break;
490 case $styles[
'height'][
'TALL']: $smarty->assign(
'FBV_height',
'tall');
break;
492 throw new Exception(
'FBV: invalid height specified for textarea.');
496 default: $textAreaParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
500 $smarty->assign(
'FBV_textAreaParams', $textAreaParams);
502 return $smarty->fetch(
'form/textarea.tpl');
512 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
514 $hiddenInputParams =
'';
515 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_value' =>
null));
516 foreach ($params as $key => $value) {
521 $smarty->assign(
'FBV_' . $key, $value);
525 default: $hiddenInputParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
529 $smarty->assign(
'FBV_hiddenInputParams', $hiddenInputParams);
531 return $smarty->fetch(
'form/hiddenInput.tpl');
542 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
543 $params[
'translate'] = isset($params[
'translate']) ? $params[
'translate'] :
true;
544 $params[
'subLabelTranslate'] = isset($params[
'subLabelTranslate']) ? (boolean) $params[
'subLabelTranslate'] :
true;
548 $smarty->assign(array(
551 'FBV_selected' =>
null,
552 'FBV_label_content' =>
null,
553 'FBV_defaultValue' =>
null,
554 'FBV_defaultLabel' =>
null,
555 'FBV_required' =>
false,
556 'FBV_disabled' =>
false,
558 foreach ($params as $key => $value) {
567 $smarty->assign(
'FBV_' . $key, $value);
573 case 'subLabelTranslate':
break;
574 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
575 default: $selectParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
579 $smarty->assign(
'FBV_selectParams', $selectParams);
581 return $smarty->fetch(
'form/select.tpl');
592 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
593 $params[
'translate'] = isset($params[
'translate']) ? (boolean)$params[
'translate'] :
true;
594 $params[
'subLabelTranslate'] = isset($params[
'subLabelTranslate']) ? (boolean) $params[
'subLabelTranslate'] :
true;
595 $checkboxParams =
'';
597 $smarty->assign(array(
'FBV_from' =>
null,
'FBV_selected' =>
false,
'FBV_label_content' =>
null,
'FBV_defaultValue' =>
null,
'FBV_defaultLabel' =>
null));
598 foreach ($params as $key => $value) {
608 $smarty->assign(
'FBV_' . $key, $value);
611 case 'inline':
break;
612 case 'subLabelTranslate':
break;
613 default: $checkboxParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
617 $smarty->assign(
'FBV_checkboxParams', $checkboxParams);
619 return $smarty->fetch(
'form/checkboxGroup.tpl');
629 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
630 $params[
'translate'] = isset($params[
'translate']) ? (boolean)$params[
'translate'] :
true;
632 $checkboxParams =
'';
633 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_label' =>
null,
'FBV_checked' =>
false,
'FBV_disabled' =>
false));
634 foreach ($params as $key => $value) {
642 $smarty->assign(
'FBV_' . $key, $value);
644 default: $checkboxParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
648 $smarty->assign(
'FBV_checkboxParams', $checkboxParams);
650 return $smarty->fetch(
'form/checkbox.tpl');
660 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
661 $params[
'translate'] = isset($params[
'translate']) ? $params[
'translate'] :
true;
663 if (isset($params[
'label']) && isset($params[
'content'])) {
664 throw new Exception(
'FBV: radio button cannot have both a content and a label parameter. Label has precedence.');
668 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_label' =>
null,
'FBV_content' =>
null,
'FBV_checked' =>
false,
'FBV_disabled' =>
false));
669 foreach ($params as $key => $value) {
678 $smarty->assign(
'FBV_' . $key, $value);
680 default: $radioParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) .
'="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) .
'" ';
684 $smarty->assign(
'FBV_radioParams', $radioParams);
686 return $smarty->fetch(
'form/radioButton.tpl');
696 $params[
'name'] = isset($params[
'name']) ? $params[
'name'] : $params[
'id'];
697 $params[
'translate'] = isset($params[
'translate']) ? $params[
'translate'] :
true;
699 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_label_content' =>
null,
'FBV_checked' =>
false,
'FBV_disabled' =>
false,
'FBV_submit' =>
null));
700 foreach ($params as $key => $value) {
707 $smarty->assign(
'FBV_' . $key, $value);
709 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
713 return $smarty->fetch(
'form/fileInput.tpl');
723 $params[
'uniqId'] = uniqid();
725 $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));
726 $emptyFormLocaleMap = array_fill_keys(array_keys($smarty->getTemplateVars(
'formLocales')), array());
727 $smarty->assign(
'FBV_availableKeywords', $emptyFormLocaleMap);
728 foreach ($params as $key => $value) {
735 $smarty->assign(
'FBV_' . $key, $value);
737 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
738 case 'available': $smarty->assign(
739 'FBV_availableKeywords',
740 $thing = array_merge(
745 case 'current': $smarty->assign(
'FBV_currentKeywords', $value);
break;
746 case 'sourceUrl': $smarty->assign(
'FBV_sourceUrl', $value);
break;
750 return $smarty->fetch(
'form/keywordInput.tpl');
760 $smarty->assign(array(
'FBV_id' =>
null,
'FBV_label' =>
null,
'FBV_label_content' =>
null,
'FBV_interests' =>
null));
761 $params[
'subLabelTranslate'] = isset($params[
'subLabelTranslate']) ? (boolean) $params[
'subLabelTranslate'] :
true;
762 foreach ($params as $key => $value) {
767 $smarty->assign(
'FBV_' . $key, $value);
769 case 'label': $smarty->assign(
'FBV_label_content', $this->
_smartyFBVSubLabel($params, $smarty));
break;
773 return $smarty->fetch(
'form/interestsInput.tpl');
782 assert(isset($params[
'label']));
786 $smarty->assign(array(
'FBV_suppressId' =>
null,
'FBV_label' =>
null,
'FBV_required' =>
false,
'FBV_uniqId' =>
null,
'FBV_multilingual' =>
false,
'FBV_required' =>
false));
787 foreach ($params as $key => $value) {
789 case 'subLabelTranslate': $smarty->assign(
'FBV_subLabelTranslate', $value);
break;
795 $smarty->assign(
'FBV_' . $key, $value);
801 if (isset($form) && isset($form->errorFields[$params[
'name']])) {
802 $smarty->assign(
'FBV_error',
true);
803 $errors = $form->getErrorsArray();
804 $smarty->assign(
'FBV_subLabelTranslate',
false);
805 $smarty->assign(
'FBV_label', $errors[$params[
'name']]);
807 $smarty->assign(
'FBV_error',
false);
810 $returner = $smarty->fetch(
'form/subLabel.tpl');
824 $fieldId = $params[
'id'];
825 if (isset($form->cssValidation[$fieldId])) {
826 $params[
'validation'] = implode(
' ', $form->cssValidation[$fieldId]);
839 foreach ($params as $key => $value) {
843 case 'SMALL': $classes[] =
'pkp_helpers_quarter';
break;
844 case 'MEDIUM': $classes[] =
'pkp_helpers_half';
break;
845 CASE
'LARGE': $classes[] =
'pkp_helpers_threeQuarter';
break;
849 if($value) $classes[] =
'inline';
break;
852 if(!empty($classes)) {
853 return implode(
' ', $classes);
865 if (isset($params) && !empty($params)) {
866 if (isset($params[
'key'])) {
867 $params[
'label'] = __($params[
'key'], $params);
871 if (isset($form) && isset($form->errorFields[$params[
'name']])) {
872 $smarty->assign(
'FBV_class',
'error ' . $params[
'class']);
874 $smarty->assign(
'FBV_class', $params[
'class']);
877 $smarty->assign(array(
'FBV_suppressId' =>
null,
'FBV_label' =>
null,
'FBV_required' =>
false,
'FBV_disabled' =>
false,
'FBV_name' =>
null));
878 foreach ($params as $key => $value) {
885 $smarty->assign(
'FBV_' . $key, $value);
890 $returner = $smarty->fetch(
'form/fieldLabel.tpl');