PageRenderTime 45ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/framework/vendor/smarty2/plugins/function.input.php

http://zoop.googlecode.com/
PHP | 91 lines | 78 code | 9 blank | 4 comment | 15 complexity | 1feba7c8cdb32d0be3136d2ed7d18035 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1
  1. <?php
  2. function smarty_function_input($params, &$smarty)
  3. {
  4. $type = isset($params['type']) ? $params['type'] : 'text';
  5. $valueAtt = isset($params['value']) ? $params['value'] : '';
  6. // handle the data bindings
  7. if(isset($params['data_object']))
  8. {
  9. if(!isset($params['data_field']))
  10. trigger_error("gui:input: if you specifiy a data object you must also specify a data field");
  11. $object = $params['data_object'];
  12. $field = $params['data_field'];
  13. if(!isset($params['append']) || $params['append'] == false)
  14. {
  15. if(!isset($smarty->zoop->form))
  16. trigger_error("gui:input: if you specifiy a data object you must first use the 'init_form' tag");
  17. $name = $smarty->zoop->form->addBinding(get_class($object), $object->getId(), $field);
  18. }
  19. else
  20. {
  21. $binding = new FormBinding(get_class($object), $object->getId(), $field);
  22. Form::appendBindings(array($binding));
  23. $name = $binding->getName();
  24. }
  25. if(isset($params['default']) && ($object->$field === '' || $object->$field === NULL))
  26. $value = $params['default'];
  27. else
  28. $value = $object->$field;
  29. $namePart = ' name="' . $name . '"';
  30. if($type == 'radio')
  31. $valuePart = ' value="' . $valueAtt . '"';
  32. else
  33. $valuePart = ' value="' . $value . '"';
  34. }
  35. else
  36. {
  37. $value = $valueAtt;
  38. $namePart = isset($params['name']) ? ' name="' . $params['name'] . '"' : '';
  39. $valuePart = isset($params['value']) ? ' value="' . $params['value'] . '"' : '';
  40. }
  41. // pass on anything else they put in
  42. $extraFields = '';
  43. $extraMap = array();
  44. foreach($params as $paramName => $paramValue)
  45. {
  46. if(in_array($paramName, array('type', 'name', 'type', 'value', 'default', 'data_object', 'data_field', 'append')))
  47. continue;
  48. $extraMap[$paramName] = $paramValue;
  49. $extraFields .= ' ' . $paramName . '="' . $paramValue . '"';
  50. }
  51. switch($type)
  52. {
  53. case 'text':
  54. case 'password':
  55. case 'checkbox':
  56. case 'submit':
  57. return '<input type="' . $type . '"' . " $namePart $valuePart $extraFields>";
  58. break;
  59. case 'radio':
  60. // var_dump($value);
  61. // var_dump($valueAtt);
  62. $checked = $valueAtt == $value ? ' checked' : '';
  63. return '<input type="' . $type . '"' . " $namePart $valuePart $extraFields $checked>";
  64. break;
  65. case 'textarea':
  66. $return = '<textarea name="' . $name . '" ' . $extraFields . '>';
  67. $return .= $value;
  68. $return .= '</textarea>';
  69. return $return;
  70. break;
  71. case 'select':
  72. require_once $smarty->_get_plugin_filepath('function','html_options');
  73. $selectParams = $extraMap;
  74. $selectParams['name'] = $name;
  75. $selectParams['selected'] = $value;
  76. return smarty_function_html_options($selectParams, $smarty);
  77. break;
  78. default:
  79. trigger_error("unknown input type: $type");
  80. break;
  81. }
  82. }