Open Preprint Systems  3.3.0
FormBuilderVocabulary.inc.php
1 <?php
2 
59  var $_form;
60 
63 
68  function __construct($form = null) {
69  $this->_fbvStyles = array(
70  'size' => array('SMALL' => 'SMALL', 'MEDIUM' => 'MEDIUM', 'LARGE' => 'LARGE'),
71  'height' => array('SHORT' => 'SHORT', 'MEDIUM' => 'MEDIUM', 'TALL' => 'TALL')
72  );
73  }
74 
75 
76  //
77  // Setters and Getters
78  //
83  function setForm($form) {
84  if ($form) assert(is_a($form, 'Form'));
85  $this->_form = $form;
86  }
87 
92  function getForm() {
93  return $this->_form;
94  }
95 
100  function getStyles() {
101  return $this->_fbvStyles;
102  }
103 
104 
105  //
106  // Public Methods
107  //
115  function smartyFBVFormArea($params, $content, $smarty, &$repeat) {
116  assert(isset($params['id']));
117  if (!$repeat) {
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,
124  ));
125  return $smarty->fetch('form/formArea.tpl');
126  }
127  return '';
128  }
129 
137  function smartyFBVFormSection($params, $content, $smarty, &$repeat) {
138  $form = $this->getForm();
139  if (!$repeat) {
140  $smarty->assign('FBV_required', isset($params['required']) ? $params['required'] : false);
141  $smarty->assign('FBV_id', isset($params['id']) ? $params['id'] : null);
142 
143  // Since $content will contain input fields that may have unique Ids appended, the 'for'
144  // attribute on the form section's label needs to include this. Look for the assigned
145  // form element within $content and extract the full id. Default to the passed in param
146  // otherwise.
147  if (!empty($params['for'])) {
148  if (preg_match('/id="(' . preg_quote($params['for'], '/') . '\-[^"]+)"/', $content, $matches)) {
149  $smarty->assign('FBV_labelFor', $matches[1]);
150  } else {
151  $smarty->assign('FBV_labelFor', $params['for']);
152  }
153  } else {
154  $smarty->assign('FBV_labelFor', null);
155  }
156  $smarty->assign(array(
157  'FBV_title' => isset($params['title']) ? $params['title'] : null,
158  'FBV_label' => isset($params['label']) ? $params['label'] : null,
159  'FBV_layoutInfo' => $this->_getLayoutInfo($params),
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,
163  ));
164 
165  $class = $params['class'];
166 
167  // Check if we are using the Form class and if there are any errors
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);
173 
174  // If we are displaying checkboxes or radio options, we'll need to use a
175  // list to organize our elements -- Otherwise we use divs and spans
176  if (isset($params['list']) && $params['list'] != false) {
177  $smarty->assign('FBV_listSection', true);
178  } else {
179  // Double check that we don't have lists in the content.
180  // This is a kludge but the only way to make sure we've
181  // set the list parameter when we're using lists
182  if (substr(trim($content), 0, 4) == "<li>") {
183  throw new Exception('FBV: list attribute not set on form section containing lists');
184  }
185 
186  $smarty->assign('FBV_listSection', false);
187  }
188 
189  $smarty->assign('FBV_class', $class);
190  $smarty->assign('FBV_layoutColumns', empty($params['layout']) ? false : true);
191 
192  return $smarty->fetch('form/formSection.tpl');
193  } else {
194  if (isset($form)) $form->formSectionErrors = array();
195  }
196  return '';
197  }
198 
205  function smartyFBVFormButtons($params, $smarty) {
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,
218  ));
219  return $smarty->fetch('form/formButtons.tpl');
220  }
221 
227  function smartyFBVElement($params, $smarty, $content = null) {
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');
230 
231  // Set up the element template
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,
236  'FBV_layoutInfo' => $this->_getLayoutInfo($params),
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,
242  ));
243 
244  // Unset these parameters so they don't get assigned twice
245  unset($params['class']);
246 
247  // Find fields that the form class has marked as required and add the 'required' class to them
248  $params = $this->_addClientSideValidation($params);
249  $smarty->assign('FBV_validation', isset($params['validation']) ? $params['validation'] : null);
250 
251  // Set up the specific field's template
252  switch (strtolower_codesafe($params['type'])) {
253  case 'autocomplete':
254  $content = $this->_smartyFBVAutocompleteInput($params, $smarty);
255  break;
256  case 'button':
257  case 'submit':
258  $content = $this->_smartyFBVButton($params, $smarty);
259  break;
260  case 'checkbox':
261  $content = $this->_smartyFBVCheckbox($params, $smarty);
262  unset($params['label']);
263  break;
264  case 'checkboxgroup':
265  $content = $this->_smartyFBVCheckboxGroup($params, $smarty);
266  unset($params['label']);
267  break;
268  case 'email':
269  $content = $this->_smartyFBVTextInput($params, $smarty);
270  break;
271  case 'file':
272  $content = $this->_smartyFBVFileInput($params, $smarty);
273  break;
274  case 'hidden':
275  $content = $this->_smartyFBVHiddenInput($params, $smarty);
276  break;
277  case 'keyword':
278  $content = $this->_smartyFBVKeywordInput($params, $smarty);
279  break;
280  case 'interests':
281  $content = $this->_smartyFBVInterestsInput($params, $smarty);
282  break;
283  case 'radio':
284  $content = $this->_smartyFBVRadioButton($params, $smarty);
285  unset($params['label']);
286  break;
287  case 'search':
288  case 'text':
289  $content = $this->_smartyFBVTextInput($params, $smarty);
290  break;
291  case 'select':
292  $content = $this->_smartyFBVSelect($params, $smarty);
293  break;
294  case 'text':
295  $content = $this->_smartyFBVTextInput($params, $smarty);
296  break;
297  case 'url':
298  $content = $this->_smartyFBVTextInput($params, $smarty);
299  break;
300  case 'textarea':
301  $content = $this->_smartyFBVTextArea($params, $smarty);
302  break;
303  default: assert(false);
304  }
305 
306  unset($params['type']);
307 
308  return $content;
309  }
310 
311  //
312  // Private methods
313  //
314 
321  function _smartyFBVButton($params, $smarty) {
322  // the type of this button. the default value is 'button' (but could be 'submit')
323 
324  $buttonParams = '';
325  $smarty->assign(array('FBV_label' => null, 'FBV_disabled' => false));
326  foreach ($params as $key => $value) {
327  switch ($key) {
328  case 'inline':
329  case 'translate':
330  break;
331  case 'label':
332  case 'type':
333  case 'disabled':
334  $smarty->assign('FBV_' . $key, $value);
335  break;
336  default: $buttonParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
337  }
338  }
339 
340  $smarty->assign('FBV_buttonParams', $buttonParams);
341 
342  return $smarty->fetch('form/button.tpl');
343  }
344 
351  function _smartyFBVAutocompleteInput($params, $smarty) {
352  assert(isset($params['autocompleteUrl']) && isset($params['id']));
353 
354  // This id will be used for the hidden input that should be read by the Form.
355  $autocompleteId = $params['id'];
356 
357  // We then override the id parameter to differentiate it from the hidden element
358  // and make sure that the text input is not read by the Form class.
359  $params['id'] = $autocompleteId . '_input';
360 
361  // We set this now, so that we unset the param for the text 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,
366  ));
367 
368  unset($params['autocompleteUrl'], $params['autocompleteValue']);
369 
370  $smarty->assign(array(
371  'FBV_textInput' => $this->_smartyFBVTextInput($params, $smarty),
372  'FBV_id' => $autocompleteId,
373  ));
374 
375  return $smarty->fetch('form/autocompleteInput.tpl');
376  }
377 
384  function _smartyFBVTextInput($params, $smarty) {
385  $params['name'] = isset($params['name']) ? $params['name'] : $params['id'];
386  $params['subLabelTranslate'] = isset($params['subLabelTranslate']) ? (boolean) $params['subLabelTranslate'] : true;
387  $params['uniqId'] = uniqid();
388 
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,
397  'FBV_name' => null,
398  'FBV_value' => null,
399  'FBV_label_content' => null,
400  'FBV_uniqId' => null,
401  'FBV_urlValidationErrorMessage' => null,
402  ));
403  foreach ($params as $key => $value) {
404  switch ($key) {
405  case 'label': $smarty->assign('FBV_label_content', $this->_smartyFBVSubLabel($params, $smarty)); break;
406  case 'type': break;
407  case 'size': break;
408  case 'inline': break;
409  case 'subLabelTranslate': break;
410  case 'urlValidationErrorMsg':
411  if ($params['type'] === 'url') {
412  $smarty->assign('FBV_urlValidationErrorMessage', __($value));
413  }
414  break;
415  case 'placeholder': $textInputParams .= 'placeholder="' . htmlspecialchars(__($value), ENT_QUOTES, LOCALE_ENCODING) . '" '; break;
416  case 'disabled':
417  case 'readonly':
418  case 'multilingual':
419  case 'name':
420  case 'id':
421  case 'value':
422  case 'uniqId':
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). '" ';
426  }
427  }
428 
429  $smarty->assign('FBV_textInputParams', $textInputParams);
430 
431  return $smarty->fetch('form/textInput.tpl');
432  }
433 
445  function _smartyFBVTextArea($params, $smarty) {
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();
451 
452  $textAreaParams = '';
453  $smarty->assign(array(
454  'FBV_label_content' => null,
455  'FBV_disabled' => false,
456  'FBV_readonly' => false,
457  'FBV_multilingual' => false,
458  'FBV_value' => null,
459  'FBV_height' => null,
460  'FBV_rich' => false,
461  'FBV_variables' => null,
462  'FBV_variablesType' => null,
463  ));
464  foreach ($params as $key => $value) {
465  switch ($key) {
466  case 'name':
467  case 'value':
468  case 'rows':
469  case 'cols':
470  case 'rich':
471  case 'disabled':
472  case 'readonly':
473  case 'multilingual':
474  case 'uniqId':
475  case 'variablesType':
476  case 'variables':
477  case 'required':
478  $smarty->assign('FBV_' . $key, $value);
479  break;
480  case 'label': $smarty->assign('FBV_label_content', $this->_smartyFBVSubLabel($params, $smarty)); break;
481  case 'type': break;
482  case 'size': break;
483  case 'inline': break;
484  case 'subLabelTranslate': break;
485  case 'height':
486  $styles = $this->getStyles();
487  switch($value) {
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;
491  default:
492  throw new Exception('FBV: invalid height specified for textarea.');
493  }
494  break;
495  case 'id': break; // if we don't do this, the textarea ends up with two id attributes because FBV_id is also set.
496  default: $textAreaParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
497  }
498  }
499 
500  $smarty->assign('FBV_textAreaParams', $textAreaParams);
501 
502  return $smarty->fetch('form/textarea.tpl');
503  }
504 
511  function _smartyFBVHiddenInput($params, $smarty) {
512  $params['name'] = isset($params['name']) ? $params['name'] : $params['id'];
513 
514  $hiddenInputParams = '';
515  $smarty->assign(array('FBV_id' => null, 'FBV_value' => null));
516  foreach ($params as $key => $value) {
517  switch ($key) {
518  case 'name':
519  case 'id':
520  case 'value':
521  $smarty->assign('FBV_' . $key, $value);
522  break;
523  case 'label': break;
524  case 'type': break;
525  default: $hiddenInputParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
526  }
527  }
528 
529  $smarty->assign('FBV_hiddenInputParams', $hiddenInputParams);
530 
531  return $smarty->fetch('form/hiddenInput.tpl');
532  }
533 
541  function _smartyFBVSelect($params, $smarty) {
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;
545 
546  $selectParams = '';
547 
548  $smarty->assign(array(
549  'FBV_label' => null,
550  'FBV_from' => null,
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,
557  ));
558  foreach ($params as $key => $value) {
559  switch ($key) {
560  case 'from':
561  case 'selected':
562  case 'translate':
563  case 'defaultValue':
564  case 'defaultLabel':
565  case 'disabled':
566  case 'required':
567  $smarty->assign('FBV_' . $key, $value);
568  break;
569  case 'type':
570  case 'inline':
571  case 'size':
572  break;
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) . '" ';
576  }
577  }
578 
579  $smarty->assign('FBV_selectParams', $selectParams);
580 
581  return $smarty->fetch('form/select.tpl');
582  }
583 
591  function _smartyFBVCheckboxGroup($params, $smarty) {
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 = '';
596 
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) {
599  switch ($key) {
600  case 'from':
601  case 'selected':
602  case 'defaultValue':
603  case 'defaultLabel':
604  case 'translate':
605  case 'name':
606  case 'validation':
607  case 'disabled':
608  $smarty->assign('FBV_' . $key, $value);
609  break;
610  case 'type': break;
611  case 'inline': break;
612  case 'subLabelTranslate': break;
613  default: $checkboxParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
614  }
615  }
616 
617  $smarty->assign('FBV_checkboxParams', $checkboxParams);
618 
619  return $smarty->fetch('form/checkboxGroup.tpl');
620  }
621 
628  function _smartyFBVCheckbox($params, $smarty) {
629  $params['name'] = isset($params['name']) ? $params['name'] : $params['id'];
630  $params['translate'] = isset($params['translate']) ? (boolean)$params['translate'] : true;
631 
632  $checkboxParams = '';
633  $smarty->assign(array('FBV_id' => null, 'FBV_label' => null, 'FBV_checked' => false, 'FBV_disabled' => false));
634  foreach ($params as $key => $value) {
635  switch ($key) {
636  case 'type': break;
637  case 'id':
638  case 'label':
639  case 'translate':
640  case 'checked':
641  case 'disabled':
642  $smarty->assign('FBV_' . $key, $value);
643  break;
644  default: $checkboxParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
645  }
646  }
647 
648  $smarty->assign('FBV_checkboxParams', $checkboxParams);
649 
650  return $smarty->fetch('form/checkbox.tpl');
651  }
652 
659  function _smartyFBVRadioButton($params, $smarty) {
660  $params['name'] = isset($params['name']) ? $params['name'] : $params['id'];
661  $params['translate'] = isset($params['translate']) ? $params['translate'] : true;
662 
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.');
665  }
666 
667  $radioParams = '';
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) {
670  switch ($key) {
671  case 'type': break;
672  case 'id':
673  case 'label':
674  case 'translate':
675  case 'checked':
676  case 'disabled':
677  case 'content':
678  $smarty->assign('FBV_' . $key, $value);
679  break;
680  default: $radioParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
681  }
682  }
683 
684  $smarty->assign('FBV_radioParams', $radioParams);
685 
686  return $smarty->fetch('form/radioButton.tpl');
687  }
688 
695  function _smartyFBVFileInput($params, $smarty) {
696  $params['name'] = isset($params['name']) ? $params['name'] : $params['id'];
697  $params['translate'] = isset($params['translate']) ? $params['translate'] : true;
698 
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) {
701  switch ($key) {
702  case 'type': break;
703  case 'id':
704  case 'submit':
705  case 'name':
706  case 'disabled':
707  $smarty->assign('FBV_' . $key, $value);
708  break;
709  case 'label': $smarty->assign('FBV_label_content', $this->_smartyFBVSubLabel($params, $smarty)); break;
710  }
711  }
712 
713  return $smarty->fetch('form/fileInput.tpl');
714  }
715 
722  function _smartyFBVKeywordInput($params, $smarty) {
723  $params['uniqId'] = uniqid();
724 
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) {
729  switch ($key) {
730  case 'type': break;
731  case 'id':
732  case 'uniqId':
733  case 'disabled':
734  case 'multilingual':
735  $smarty->assign('FBV_' . $key, $value);
736  break;
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(
741  $emptyFormLocaleMap,
742  $value
743  )
744  ); break;
745  case 'current': $smarty->assign('FBV_currentKeywords', $value); break;
746  case 'sourceUrl': $smarty->assign('FBV_sourceUrl', $value); break;
747  }
748  }
749 
750  return $smarty->fetch('form/keywordInput.tpl');
751  }
752 
759  function _smartyFBVInterestsInput($params, $smarty) {
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) {
763  switch ($key) {
764  case 'type': break;
765  case 'id':
766  case 'interests':
767  $smarty->assign('FBV_' . $key, $value);
768  break;
769  case 'label': $smarty->assign('FBV_label_content', $this->_smartyFBVSubLabel($params, $smarty)); break;
770  }
771  }
772 
773  return $smarty->fetch('form/interestsInput.tpl');
774  }
775 
781  function _smartyFBVSubLabel($params, $smarty) {
782  assert(isset($params['label']));
783 
784  $returner = '';
785 
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) {
788  switch ($key) {
789  case 'subLabelTranslate': $smarty->assign('FBV_subLabelTranslate', $value); break;
790  case 'label':
791  case 'uniqId':
792  case 'multilingual':
793  case 'suppressId':
794  case 'required':
795  $smarty->assign('FBV_' . $key, $value);
796  break;
797  }
798  }
799 
800  $form = $this->getForm();
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']]);
806  } else {
807  $smarty->assign('FBV_error', false);
808  }
809 
810  $returner = $smarty->fetch('form/subLabel.tpl');
811 
812  return $returner;
813  }
814 
820  function _addClientSideValidation($params) {
821  $form = $this->getForm();
822  if (isset($form)) {
823  // Assign the appropriate class name to the element for client-side validation
824  $fieldId = $params['id'];
825  if (isset($form->cssValidation[$fieldId])) {
826  $params['validation'] = implode(' ', $form->cssValidation[$fieldId]);
827  }
828  }
829  return $params;
830  }
831 
837  function _getLayoutInfo($params) {
838  $classes = array();
839  foreach ($params as $key => $value) {
840  switch ($key) {
841  case 'size':
842  switch($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;
846  }
847  break;
848  case 'inline':
849  if($value) $classes[] = 'inline'; break;
850  }
851  }
852  if(!empty($classes)) {
853  return implode(' ', $classes);
854  } else return null;
855  }
856 
857 
863  function smartyFieldLabel($params, $smarty) {
864  $returner = '';
865  if (isset($params) && !empty($params)) {
866  if (isset($params['key'])) {
867  $params['label'] = __($params['key'], $params);
868  }
869 
870  $form = $this->getForm();
871  if (isset($form) && isset($form->errorFields[$params['name']])) {
872  $smarty->assign('FBV_class', 'error ' . $params['class']);
873  } else {
874  $smarty->assign('FBV_class', $params['class']);
875  }
876 
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) {
879  switch ($key) {
880  case 'label':
881  case 'required':
882  case 'suppressId':
883  case 'disabled':
884  case 'name':
885  $smarty->assign('FBV_' . $key, $value);
886  break;
887  }
888  }
889 
890  $returner = $smarty->fetch('form/fieldLabel.tpl');
891  }
892  return $returner;
893  }
894 }
895 
896 
FormBuilderVocabulary\_smartyFBVCheckbox
_smartyFBVCheckbox($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:628
FormBuilderVocabulary\getStyles
getStyles()
Definition: FormBuilderVocabulary.inc.php:100
FormBuilderVocabulary\_smartyFBVHiddenInput
_smartyFBVHiddenInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:511
FormBuilderVocabulary\$_form
$_form
Definition: FormBuilderVocabulary.inc.php:59
FormBuilderVocabulary\setForm
setForm($form)
Definition: FormBuilderVocabulary.inc.php:83
FormBuilderVocabulary\__construct
__construct($form=null)
Definition: FormBuilderVocabulary.inc.php:68
FormBuilderVocabulary\smartyFBVElement
smartyFBVElement($params, $smarty, $content=null)
Definition: FormBuilderVocabulary.inc.php:227
FormBuilderVocabulary\_smartyFBVCheckboxGroup
_smartyFBVCheckboxGroup($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:591
FormBuilderVocabulary\_smartyFBVTextArea
_smartyFBVTextArea($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:445
FormBuilderVocabulary\_smartyFBVSelect
_smartyFBVSelect($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:541
FormBuilderVocabulary\_smartyFBVTextInput
_smartyFBVTextInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:384
FormBuilderVocabulary\smartyFBVFormArea
smartyFBVFormArea($params, $content, $smarty, &$repeat)
Definition: FormBuilderVocabulary.inc.php:115
FormBuilderVocabulary\smartyFBVFormSection
smartyFBVFormSection($params, $content, $smarty, &$repeat)
Definition: FormBuilderVocabulary.inc.php:137
FormBuilderVocabulary\_getLayoutInfo
_getLayoutInfo($params)
Definition: FormBuilderVocabulary.inc.php:837
FormBuilderVocabulary\_smartyFBVInterestsInput
_smartyFBVInterestsInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:759
FormBuilderVocabulary\smartyFieldLabel
smartyFieldLabel($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:863
FormBuilderVocabulary\_smartyFBVAutocompleteInput
_smartyFBVAutocompleteInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:351
FormBuilderVocabulary
Definition: FormBuilderVocabulary.inc.php:57
strtolower_codesafe
strtolower_codesafe($str)
Definition: functions.inc.php:280
FormBuilderVocabulary\_smartyFBVFileInput
_smartyFBVFileInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:695
FormBuilderVocabulary\_smartyFBVRadioButton
_smartyFBVRadioButton($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:659
FormBuilderVocabulary\smartyFBVFormButtons
smartyFBVFormButtons($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:205
FormBuilderVocabulary\_smartyFBVSubLabel
_smartyFBVSubLabel($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:781
FormBuilderVocabulary\$_fbvStyles
$_fbvStyles
Definition: FormBuilderVocabulary.inc.php:62
FormBuilderVocabulary\_addClientSideValidation
_addClientSideValidation($params)
Definition: FormBuilderVocabulary.inc.php:820
FormBuilderVocabulary\_smartyFBVKeywordInput
_smartyFBVKeywordInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:722
FormBuilderVocabulary\_smartyFBVButton
_smartyFBVButton($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:321
FormBuilderVocabulary\getForm
getForm()
Definition: FormBuilderVocabulary.inc.php:92