libs/plugins/function.html_checkboxes.php Quellcode

function.html_checkboxes.php
gehe zur Dokumentation dieser Datei
1 <?php
46 function smarty_function_html_checkboxes($params, $template)
47 {
48  require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
49 
50  $name = 'checkbox';
51  $values = null;
52  $options = null;
53  $selected = array();
54  $separator = '';
55  $escape = true;
56  $labels = true;
57  $label_ids = false;
58  $output = null;
59 
60  $extra = '';
61 
62  foreach ($params as $_key => $_val) {
63  switch ($_key) {
64  case 'name':
65  case 'separator':
66  $$_key = (string) $_val;
67  break;
68 
69  case 'escape':
70  case 'labels':
71  case 'label_ids':
72  $$_key = (bool) $_val;
73  break;
74 
75  case 'options':
76  $$_key = (array) $_val;
77  break;
78 
79  case 'values':
80  case 'output':
81  $$_key = array_values((array) $_val);
82  break;
83 
84  case 'checked':
85  case 'selected':
86  if (is_array($_val)) {
87  $selected = array();
88  foreach ($_val as $_sel) {
89  if (is_object($_sel)) {
90  if (method_exists($_sel, "__toString")) {
91  $_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
92  } else {
93  trigger_error("html_checkboxes: selected attribute contains an object of class '" . get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
94  continue;
95  }
96  } else {
97  $_sel = smarty_function_escape_special_chars((string) $_sel);
98  }
99  $selected[$_sel] = true;
100  }
101  } elseif (is_object($_val)) {
102  if (method_exists($_val, "__toString")) {
103  $selected = smarty_function_escape_special_chars((string) $_val->__toString());
104  } else {
105  trigger_error("html_checkboxes: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE);
106  }
107  } else {
108  $selected = smarty_function_escape_special_chars((string) $_val);
109  }
110  break;
111 
112  case 'checkboxes':
113  trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING);
114  $options = (array) $_val;
115  break;
116 
117  case 'assign':
118  break;
119 
120  case 'strict':
121  break;
122 
123  case 'disabled':
124  case 'readonly':
125  if (!empty($params['strict'])) {
126  if (!is_scalar($_val)) {
127  trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
128  }
129 
130  if ($_val === true || $_val === $_key) {
131  $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
132  }
133 
134  break;
135  }
136  // omit break; to fall through!
137 
138  default:
139  if (!is_array($_val)) {
140  $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
141  } else {
142  trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
143  }
144  break;
145  }
146  }
147 
148  if (!isset($options) && !isset($values)) {
149  return '';
150  } /* raise error here? */
151 
152  $_html_result = array();
153 
154  if (isset($options)) {
155  foreach ($options as $_key => $_val) {
156  $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
157  }
158  } else {
159  foreach ($values as $_i => $_key) {
160  $_val = isset($output[$_i]) ? $output[$_i] : '';
161  $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
162  }
163  }
164 
165  if (!empty($params['assign'])) {
166  $template->assign($params['assign'], $_html_result);
167  } else {
168  return implode("\n", $_html_result);
169  }
170 }
171 
172 function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape = true)
173 {
174  $_output = '';
175 
176  if (is_object($value)) {
177  if (method_exists($value, "__toString")) {
178  $value = (string) $value->__toString();
179  } else {
180  trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE);
181 
182  return '';
183  }
184  } else {
185  $value = (string) $value;
186  }
187 
188  if (is_object($output)) {
189  if (method_exists($output, "__toString")) {
190  $output = (string) $output->__toString();
191  } else {
192  trigger_error("html_options: output is an object of class '" . get_class($output) . "' without __toString() method", E_USER_NOTICE);
193 
194  return '';
195  }
196  } else {
197  $output = (string) $output;
198  }
199 
200  if ($labels) {
201  if ($label_ids) {
202  $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
203  $_output .= '<label for="' . $_id . '">';
204  } else {
205  $_output .= '<label>';
206  }
207  }
208 
209  $name = smarty_function_escape_special_chars($name);
210  $value = smarty_function_escape_special_chars($value);
211  if ($escape) {
212  $output = smarty_function_escape_special_chars($output);
213  }
214 
215  $_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"';
216 
217  if ($labels && $label_ids) {
218  $_output .= ' id="' . $_id . '"';
219  }
220 
221  if (is_array($selected)) {
222  if (isset($selected[$value])) {
223  $_output .= ' checked="checked"';
224  }
225  } elseif ($value === $selected) {
226  $_output .= ' checked="checked"';
227  }
228 
229  $_output .= $extra . ' />' . $output;
230  if ($labels) {
231  $_output .= '</label>';
232  }
233 
234  $_output .= $separator;
235 
236  return $_output;
237 }




Korrekturen, Hinweise und Ergänzungen

Bitte scheuen Sie sich nicht und melden Sie, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Support Forum wählen. Es ist eine kostenlose Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden kommentarlos entfernt.