XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
formelement.php
Go to the documentation of this file.
1 <?php
20 defined('XOOPS_ROOT_PATH') or die('Restricted access');
21 
26 {
37  var $customValidationCode = array();
38 
49  var $_name;
50 
56  var $_caption;
57 
63  var $_accesskey = '';
64 
70  var $_class = array();
71 
77  var $_hidden = false;
78 
84  var $_extra = array();
85 
91  var $_required = false;
92 
98  var $_description = '';
99 
114  var $_nocolspan = false;
115 
121  var $_formtype = '';
122 
126  function XoopsFormElement()
127  {
128  exit('This class cannot be instantiated!');
129  }
130 
136  function isContainer()
137  {
138  return false;
139  }
140 
146  function setName($name)
147  {
148  $this->_name = trim($name);
149  }
150 
157  function getName($encode = true)
158  {
159  if (false != $encode) {
160  return str_replace('&amp;', '&', htmlspecialchars($this->_name, ENT_QUOTES));
161  }
162  return $this->_name;
163  }
164 
170  function setAccessKey($key)
171  {
172  $this->_accesskey = trim($key);
173  }
179  function getAccessKey()
180  {
181  return $this->_accesskey;
182  }
189  function getAccessString($str)
190  {
191  $access = $this->getAccessKey();
192  if (! empty($access) && (false !== ($pos = strpos($str, $access)))) {
193  return htmlspecialchars(substr($str, 0, $pos), ENT_QUOTES) . '<span style="text-decoration: underline;">' . htmlspecialchars(substr($str, $pos, 1), ENT_QUOTES) . '</span>' . htmlspecialchars(substr($str, $pos + 1), ENT_QUOTES);
194  }
195  return htmlspecialchars($str, ENT_QUOTES);
196  }
197 
203  function setClass($class)
204  {
205  $class = trim($class);
206  if (! empty($class)) {
207  $this->_class[] = $class;
208  }
209  }
215  function getClass()
216  {
217  if (empty($this->_class)) {
218  return false;
219  }
220  $classes = array();
221  foreach($this->_class as $class) {
222  $classes[] = htmlspecialchars($class, ENT_QUOTES);
223  }
224  return implode(' ', $classes);
225  }
226 
232  function setCaption($caption)
233  {
234  $this->_caption = trim($caption);
235  }
236 
243  function getCaption($encode = false)
244  {
245  return $encode ? htmlspecialchars($this->_caption, ENT_QUOTES) : $this->_caption;
246  }
247 
254  function getTitle($encode = true)
255  {
256  if (strlen($this->_description) > 0) {
257  return $encode
258  ? htmlspecialchars(strip_tags($this->_caption . ' - ' . $this->_description), ENT_QUOTES)
259  : strip_tags($this->_caption . ' - ' . $this->_description);
260  } else {
261  return $encode ? htmlspecialchars(strip_tags($this->_caption), ENT_QUOTES)
262  : strip_tags($this->_caption);
263  }
264  }
265 
271  function setDescription($description)
272  {
273  $this->_description = trim($description);
274  }
275 
282  function getDescription($encode = false)
283  {
284  return $encode ? htmlspecialchars($this->_description, ENT_QUOTES) : $this->_description;
285  }
286 
290  function setHidden()
291  {
292  $this->_hidden = true;
293  }
294 
300  function isHidden()
301  {
302  return $this->_hidden;
303  }
304 
310  function isRequired()
311  {
312  return $this->_required;
313  }
314 
325  function setExtra($extra, $replace = false)
326  {
327  if ($replace) {
328  $this->_extra = array(trim($extra));
329  } else {
330  $this->_extra[] = trim($extra);
331  }
332  return $this->_extra;
333  }
334 
341  function getExtra($encode = false)
342  {
343  if (!$encode) {
344  return ' ' . implode(' ', $this->_extra);
345  }
346  $value = array();
347  foreach ($this->_extra as $val) {
348  $value[] = str_replace('>', '&gt;', str_replace('<', '&lt;', $val));
349  }
350  return empty($value) ? '' : ' ' . implode(' ', $value);
351  }
352 
361  function setNocolspan($nocolspan = true)
362  {
363  $this->_nocolspan = $nocolspan;
364  }
365 
374  function getNocolspan()
375  {
376  return $this->_nocolspan;
377  }
378 
387  function getFormType()
388  {
389  return $this->_formtype;
390  }
391 
400  function setFormType($value = '')
401  {
402  $this->_formtype = $value;
403  }
404 
410  function renderValidationJS()
411  {
412  // render custom validation code if any
413  if (!empty($this->customValidationCode)) {
414  return implode(NWLINE, $this->customValidationCode);
415  // generate validation code if required
416  } else if ($this->isRequired() && $eltname = $this->getName()) {
417  // $eltname = $this->getName();
418  $eltcaption = $this->getCaption();
419  $eltmsg = empty($eltcaption) ? sprintf(_FORM_ENTER, $eltname) : sprintf(_FORM_ENTER, $eltcaption);
420  $eltmsg = str_replace(array(':' , '?' , '%'), '', $eltmsg);
421  $eltmsg = str_replace('"', '\"', stripslashes($eltmsg));
422  $eltmsg = strip_tags($eltmsg);
423  echo $this->getFormType();
424  switch ($this->getFormType()) {
425  case 'checkbox':
426  return NWLINE . "if ( !myform.{$eltname}.checked ) { window.alert(\"{$eltmsg}\"); myform.{$eltname}.focus(); return false; }\n";
427  break;
428  default:
429  return NWLINE . "if ( myform.{$eltname}.value == \"\" ) { window.alert(\"{$eltmsg}\"); myform.{$eltname}.focus(); return false; }\n";
430  break;
431  } // switch
432  }
433  return false;
434  }
435 
443  function render()
444  {
445  }
446 }
447 
448 ?>