Overview

Packages

  • CONTENIDO
  • Core
    • Authentication
    • Backend
    • Cache
    • CEC
    • Chain
    • ContentType
    • Database
    • Debug
    • Exception
    • Frontend
      • Search
      • URI
      • Util
    • GenericDB
      • Model
    • GUI
      • HTML
    • I18N
    • LayoutHandler
    • Log
    • Security
    • Session
    • Util
    • Validation
    • Versioning
    • XML
  • Module
    • ContentSitemapHtml
    • ContentSitemapXml
    • ContentUserForum
    • NavigationTop
    • ScriptCookieDirective
  • mpAutoloaderClassMap
  • None
  • PHP
  • Plugin
    • ContentAllocation
    • CronjobOverview
    • FormAssistant
    • FrontendLogic
    • FrontendUsers
    • Linkchecker
    • ModRewrite
    • Newsletter
    • Repository
      • FrontendNavigation
      • KeywordDensity
    • SIWECOS
    • SmartyWrapper
    • UrlShortener
    • UserForum
    • Workflow
  • PluginManager
  • Setup
    • Form
    • GUI
    • Helper
      • Environment
      • Filesystem
      • MySQL
      • PHP
    • UpgradeJob

Classes

  • cHTML
  • cHTMLAlignmentTable
  • cHTMLArticle
  • cHTMLAside
  • cHTMLAudio
  • cHTMLButton
  • cHTMLCanvas
  • cHTMLCheckbox
  • cHTMLContentElement
  • cHTMLDiv
  • cHTMLFieldset
  • cHTMLFooter
  • cHTMLForm
  • cHTMLFormElement
  • cHTMLHeader
  • cHTMLHgroup
  • cHTMLHiddenField
  • cHTMLIFrame
  • cHTMLImage
  • cHTMLLabel
  • cHTMLLegend
  • cHTMLLink
  • cHTMLList
  • cHTMLListItem
  • cHTMLNav
  • cHTMLOptgroup
  • cHTMLOptionElement
  • cHTMLParagraph
  • cHTMLPasswordbox
  • cHTMLRadiobutton
  • cHTMLScript
  • cHTMLSection
  • cHTMLSelectElement
  • cHTMLSpan
  • cHTMLTable
  • cHTMLTableBody
  • cHTMLTableData
  • cHTMLTableHead
  • cHTMLTableHeader
  • cHTMLTableRow
  • cHTMLTextarea
  • cHTMLTextbox
  • cHTMLTime
  • cHTMLUpload
  • cHTMLVideo
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  1: <?php
  2: 
  3: /**
  4:  * This file contains the cHTMLSelectElement class.
  5:  *
  6:  * @package Core
  7:  * @subpackage GUI_HTML
  8:  *
  9:  * @author Simon Sprankel
 10:  * @copyright four for business AG <www.4fb.de>
 11:  * @license http://www.contenido.org/license/LIZENZ.txt
 12:  * @link http://www.4fb.de
 13:  * @link http://www.contenido.org
 14:  */
 15: 
 16: defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');
 17: 
 18: /**
 19:  * cHTMLSelectElement class represents a select element.
 20:  *
 21:  * @package Core
 22:  * @subpackage GUI_HTML
 23:  */
 24: class cHTMLSelectElement extends cHTMLFormElement {
 25: 
 26:     /**
 27:      * All cHTMLOptionElements
 28:      *
 29:      * @var cHTMLOptionElement[]
 30:      */
 31:     protected $_options = array();
 32: 
 33:     /**
 34:      * Constructor to create an instance of this class.
 35:      *
 36:      * Creates an HTML select field (aka "DropDown").
 37:      *
 38:      * @param string $name
 39:      *         Name of the element
 40:      * @param string $width [optional]
 41:      *         Width of the select element
 42:      * @param string $id [optional]
 43:      *         ID of the element
 44:      * @param bool $disabled [optional]
 45:      *         Item disabled flag (non-empty to set disabled)
 46:      * @param string $tabindex [optional]
 47:      *         Tab index for form elements
 48:      * @param string $accesskey [optional]
 49:      *         Key to access the field
 50:      * @param string $class [optional]
 51:      *         the class of this element
 52:      */
 53:     public function __construct($name, $width = '', $id = '', $disabled = false, $tabindex = NULL, $accesskey = '', $class = '') {
 54:         parent::__construct($name, $id, $disabled, $tabindex, $accesskey);
 55:         $this->_tag = 'select';
 56:         $this->_contentlessTag = false;
 57:         $this->setClass($class);
 58: 
 59:         if ($width != "") {
 60:             $this->appendStyleDefinition("width", $width);
 61:         }
 62:     }
 63: 
 64:     /**
 65:      * Automatically creates and fills cHTMLOptionElements
 66:      *
 67:      * Array format:
 68:      * $stuff = array(
 69:      * array('value', 'title'),
 70:      * array('value', 'title')
 71:      * );
 72:      *
 73:      * or regular key => value arrays:
 74:      * $stuff = array(
 75:      * 'value' => 'title',
 76:      * 'value' => 'title'
 77:      * );
 78:      *
 79:      * @param array $stuff
 80:      *         Array with all items
 81:      * @return cHTMLSelectElement
 82:      *         $this for chaining
 83:      */
 84:     public function autoFill(array $stuff) {
 85:         foreach ($stuff as $key => $row) {
 86:             if (is_array($row)) {
 87:                 $option = new cHTMLOptionElement($row[1], $row[0]);
 88:                 $this->addOptionElement($row[0], $option);
 89:             } else {
 90:                 $option = new cHTMLOptionElement($row, $key);
 91:                 $this->addOptionElement($key, $option);
 92:             }
 93:         }
 94:         return $this;
 95:     }
 96: 
 97:     /**
 98:      * Adds an cHTMLOptionElement to the number of choices at the specified
 99:      * position.
100:      *
101:      * @param string $index
102:      *         Index of the element
103:      * @param cHTMLOptionElement $element
104:      *         Filled cHTMLOptionElement to add
105:      * @return cHTMLSelectElement
106:      *         $this for chaining
107:      */
108:     public function addOptionElement($index, cHTMLOptionElement $element) {
109:         $this->_options[$index] = $element;
110:         return $this;
111:     }
112: 
113:     /**
114:      * Appends a cHTMLOptionElement to the number of choices.
115:      *
116:      * @param cHTMLOptionElement $element
117:      *         Filled cHTMLOptionElement to add
118:      * @return cHTMLSelectElement
119:      *         $this for chaining
120:      */
121:     public function appendOptionElement(cHTMLOptionElement $element) {
122:         $this->_options[] = $element;
123:         return $this;
124:     }
125: 
126:     /**
127:      * Defines that this select element is a multiselect element.
128:      *
129:      * @return cHTMLSelectElement
130:      *         $this for chaining
131:      */
132:     public function setMultiselect() {
133:         $name = $this->getAttribute('name');
134:         $strLength = cString::getStringLength($name);
135:         if (cString::getPartOfString($name, $strLength - 2, $strLength) != '[]') {
136:             $this->updateAttribute('name', $name . '[]');
137:         }
138:         return $this->updateAttribute('multiple', 'multiple');
139:     }
140: 
141:     /**
142:      * Defines the size of this select element.
143:      *
144:      * @param int $size
145:      * @return cHTMLSelectElement
146:      *         $this for chaining
147:      */
148:     public function setSize($size) {
149:         return $this->updateAttribute('size', $size);
150:     }
151: 
152:     /**
153:      * Sets a specific cHTMLOptionElement to the selected state.
154:      *
155:      * @param string $lvalue
156:      *         Specifies the "value" of the cHTMLOptionElement to
157:      *        set
158:      * @return cHTMLSelectElement
159:      *         $this for chaining
160:      */
161:     public function setDefault($lvalue) {
162:         if (is_array($lvalue)) {
163:             foreach ($this->_options as $key => $value) {
164:                 if (in_array($value->getAttribute('value'), $lvalue)) {
165:                     $value->setSelected(true);
166:                     $this->_options[$key] = $value;
167:                 } else {
168:                     $value->setSelected(false);
169:                     $this->_options[$key] = $value;
170:                 }
171:             }
172:         } else {
173:             foreach ($this->_options as $key => $value) {
174:                 if (strcmp($value->getAttribute('value'), $lvalue) == 0) {
175:                     $value->setSelected(true);
176:                     $this->_options[$key] = $value;
177:                 } else {
178:                     $value->setSelected(false);
179:                     $this->_options[$key] = $value;
180:                 }
181:             }
182:         }
183:         return $this;
184:     }
185: 
186:     /**
187:      * Search for the selected elements
188:      *
189:      * @return string|bool
190:      *         "lvalue" or false
191:      */
192:     public function getDefault() {
193:         foreach ($this->_options as $key => $value) {
194:             if ($value->isSelected()) {
195:                 return $key;
196:             }
197:         }
198:         return false;
199:     }
200: 
201:     /**
202:      * Sets specified elements as selected (and all others as unselected)
203:      *
204:      * @param array $elements
205:      *         Array with "values" of the cHTMLOptionElement to set
206:      * @return cHTMLSelectElement
207:      *         $this for chaining
208:      */
209:     public function setSelected(array $elements)
210:     {
211:         foreach ($this->_options as $key => $option) {
212:             $selected = in_array($option->getAttribute('value'), $elements);
213:             $option->setSelected($selected);
214:             $this->_options[$key] = $option;
215:         }
216: 
217:         return $this;
218:     }
219: 
220:     /**
221:      * Renders the select box
222:      *
223:      * @return string
224:      *         Rendered HTML
225:      */
226:     public function toHtml() {
227:         $this->_setContent($this->_options);
228:         return parent::toHtml();
229:     }
230: 
231: }
232: 
CMS CONTENIDO 4.10.1 API documentation generated by ApiGen 2.8.0