diff --git a/lam/lib/html.inc b/lam/lib/html.inc
index 7b077aaf..5acfeb49 100644
--- a/lam/lib/html.inc
+++ b/lam/lib/html.inc
@@ -3644,6 +3644,8 @@ class htmlSpan extends htmlElement {
/** htmlElement that generates inner content */
private $content = null;
+ /** onclick handler */
+ private $onclick = null;
/**
* Constructor.
@@ -3674,13 +3676,27 @@ class htmlSpan extends htmlElement {
if (($this->cssClasses != null) && (sizeof($this->cssClasses) > 0)) {
$classesValue = ' class="' . implode(' ', $this->cssClasses) . '"';
}
- echo '';
+ $onclickHandler = '';
+ if (!empty($this->onclick)) {
+ $onclickHandler = ' onclick="' . $this->onclick . '"';
+ }
+ echo '';
if ($this->content != null) {
$return = $this->content->generateHTML($module, $input, $values, $restricted, $tabindex, $scope);
}
echo '';
return $return;
}
+
+ /**
+ * Sets the onclick event.
+ *
+ * @param string $event event handler code
+ */
+ public function setOnclick($event) {
+ $this->onclick = $event;
+ }
+
}
/**
@@ -4715,6 +4731,8 @@ class htmlResponsiveInputCheckbox extends htmlInputCheckbox {
private $renderParentHtml = false;
/** long label */
private $longLabel = false;
+ /** label after checkbox */
+ private $labelAfterCheckbox = false;
/**
* Constructor.
@@ -4751,14 +4769,23 @@ class htmlResponsiveInputCheckbox extends htmlInputCheckbox {
$row = new htmlResponsiveRow();
$tabletColumnsLabel = 6;
$tabletColumnsBox = 6;
+ $mobileColumnsLabel = 10;
+ $mobileColumnsBox = 2;
if ($this->longLabel) {
$tabletColumnsLabel = 10;
$tabletColumnsBox = 2;
}
+ if ($this->labelAfterCheckbox) {
+ $tmp = $mobileColumnsLabel;
+ $mobileColumnsLabel = $mobileColumnsLabel;
+ $mobileColumnsBox = $mobileColumnsLabel;
+ $tmp = $tabletColumnsLabel;
+ $tabletColumnsLabel = $tabletColumnsBox;
+ $tabletColumnsBox = $tabletColumnsLabel;
+ }
// label text
- $labelGroup = new htmlGroup();
- $labelGroup->addElement(new htmlOutputText($this->label));
- $row->add($labelGroup, 10, $tabletColumnsLabel, $tabletColumnsLabel, 'responsiveLabel');
+ $text = new htmlSpan(new htmlOutputText($this->label));
+ $text->setOnclick('jQuery(\'#' . $this->name . '\').prop(\'checked\',!jQuery(\'#' . $this->name . '\').prop(\'checked\')); jQuery(\'#' . $this->name . '\').change();');
// input field
$fieldGroup = new htmlGroup();
$fieldGroup->addElement($this);
@@ -4767,7 +4794,14 @@ class htmlResponsiveInputCheckbox extends htmlInputCheckbox {
$helpLink->setCSSClasses(array('margin-left5 align-unset-img'));
$fieldGroup->addElement($helpLink);
}
- $row->add($fieldGroup, 2, $tabletColumnsBox, $tabletColumnsBox, 'responsiveField nowrap');
+ if ($this->labelAfterCheckbox) {
+ $row->add($fieldGroup, $mobileColumnsBox, $tabletColumnsBox, $tabletColumnsBox, 'responsiveLabel nowrap');
+ $row->add($text, $mobileColumnsLabel, $tabletColumnsLabel, $tabletColumnsLabel, 'responsiveField');
+ }
+ else {
+ $row->add($text, $mobileColumnsLabel, $tabletColumnsLabel, $tabletColumnsLabel, 'responsiveLabel');
+ $row->add($fieldGroup, $mobileColumnsBox, $tabletColumnsBox, $tabletColumnsBox, 'responsiveField nowrap');
+ }
return $row->generateHTML($module, $input, $values, $restricted, $tabindex, $scope);
}
@@ -4779,6 +4813,15 @@ class htmlResponsiveInputCheckbox extends htmlInputCheckbox {
return '.row';
}
+ /**
+ * Sets if the label should be shown after the checkbox instead before it.
+ *
+ * @param bool $labelAfterCheckbox show label after box
+ */
+ public function setLabelAfterCheckbox($labelAfterCheckbox = true) {
+ $this->labelAfterCheckbox = $labelAfterCheckbox;
+ }
+
}
/**