diff --git a/lam/lib/html.inc b/lam/lib/html.inc index dcfe78e6..3fc47a2c 100644 --- a/lam/lib/html.inc +++ b/lam/lib/html.inc @@ -74,17 +74,16 @@ class htmlTable implements htmlElement { * Adds an element to the table. The element may be a htmlElement object or a simple String. * * @param mixed $element htmlElement object or a simple String + * @param boolean $newLine adds a new line after the element (optional, default false) */ - public function addElement($element) { + public function addElement($element, $newLine = false) { if ($element instanceof htmlElement) { $this->elements[] = "\n"; $this->elements[] = $element; $this->elements[] = "\n"; - } - elseif(is_string($element)) { - $this->elements[] = "\n"; - $this->elements[] = htmlspecialchars($element); - $this->elements[] = "\n"; + if ($newLine) { + $this->addNewLine(); + } } else { StatusMessage('ERROR', 'Invalid element', print_r($element, true)); @@ -179,6 +178,9 @@ class htmlTableExtendedInputField implements htmlElement { * @return array List of input field names and their type (name => type) */ function generateHTML($module, $input, $values, $restricted, &$tabindex, $scope) { + if (isset($values[$this->fieldName])) { + $this->fieldValue = $values[$this->fieldName][0]; + } // print label text echo $this->label; if ($this->required) { @@ -321,14 +323,14 @@ class htmlButton implements htmlElement { // image button if ($this->isImageButton) { $value = ' value=" "'; + $class = ' class="smallImageButton"'; + $style = ' style="background-image: url(../../graphics/' . $this->value . ');"'; } // text button else { if ($this->value != null) { $value = ' value="' . $this->value . '"'; } - $class = ' class="smallImageButton"'; - $style = ' style="background-image: url(../../graphics/' . $this->value . ');"'; } echo ''; return array($this->name, 'submit'); @@ -409,6 +411,9 @@ class htmlSelect implements htmlElement { * @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])) { + $this->selectedElements = $values[$this->name]; + } $name = ' name="' . $this->name . '"'; $size = ' size="' . $this->size . '"'; $multi = ''; @@ -477,7 +482,7 @@ class htmlSelect implements htmlElement { /** * Specifies if the elemets should be sorted (default: sort). * - * @param boolean $sortElements + * @param boolean $sortElements sort elements */ public function setSortElements($sortElements) { $this->sortElements = $sortElements; @@ -485,4 +490,283 @@ class htmlSelect implements htmlElement { } +/** + * Prints the text and escapes contained HTML code by default. + * + * @package metaHTML + */ +class htmlOutputText implements htmlElement { + + /** the text to print */ + private $string; + /** specifies if HTML code should be escaped */ + private $escapeHTML; + + /** + * Constructor. + * + * @param String $string output text + * @param boolean $escapeHTML escape HTML code (default yes) + */ + function __construct($string, $escapeHTML = true) { + $this->string = $string; + $this->escapeHTML = $escapeHTML; + } + + /** + * 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 ($this->escapeHTML) { + echo htmlspecialchars($this->string); + } + else { + echo $this->string; + } + return array(); + } + +} + +/** + * Prints the HTML code for a checkbox. + * + * @package metaHTML + */ +class htmlInputCheckbox implements htmlElement { + + /** unique name of input element */ + private $name; + /** value */ + private $checked; + + /** + * Constructor. + * + * @param String $name unique name + * @param boolean $checked checked + */ + function __construct($name, $checked) { + $this->name = htmlspecialchars($name); + $this->checked = $checked; + } + + /** + * 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])) { + if ($values[$this->name][0] == 'true') { + $this->checked = true; + } + else { + $this->checked = false; + } + } + $checked = ''; + if ($this->checked) { + $checked = ' checked'; + } + $tabindexValue = ' tabindex="' . $tabindex . '"'; + $tabindex++; + echo ''; + return array($this->name => 'checkbox'); + } + +} + +/** + * Checkbox with descriptive label and help link. + * + * @package metaHTML + */ +class htmlTableExtendedInputCheckbox extends htmlInputCheckbox { + + /** descriptive label */ + private $label; + /** help ID */ + private $helpID; + + /** + * Constructor. + * + * @param String $name unique name + * @param boolean $checked checked + * @param String $label descriptive label + * @param String $helpID help ID + */ + function __construct($name, $checked, $label, $helpID) { + parent::__construct($name, $checked); + $this->label = htmlspecialchars($label); + $this->helpID = $helpID; + } + + /** + * 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) { + echo $this->label; + echo "\n\n\n"; + $return = parent::generateHTML($module, $input, $values, $restricted, $tabindex, $scope); + echo "\n\n\n"; + // print help link + if ($this->helpID != null) { + echo "\n\n\n"; + $helpLink = new htmlHelpLink($this->helpID); + $helpLink->generateHTML($module, $input, $values, $restricted, $tabindex, $scope); + } + return $return; + } + +} + +/** + * Prints the HTML code for a textarea. + * + * @package metaHTML + */ +class htmlInputTextarea implements htmlElement { + + /** unique name of input element */ + private $name; + /** value */ + private $value; + /** column count */ + private $colCount; + /** row count */ + private $rowCount; + + /** + * Constructor. + * + * @param String $name unique name + * @param String $value value + * @param int $colCount number of characters per line + * @param int $rowCount number of rows + */ + function __construct($name, $value, $colCount, $rowCount) { + $this->name = htmlspecialchars($name); + $this->value = htmlspecialchars($value); + $this->colCount = $colCount; + $this->rowCount = $rowCount; + } + + /** + * 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])) { + $this->value = implode("\r\n", $values[$this->name]); + } + $colCount = ' cols="' . $this->colCount . '"'; + $rowCount = ' rows="' . $this->rowCount . '"'; + $tabindexValue = ' tabindex="' . $tabindex . '"'; + $tabindex++; + echo ''; + return array($this->name => 'textarea'); + } + +} + +/** + * Text area with label and help link. + * + * @package metaHTML + */ +class htmlTableExtendedInputTextarea extends htmlInputTextarea { + + /** descriptive label */ + private $label; + /** help ID */ + private $helpID; + /** required field */ + private $required = false; + + /** + * Constructor. + * + * @param String $name unique name + * @param String $value value + * @param int $colCount number of characters per line + * @param int $rowCount number of rows + * @param String $label descriptive label + * @param String $helpID help ID + */ + function __construct($name, $value, $colCount, $rowCount, $label, $helpID) { + parent::__construct($name, $value, $colCount, $rowCount); + $this->label = htmlspecialchars($label); + $this->helpID = $helpID; + } + + /** + * 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) { + echo $this->label; + if ($this->required) { + echo '*'; + } + echo "\n\n\n"; + $return = parent::generateHTML($module, $input, $values, $restricted, $tabindex, $scope); + echo "\n\n\n"; + // print help link + if ($this->helpID != null) { + echo "\n\n\n"; + $helpLink = new htmlHelpLink($this->helpID); + $helpLink->generateHTML($module, $input, $values, $restricted, $tabindex, $scope); + } + return $return; + } + + /** + * Specifies if this input field must be filled. + * + * @param boolean $required required or not + */ + public function setRequired($required) { + $this->required = $required; + } + +} + ?> \ No newline at end of file