[ Index ]
 

Code source de XOOPS 2.0.17.1

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/htdocs/class/xoopsform/ -> formselect.php (source)

   1  <?php
   2  // $Id: formselect.php 2 2005-11-02 18:23:29Z skalpa $

   3  //  ------------------------------------------------------------------------ //

   4  //                XOOPS - PHP Content Management System                      //

   5  //                    Copyright (c) 2000 XOOPS.org                           //

   6  //                       <http://www.xoops.org/>                             //

   7  //  ------------------------------------------------------------------------ //

   8  //  This program is free software; you can redistribute it and/or modify     //

   9  //  it under the terms of the GNU General Public License as published by     //

  10  //  the Free Software Foundation; either version 2 of the License, or        //

  11  //  (at your option) any later version.                                      //

  12  //                                                                           //

  13  //  You may not change or alter any portion of this comment or credits       //

  14  //  of supporting developers from this source code or any supporting         //

  15  //  source code which is considered copyrighted (c) material of the          //

  16  //  original comment or credit authors.                                      //

  17  //                                                                           //

  18  //  This program is distributed in the hope that it will be useful,          //

  19  //  but WITHOUT ANY WARRANTY; without even the implied warranty of           //

  20  //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //

  21  //  GNU General Public License for more details.                             //

  22  //                                                                           //

  23  //  You should have received a copy of the GNU General Public License        //

  24  //  along with this program; if not, write to the Free Software              //

  25  //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //

  26  //  ------------------------------------------------------------------------ //

  27  // Author: Kazumi Ono (AKA onokazu)                                          //

  28  // URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //

  29  // Project: The XOOPS Project                                                //

  30  // ------------------------------------------------------------------------- //

  31  if (!defined('XOOPS_ROOT_PATH')) {
  32      die("XOOPS root path not defined");
  33  }
  34  /**

  35   * @package     kernel

  36   * @subpackage  form

  37   * 

  38   * @author        Kazumi Ono    <onokazu@xoops.org>

  39   * @copyright    copyright (c) 2000-2003 XOOPS.org

  40   */
  41  
  42  /**

  43   * A select field

  44   * 

  45   * @package     kernel

  46   * @subpackage  form

  47   * 

  48   * @author        Kazumi Ono    <onokazu@xoops.org>

  49   * @copyright    copyright (c) 2000-2003 XOOPS.org

  50   */
  51  class XoopsFormSelect extends XoopsFormElement {
  52  
  53      /**

  54       * Options

  55       * @var array   

  56       * @access    private

  57       */
  58      var $_options = array();
  59  
  60      /**

  61       * Allow multiple selections?

  62       * @var    bool    

  63       * @access    private

  64       */
  65      var $_multiple = false;
  66  
  67      /**

  68       * Number of rows. "1" makes a dropdown list.

  69       * @var    int 

  70       * @access    private

  71       */
  72      var $_size;
  73  
  74      /**

  75       * Pre-selcted values

  76       * @var    array   

  77       * @access    private

  78       */
  79      var $_value = array();
  80  
  81      /**

  82       * Constructor

  83       * 

  84       * @param    string    $caption    Caption

  85       * @param    string    $name       "name" attribute

  86       * @param    mixed    $value        Pre-selected value (or array of them).

  87       * @param    int        $size        Number or rows. "1" makes a drop-down-list

  88       * @param    bool    $multiple   Allow multiple selections?

  89       */
  90  	function XoopsFormSelect($caption, $name, $value=null, $size=1, $multiple=false){
  91          $this->setCaption($caption);
  92          $this->setName($name);
  93          $this->_multiple = $multiple;
  94          $this->_size = intval($size);
  95          if (isset($value)) {
  96              $this->setValue($value);
  97          }
  98      }
  99  
 100      /**

 101       * Are multiple selections allowed?

 102       * 

 103       * @return    bool

 104       */
 105  	function isMultiple(){
 106          return $this->_multiple;
 107      }
 108  
 109      /**

 110       * Get the size

 111       * 

 112       * @return    int

 113       */
 114  	function getSize(){
 115          return $this->_size;
 116      }
 117  
 118      /**

 119       * Get an array of pre-selected values

 120       * 

 121       * @return    array

 122       */
 123  	function getValue(){
 124          return $this->_value;
 125      }
 126  
 127      /**

 128       * Set pre-selected values

 129       * 

 130       * @param    $value    mixed

 131       */
 132  	function setValue($value){
 133          if (is_array($value)) {
 134              foreach ($value as $v) {
 135                  $this->_value[] = $v;
 136              }
 137          } else {
 138              $this->_value[] = $value;
 139          }
 140      }
 141  
 142      /**

 143       * Add an option

 144       * 

 145       * @param    string  $value  "value" attribute

 146       * @param    string  $name   "name" attribute

 147       */
 148  	function addOption($value, $name=""){
 149          if ( $name != "" ) {
 150              $this->_options[$value] = $name;
 151          } else {
 152              $this->_options[$value] = $value;
 153          }
 154      }
 155  
 156      /**

 157       * Add multiple options

 158       * 

 159       * @param    array   $options    Associative array of value->name pairs

 160       */
 161  	function addOptionArray($options){
 162          if ( is_array($options) ) {
 163              foreach ( $options as $k=>$v ) {
 164                  $this->addOption($k, $v);
 165              }
 166          }
 167      }
 168  
 169      /**

 170       * Get all options

 171       * 

 172       * @return    array   Associative array of value->name pairs

 173       */
 174  	function getOptions(){
 175          return $this->_options;
 176      }
 177  
 178      /**

 179       * Prepare HTML for output

 180       * 

 181       * @return    string  HTML

 182       */
 183  	function render(){
 184          $ret = "<select  size='".$this->getSize()."'".$this->getExtra()."";
 185          if ($this->isMultiple() != false) {
 186              $ret .= " name='".$this->getName()."[]' id='".$this->getName()."[]' multiple='multiple'>\n";
 187          } else {
 188              $ret .= " name='".$this->getName()."' id='".$this->getName()."'>\n";
 189          }
 190          foreach ( $this->getOptions() as $value => $name ) {
 191              $ret .= "<option value='".htmlspecialchars($value, ENT_QUOTES)."'";
 192              if (count($this->getValue()) > 0 && in_array($value, $this->getValue())) {
 193                      $ret .= " selected='selected'";
 194              }
 195              $ret .= ">".$name."</option>\n";
 196          }
 197          $ret .= "</select>";
 198          return $ret;
 199      }
 200  }
 201  ?>


Généré le : Sun Nov 25 11:44:32 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics