From 1116983fdd8e3404bc257663a63364fe781c7897 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Sat, 6 Nov 2010 09:38:47 +0000 Subject: [PATCH] allow radio lists --- lam/lib/html.inc | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/lam/lib/html.inc b/lam/lib/html.inc index ef0e5070..19703973 100644 --- a/lam/lib/html.inc +++ b/lam/lib/html.inc @@ -939,6 +939,84 @@ class htmlTableExtendedSelect extends htmlSelect { } +/** + * Represents a radio selection. + * + * @package metaHTML + */ +class htmlRadio extends htmlElement { + + /** name of select field */ + private $name; + /** elements */ + private $elements; + /** selected element */ + private $selectedElement = null; + /** enabled or disabled */ + private $isEnabled = true; + + /** + * Constructor. + * + *
Examples: + *
+ *
$radio = new htmlRadio('myName', array('label1' => 'value1', 'label2' => 'value2'), array('value1')); + * + * @param String $name element name + * @param array $elements list of elements array(label => value) + * @param array $selectedElement value of selected element (optional, default none) + */ + function __construct($name, $elements, $selectedElement = null) { + $this->name = htmlspecialchars($name); + $this->elements = $elements; + if ($selectedElement != null) { + $this->selectedElement = $selectedElement; + } + } + + /** + * Prints the HTML code for this element. + * + * @param string $module Name of account module + * @param array $input List of meta-HTML elements + * @param array $values List of values which override the defaults in $input (name => value) + * @param boolean $restricted If true then no buttons will be displayed + * @param integer $tabindex Start value of tabulator index for input fields + * @param string $scope Account type + * @return array List of input field names and their type (name => type) + */ + function generateHTML($module, $input, $values, $restricted, &$tabindex, $scope) { + if (isset($values[$this->name][0])) { + $this->selectedElement = $values[$this->name][0]; + } + $name = ' name="' . $this->name . '"'; + $disabled = ''; + if (!$this->isEnabled) { + $disabled = ' disabled'; + } + // print radio list + foreach ($this->elements as $label => $value) { + $selected = ''; + if ($value == $this->selectedElement) { + $selected = ' checked'; + } + echo ' ' . $label . '
'; + $tabindex++; + } + return array($this->name => 'select'); + } + + /** + * Specifies if this component is enabled and accepts user modification. + * + * @param boolean $isEnabled enabled if true + */ + public function setIsEnabled($isEnabled) { + $this->isEnabled = $isEnabled; + } + +} + /** * Prints the text and escapes contained HTML code by default. *