Added Admin -> Config to view all the application.ini settings.

TODO: save changes
This commit is contained in:
djmaze 2021-12-23 11:37:39 +01:00
parent d7db182e5f
commit f20a7c7b83
31 changed files with 263 additions and 80 deletions

View file

@ -10,6 +10,7 @@ import { SecurityAdminSettings } from 'Settings/Admin/Security';
import { PackagesAdminSettings } from 'Settings/Admin/Packages';
import { AboutAdminSettings } from 'Settings/Admin/About';
import { BrandingAdminSettings } from 'Settings/Admin/Branding';
import { ConfigAdminSettings } from 'Settings/Admin/Config';
import { MenuSettingsAdminView } from 'View/Admin/Settings/Menu';
import { PaneSettingsAdminView } from 'View/Admin/Settings/Pane';
@ -33,6 +34,7 @@ export class SettingsAdminScreen extends AbstractSettingsScreen {
[ContactsAdminSettings, 'Contacts'],
[SecurityAdminSettings, 'Security'],
[PackagesAdminSettings, 'Packages'],
[ConfigAdminSettings, 'Config'],
[AboutAdminSettings, 'About'],
].forEach(item =>
settingsAddViewModel(

View file

@ -0,0 +1,47 @@
import ko from 'ko';
import Remote from 'Remote/Admin/Fetch';
export class ConfigAdminSettings /*extends AbstractViewSettings*/ {
constructor() {
this.config = ko.observableArray();
}
onBeforeShow() {
Remote.request('AdminSettingsGet', (iError, data) => {
if (!iError) {
const cfg = [],
getInputType = value => {
switch (typeof value)
{
case 'boolean': return 'checkbox';
case 'number': return 'number';
}
return 'text';
};
Object.entries(data.Result).forEach(([key, items]) => {
const section = {
name: key,
items: []
};
Object.entries(items).forEach(([skey, item]) => {
section.items.push({
key: `config[${key}][${skey}]`,
name: skey,
value: item[0],
type: getInputType(item[0]),
comment: item[1]
});
});
cfg.push(section);
});
this.config(cfg);
}
});
}
saveConfig(form) {
Remote.post('AdminSettingsSet', null, new FormData(form));
}
}

View file

@ -26,6 +26,7 @@
@import "Admin/Layout.less";
@import "Admin/General.less";
@import "Admin/Branding.less";
@import "Admin/Config.less";
@import "Admin/Domains.less";
@import "Admin/Domain.less";
@import "Admin/Packages.less";

View file

@ -0,0 +1,6 @@
#V-Settings-Config {
em {
display: block;
}
}

View file

@ -1014,40 +1014,6 @@ class Actions
);
}
public function setConfigFromParams(Config\Application $oConfig, string $sParamName, string $sConfigSector, string $sConfigName, string $sType = 'string', ?callable $mStringCallback = null): void
{
$sValue = $this->GetActionParam($sParamName, '');
if ($this->HasActionParam($sParamName)) {
switch ($sType) {
default:
case 'string':
$sValue = (string)$sValue;
if ($mStringCallback && is_callable($mStringCallback)) {
$sValue = $mStringCallback($sValue);
}
$oConfig->Set($sConfigSector, $sConfigName, (string)$sValue);
break;
case 'dummy':
$sValue = (string)$this->GetActionParam('ContactsPdoPassword', APP_DUMMY);
if (APP_DUMMY !== $sValue) {
$oConfig->Set($sConfigSector, $sConfigName, (string)$sValue);
}
break;
case 'int':
$iValue = (int)$sValue;
$oConfig->Set($sConfigSector, $sConfigName, $iValue);
break;
case 'bool':
$oConfig->Set($sConfigSector, $sConfigName, '1' === (string)$sValue);
break;
}
}
}
public function DoNoop(): array
{
$this->initMailClientConnection();

View file

@ -88,6 +88,35 @@ trait Admin
}
}
public function DoAdminSettingsGet() : array
{
$aConfig = $this->Config()->jsonSerialize();
unset($aConfig['version']);
return $this->DefaultResponse(__FUNCTION__, $aConfig);
}
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__);
}
public function DoAdminSettingsUpdate() : array
{
// sleep(3);
@ -885,4 +914,38 @@ trait Admin
return false;
}
private function setConfigFromParams(Config\Application $oConfig, string $sParamName, string $sConfigSector, string $sConfigName, string $sType = 'string', ?callable $mStringCallback = null): void
{
$sValue = $this->GetActionParam($sParamName, '');
if ($this->HasActionParam($sParamName)) {
switch ($sType) {
default:
case 'string':
$sValue = (string)$sValue;
if ($mStringCallback && is_callable($mStringCallback)) {
$sValue = $mStringCallback($sValue);
}
$oConfig->Set($sConfigSector, $sConfigName, (string)$sValue);
break;
case 'dummy':
$sValue = (string)$this->GetActionParam('ContactsPdoPassword', APP_DUMMY);
if (APP_DUMMY !== $sValue) {
$oConfig->Set($sConfigSector, $sConfigName, (string)$sValue);
}
break;
case 'int':
$iValue = (int)$sValue;
$oConfig->Set($sConfigSector, $sConfigName, $iValue);
break;
case 'bool':
$oConfig->Set($sConfigSector, $sConfigName, '1' === (string)$sValue);
break;
}
}
}
}

View file

@ -2,7 +2,7 @@
namespace RainLoop\Config;
abstract class AbstractConfig
abstract class AbstractConfig implements \JsonSerializable
{
/**
* @var string
@ -52,6 +52,11 @@ abstract class AbstractConfig
return \is_array($this->aData) && \count($this->aData);
}
public function jsonSerialize()
{
return $this->aData;
}
/**
* @param mixed $mDefault = null
*

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Uložit"
},
"LOGIN": {
"LABEL_LOGIN": "Login",
"LABEL_PASSWORD": "Heslo",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domény",
"LABEL_SECURITY_NAME": "Zabezpečení",
"LABEL_PACKAGES_NAME": "Balíčky",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Info"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Plugin",
"DESC_NOTHING_TO_CONFIGURE": "Není zde nic ke konfiguraci",
"BUTTON_CLOSE": "Zavřít",
"BUTTON_SAVE": "Uložit"
"BUTTON_CLOSE": "Zavřít"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Gem"
},
"LOGIN": {
"LABEL_LOGIN": "Log ind",
"LABEL_PASSWORD": "Adgangskode",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domæner",
"LABEL_SECURITY_NAME": "Sikkerhed",
"LABEL_PACKAGES_NAME": "Pakker",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Om"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Tilføjelse",
"DESC_NOTHING_TO_CONFIGURE": "Intet at opsætte",
"BUTTON_CLOSE": "Luk",
"BUTTON_SAVE": "Gem"
"BUTTON_CLOSE": "Luk"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Speichern"
},
"LOGIN": {
"LABEL_LOGIN": "Benutzer",
"LABEL_PASSWORD": "Passwort",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domains",
"LABEL_SECURITY_NAME": "Sicherheit",
"LABEL_PACKAGES_NAME": "Erweiterungen",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Über"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Erweiterung",
"DESC_NOTHING_TO_CONFIGURE": "Nichts zu konfigurieren",
"BUTTON_CLOSE": "Schließen",
"BUTTON_SAVE": "Speichern"
"BUTTON_CLOSE": "Schließen"
},
"POPUPS_ASK": {
"BUTTON_YES": "Ja",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Save"
},
"LOGIN": {
"LABEL_LOGIN": "Login",
"LABEL_PASSWORD": "Password",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domains",
"LABEL_SECURITY_NAME": "Security",
"LABEL_PACKAGES_NAME": "Extensions",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "About"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Extension",
"DESC_NOTHING_TO_CONFIGURE": "Nothing to configure",
"BUTTON_CLOSE": "Close",
"BUTTON_SAVE": "Save"
"BUTTON_CLOSE": "Close"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Guardar"
},
"LOGIN": {
"LABEL_LOGIN": "Ingresar",
"LABEL_PASSWORD": "Contraseña",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Dominios",
"LABEL_SECURITY_NAME": "Seguridad",
"LABEL_PACKAGES_NAME": "Extensiones",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Acerca"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Extensión",
"DESC_NOTHING_TO_CONFIGURE": "Nada para configurar",
"BUTTON_CLOSE": "Cerrar",
"BUTTON_SAVE": "Guardar"
"BUTTON_CLOSE": "Cerrar"
},
"POPUPS_ASK": {
"BUTTON_YES": "Sí",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "ذخیره"
},
"LOGIN": {
"LABEL_LOGIN": "ورود",
"LABEL_PASSWORD": "گذرواژه",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "دامنه‌ها",
"LABEL_SECURITY_NAME": "امنیت",
"LABEL_PACKAGES_NAME": "بسته‌ها",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "درباره"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "افزونه",
"DESC_NOTHING_TO_CONFIGURE": "چیزی برای پیکربندی نیست",
"BUTTON_CLOSE": "بستن",
"BUTTON_SAVE": "ذخیره"
"BUTTON_CLOSE": "بستن"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Tallenna"
},
"LOGIN": {
"LABEL_LOGIN": "Tunnus",
"LABEL_PASSWORD": "Salasana",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Verkkotunnutkset",
"LABEL_SECURITY_NAME": "Turvallisuus",
"LABEL_PACKAGES_NAME": "Paketit",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Tietoja"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Lisäosa",
"DESC_NOTHING_TO_CONFIGURE": "Ei mitään asetettavaa",
"BUTTON_CLOSE": "Sulje",
"BUTTON_SAVE": "Tallenna"
"BUTTON_CLOSE": "Sulje"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Enregistrer"
},
"LOGIN": {
"LABEL_LOGIN": "Identifiant",
"LABEL_PASSWORD": "Mot de passe",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domaines",
"LABEL_SECURITY_NAME": "Sécurité",
"LABEL_PACKAGES_NAME": "Extensions",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "A propos"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Extension",
"DESC_NOTHING_TO_CONFIGURE": "Rien à configurer",
"BUTTON_CLOSE": "Fermer",
"BUTTON_SAVE": "Enregistrer"
"BUTTON_CLOSE": "Fermer"
},
"POPUPS_ASK": {
"BUTTON_YES": "Oui",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Mentés"
},
"LOGIN": {
"LABEL_LOGIN": "Belépés",
"LABEL_PASSWORD": "Jelszó",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domainek",
"LABEL_SECURITY_NAME": "Biztonság",
"LABEL_PACKAGES_NAME": "Bővítmények",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Névjegy"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Bővítményt",
"DESC_NOTHING_TO_CONFIGURE": "Nincs mit beállítani",
"BUTTON_CLOSE": "Bezár",
"BUTTON_SAVE": "Mentés"
"BUTTON_CLOSE": "Bezár"
},
"POPUPS_ASK": {
"BUTTON_YES": "Igen",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Simpan"
},
"LOGIN": {
"LABEL_LOGIN": "Login",
"LABEL_PASSWORD": "Password",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domain",
"LABEL_SECURITY_NAME": "Keamanan",
"LABEL_PACKAGES_NAME": "Paket",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Tentang"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Plugin",
"DESC_NOTHING_TO_CONFIGURE": "Tidak ada yang dikonfigurasi",
"BUTTON_CLOSE": "Tutup",
"BUTTON_SAVE": "Simpan"
"BUTTON_CLOSE": "Tutup"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Salva"
},
"LOGIN": {
"LABEL_LOGIN": "Nome utente",
"LABEL_PASSWORD": "Password",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domini",
"LABEL_SECURITY_NAME": "Sicurezza",
"LABEL_PACKAGES_NAME": "Pacchetti",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Informazioni"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Plugin",
"DESC_NOTHING_TO_CONFIGURE": "Niente da configurare",
"BUTTON_CLOSE": "Chiudi",
"BUTTON_SAVE": "Salva"
"BUTTON_CLOSE": "Chiudi"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "保存"
},
"LOGIN": {
"LABEL_LOGIN": "ログイン",
"LABEL_PASSWORD": "パスワード",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "ドメイン",
"LABEL_SECURITY_NAME": "セキュリティ",
"LABEL_PACKAGES_NAME": "パッケージ",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "RainLoop について"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "プラグイン",
"DESC_NOTHING_TO_CONFIGURE": "何も設定されていません",
"BUTTON_CLOSE": "閉じる",
"BUTTON_SAVE": "保存"
"BUTTON_CLOSE": "閉じる"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Saugoti"
},
"LOGIN": {
"LABEL_LOGIN": "Prisijungimo vardas",
"LABEL_PASSWORD": "Slaptažodis",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domenai",
"LABEL_SECURITY_NAME": "Sauga",
"LABEL_PACKAGES_NAME": "Paketai",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Apie"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Įskiepis",
"DESC_NOTHING_TO_CONFIGURE": "Nėra ką konfiguruoti",
"BUTTON_CLOSE": "Uždaryti",
"BUTTON_SAVE": "Saugoti"
"BUTTON_CLOSE": "Uždaryti"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Lagre"
},
"LOGIN": {
"LABEL_LOGIN": "Brukernavn",
"LABEL_PASSWORD": "Passord",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domener",
"LABEL_SECURITY_NAME": "Sikkerhet",
"LABEL_PACKAGES_NAME": "Pakker",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Om"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Tillegg",
"DESC_NOTHING_TO_CONFIGURE": "Ingenting å sette opp",
"BUTTON_CLOSE": "Lukk",
"BUTTON_SAVE": "Lagre"
"BUTTON_CLOSE": "Lukk"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Opslaan"
},
"LOGIN": {
"LABEL_LOGIN": "Inlognaam",
"LABEL_PASSWORD": "Wachtwoord",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domeinen",
"LABEL_SECURITY_NAME": "Beveiliging",
"LABEL_PACKAGES_NAME": "Extensies",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Over"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Extensie",
"DESC_NOTHING_TO_CONFIGURE": "Niets om te configureren",
"BUTTON_CLOSE": "Annuleer",
"BUTTON_SAVE": "Opslaan"
"BUTTON_CLOSE": "Annuleer"
},
"POPUPS_ASK": {
"BUTTON_YES": "Ja",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Zapisz"
},
"LOGIN": {
"LABEL_LOGIN": "Login",
"LABEL_PASSWORD": "Hasło",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domeny",
"LABEL_SECURITY_NAME": "Bezpieczeństwo",
"LABEL_PACKAGES_NAME": "Pakiety",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "O programie"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Wtyczka",
"DESC_NOTHING_TO_CONFIGURE": "Brak opcji do skonfigurowania",
"BUTTON_CLOSE": "Zamknij",
"BUTTON_SAVE": "Zapisz"
"BUTTON_CLOSE": "Zamknij"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Salvar"
},
"LOGIN": {
"LABEL_LOGIN": "Usuário",
"LABEL_PASSWORD": "Senha",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domínios",
"LABEL_SECURITY_NAME": "Segurança",
"LABEL_PACKAGES_NAME": "Pacotes",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Sobre"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Plugin",
"DESC_NOTHING_TO_CONFIGURE": "Nada para configurar",
"BUTTON_CLOSE": "Fechar",
"BUTTON_SAVE": "Salvar"
"BUTTON_CLOSE": "Fechar"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Сохранить"
},
"LOGIN": {
"LABEL_LOGIN": "Логин",
"LABEL_PASSWORD": "Пароль",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Домены",
"LABEL_SECURITY_NAME": "Безопасность",
"LABEL_PACKAGES_NAME": "Пакеты",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "О Программе"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Плагин",
"DESC_NOTHING_TO_CONFIGURE": "Без настроек",
"BUTTON_CLOSE": "Закрыть",
"BUTTON_SAVE": "Сохранить"
"BUTTON_CLOSE": "Закрыть"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Uložiť"
},
"LOGIN": {
"LABEL_LOGIN": "Prihlasovanie",
"LABEL_PASSWORD": "Heslo",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domény",
"LABEL_SECURITY_NAME": "Zabezpečenie",
"LABEL_PACKAGES_NAME": "Balíčky",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "O programe"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Doplnok",
"DESC_NOTHING_TO_CONFIGURE": "Nothing to configure",
"BUTTON_CLOSE": "Zatvoriť",
"BUTTON_SAVE": "Uložiť"
"BUTTON_CLOSE": "Zatvoriť"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Shrani"
},
"LOGIN": {
"LABEL_LOGIN": "Prijava",
"LABEL_PASSWORD": "Geslo",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domene",
"LABEL_SECURITY_NAME": "Varnost",
"LABEL_PACKAGES_NAME": "Paketi",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Več o"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Vtičnik",
"DESC_NOTHING_TO_CONFIGURE": "Ni nastavitev za spreminjati",
"BUTTON_CLOSE": "Zapri",
"BUTTON_SAVE": "Shrani"
"BUTTON_CLOSE": "Zapri"
},
"POPUPS_ASK": {
"BUTTON_YES": "Yes",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "Spara"
},
"LOGIN": {
"LABEL_LOGIN": "Logga in",
"LABEL_PASSWORD": "Lösenord",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "Domäner",
"LABEL_SECURITY_NAME": "Säkerhet",
"LABEL_PACKAGES_NAME": "Tillägg",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "Om"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "Tillägget",
"DESC_NOTHING_TO_CONFIGURE": "Inget att konfigurera",
"BUTTON_CLOSE": "Stäng",
"BUTTON_SAVE": "Spara"
"BUTTON_CLOSE": "Stäng"
},
"POPUPS_ASK": {
"BUTTON_YES": "Ja",

View file

@ -1,4 +1,7 @@
{
"GLOBAL": {
"SAVE": "保存"
},
"LOGIN": {
"LABEL_LOGIN": "登录",
"LABEL_PASSWORD": "密码",
@ -16,6 +19,7 @@
"LABEL_DOMAINS_NAME": "域名",
"LABEL_SECURITY_NAME": "安全",
"LABEL_PACKAGES_NAME": "插件包",
"LABEL_CONFIG_NAME": "Config",
"LABEL_ABOUT_NAME": "关于"
},
"TAB_GENERAL": {
@ -140,8 +144,7 @@
"POPUPS_PLUGIN": {
"TITLE_PLUGIN": "插件",
"DESC_NOTHING_TO_CONFIGURE": "无可用配置",
"BUTTON_CLOSE": "关闭",
"BUTTON_SAVE": "保存"
"BUTTON_CLOSE": "关闭"
},
"POPUPS_ASK": {
"BUTTON_YES": "是",

View file

@ -0,0 +1,27 @@
<div class="legend">application.ini</div>
<form method="POST" data-bind="submit: saveConfig">
<table class="table table-hover table-bordered">
<!-- ko foreach: config -->
<tbody>
<tr><th colspan="3" data-bind="text: name"></th></tr>
<!-- ko foreach: items -->
<tr>
<td data-bind="text: name"></td>
<td>
<!-- ko if: 'checkbox' == type -->
<input type="checkbox" data-bind="attr: {name: key, checked: value}"/>
<!-- /ko -->
<!-- ko if: 'checkbox' != type -->
<input data-bind="attr: {name: key, type: type}, value: value"/>
<!-- /ko -->
<em data-bind="text: comment, visible: comment"></em>
</td>
</tr>
<!-- /ko -->
</tbody>
<!-- /ko -->
</table>
<!--
<button data-i18n="GLOBAL/SAVE"></button>
-->
</form>

View file

@ -26,6 +26,6 @@
</a>
<a class="btn" data-bind="command: saveCommand, visible: hasConfiguration">
<i class="fontastic"></i>
<span data-i18n="POPUPS_PLUGIN/BUTTON_SAVE"></span>
<span data-i18n="GLOBAL/SAVE"></span>
</a>
</footer>