diff --git a/dev/Settings/Admin/Config.js b/dev/Settings/Admin/Config.js index 0a7bd3037..20e3f5d89 100644 --- a/dev/Settings/Admin/Config.js +++ b/dev/Settings/Admin/Config.js @@ -7,6 +7,7 @@ export class AdminSettingsConfig /*extends AbstractViewSettings*/ { constructor() { this.config = ko.observableArray(); + this.saved = ko.observable(false).extend({ falseTimeout: 5000 }); } beforeShow() { @@ -27,6 +28,7 @@ export class AdminSettingsConfig /*extends AbstractViewSettings*/ { items: [] }; forEachObjectEntry(items, (skey, item) => { + 'admin_password' === skey || section.items.push({ key: `config[${key}][${skey}]`, name: skey, @@ -43,6 +45,27 @@ export class AdminSettingsConfig /*extends AbstractViewSettings*/ { } saveConfig(form) { - Remote.post('AdminSettingsSet', null, new FormData(form)); + const data = new FormData(form), + config = {}; + this.config.forEach(section => { + if (!config[section.name]) { + config[section.name] = {}; + } + section.items.forEach(item => { + let value = data.get(item.key); + switch (typeof item.value) { + case 'boolean': + value = 'on' == value; + break; + case 'number': + value = parseInt(value, 10); + break; + } + config[section.name][item.name] = value; + }) + }); + Remote.post('AdminSettingsSet', null, {config:config}).then(result => { + result.Result && this.saved(true); + }); } } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/ActionsAdmin.php b/snappymail/v/0.0.0/app/libraries/RainLoop/ActionsAdmin.php index 7f6302897..3c7fee71b 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/ActionsAdmin.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/ActionsAdmin.php @@ -26,24 +26,13 @@ class ActionsAdmin extends Actions public function DoAdminSettingsSet() : array { - // TODO - $aConfig = $this->GetActionParam('config', []); - unset($aConfig['version']); - /* Sections: - [webmail] => Array - [interface] => Array - [contacts] => Array - [security] => Array - [ssl] => Array - [capa] => Array - [login] => Array - [plugins] => Array - [defaults] => Array - [logs] => Array - [cache] => Array - [labs] => Array - */ - return $this->TrueResponse(__FUNCTION__); + $oConfig = $this->Config(); + foreach ($this->GetActionParam('config', []) as $sSection => $aItems) { + foreach ($aItems as $sKey => $mValue) { + $oConfig->Set($sSection, $sKey, $mValue); + } + } + return $this->DefaultResponse(__FUNCTION__, $oConfig->Save()); } public function DoAdminSettingsUpdate() : array diff --git a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsConfig.html b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsConfig.html index c1d13ec87..019dc5e3d 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsConfig.html +++ b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsConfig.html @@ -1,5 +1,6 @@
application.ini
-
+

WARNING: experimental editor!

+ @@ -9,10 +10,10 @@ @@ -21,7 +22,5 @@
- + - +
- +