summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2019-04-09 11:39:47 +0200
committerSimon Rettberg2019-04-09 11:39:47 +0200
commit65d94131b76ddef5a0788bc543452534e7faf918 (patch)
tree52c6d48b16ad28c631d67003b9664d65bc827b39
parent[locationinfo] Update translations (diff)
downloadslx-admin-65d94131b76ddef5a0788bc543452534e7faf918.tar.gz
slx-admin-65d94131b76ddef5a0788bc543452534e7faf918.tar.xz
slx-admin-65d94131b76ddef5a0788bc543452534e7faf918.zip
[baseconfig] Remove "enabled" checkbox, reset field on override disable
Closes #3570 Closes #3569
-rw-r--r--modules-available/baseconfig/api.inc.php9
-rw-r--r--modules-available/baseconfig/install.inc.php19
-rw-r--r--modules-available/baseconfig/page.inc.php32
-rw-r--r--modules-available/baseconfig/templates/_page.html31
4 files changed, 30 insertions, 61 deletions
diff --git a/modules-available/baseconfig/api.inc.php b/modules-available/baseconfig/api.inc.php
index bc834930..013640e7 100644
--- a/modules-available/baseconfig/api.inc.php
+++ b/modules-available/baseconfig/api.inc.php
@@ -157,16 +157,11 @@ $defaults = BaseConfigUtil::getVariables();
// Dump global config from DB
ConfigHolder::setContext('<global>');
-$res = Database::simpleQuery('SELECT setting, value, enabled FROM setting_global');
+$res = Database::simpleQuery('SELECT setting, value FROM setting_global');
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
if (!isset($defaults[$row['setting']]))
continue; // Setting is not defined in any <module>/baseconfig/settings.json
- if ($row['enabled'] != 1) {
- // Setting is disabled
- ConfigHolder::add($row['setting'], false, -1);
- } else {
- ConfigHolder::add($row['setting'], $row['value'], -1);
- }
+ ConfigHolder::add($row['setting'], $row['value'], -1);
}
// Fallback to default values from json files
diff --git a/modules-available/baseconfig/install.inc.php b/modules-available/baseconfig/install.inc.php
index b4eada5d..f8c869a6 100644
--- a/modules-available/baseconfig/install.inc.php
+++ b/modules-available/baseconfig/install.inc.php
@@ -6,25 +6,11 @@ $res[] = tableCreate('setting_global', "
`setting` varchar(28) NOT NULL,
`value` text NOT NULL,
`displayvalue` text NOT NULL,
- `enabled` tinyint(1) UNSIGNED NOT NULL DEFAULT '1',
PRIMARY KEY (`setting`)
");
// Update path
-// Add toggle field
-
-if (!tableHasColumn('setting_global', 'enabled')) {
- if (tableHasColumn('setting_global', 'toggle')) {
- $ret = Database::exec("ALTER TABLE `setting_global` CHANGE `toggle` `enabled` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1'");
- } else {
- $ret = Database::exec("ALTER TABLE `setting_global` ADD COLUMN `enabled` tinyint(1) UNSIGNED NOT NULL DEFAULT '1'");
- }
- if ($ret === false) {
- finalResponse(UPDATE_FAILED, 'Adding enabled to setting_global failed: ' . Database::lastError());
- }
-}
-
// Add displayvalue field
if (!tableHasColumn('setting_global', 'displayvalue')) {
@@ -34,10 +20,6 @@ if (!tableHasColumn('setting_global', 'displayvalue')) {
}
// Delete old tables
-
-/*
-Keep disabled for a while, in case some customer made unexpected important changes etc...
-
if (tableExists('setting')) {
Database::exec('DROP TABLE setting');
}
@@ -47,7 +29,6 @@ if (tableExists('setting_distro')) {
if (tableExists('cat_setting')) {
Database::exec('DROP TABLE cat_setting');
}
-*/
// Create response for browser
diff --git a/modules-available/baseconfig/page.inc.php b/modules-available/baseconfig/page.inc.php
index 3bd96223..42180f9f 100644
--- a/modules-available/baseconfig/page.inc.php
+++ b/modules-available/baseconfig/page.inc.php
@@ -29,16 +29,8 @@ class Page_BaseConfig extends Page
User::assertPermission('edit', 0);
}
// Build variables for specific sub-settings
- if ($this->targetModule === false) {
- // We're editing global settings
- // use the 'enabled' field
- $qry_insert = ', enabled';
- $qry_values = ', :enabled';
- $qry_update = ', enabled = :enabled';
- $params = array();
- $delExtra = '';
- } elseif (empty($this->qry_extra['field'])) {
- // Module specific, but module doesn't have an extra field
+ if ($this->targetModule === false || empty($this->qry_extra['field'])) {
+ // Global, or Module specific, but module doesn't have an extra field
$qry_insert = '';
$qry_values = '';
$qry_update = '';
@@ -58,7 +50,7 @@ class Page_BaseConfig extends Page
Util::redirect('?do=BaseConfig');
}
}
- // Honor override/enabled checkbox
+ // Honor override checkbox
$override = Request::post('override', array());
// Load all existing config options to validate input
$vars = BaseConfigUtil::getVariables();
@@ -68,10 +60,7 @@ class Page_BaseConfig extends Page
foreach ($vars as $key => $var) {
if (isset($var['shadowed']))
continue;
- if ($this->targetModule === false) {
- // Global mode
- $params['enabled'] = (is_array($override) && isset($override[$key]) && $override[$key] === 'on') ? 1 : 0;
- } else {
+ if ($this->targetModule !== false) {
// Module mode
if (is_array($override) && (!isset($override[$key]) || $override[$key] !== 'on')) {
// override not set - delete
@@ -137,11 +126,7 @@ class Page_BaseConfig extends Page
$editForbidden = !User::hasPermission('edit', 0);
}
// Get stuff that's set in DB already
- if ($this->targetModule === false) {
- $fields = ', enabled';
- $where = '';
- $params = array();
- } elseif (isset($this->qry_extra['field'])) {
+ if ($this->targetModule !== false && isset($this->qry_extra['field'])) {
$fields = '';
$where = " WHERE {$this->qry_extra['field']} = :field_value";
$params = array('field_value' => $this->qry_extra['field_value']);
@@ -175,12 +160,7 @@ class Page_BaseConfig extends Page
}
// Add entries that weren't in the db (global), setup override checkbox (module specific)
foreach ($vars as $key => $var) {
- if ($this->targetModule === false) {
- // Global settings - honor enabled field in db
- if (!isset($settings[$var['catid']]['settings'][$key]['enabled']) || $settings[$var['catid']]['settings'][$key]['enabled'] == 1) {
- $settings[$var['catid']]['settings'][$key]['checked'] = 'checked';
- }
- } elseif (!isset($settings[$var['catid']]['settings'][$key])) {
+ if ($this->targetModule !== false && !isset($settings[$var['catid']]['settings'][$key])) {
// Module specific - value is not set in DB
$settings[$var['catid']]['settings'][$key] = $var + array(
'setting' => $key
diff --git a/modules-available/baseconfig/templates/_page.html b/modules-available/baseconfig/templates/_page.html
index 86ab8362..7f7c33d0 100644
--- a/modules-available/baseconfig/templates/_page.html
+++ b/modules-available/baseconfig/templates/_page.html
@@ -29,13 +29,14 @@
{{#defaultvalue}}{{lang_defaultValue}}:{{/defaultvalue}}
{{defaultvalue}}
</div>
+ {{#override}}
<div class="checkbox">
- <input name="override[{{setting}}]" id="CB_{{setting}}" type="checkbox" {{checked}} {{edit_disabled}}>
+ <input name="override[{{setting}}]" class="override-cb" id="CB_{{setting}}" type="checkbox" {{checked}} {{edit_disabled}}>
<label for="CB_{{setting}}">
- {{#override}}{{lang_enableOverride}}{{/override}}
- {{^override}}{{lang_settingActive}}{{/override}}
+ {{lang_enableOverride}}
</label>
</div>
+ {{/override}}
</div>
<div class="col-md-5 config-container">
{{{item}}}
@@ -67,8 +68,6 @@
</div>
{{/categories}}
<div class="text-right">
- <button class="btn btn-warning" type="button" onclick="window.location.hash = '#bottom'; window.location.reload(true);"><span class="glyphicon glyphicon-refresh"></span> {{lang_discardChanges}}</button>
- <a name="bottom"></a>
{{^override}}
<a class="btn btn-default" href="api.php?do=baseconfig&amp;user={{userid}}"><span class="glyphicon glyphicon-download-alt"></span> Download</a>
{{/override}}
@@ -102,7 +101,7 @@ document.addEventListener("DOMContentLoaded", function () {
buttonWidth: '100%',
buttonClass: 'form-control'
});
- $('select.multiselect').filter(':disabled').multiselect('disable');
+ $multilists.filter(':disabled').multiselect('disable');
/* data-shadowing bindings */
var updateShadows = function() {
@@ -118,15 +117,14 @@ document.addEventListener("DOMContentLoaded", function () {
var target = targets[i];
var inp = $('#' + target);
var selitem = inp.data('selitem');
-
if (currentValue === triggerVal) {
inp.prop('disabled', true);
if (selitem) selitem.disable();
- inp.filter('.multiselect').multiselect('disable');
+ inp.filter('.multilist').multiselect('disable');
} else {
inp.prop('disabled', false);
if (selitem) selitem.enable();
- inp.filter('.multiselect').multiselect('enable');
+ inp.filter('.multilist').multiselect('enable');
}
}
}
@@ -142,5 +140,20 @@ document.addEventListener("DOMContentLoaded", function () {
var $cont = $('.config-container');
$cont.find('select, input').on('change', updateCheckbox);
$cont.find('input').on('input', updateCheckbox);
+ $('.override-cb').on('change', function() {
+ if (this.checked) return;
+ var input = document.getElementById(this.id.substr(3));
+ if (!input) return;
+ if (input.tagName.toUpperCase() === 'SELECT') {
+ $(input).find('option').each(function() {
+ $(this).prop('selected', this.defaultSelected);
+ });
+ $(input).filter('.multilist').multiselect('refresh');
+ } else if (input.type && input.type.toUpperCase() === 'CHECKBOX') {
+ $(input).prop('checked', input.defaultChecked);
+ } else if (input.defaultValue !== undefined) {
+ $(input).val(input.defaultValue);
+ }
+ });
});
</script>