From 65d94131b76ddef5a0788bc543452534e7faf918 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 9 Apr 2019 11:39:47 +0200 Subject: [baseconfig] Remove "enabled" checkbox, reset field on override disable Closes #3570 Closes #3569 --- modules-available/baseconfig/api.inc.php | 9 ++----- modules-available/baseconfig/install.inc.php | 19 -------------- modules-available/baseconfig/page.inc.php | 32 +++++------------------ modules-available/baseconfig/templates/_page.html | 31 +++++++++++++++------- 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(''); -$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 /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}} + {{#override}}
- +
+ {{/override}}
{{{item}}} @@ -67,8 +68,6 @@
{{/categories}}
- - {{^override}} Download {{/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); + } + }); }); -- cgit v1.2.3-55-g7522