Open Journal 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 'file':
269  $content = $this->_smartyFBVFileInput($params, $smarty);
270  break;
271  case 'hidden':
272  $content = $this->_smartyFBVHiddenInput($params, $smarty);
273  break;
274  case 'keyword':
275  $content = $this->_smartyFBVKeywordInput($params, $smarty);
276  break;
277  case 'interests':
278  $content = $this->_smartyFBVInterestsInput($params, $smarty);
279  break;
280  case 'radio':
281  $content = $this->_smartyFBVRadioButton($params, $smarty);
282  unset($params['label']);
283  break;
284  case 'email':
285  case 'search':
286  case 'tel':
287  case 'text':
288  case 'url':
289  $content = $this->_smartyFBVTextInput($params, $smarty);
290  break;
291  case 'select':
292  $content = $this->_smartyFBVSelect($params, $smarty);
293  break;
294  case 'textarea':
295  $content = $this->_smartyFBVTextArea($params, $smarty);
296  break;
297  default: assert(false);
298  }
299 
300  unset($params['type']);
301 
302  return $content;
303  }
304 
305  //
306  // Private methods
307  //
308 
315  function _smartyFBVButton($params, $smarty) {
316  // the type of this button. the default value is 'button' (but could be 'submit')
317 
318  $buttonParams = '';
319  $smarty->assign(array('FBV_label' => null, 'FBV_disabled' => false));
320  foreach ($params as $key => $value) {
321  switch ($key) {
322  case 'inline':
323  case 'translate':
324  break;
325  case 'label':
326  case 'type':
327  case 'disabled':
328  $smarty->assign('FBV_' . $key, $value);
329  break;
330  default: $buttonParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
331  }
332  }
333 
334  $smarty->assign('FBV_buttonParams', $buttonParams);
335 
336  return $smarty->fetch('form/button.tpl');
337  }
338 
345  function _smartyFBVAutocompleteInput($params, $smarty) {
346  assert(isset($params['autocompleteUrl']) && isset($params['id']));
347 
348  // This id will be used for the hidden input that should be read by the Form.
349  $autocompleteId = $params['id'];
350 
351  // We then override the id parameter to differentiate it from the hidden element
352  // and make sure that the text input is not read by the Form class.
353  $params['id'] = $autocompleteId . '_input';
354 
355  // We set this now, so that we unset the param for the text 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,
360  ));
361 
362  unset($params['autocompleteUrl'], $params['autocompleteValue']);
363 
364  $smarty->assign(array(
365  'FBV_textInput' => $this->_smartyFBVTextInput($params, $smarty),
366  'FBV_id' => $autocompleteId,
367  ));
368 
369  return $smarty->fetch('form/autocompleteInput.tpl');
370  }
371 
378  function _smartyFBVTextInput($params, $smarty) {
379  $params['name'] = isset($params['name']) ? $params['name'] : $params['id'];
380  $params['subLabelTranslate'] = isset($params['subLabelTranslate']) ? (boolean) $params['subLabelTranslate'] : true;
381  $params['uniqId'] = uniqid();
382 
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,
393  'FBV_name' => null,
394  'FBV_value' => null,
395  'FBV_label_content' => null,
396  'FBV_uniqId' => null,
397  'FBV_urlValidationErrorMessage' => null,
398  ));
399  foreach ($params as $key => $value) {
400  switch ($key) {
401  case 'label':
402  $smarty->assign('FBV_label_content', $this->_smartyFBVSubLabel($params, $smarty));
403  break;
404  case 'type':
405  case 'size':
406  case 'inline':
407  case 'subLabelTranslate':
408  break;
409  case 'urlValidationErrorMsg':
410  if ($params['type'] === 'url') {
411  $smarty->assign('FBV_urlValidationErrorMessage', __($value));
412  }
413  break;
414  case 'placeholder':
415  $textInputParams .= 'placeholder="' . htmlspecialchars(__($value), ENT_QUOTES, LOCALE_ENCODING) . '" ';
416  break;
417  case 'disabled':
418  case 'readonly':
419  case 'multilingual':
420  case 'name':
421  case 'id':
422  case 'value':
423  case 'uniqId':
424  $smarty->assign('FBV_' . $key, $value); break;
425  case 'required':
426  if ($value) $textInputParams .= 'required="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '"';
427  break;
428  default:
429  $textInputParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING). '" ';
430  }
431  }
432 
433  $smarty->assign('FBV_textInputParams', $textInputParams);
434 
435  return $smarty->fetch('form/textInput.tpl');
436  }
437 
449  function _smartyFBVTextArea($params, $smarty) {
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();
455 
456  $textAreaParams = '';
457  $smarty->assign(array(
458  'FBV_label_content' => null,
459  'FBV_disabled' => false,
460  'FBV_readonly' => false,
461  'FBV_multilingual' => false,
462  'FBV_value' => null,
463  'FBV_height' => null,
464  'FBV_rich' => false,
465  'FBV_variables' => null,
466  'FBV_variablesType' => null,
467  ));
468  foreach ($params as $key => $value) {
469  switch ($key) {
470  case 'name':
471  case 'value':
472  case 'rows':
473  case 'cols':
474  case 'rich':
475  case 'disabled':
476  case 'readonly':
477  case 'multilingual':
478  case 'uniqId':
479  case 'variablesType':
480  case 'variables':
481  case 'required':
482  $smarty->assign('FBV_' . $key, $value);
483  break;
484  case 'label': $smarty->assign('FBV_label_content', $this->_smartyFBVSubLabel($params, $smarty)); break;
485  case 'type': break;
486  case 'size': break;
487  case 'inline': break;
488  case 'subLabelTranslate': break;
489  case 'height':
490  $styles = $this->getStyles();
491  switch($value) {
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;
495  default:
496  throw new Exception('FBV: invalid height specified for textarea.');
497  }
498  break;
499  case 'id': break; // if we don't do this, the textarea ends up with two id attributes because FBV_id is also set.
500  default: $textAreaParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
501  }
502  }
503 
504  $smarty->assign('FBV_textAreaParams', $textAreaParams);
505 
506  return $smarty->fetch('form/textarea.tpl');
507  }
508 
515  function _smartyFBVHiddenInput($params, $smarty) {
516  $params['name'] = isset($params['name']) ? $params['name'] : $params['id'];
517 
518  $hiddenInputParams = '';
519  $smarty->assign(array('FBV_id' => null, 'FBV_value' => null));
520  foreach ($params as $key => $value) {
521  switch ($key) {
522  case 'name':
523  case 'id':
524  case 'value':
525  $smarty->assign('FBV_' . $key, $value);
526  break;
527  case 'label': break;
528  case 'type': break;
529  default: $hiddenInputParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
530  }
531  }
532 
533  $smarty->assign('FBV_hiddenInputParams', $hiddenInputParams);
534 
535  return $smarty->fetch('form/hiddenInput.tpl');
536  }
537 
545  function _smartyFBVSelect($params, $smarty) {
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;
549 
550  $selectParams = '';
551 
552  $smarty->assign(array(
553  'FBV_label' => null,
554  'FBV_from' => null,
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,
561  ));
562  foreach ($params as $key => $value) {
563  switch ($key) {
564  case 'from':
565  case 'selected':
566  case 'translate':
567  case 'defaultValue':
568  case 'defaultLabel':
569  case 'disabled':
570  case 'required':
571  $smarty->assign('FBV_' . $key, $value);
572  break;
573  case 'type':
574  case 'inline':
575  case 'size':
576  break;
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) . '" ';
580  }
581  }
582 
583  $smarty->assign('FBV_selectParams', $selectParams);
584 
585  return $smarty->fetch('form/select.tpl');
586  }
587 
595  function _smartyFBVCheckboxGroup($params, $smarty) {
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 = '';
600 
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) {
603  switch ($key) {
604  case 'from':
605  case 'selected':
606  case 'defaultValue':
607  case 'defaultLabel':
608  case 'translate':
609  case 'name':
610  case 'validation':
611  case 'disabled':
612  $smarty->assign('FBV_' . $key, $value);
613  break;
614  case 'type': break;
615  case 'inline': break;
616  case 'subLabelTranslate': break;
617  default: $checkboxParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
618  }
619  }
620 
621  $smarty->assign('FBV_checkboxParams', $checkboxParams);
622 
623  return $smarty->fetch('form/checkboxGroup.tpl');
624  }
625 
632  function _smartyFBVCheckbox($params, $smarty) {
633  $params['name'] = isset($params['name']) ? $params['name'] : $params['id'];
634  $params['translate'] = isset($params['translate']) ? (boolean)$params['translate'] : true;
635 
636  $checkboxParams = '';
637  $smarty->assign(array('FBV_id' => null, 'FBV_label' => null, 'FBV_checked' => false, 'FBV_disabled' => false));
638  foreach ($params as $key => $value) {
639  switch ($key) {
640  case 'type': break;
641  case 'id':
642  case 'label':
643  case 'translate':
644  case 'checked':
645  case 'disabled':
646  $smarty->assign('FBV_' . $key, $value);
647  break;
648  default: $checkboxParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
649  }
650  }
651 
652  $smarty->assign('FBV_checkboxParams', $checkboxParams);
653 
654  return $smarty->fetch('form/checkbox.tpl');
655  }
656 
663  function _smartyFBVRadioButton($params, $smarty) {
664  $params['name'] = isset($params['name']) ? $params['name'] : $params['id'];
665  $params['translate'] = isset($params['translate']) ? $params['translate'] : true;
666 
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.');
669  }
670 
671  $radioParams = '';
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) {
674  switch ($key) {
675  case 'type': break;
676  case 'id':
677  case 'label':
678  case 'translate':
679  case 'checked':
680  case 'disabled':
681  case 'content':
682  $smarty->assign('FBV_' . $key, $value);
683  break;
684  default: $radioParams .= htmlspecialchars($key, ENT_QUOTES, LOCALE_ENCODING) . '="' . htmlspecialchars($value, ENT_QUOTES, LOCALE_ENCODING) . '" ';
685  }
686  }
687 
688  $smarty->assign('FBV_radioParams', $radioParams);
689 
690  return $smarty->fetch('form/radioButton.tpl');
691  }
692 
699  function _smartyFBVFileInput($params, $smarty) {
700  $params['name'] = isset($params['name']) ? $params['name'] : $params['id'];
701  $params['translate'] = isset($params['translate']) ? $params['translate'] : true;
702 
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) {
705  switch ($key) {
706  case 'type': break;
707  case 'id':
708  case 'submit':
709  case 'name':
710  case 'disabled':
711  $smarty->assign('FBV_' . $key, $value);
712  break;
713  case 'label': $smarty->assign('FBV_label_content', $this->_smartyFBVSubLabel($params, $smarty)); break;
714  }
715  }
716 
717  return $smarty->fetch('form/fileInput.tpl');
718  }
719 
726  function _smartyFBVKeywordInput($params, $smarty) {
727  $params['uniqId'] = uniqid();
728 
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) {
733  switch ($key) {
734  case 'type': break;
735  case 'id':
736  case 'uniqId':
737  case 'disabled':
738  case 'multilingual':
739  $smarty->assign('FBV_' . $key, $value);
740  break;
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(
745  $emptyFormLocaleMap,
746  $value
747  )
748  ); break;
749  case 'current': $smarty->assign('FBV_currentKeywords', $value); break;
750  case 'sourceUrl': $smarty->assign('FBV_sourceUrl', $value); break;
751  }
752  }
753 
754  return $smarty->fetch('form/keywordInput.tpl');
755  }
756 
763  function _smartyFBVInterestsInput($params, $smarty) {
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) {
767  switch ($key) {
768  case 'type': break;
769  case 'id':
770  case 'interests':
771  $smarty->assign('FBV_' . $key, $value);
772  break;
773  case 'label': $smarty->assign('FBV_label_content', $this->_smartyFBVSubLabel($params, $smarty)); break;
774  }
775  }
776 
777  return $smarty->fetch('form/interestsInput.tpl');
778  }
779 
785  function _smartyFBVSubLabel($params, $smarty) {
786  assert(isset($params['label']));
787 
788  $returner = '';
789 
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) {
792  switch ($key) {
793  case 'subLabelTranslate': $smarty->assign('FBV_subLabelTranslate', $value); break;
794  case 'label':
795  case 'uniqId':
796  case 'multilingual':
797  case 'suppressId':
798  case 'required':
799  $smarty->assign('FBV_' . $key, $value);
800  break;
801  }
802  }
803 
804  $form = $this->getForm();
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']]);
810  } else {
811  $smarty->assign('FBV_error', false);
812  }
813 
814  $returner = $smarty->fetch('form/subLabel.tpl');
815 
816  return $returner;
817  }
818 
824  function _addClientSideValidation($params) {
825  $form = $this->getForm();
826  if (isset($form)) {
827  // Assign the appropriate class name to the element for client-side validation
828  $fieldId = $params['id'];
829  if (isset($form->cssValidation[$fieldId])) {
830  $params['validation'] = implode(' ', $form->cssValidation[$fieldId]);
831  }
832  }
833  return $params;
834  }
835 
841  function _getLayoutInfo($params) {
842  $classes = array();
843  foreach ($params as $key => $value) {
844  switch ($key) {
845  case 'size':
846  switch($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;
850  }
851  break;
852  case 'inline':
853  if($value) $classes[] = 'inline'; break;
854  }
855  }
856  if(!empty($classes)) {
857  return implode(' ', $classes);
858  } else return null;
859  }
860 
861 
867  function smartyFieldLabel($params, $smarty) {
868  $returner = '';
869  if (isset($params) && !empty($params)) {
870  if (isset($params['key'])) {
871  $params['label'] = __($params['key'], $params);
872  }
873 
874  $form = $this->getForm();
875  if (isset($form) && isset($form->errorFields[$params['name']])) {
876  $smarty->assign('FBV_class', 'error ' . $params['class']);
877  } else {
878  $smarty->assign('FBV_class', $params['class']);
879  }
880 
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) {
883  switch ($key) {
884  case 'label':
885  case 'required':
886  case 'suppressId':
887  case 'disabled':
888  case 'name':
889  $smarty->assign('FBV_' . $key, $value);
890  break;
891  }
892  }
893 
894  $returner = $smarty->fetch('form/fieldLabel.tpl');
895  }
896  return $returner;
897  }
898 }
899 
900 
FormBuilderVocabulary\_smartyFBVCheckbox
_smartyFBVCheckbox($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:632
FormBuilderVocabulary\getStyles
getStyles()
Definition: FormBuilderVocabulary.inc.php:100
FormBuilderVocabulary\_smartyFBVHiddenInput
_smartyFBVHiddenInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:515
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:595
FormBuilderVocabulary\_smartyFBVTextArea
_smartyFBVTextArea($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:449
FormBuilderVocabulary\_smartyFBVSelect
_smartyFBVSelect($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:545
FormBuilderVocabulary\_smartyFBVTextInput
_smartyFBVTextInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:378
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:841
FormBuilderVocabulary\_smartyFBVInterestsInput
_smartyFBVInterestsInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:763
FormBuilderVocabulary\smartyFieldLabel
smartyFieldLabel($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:867
FormBuilderVocabulary\_smartyFBVAutocompleteInput
_smartyFBVAutocompleteInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:345
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:699
FormBuilderVocabulary\_smartyFBVRadioButton
_smartyFBVRadioButton($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:663
FormBuilderVocabulary\smartyFBVFormButtons
smartyFBVFormButtons($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:205
FormBuilderVocabulary\_smartyFBVSubLabel
_smartyFBVSubLabel($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:785
FormBuilderVocabulary\$_fbvStyles
$_fbvStyles
Definition: FormBuilderVocabulary.inc.php:62
FormBuilderVocabulary\_addClientSideValidation
_addClientSideValidation($params)
Definition: FormBuilderVocabulary.inc.php:824
FormBuilderVocabulary\_smartyFBVKeywordInput
_smartyFBVKeywordInput($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:726
FormBuilderVocabulary\_smartyFBVButton
_smartyFBVButton($params, $smarty)
Definition: FormBuilderVocabulary.inc.php:315
FormBuilderVocabulary\getForm
getForm()
Definition: FormBuilderVocabulary.inc.php:92