[ Index ]
 

Code source de Serendipity 1.2

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/bundled-libs/Smarty/libs/plugins/ -> function.html_checkboxes.php (source)

   1  <?php
   2  /**
   3   * Smarty plugin
   4   * @package Smarty
   5   * @subpackage plugins
   6   */
   7  
   8  
   9  /**
  10   * Smarty {html_checkboxes} function plugin
  11   *
  12   * File:       function.html_checkboxes.php<br>
  13   * Type:       function<br>
  14   * Name:       html_checkboxes<br>
  15   * Date:       24.Feb.2003<br>
  16   * Purpose:    Prints out a list of checkbox input types<br>
  17   * Input:<br>
  18   *           - name       (optional) - string default "checkbox"
  19   *           - values     (required) - array
  20   *           - options    (optional) - associative array
  21   *           - checked    (optional) - array default not set
  22   *           - separator  (optional) - ie <br> or &nbsp;
  23   *           - output     (optional) - the output next to each checkbox
  24   *           - assign     (optional) - assign the output as an array to this variable
  25   * Examples:
  26   * <pre>
  27   * {html_checkboxes values=$ids output=$names}
  28   * {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
  29   * {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
  30   * </pre>
  31   * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
  32   *      (Smarty online manual)
  33   * @author     Christopher Kvarme <christopher.kvarme@flashjab.com>
  34   * @author credits to Monte Ohrt <monte at ohrt dot com>
  35   * @version    1.0
  36   * @param array
  37   * @param Smarty
  38   * @return string
  39   * @uses smarty_function_escape_special_chars()
  40   */
  41  function smarty_function_html_checkboxes($params, &$smarty)
  42  {
  43      require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
  44  
  45      $name = 'checkbox';
  46      $values = null;
  47      $options = null;
  48      $selected = null;
  49      $separator = '';
  50      $labels = true;
  51      $output = null;
  52  
  53      $extra = '';
  54  
  55      foreach($params as $_key => $_val) {
  56          switch($_key) {
  57              case 'name':
  58              case 'separator':
  59                  $$_key = $_val;
  60                  break;
  61  
  62              case 'labels':
  63                  $$_key = (bool)$_val;
  64                  break;
  65  
  66              case 'options':
  67                  $$_key = (array)$_val;
  68                  break;
  69  
  70              case 'values':
  71              case 'output':
  72                  $$_key = array_values((array)$_val);
  73                  break;
  74  
  75              case 'checked':
  76              case 'selected':
  77                  $selected = array_map('strval', array_values((array)$_val));
  78                  break;
  79  
  80              case 'checkboxes':
  81                  $smarty->trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING);
  82                  $options = (array)$_val;
  83                  break;
  84  
  85              case 'assign':
  86                  break;
  87  
  88              default:
  89                  if(!is_array($_val)) {
  90                      $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
  91                  } else {
  92                      $smarty->trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
  93                  }
  94                  break;
  95          }
  96      }
  97  
  98      if (!isset($options) && !isset($values))
  99          return ''; /* raise error here? */
 100  
 101      settype($selected, 'array');
 102      $_html_result = array();
 103  
 104      if (isset($options)) {
 105  
 106          foreach ($options as $_key=>$_val)
 107              $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
 108  
 109  
 110      } else {
 111          foreach ($values as $_i=>$_key) {
 112              $_val = isset($output[$_i]) ? $output[$_i] : '';
 113              $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
 114          }
 115  
 116      }
 117  
 118      if(!empty($params['assign'])) {
 119          $smarty->assign($params['assign'], $_html_result);
 120      } else {
 121          return implode("\n",$_html_result);
 122      }
 123  
 124  }
 125  
 126  function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) {
 127      $_output = '';
 128      if ($labels) $_output .= '<label>';
 129      $_output .= '<input type="checkbox" name="'
 130          . smarty_function_escape_special_chars($name) . '[]" value="'
 131          . smarty_function_escape_special_chars($value) . '"';
 132  
 133      if (in_array((string)$value, $selected)) {
 134          $_output .= ' checked="checked"';
 135      }
 136      $_output .= $extra . ' />' . $output;
 137      if ($labels) $_output .= '</label>';
 138      $_output .=  $separator;
 139  
 140      return $_output;
 141  }
 142  
 143  ?>


Généré le : Sat Nov 24 09:00:37 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics