Admin: Ask for IMAP login credentials when testing, idea for #477

This commit is contained in:
the-djmaze 2022-08-04 14:58:13 +02:00
parent db95565b70
commit aff9ba29e7
66 changed files with 214 additions and 62 deletions

View file

@ -11,6 +11,8 @@ export class AskPopupView extends AbstractViewPopup {
askDesc: '',
yesButton: '',
noButton: '',
username: '',
askUsername: false,
passphrase: '',
askPass: false
});
@ -40,15 +42,19 @@ export class AskPopupView extends AbstractViewPopup {
* @param {boolean=} focusOnShow = true
* @returns {void}
*/
onShow(sAskDesc, fYesFunc = null, fNoFunc = null, focusOnShow = true, askPass = false, btnText = '') {
onShow(sAskDesc, fYesFunc = null, fNoFunc = null, focusOnShow = true, ask = 0, btnText = '') {
this.askDesc(sAskDesc || '');
this.askPass(askPass);
this.askUsername(ask & 2);
this.askPass(ask & 1);
this.username('');
this.passphrase('');
this.yesButton(i18n(btnText || 'GLOBAL/YES'));
this.noButton(i18n(askPass ? 'GLOBAL/CANCEL' : 'GLOBAL/NO'));
this.noButton(i18n(ask ? 'GLOBAL/CANCEL' : 'GLOBAL/NO'));
this.fYesAction = fYesFunc;
this.fNoAction = fNoFunc;
this.focusOnShow = focusOnShow ? (askPass ? 'input[type="password"]' : '.buttonYes') : '';
this.focusOnShow = focusOnShow
? (ask ? 'input[type="'+(ask&2?'text':'password')+'"]' : '.buttonYes')
: '';
}
afterShow() {
@ -80,7 +86,20 @@ AskPopupView.password = function(sAskDesc, btnText) {
() => resolve(this.__vm.passphrase()),
() => resolve(null),
true,
true,
1,
btnText
]);
});
}
AskPopupView.credentials = function(sAskDesc, btnText) {
return new Promise(resolve => {
this.showModal([
sAskDesc,
() => resolve({username:this.__vm.username(), password:this.__vm.passphrase()}),
() => resolve(null),
true,
3,
btnText
]);
});

View file

@ -8,6 +8,8 @@ import { AbstractViewPopup } from 'Knoin/AbstractViews';
import { DomainAdminStore } from 'Stores/Admin/Domain';
import { AskPopupView } from 'View/Popup/Ask';
const domainToParams = oDomain => ({
Name: oDomain.name(),
@ -179,39 +181,46 @@ export class DomainPopupView extends AbstractViewPopup {
testConnectionCommand() {
this.clearTesting(false);
this.testing(true);
// https://github.com/the-djmaze/snappymail/issues/477
AskPopupView.credentials('IMAP', 'GLOBAL/TEST').then(credentials => {
if (credentials) {
this.testing(true);
const params = domainToParams(this);
params.username = credentials.username;
params.password = credentials.password;
Remote.request('AdminDomainTest',
(iError, oData) => {
this.testing(false);
if (iError) {
this.testingImapError(true);
this.testingSieveError(true);
this.testingSmtpError(true);
} else {
this.testingDone(true);
this.testingImapError(true !== oData.Result.Imap);
this.testingSieveError(true !== oData.Result.Sieve);
this.testingSmtpError(true !== oData.Result.Smtp);
Remote.request('AdminDomainTest',
(iError, oData) => {
this.testing(false);
if (iError) {
this.testingImapError(true);
this.testingSieveError(true);
this.testingSmtpError(true);
} else {
this.testingDone(true);
this.testingImapError(true !== oData.Result.Imap);
this.testingSieveError(true !== oData.Result.Sieve);
this.testingSmtpError(true !== oData.Result.Smtp);
if (this.testingImapError() && oData.Result.Imap) {
this.testingImapErrorDesc('');
this.testingImapErrorDesc(oData.Result.Imap);
}
if (this.testingImapError() && oData.Result.Imap) {
this.testingImapErrorDesc('');
this.testingImapErrorDesc(oData.Result.Imap);
}
if (this.testingSieveError() && oData.Result.Sieve) {
this.testingSieveErrorDesc('');
this.testingSieveErrorDesc(oData.Result.Sieve);
}
if (this.testingSieveError() && oData.Result.Sieve) {
this.testingSieveErrorDesc('');
this.testingSieveErrorDesc(oData.Result.Sieve);
}
if (this.testingSmtpError() && oData.Result.Smtp) {
this.testingSmtpErrorDesc('');
this.testingSmtpErrorDesc(oData.Result.Smtp);
}
}
},
domainToParams(this)
);
if (this.testingSmtpError() && oData.Result.Smtp) {
this.testingSmtpErrorDesc('');
this.testingSmtpErrorDesc(oData.Result.Smtp);
}
}
},
params
);
}
});
}
onDomainCreateOrSaveResponse(iError) {

View file

@ -300,6 +300,14 @@ class ActionsAdmin extends Actions
$oSettings->type = $oDomain->IncSecure();
$oImapClient->Connect($oSettings);
$sUsername = $this->GetActionParam('username', '');
if ($sUsername) {
$oImapClient->Login([
'Login' => $sUsername,
'Password' => $this->GetActionParam('password', '')
]);
}
$oImapClient->Disconnect();
$bImapResult = true;
}

View file

@ -20,6 +20,7 @@
"NAME": "البريد الوارد",
"NONE": "None",
"NOT_SPAM": "ليست رسائل غير مرغوب فيها",
"USERNAME": "Username",
"PASSWORD": "كلمة السر",
"REPLY_TO": "الرد-الى",
"SAVE": "حفظ",

View file

@ -20,6 +20,7 @@
"NAME": "Вх. кутия",
"NONE": "Няма",
"NOT_SPAM": "Не е спам",
"USERNAME": "Username",
"PASSWORD": "Парола",
"REPLY_TO": "Отговори на",
"SAVE": "Запази",

View file

@ -4,7 +4,10 @@
"CLOSE": "Zavřít",
"SAVE": "Uložit",
"TEST": "Test",
"UPDATE": "Aktualizovat"
"UPDATE": "Aktualizovat",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Login",

View file

@ -20,6 +20,7 @@
"NAME": "Přijaté",
"NONE": "Žádný",
"NOT_SPAM": "Není to spam",
"USERNAME": "Username",
"PASSWORD": "Heslo",
"REPLY_TO": "Adresa odpovědi",
"SAVE": "Uložit",

View file

@ -4,7 +4,10 @@
"CLOSE": "Luk",
"SAVE": "Gem",
"TEST": "Test",
"UPDATE": "Opdater"
"UPDATE": "Opdater",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Log ind",

View file

@ -20,6 +20,7 @@
"NAME": "Indbakke",
"NONE": "Ingen",
"NOT_SPAM": "Ikke uønsket",
"USERNAME": "Username",
"PASSWORD": "Adgangskode",
"REPLY_TO": "Svar til",
"SAVE": "Gem",

View file

@ -4,7 +4,10 @@
"CLOSE": "Schließen",
"SAVE": "Speichern",
"TEST": "Testen",
"UPDATE": "Aktualisieren"
"UPDATE": "Aktualisieren",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Benutzer",

View file

@ -20,6 +20,7 @@
"NAME": "Name",
"NONE": "Keine",
"NOT_SPAM": "Kein Spam",
"USERNAME": "Username",
"PASSWORD": "Passwort",
"REPLY_TO": "Antwort an",
"SAVE": "Speichern",

View file

@ -20,6 +20,7 @@
"NAME": "Εισερχόμενα",
"NONE": "Κανένα",
"NOT_SPAM": "Όχι ανεπιθύμητο",
"USERNAME": "Username",
"PASSWORD": "Κωδικός πρόσβασης",
"REPLY_TO": "Απάντηση στον",
"SAVE": "Αποθήκευση",

View file

@ -20,6 +20,7 @@
"NAME": "Name",
"NONE": "None",
"NOT_SPAM": "Not Spam",
"USERNAME": "Username",
"PASSWORD": "Password",
"REPLY_TO": "Reply-To",
"SAVE": "Save",

View file

@ -4,7 +4,10 @@
"CLOSE": "Close",
"SAVE": "Save",
"TEST": "Test",
"UPDATE": "Update"
"UPDATE": "Update",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Login",

View file

@ -20,6 +20,7 @@
"NAME": "Name",
"NONE": "None",
"NOT_SPAM": "Not Spam",
"USERNAME": "Username",
"PASSWORD": "Password",
"REPLY_TO": "Reply-To",
"SAVE": "Save",

View file

@ -4,7 +4,10 @@
"CLOSE": "Cerrar",
"SAVE": "Guardar",
"TEST": "Probar",
"UPDATE": "Actualizar"
"UPDATE": "Actualizar",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Ingresar",

View file

@ -20,6 +20,7 @@
"NAME": "Nombre",
"NONE": "Ninguno",
"NOT_SPAM": "Correo no deseado",
"USERNAME": "Username",
"PASSWORD": "Contraseña",
"REPLY_TO": "Responder",
"SAVE": "Guardar",

View file

@ -20,6 +20,7 @@
"NAME": "Saabunud kirjad",
"NONE": "Puuduvad",
"NOT_SPAM": "Ei ole rämpspost",
"USERNAME": "Username",
"PASSWORD": "Salasõna",
"REPLY_TO": "Vastuse saaja",
"SAVE": "Salvesta",

View file

@ -4,7 +4,10 @@
"CLOSE": "بستن",
"SAVE": "ذخیره",
"TEST": "تست",
"UPDATE": "بروزرسانی"
"UPDATE": "بروزرسانی",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "ورود",

View file

@ -20,6 +20,7 @@
"NAME": "صندوق ورودی",
"NONE": "هیچ‌کدام",
"NOT_SPAM": "هرزنامه نیست",
"USERNAME": "Username",
"PASSWORD": "گذرواژه",
"REPLY_TO": "پاسخ به",
"SAVE": "ذخیره کن",

View file

@ -4,7 +4,10 @@
"CLOSE": "Sulje",
"SAVE": "Tallenna",
"TEST": "Testi",
"UPDATE": "Päivitä"
"UPDATE": "Päivitä",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Tunnus",

View file

@ -20,6 +20,7 @@
"NAME": "Postilaatikko",
"NONE": "Ei mitään",
"NOT_SPAM": "Ei roskapostia",
"USERNAME": "Username",
"PASSWORD": "Salasana",
"REPLY_TO": "Vastaa",
"SAVE": "Tallenna",

View file

@ -4,7 +4,10 @@
"CLOSE": "Fermer",
"SAVE": "Enregistrer",
"TEST": "Test",
"UPDATE": "Mettre à jour"
"UPDATE": "Mettre à jour",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Identifiant",

View file

@ -20,6 +20,7 @@
"NAME": "Nom",
"NONE": "Aucun",
"NOT_SPAM": "Acceptable",
"USERNAME": "Username",
"PASSWORD": "Mot de passe",
"REPLY_TO": "Répondre à",
"SAVE": "Enregistrer",

View file

@ -4,7 +4,10 @@
"CLOSE": "Bezár",
"SAVE": "Mentés",
"TEST": "Teszt",
"UPDATE": "Frissítés"
"UPDATE": "Frissítés",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Belépés",

View file

@ -20,6 +20,7 @@
"NAME": "Beérkező levelek",
"NONE": "Semmi",
"NOT_SPAM": "Nem szemét",
"USERNAME": "Username",
"PASSWORD": "Jelszó",
"REPLY_TO": "Válaszcím",
"SAVE": "Mentés",

View file

@ -4,7 +4,10 @@
"CLOSE": "Tutup",
"SAVE": "Simpan",
"TEST": "Ujicoba",
"UPDATE": "Pembaruan"
"UPDATE": "Pembaruan",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Login",

View file

@ -20,6 +20,7 @@
"NAME": "Kotak Masuk",
"NONE": "Tidak ada",
"NOT_SPAM": "Bukan Spam",
"USERNAME": "Username",
"PASSWORD": "Sandi",
"REPLY_TO": "Balas-Ke",
"SAVE": "Simpan",

View file

@ -20,6 +20,7 @@
"NAME": "Innhólf",
"NONE": "Ekkert",
"NOT_SPAM": "Ekki ruslpóstur",
"USERNAME": "Username",
"PASSWORD": "Lykilorð",
"REPLY_TO": "Svara-til",
"SAVE": "Vista",

View file

@ -4,7 +4,10 @@
"CLOSE": "Close",
"SAVE": "Save",
"TEST": "Test",
"UPDATE": "Aggiorna"
"UPDATE": "Aggiorna",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Login",

View file

@ -20,6 +20,7 @@
"NAME": "Nome",
"NONE": "Nessuno",
"NOT_SPAM": "Segnala come non spam",
"USERNAME": "Username",
"PASSWORD": "Password",
"REPLY_TO": "Rispondi a",
"SAVE": "Salva",

View file

@ -4,7 +4,10 @@
"CLOSE": "閉じる",
"SAVE": "保存",
"TEST": "テスト",
"UPDATE": "更新"
"UPDATE": "更新",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "ログイン",

View file

@ -20,6 +20,7 @@
"NAME": "受信トレイ",
"NONE": "なし",
"NOT_SPAM": "迷惑メールを解除",
"USERNAME": "Username",
"PASSWORD": "パスワード",
"REPLY_TO": "Reply-To",
"SAVE": "保存",

View file

@ -20,6 +20,7 @@
"NAME": "받은 편지함",
"NONE": "없음",
"NOT_SPAM": "스팸 아님",
"USERNAME": "Username",
"PASSWORD": "비밀번호",
"REPLY_TO": "회신 주소",
"SAVE": "저장",

View file

@ -4,7 +4,10 @@
"CLOSE": "Uždaryti",
"SAVE": "Saugoti",
"TEST": "Bandymas",
"UPDATE": "Atnaujinti"
"UPDATE": "Atnaujinti",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Prisijungimo vardas",

View file

@ -20,6 +20,7 @@
"NAME": "Gautieji",
"NONE": "Nieko",
"NOT_SPAM": "Ne šlamštas",
"USERNAME": "Username",
"PASSWORD": "Slaptažodis",
"REPLY_TO": "Kam atsakyti",
"SAVE": "Išsaugoti",

View file

@ -20,6 +20,7 @@
"NAME": "Iesūtne",
"NONE": "None",
"NOT_SPAM": "Not Spam",
"USERNAME": "Username",
"PASSWORD": "Parole",
"REPLY_TO": "Reply-To",
"SAVE": "Saglabāt",

View file

@ -4,7 +4,10 @@
"CLOSE": "Lukk",
"SAVE": "Lagre",
"TEST": "Test",
"UPDATE": "Oppdater"
"UPDATE": "Oppdater",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Brukernavn",

View file

@ -20,6 +20,7 @@
"NAME": "Innboks",
"NONE": "Ingen",
"NOT_SPAM": "Ikke søppelpost",
"USERNAME": "Username",
"PASSWORD": "Passord",
"REPLY_TO": "Svar til",
"SAVE": "Lagre",

View file

@ -4,7 +4,10 @@
"CLOSE": "Sluiten",
"SAVE": "Opslaan",
"TEST": "Test",
"UPDATE": "Updaten"
"UPDATE": "Updaten",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Inlognaam",

View file

@ -20,6 +20,7 @@
"NAME": "Naam",
"NONE": "Geen",
"NOT_SPAM": "Geen ongewenste e-mail",
"USERNAME": "Username",
"PASSWORD": "Wachtwoord",
"REPLY_TO": "Antwoordadres",
"SAVE": "Opslaan",

View file

@ -4,7 +4,10 @@
"CLOSE": "Zamknij",
"SAVE": "Zapisz",
"TEST": "Testuj",
"UPDATE": "Zaktualizuj"
"UPDATE": "Zaktualizuj",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Login",

View file

@ -20,6 +20,7 @@
"NAME": "Odebrane",
"NONE": "Brak",
"NOT_SPAM": "Oznacz jako pożądane",
"USERNAME": "Username",
"PASSWORD": "Hasło",
"REPLY_TO": "Odpisz do",
"SAVE": "Zapisz",

View file

@ -4,7 +4,10 @@
"CLOSE": "Fechar",
"SAVE": "Salvar",
"TEST": "Testar",
"UPDATE": "Atualizar"
"UPDATE": "Atualizar",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Usuário",

View file

@ -20,6 +20,7 @@
"NAME": "Caixa de Entrada",
"NONE": "Nenhum",
"NOT_SPAM": "Não é Lixo Eletrônico",
"USERNAME": "Username",
"PASSWORD": "Senha",
"REPLY_TO": "Responder para",
"SAVE": "Salvar",

View file

@ -4,7 +4,10 @@
"CLOSE": "Fechar",
"SAVE": "Guardar",
"TEST": "Testar",
"UPDATE": "Atualizar"
"UPDATE": "Atualizar",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Utilizador",

View file

@ -20,6 +20,7 @@
"NAME": "Nome",
"NONE": "Nenhum",
"NOT_SPAM": "Não é spam",
"USERNAME": "Username",
"PASSWORD": "Palavra-passe",
"REPLY_TO": "Resp.-Para",
"SAVE": "Guardar",

View file

@ -4,7 +4,10 @@
"CLOSE": "Fechar",
"SAVE": "Guardar",
"TEST": "Testar",
"UPDATE": "Atualizar"
"UPDATE": "Atualizar",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Utilizador",

View file

@ -20,6 +20,7 @@
"NAME": "Nome",
"NONE": "Nenhum",
"NOT_SPAM": "Não é spam",
"USERNAME": "Username",
"PASSWORD": "Palavra-passe",
"REPLY_TO": "Resp.-Para",
"SAVE": "Guardar",

View file

@ -20,6 +20,7 @@
"NAME": "Intrări",
"NONE": "None",
"NOT_SPAM": "Not SPAM",
"USERNAME": "Username",
"PASSWORD": "Parolă",
"REPLY_TO": "Reply-To",
"SAVE": "Salvează",

View file

@ -4,7 +4,10 @@
"CLOSE": "Закрыть",
"SAVE": "Сохранить",
"TEST": "Тест",
"UPDATE": "Обновить"
"UPDATE": "Обновить",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Логин",

View file

@ -20,6 +20,7 @@
"NAME": "Входящие",
"NONE": "Ничего",
"NOT_SPAM": "Не спам",
"USERNAME": "Username",
"PASSWORD": "Пароль",
"REPLY_TO": "Ответить-на",
"SAVE": "Сохранить",

View file

@ -4,7 +4,10 @@
"CLOSE": "Zatvoriť",
"SAVE": "Uložiť",
"TEST": "Test",
"UPDATE": "Aktualizovať"
"UPDATE": "Aktualizovať",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Prihlasovanie",

View file

@ -20,6 +20,7 @@
"NAME": "Prijaté",
"NONE": "Žiadny",
"NOT_SPAM": "Nie je spam",
"USERNAME": "Username",
"PASSWORD": "Heslo",
"REPLY_TO": "Adresa pre odpoveď",
"SAVE": "Uložiť",

View file

@ -4,7 +4,10 @@
"CLOSE": "Zapri",
"SAVE": "Shrani",
"TEST": "Preizkus",
"UPDATE": "Posodobi"
"UPDATE": "Posodobi",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Prijava",

View file

@ -20,6 +20,7 @@
"NAME": "Prejeto",
"NONE": "Nobeno",
"NOT_SPAM": "Ni vsiljena pošta",
"USERNAME": "Username",
"PASSWORD": "Geslo",
"REPLY_TO": "Odgovor na",
"SAVE": "Shrani",

View file

@ -4,7 +4,10 @@
"CLOSE": "Stäng",
"SAVE": "Spara",
"TEST": "Test",
"UPDATE": "Uppdatera"
"UPDATE": "Uppdatera",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Logga in",

View file

@ -20,6 +20,7 @@
"NAME": "Inkorg",
"NONE": "Ingen",
"NOT_SPAM": "Inte spam",
"USERNAME": "Username",
"PASSWORD": "Lösenord",
"REPLY_TO": "Svara till",
"SAVE": "Spara",

View file

@ -20,6 +20,7 @@
"NAME": "Gelen Kutusu",
"NONE": "None",
"NOT_SPAM": "Spam Değil",
"USERNAME": "Username",
"PASSWORD": "Şifre",
"REPLY_TO": "Reply-To",
"SAVE": "Kaydet",

View file

@ -20,6 +20,7 @@
"NAME": "Вхідні",
"NONE": "None",
"NOT_SPAM": "Не спам",
"USERNAME": "Username",
"PASSWORD": "Пароль",
"REPLY_TO": "Reply-To",
"SAVE": "Зберегти",

View file

@ -4,7 +4,10 @@
"CLOSE": "Đóng",
"SAVE": "Lưu",
"TEST": "Thử",
"UPDATE": "Cập nhật"
"UPDATE": "Cập nhật",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "Đăng nhập",

View file

@ -20,6 +20,7 @@
"NAME": "Tên gọi",
"NONE": "Trống",
"NOT_SPAM": "Không phải thư rác",
"USERNAME": "Username",
"PASSWORD": "Mật khẩu",
"REPLY_TO": "Nhận thư phản hồi về",
"SAVE": "Lưu",

View file

@ -4,7 +4,10 @@
"CLOSE": "关闭",
"SAVE": "保存",
"TEST": "测试",
"UPDATE": "更新"
"UPDATE": "更新",
"USERNAME": "Username",
"PASSWORD": "Password",
"CANCEL": "Cancel"
},
"LOGIN": {
"LABEL_LOGIN": "登录",

View file

@ -20,6 +20,7 @@
"NAME": "名称",
"NONE": "无",
"NOT_SPAM": "这不是垃圾邮件",
"USERNAME": "Username",
"PASSWORD": "密码",
"REPLY_TO": "回复",
"SAVE": "保存",

View file

@ -20,6 +20,7 @@
"NAME": "收件箱",
"NONE": "None",
"NOT_SPAM": "Not Spam",
"USERNAME": "Username",
"PASSWORD": "密碼",
"REPLY_TO": "Reply-To",
"SAVE": "保存",

View file

@ -1,7 +1,11 @@
<div class="modal-body">
<div data-bind="html: askDesc"></div>
<form class="form-horizontal" data-bind="visible: askPass, submit: yesClick" style="margin: 2em 0 0">
<div class="control-group">
<form class="form-horizontal" data-bind="visible: askPass() || askUsername(), submit: yesClick" style="margin: 2em 0 0">
<div class="control-group" data-bind="visible: askUsername">
<label data-i18n="GLOBAL/USERNAME"></label>
<input type="text" data-bind="value: username">
</div>
<div class="control-group" data-bind="visible: askPass">
<label data-i18n="GLOBAL/PASSWORD"></label>
<input type="password" data-bind="value: passphrase">
</div>