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