summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules-available/baseconfig/inc/validator.inc.php17
-rw-r--r--modules-available/baseconfig/page.inc.php50
-rw-r--r--modules-available/baseconfig_bwlp/baseconfig/settings.json12
3 files changed, 62 insertions, 17 deletions
diff --git a/modules-available/baseconfig/inc/validator.inc.php b/modules-available/baseconfig/inc/validator.inc.php
index 00e8c0e0..ec7b95aa 100644
--- a/modules-available/baseconfig/inc/validator.inc.php
+++ b/modules-available/baseconfig/inc/validator.inc.php
@@ -30,7 +30,7 @@ class Validator
case 'function':
return self::$data[1]($displayValue);
case 'multilist':
- return self::validateList($data[1], $displayValue);
+ return self::validateMultiList($data[1], $displayValue);
case 'multiinput':
return self::validateMultiInput($data[1], $displayValue);
default:
@@ -86,12 +86,21 @@ class Validator
return $displayValue;
return false;
}
+ private static function validateMultiList($list, &$displayValue)
+ {
+ $allowedValues = explode('|', $list);
+ $values = [];
+ foreach ($displayValue as $v) {
+ if (in_array($v, $allowedValues)) {
+ $values[] = $v;
+ }
+ }
+ $displayValue = implode(' ', $values);
+ return $displayValue;
+ }
private static function validateMultiInput(&$list, &$displayValue)
{
return $displayValue;
- //die("validateMultiInput: " . print_r($list, true) . ", disp = " . $displayValue);
- //return implode('~,~', $displayValue);
- /* TODO: DO I have to do validation */
}
}
diff --git a/modules-available/baseconfig/page.inc.php b/modules-available/baseconfig/page.inc.php
index 5d125cc2..389aa0ce 100644
--- a/modules-available/baseconfig/page.inc.php
+++ b/modules-available/baseconfig/page.inc.php
@@ -49,6 +49,9 @@ class Page_BaseConfig extends Page
Util::redirect('?do=BaseConfig');
}
}
+ //echo "<pre>";
+ //var_dump($_POST);
+ //echo "</pre>";
// Honor override/enabled checkbox
$override = Request::post('override', array());
// Load all existing config options to validate input
@@ -172,12 +175,22 @@ class Page_BaseConfig extends Page
if (!isset($settings[$var['catid']]['settings'][$key]['shadows'])) {
$settings[$var['catid']]['settings'][$key]['shadows'] = null;
}
+ //echo "<pre>";
+ //var_dump($settings[$var['catid']]['settings'][$key]);
+ //echo "</pre>";
$settings[$var['catid']]['settings'][$key] += array(
- 'item' => $this->makeInput($var['validator'], $key, $settings[$var['catid']]['settings'][$key]['displayvalue'], $settings[$var['catid']]['settings'][$key]['shadows']
+ 'item' => $this->makeInput(
+ $var['validator'],
+ $key,
+ $settings[$var['catid']]['settings'][$key]['displayvalue'],
+ $settings[$var['catid']]['settings'][$key]['shadows']
),
'description' => Util::markup(Dictionary::translateFileModule($var['module'], 'config-variables', $key))
);
}
+ //die();
+
+
// Sort categories
$sortvals = array();
foreach ($settings as $catid => &$setting) {
@@ -250,7 +263,6 @@ class Page_BaseConfig extends Page
*/
private function makeInput($validator, $setting, $current, $shadows)
{
-
/* for the html snippet we need: */
$tag = 'input';
$args = array('type' => 'text', 'class' => 'form-control', 'name' => "setting[$setting]", 'id' => $setting);
@@ -261,28 +273,46 @@ class Page_BaseConfig extends Page
/* -- */
$parts = explode(':', $validator, 2);
- if ($parts[0] === 'list' || $parts[0] == 'multilist') {
- $items = explode('|', $parts[1]);
- if ($parts[0] === 'multilist') {
- $args['multiple'] = 'multiple';
- $args['class'] .= " multilist";
- }
+ $items = explode('|', $parts[1]);
+ if ($parts[0] === 'list') {
foreach ($items as $item) {
if ($item === $current) {
- $inner .= '<option selected="selected">' . $item . '</option>';
+ $inner .= "<option selected=\"selected\" value=\"$item\"> $item </option>";
} else {
- $inner .= '<option>' . $item . '</option>';
+ $inner .= "<option value=\"$item\"> $item </option>";
}
}
$tag = 'select';
unset($args['type']);
$current = '';
+
}
+ if ($parts[0] == 'multilist') {
+
+ $args['multiple'] = 'multiple';
+ $args['class'] .= " multilist";
+ $args['name'] .= '[]';
+
+ $selected = explode(' ', $current);
+
+ foreach ($items as $item) {
+ if (in_array($item, $selected)) {
+ $inner .= "<option selected=\"selected\" value=\"$item\"> $item </option>";
+ } else {
+ $inner .= "<option value=\"$item\"> $item </option>";
+ }
+ }
+ $tag = 'select';
+ unset($args['type']);
+ $current = '';
+ }
+
/* multiinput: enter multiple free-form strings*/
if ($validator === 'multiinput') {
$args['class'] .= " multiinput";
+ $args['value'] = $current;
}
/* Password field guessing */
diff --git a/modules-available/baseconfig_bwlp/baseconfig/settings.json b/modules-available/baseconfig_bwlp/baseconfig/settings.json
index dfde3a09..d10e2a9e 100644
--- a/modules-available/baseconfig_bwlp/baseconfig/settings.json
+++ b/modules-available/baseconfig_bwlp/baseconfig/settings.json
@@ -119,17 +119,23 @@
"permissions": "2",
"validator": "list:IGNORE|BUMP|EXCLUSIVE"
},
- "SLX_VMCHOOSER_DUMMYSETTING_ONE": {
+ "SLX_VMCHOOSER_DUMMYSETTING1": {
"catid": "vmchooser",
"defaultvalue": "",
"permissions": "2",
"validator": "list:ON|OFF",
- "shadows": "OFF -> SLX_LOGOUT_TIMEOUT, OFF -> SLX_VMCHOOSER_DUMMYSETTING_TWO"
+ "shadows": "OFF -> SLX_LOGOUT_TIMEOUT, OFF -> SLX_VMCHOOSER_DUMMYSETTING2"
},
- "SLX_VMCHOOSER_DUMMYSETTING_TWO": {
+ "SLX_VMCHOOSER_DUMMYSETTING2": {
"catid": "vmchooser",
"defaultvalue": "",
"permissions": "2",
"validator": "multilist:Apples|Bananas|Pears"
+ },
+ "SLX_VMCHOOSER_DUMMYSETTING3": {
+ "catid": "vmchooser",
+ "defaultvalue": "",
+ "permissions": "2",
+ "validator": "multiinput"
}
}