diff --git a/lam/lib/html.inc b/lam/lib/html.inc
index bbcbec99..845dc590 100644
--- a/lam/lib/html.inc
+++ b/lam/lib/html.inc
@@ -2343,6 +2343,8 @@ class htmlImage extends htmlElement {
private $height;
/** alt text */
private $alt;
+ /** title */
+ private $title;
/**
* Constructor.
@@ -2352,11 +2354,12 @@ class htmlImage extends htmlElement {
* @param int $height image height (optional, default original size)
* @param String $alt alt text (optional)
*/
- function __construct($path, $width = null, $height = null, $alt = ' ') {
+ function __construct($path, $width = null, $height = null, $alt = ' ', $title = null) {
$this->path = htmlspecialchars($path);
$this->width = $width;
$this->height = $height;
$this->alt = htmlspecialchars($alt);
+ $this->title = $title;
}
/**
@@ -2381,11 +2384,15 @@ class htmlImage extends htmlElement {
$height = ' height="' . $this->height . '"';
}
$alt = ' alt="' . $this->alt . '"';
+ $title = '';
+ if (!empty($this->title)) {
+ $title = ' title="' . $this->title . '"';
+ }
$classes = '';
if (!empty($this->cssClasses)) {
$classes = 'class="' . implode(' ', $this->cssClasses) . '"';
}
- echo '\n";
+ echo '\n";
return array();
}
@@ -3258,12 +3265,14 @@ class htmlResponsiveRow extends htmlElement {
*
* @param htmlElement $content content inside cell
* @param int $numMobile number of columns for mobile view
- * @param int $numTablet number of columns for tablet view
- * @param int $numDesktop number of columns for desktop view
+ * @param int $numTablet number of columns for tablet view (set to mobile if null)
+ * @param int $numDesktop number of columns for desktop view (set to tablet if null)
* @param String $classes CSS classes separated by space
*/
- public function add($content, $numMobile, $numTablet, $numDesktop, $classes = '') {
- $this->addCell(new htmlResponsiveCell($content, $numMobile, $numTablet, $numDesktop, $classes));
+ public function add($content, $numMobile, $numTablet = null, $numDesktop = null, $classes = '') {
+ $tabletCols = ($numTablet == null) ? $numMobile : $numTablet;
+ $desktopCols = ($numDesktop == null) ? $tabletCols : $numDesktop;
+ $this->addCell(new htmlResponsiveCell($content, $numMobile, $tabletCols, $tabletCols, $classes));
}
/**
@@ -3278,11 +3287,13 @@ class htmlResponsiveRow extends htmlElement {
* @return array List of input field names and their type (name => type)
*/
public function generateHTML($module, $input, $values, $restricted, &$tabindex, $scope) {
+ $return = array();
echo '
';
foreach ($this->cells as $cell) {
- $cell->generateHTML($module, $input, $values, $restricted, $tabindex, $scope);
+ $return = array_merge($return, $cell->generateHTML($module, $input, $values, $restricted, $tabindex, $scope));
}
echo '
';
+ return $return;
}
}
@@ -3332,8 +3343,76 @@ class htmlResponsiveCell extends htmlElement {
$clDesktop = ($this->desktop > 0) ? 'large-' . $this->desktop : 'hide-for-large-only';
echo '';
- $this->content->generateHTML($module, $input, $values, $restricted, $tabindex, $scope);
+ $return = $this->content->generateHTML($module, $input, $values, $restricted, $tabindex, $scope);
echo '
';
+ return $return;
+ }
+
+}
+
+/**
+ * A responsive input field that combines label, input field and help.
+ *
+ * @package metaHTML
+ */
+class htmlResponsiveInputField extends htmlInputField {
+
+ /** Descriptive label */
+ private $label;
+ /** help ID */
+ private $helpID;
+ /** generate HTML of parent class */
+ private $generateParent = false;
+
+ /**
+ * Constructor
+ *
+ * @param String $label descriptive label
+ * @param String $fieldName unique field name
+ * @param String $fieldValue value of input field (optional)
+ * @param String $helpID help ID (optional)
+ */
+ function __construct($label, $fieldName, $fieldValue = null, $helpID = null) {
+ parent::__construct($fieldName, $fieldValue);
+ $this->label = $label;
+ $this->helpID = $helpID;
+ $this->fieldSize = null;
+ }
+
+ /**
+ * 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->generateParent) {
+ return parent::generateHTML($module, $input, $values, $restricted, $tabindex, $scope);
+ }
+ $this->generateParent = true;
+ $row = new htmlResponsiveRow();
+ // label text
+ $labelGroup = new htmlGroup();
+ $labelGroup->addElement(new htmlOutputText($this->label));
+ if ($this->required) {
+ $graphicsPath = "../../graphics";
+ if (is_dir("../graphics")) $graphicsPath = "../graphics";
+ $labelGroup->addElement(new htmlImage($graphicsPath . '/required.png', 16, 16, _('required'), _('required')));
+ }
+ $row->add($labelGroup, 12, 6, 6, 'tabletPlus-align-right mobile-align-left');
+ // input field
+ $fieldGroup = new htmlGroup();
+ $fieldGroup->addElement($this);
+ if (!empty($this->helpID)) {
+ $fieldGroup->addElement(new htmlHelpLink($this->helpID));
+ }
+ $row->add($fieldGroup, 12, 6, 6, 'tabletPlus-align-left');
+ return $row->generateHTML($module, $input, $values, $restricted, $tabindex, $scope);
}
}