Added additional account edit form

This commit is contained in:
RainLoop Team 2014-10-21 20:49:15 +04:00
parent c6ec3fb311
commit ebb6a06c65
36 changed files with 149 additions and 59 deletions

View file

@ -416,6 +416,7 @@
'DemoSendMessageError': 750,
'AccountAlreadyExists': 801,
'AccountDoesNotExist': 802,
'MailServerError': 901,
'ClientViewError': 902,

View file

@ -710,6 +710,7 @@
oN[Enums.Notification.DemoSendMessageError] = Utils.i18n('NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR');
oN[Enums.Notification.AccountAlreadyExists] = Utils.i18n('NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS');
oN[Enums.Notification.AccountDoesNotExist] = Utils.i18n('NOTIFICATIONS/ACCOUNT_DOES_NOT_EXIST');
oN[Enums.Notification.MailServerError] = Utils.i18n('NOTIFICATIONS/MAIL_SERVER_ERROR');
oN[Enums.Notification.InvalidInputArgument] = Utils.i18n('NOTIFICATIONS/INVALID_INPUT_ARGUMENT');

View file

@ -26,6 +26,7 @@
this.deleteAccess = ko.observable(false);
this.canBeDalete = ko.observable(Utils.isUnd(bCanBeDelete) ? true : !!bCanBeDelete);
this.canBeEdit = this.canBeDalete;
}
_.extend(AccountModel.prototype, AbstractModel.prototype);

View file

@ -51,6 +51,14 @@
require('Knoin/Knoin').showScreenPopup(require('View/Popup/AddAccount'));
};
AccountsUserSetting.prototype.editAccount = function (oAccountItem)
{
if (oAccountItem && oAccountItem.canBeEdit())
{
require('Knoin/Knoin').showScreenPopup(require('View/Popup/AddAccount'), [oAccountItem]);
}
};
/**
* @param {AccountModel} oAccountToRemove
*/
@ -94,6 +102,21 @@
}
};
AccountsUserSetting.prototype.onBuild = function (oDom)
{
var self = this;
oDom
.on('click', '.account-item .e-action', function () {
var oAccountItem = ko.dataFor(this);
if (oAccountItem)
{
self.editAccount(oAccountItem);
}
})
;
};
module.exports = AccountsUserSetting;
}());

View file

@ -158,15 +158,17 @@
/**
* @param {?Function} fCallback
* @param {string} sEmail
* @param {string} sLogin
* @param {string} sPassword
* @param {boolean=} bNew
*/
RemoteUserStorage.prototype.accountAdd = function (fCallback, sEmail, sLogin, sPassword)
RemoteUserStorage.prototype.accountSetup = function (fCallback, sEmail, sPassword, bNew)
{
this.defaultRequest(fCallback, 'AccountAdd', {
bNew = Utils.isUnd(bNew) ? true : !!bNew;
this.defaultRequest(fCallback, 'AccountSetup', {
'Email': sEmail,
'Login': sLogin,
'Password': sPassword
'Password': sPassword,
'New': bNew ? '1' : '0'
});
};

View file

@ -26,12 +26,15 @@
word-break: break-all;
box-sizing: border-box;
line-height: 22px;
cursor: default;
}
}
.account-item {
.e-action {
cursor: pointer;
}
.button-delete {
margin-right: 15px;
margin-top: 5px;

View file

@ -24,6 +24,8 @@
{
AbstractView.call(this, 'Popups', 'PopupsAddAccount');
this.isNew = ko.observable(true);
this.email = ko.observable('');
this.password = ko.observable('');
@ -55,10 +57,10 @@
this.submitRequest(true);
Remote.accountAdd(_.bind(function (sResult, oData) {
Remote.accountSetup(_.bind(function (sResult, oData) {
this.submitRequest(false);
if (Enums.StorageResultType.Success === sResult && oData && 'AccountAdd' === oData.Action)
if (Enums.StorageResultType.Success === sResult && oData && 'AccountSetup' === oData.Action)
{
if (oData.Result)
{
@ -75,7 +77,7 @@
this.submitError(Utils.getNotification(Enums.Notification.UnknownError));
}
}, this), this.email(), '', this.password());
}, this), this.email(), this.password(), this.isNew());
return true;
@ -91,6 +93,8 @@
AddAccountPopupView.prototype.clearPopup = function ()
{
this.isNew(true);
this.email('');
this.password('');
@ -101,9 +105,14 @@
this.submitError('');
};
AddAccountPopupView.prototype.onShow = function ()
AddAccountPopupView.prototype.onShow = function (oAccount)
{
this.clearPopup();
if (oAccount && oAccount.canBeEdit())
{
this.isNew(false);
this.email(oAccount.email);
}
};
AddAccountPopupView.prototype.onFocus = function ()

View file

@ -104,14 +104,6 @@
return !this.submitRequest();
});
this.label = ko.computed(function () {
return Utils.i18n('POPUPS_IDENTITIES/' + (this.edit() ? 'TITLE_UPDATE_IDENTITY': 'TITLE_ADD_IDENTITY'));
}, this);
this.button = ko.computed(function () {
return Utils.i18n('POPUPS_IDENTITIES/' + (this.edit() ? 'BUTTON_UPDATE_IDENTITY': 'BUTTON_ADD_IDENTITY'));
}, this);
kn.constructorEnd(this);
}

View file

@ -398,7 +398,7 @@ class Actions
*/
public function SetAuthLogoutToken()
{
\RainLoop\Utils::SetCookie(self::AUTH_SPEC_TOKEN_KEY, \md5(APP_START_TIME), 0, '/', null, null, true);
\RainLoop\Utils::SetCookie(self::AUTH_SPEC_LOGOUT_TOKEN_KEY, \md5(APP_START_TIME), 0, '/', null, null, true);
}
/**
@ -764,7 +764,7 @@ class Actions
'[APC:'.(\MailSo\Base\Utils::FunctionExistsAndEnabled('apc_fetch') ? 'on' : 'off').']'.
'[MB:'.(\MailSo\Base\Utils::FunctionExistsAndEnabled('mb_convert_encoding') ? 'on' : 'off').']'.
'[PDO:'.(\class_exists('PDO') ? \implode(',', \PDO::getAvailableDrivers()) : 'off').']'.
'[Streams:'.\implode(',', \stream_get_transports()).']'
'['.\implode(',', \stream_get_transports()).']'
);
$this->oLogger->Write(
@ -1941,7 +1941,7 @@ class Actions
*
* @throws \MailSo\Base\Exceptions\Exception
*/
public function DoAccountAdd()
public function DoAccountSetup()
{
if (!$this->Config()->Get('webmail', 'allow_additional_accounts', true))
{
@ -1949,38 +1949,32 @@ class Actions
}
$oAccount = $this->getAccountFromToken();
$sParentEmail = $oAccount->ParentEmailHelper();
$aAccounts = $this->GetAccounts($oAccount);
if (!\is_array($aAccounts))
{
$aAccounts = array();
}
$sEmail = \trim($this->GetActionParam('Email', ''));
$sPassword = $this->GetActionParam('Password', '');
$sParentEmail = $oAccount->ParentEmailHelper();
$bNew = '1' === (string) $this->GetActionParam('New', '1');
$sEmail = \MailSo\Base\Utils::IdnToAscii($sEmail, true);
if ($oAccount->Email() === $sEmail || $sParentEmail === $sEmail)
if ($bNew && ($oAccount->Email() === $sEmail || $sParentEmail === $sEmail || isset($aAccounts[$sEmail])))
{
throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::AccountAlreadyExists);
}
else if (!$bNew && !isset($aAccounts[$sEmail]))
{
throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::AccountDoesNotExist);
}
$oNewAccount = $this->LoginProcess($sEmail, $sPassword);
$oNewAccount->SetParentEmail($sParentEmail);
$aAccounts = $this->GetAccounts($oAccount);
if (\is_array($aAccounts))
{
if (isset($aAccounts[$oNewAccount->Email()]))
{
throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::AccountAlreadyExists);
}
else
{
$aAccounts[$oNewAccount->Email()] = $oNewAccount->GetAuthToken();
}
}
else
{
$aAccounts = array();
}
$aAccounts[$oNewAccount->Email()] = $oNewAccount->GetAuthToken();
if (0 === \strlen($oAccount->ParentEmail()))
{
$aAccounts[$oAccount->Email()] = $oAccount->GetAuthToken();
@ -2211,6 +2205,11 @@ class Actions
$this->ClearSignMeData($oAccount);
}
if ($oAccount && '' === $oAccount->ParentEmail())
{
\RainLoop\Utils::ClearCookie(\RainLoop\Actions::AUTH_SPEC_TOKEN_KEY);
}
return $this->TrueResponse(__FUNCTION__);
}

View file

@ -14,7 +14,7 @@ class Notifications
const SocialGoogleLoginAccessDisable = 108;
const DomainNotAllowed = 109;
const AccountNotAllowed = 110;
const AccountTwoFactorAuthRequired = 120;
const AccountTwoFactorAuthError = 121;
@ -47,20 +47,21 @@ class Notifications
const CantSavePluginSettings = 502;
const DomainAlreadyExists = 601;
const CantInstallPackage = 701;
const CantDeletePackage = 702;
const InvalidPluginPackage = 703;
const UnsupportedPluginPackage = 704;
const LicensingServerIsUnavailable = 710;
const LicensingExpired = 711;
const LicensingBanned = 712;
const DemoSendMessageError = 750;
const AccountAlreadyExists = 801;
const AccountDoesNotExist = 802;
const MailServerError = 901;
const ClientViewError = 902;
const InvalidInputArgument = 903;
@ -69,10 +70,10 @@ class Notifications
/**
* @staticvar array $aMap
*
*
* @param int $iCode
* @param \Exception|null $oPrevious
*
*
* @return string
*/
static public function GetNotificationsMessage($iCode, $oPrevious = null)
@ -98,7 +99,7 @@ class Notifications
self::NewPasswordForbidden => 'NewPasswordForbidden',
self::ContactsSyncError => 'ContactsSyncError',
self::CantGetMessageList => 'CantGetMessageList',
self::CantGetMessage => 'CantGetMessage',
self::CantDeleteMessage => 'CantDeleteMessage',
@ -124,6 +125,7 @@ class Notifications
self::LicensingBanned => 'LicensingBanned',
self::DemoSendMessageError => 'DemoSendMessageError',
self::AccountAlreadyExists => 'AccountAlreadyExists',
self::AccountDoesNotExist => 'AccountDoesNotExist',
self::MailServerError => 'MailServerError',
self::ClientViewError => 'ClientViewError',
self::InvalidInputArgument => 'InvalidInputArgument',

View file

@ -4,7 +4,8 @@
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h3>
<span class="i18n" data-i18n-text="POPUPS_ADD_ACCOUNT/TITLE_ADD_ACCOUNT"></span>
<span data-bind="visible: isNew" class="i18n" data-i18n-text="POPUPS_ADD_ACCOUNT/TITLE_ADD_ACCOUNT"></span>
<span data-bind="visible: !isNew()" class="i18n" data-i18n-text="POPUPS_ADD_ACCOUNT/TITLE_UPDATE_ACCOUNT"></span>
</h3>
</div>
<div class="modal-body">
@ -17,8 +18,9 @@
<div class="control-group" data-bind="css: {'error': emailError}">
<label class="i18n control-label" data-i18n-text="LOGIN/LABEL_EMAIL"></label>
<div class="controls">
<label style="margin-top: 5px;"><strong data-bind="visible: !isNew(), text: email"></strong></label>
<input type="email" class="inputEmail input-large" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: email, onEnter: addAccountCommand, hasfocus: emailFocus" />
data-bind="visible: isNew, textInput: email, onEnter: addAccountCommand, hasfocus: emailFocus" />
</div>
</div>
<div class="control-group" data-bind="css: {'error': passwordError}">
@ -32,9 +34,11 @@
</div>
<div class="modal-footer">
<a class="btn buttonAddAccount" data-bind="command: addAccountCommand">
<i data-bind="css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
<i data-bind="visible: isNew, css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
<i data-bind="visible: !isNew(), css: {'icon-ok': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="POPUPS_ADD_ACCOUNT/BUTTON_ADD_ACCOUNT"></span>
<span data-bind="visible: isNew" class="i18n" data-i18n-text="POPUPS_ADD_ACCOUNT/BUTTON_ADD_ACCOUNT"></span>
<span data-bind="visible: !isNew()" class="i18n" data-i18n-text="POPUPS_ADD_ACCOUNT/BUTTON_UPDATE_ACCOUNT"></span>
</a>
</div>
</div>

View file

@ -4,7 +4,8 @@
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h3>
<span data-bind="text: label"></span>
<span data-bind="visible: !edit()" class="i18n" data-i18n-text="POPUPS_IDENTITIES/TITLE_ADD_IDENTITY"></span>
<span data-bind="visible: edit" class="i18n" data-i18n-text="POPUPS_IDENTITIES/TITLE_UPDATE_IDENTITY"></span>
</h3>
</div>
<div class="modal-body">
@ -56,9 +57,11 @@
</div>
<div class="modal-footer">
<a class="btn buttonAddAccount" data-bind="command: addOrEditIdentityCommand">
<i data-bind="css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
<i data-bind="visible: !edit(), css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
<i data-bind="visible: edit, css: {'icon-ok': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
&nbsp;&nbsp;
<span data-bind="text: button"></span>
<span data-bind="visible: !edit()" class="i18n" data-i18n-text="POPUPS_IDENTITIES/BUTTON_ADD_IDENTITY"></span>
<span data-bind="visible: edit" class="i18n" data-i18n-text="POPUPS_IDENTITIES/BUTTON_UPDATE_IDENTITY"></span>
</a>
</div>
</div>

View file

@ -17,14 +17,18 @@
<table class="table table-hover list-table" data-bind="i18nUpdate: accounts">
<colgroup>
<col />
<col style="width: 150px" />
<col style="width: 1%" />
</colgroup>
<tbody data-bind="foreach: accounts">
<tr class="account-item">
<td>
<td class="e-action" data-bind="css: {'e-action': canBeEdit}">
<span class="account-img icon-user"></span>
<span class="account-name" data-bind="text: email"></span>
<a class="btn btn-small btn-small-small btn-danger pull-right button-delete button-delete-transitions" data-bind="css: {'delete-access': deleteAccess()}, click: function(oAccount) { $root.deleteAccount(oAccount); }">
</td>
<td>
<span data-bind="visible: !canBeDalete()"></span>
<a class="btn btn-small btn-small-small btn-danger pull-right button-delete button-delete-transitions" data-bind="visible: canBeDalete, css: {'delete-access': deleteAccess}, click: function(oAccount) { $root.deleteAccount(oAccount); }">
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/DELETING_ASK"></span>
</a>
</td>

View file

@ -234,6 +234,8 @@ TITLE_LANGUAGES = "Sprache auswählen"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Konto hinzufügen?"
BUTTON_ADD_ACCOUNT = "Hinzufügen"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Identität hinzufügen?"

View file

@ -234,6 +234,8 @@ TITLE_LANGUAGES = "Choose language"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Add Account?"
BUTTON_ADD_ACCOUNT = "Add"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Add Identity?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Seleccionar idioma"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Añadir cuenta"
BUTTON_ADD_ACCOUNT = "Añadir"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "¿Añadir Identidad?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Choisir la langue"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Ajouter un compte ?"
BUTTON_ADD_ACCOUNT = "Ajouter"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Ajouter une identité ?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Nyelv kiválasztás"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Új fiók?"
BUTTON_ADD_ACCOUNT = "Hozzáadás"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Új identitás?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Choose language"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Bæta við aðgangi?"
BUTTON_ADD_ACCOUNT = "Bæta við"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Add Identity?"

View file

@ -234,6 +234,8 @@ TITLE_LANGUAGES = "Seleziona lingua"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Aggiungere un account?"
BUTTON_ADD_ACCOUNT = "Aggiungi"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Aggiungere un identità?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "言語を選択"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "アカウントを追加しますか?"
BUTTON_ADD_ACCOUNT = "追加"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "メールの表示名を追加しますか?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "사용할 언어를 선택하세요"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "새 사용자 추가?"
BUTTON_ADD_ACCOUNT = "추가"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "새 서명 추가?"

View file

@ -143,7 +143,7 @@ PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP šifruotas pranešimas (spustelkite išši
SUBJECT = "Pristatymo patvirtinimas (laiškas parodytas) - %SUBJECT%"
BODY = "Tai yra laiško pristatymo patvirtinimas, kurį Jūs siuntėte gavėjui %READ-RECEIPT%.
Pastaba: Šis pranešimas įrodo, kad laiškas buvo rodomas gavėjo kompiuteryje.
Pastaba: Šis pranešimas įrodo, kad laiškas buvo rodomas gavėjo kompiuteryje.
Nėra jokios garantijos, kad gavėjas perskaitė ar suprato laiško turinį."
[SUGGESTIONS]
@ -234,6 +234,8 @@ TITLE_LANGUAGES = "Pasirinkite kalbą"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Pridėti paskyrą?"
BUTTON_ADD_ACCOUNT = "Pridėti"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Pridėti tapatybę?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Choose language"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Pievienot kontu?"
BUTTON_ADD_ACCOUNT = "Pievienot"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Add Identity?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Kies uw taal"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Account toevoegen?"
BUTTON_ADD_ACCOUNT = "Toevoegen"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Identiteit toevoegen?"

View file

@ -232,6 +232,8 @@ TITLE_LANGUAGES = "Velg språk"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Legg til konto?"
BUTTON_ADD_ACCOUNT = "Legg til"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Legg til identitet?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Wybierz język"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Dodawanie konta"
BUTTON_ADD_ACCOUNT = "Dodaj"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Dodawanie tożsamości"

View file

@ -234,6 +234,8 @@ TITLE_LANGUAGES = "Escolha o idioma"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Nova conta"
BUTTON_ADD_ACCOUNT = "Adicionar"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Adicionar identidade"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Escolha a linguagem"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Adicionar conta?"
BUTTON_ADD_ACCOUNT = "Adicionar"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Adicionar identidade?"

View file

@ -232,6 +232,8 @@ TITLE_LANGUAGES = "Limbă"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Adăugați un cont"
BUTTON_ADD_ACCOUNT = "Adaugă"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Adăugați un profil"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Выберите язык"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Добавить ещё аккаунт?"
BUTTON_ADD_ACCOUNT = "Добавить"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Добавить Профиль?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Zvoľte jazyk"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Pridať účet?"
BUTTON_ADD_ACCOUNT = "Pridať"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Pridať Identitu?"

View file

@ -234,6 +234,8 @@ TITLE_LANGUAGES = "Välj språk"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Lägg till konto?"
BUTTON_ADD_ACCOUNT = "Lägg till"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Lägg till identitet"

View file

@ -234,6 +234,8 @@ TITLE_LANGUAGES = "Dil Seçimi"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Hesap Ekle?"
BUTTON_ADD_ACCOUNT = "Ekle"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Kimlik Ekle?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "Виберіть мову"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Додати ще акаунт?"
BUTTON_ADD_ACCOUNT = "Додати"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Додати Профіль?"

View file

@ -233,6 +233,8 @@ TITLE_LANGUAGES = "选择语言"
[POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "添加账户?"
BUTTON_ADD_ACCOUNT = "添加"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "添加签名?"