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, 'DemoSendMessageError': 750,
'AccountAlreadyExists': 801, 'AccountAlreadyExists': 801,
'AccountDoesNotExist': 802,
'MailServerError': 901, 'MailServerError': 901,
'ClientViewError': 902, 'ClientViewError': 902,

View file

@ -710,6 +710,7 @@
oN[Enums.Notification.DemoSendMessageError] = Utils.i18n('NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR'); oN[Enums.Notification.DemoSendMessageError] = Utils.i18n('NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR');
oN[Enums.Notification.AccountAlreadyExists] = Utils.i18n('NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS'); 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.MailServerError] = Utils.i18n('NOTIFICATIONS/MAIL_SERVER_ERROR');
oN[Enums.Notification.InvalidInputArgument] = Utils.i18n('NOTIFICATIONS/INVALID_INPUT_ARGUMENT'); oN[Enums.Notification.InvalidInputArgument] = Utils.i18n('NOTIFICATIONS/INVALID_INPUT_ARGUMENT');

View file

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

View file

@ -51,6 +51,14 @@
require('Knoin/Knoin').showScreenPopup(require('View/Popup/AddAccount')); 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 * @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; module.exports = AccountsUserSetting;
}()); }());

View file

@ -158,15 +158,17 @@
/** /**
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {string} sEmail * @param {string} sEmail
* @param {string} sLogin
* @param {string} sPassword * @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, 'Email': sEmail,
'Login': sLogin, 'Password': sPassword,
'Password': sPassword 'New': bNew ? '1' : '0'
}); });
}; };

View file

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

View file

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

View file

@ -104,14 +104,6 @@
return !this.submitRequest(); 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); kn.constructorEnd(this);
} }

View file

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

View file

@ -60,6 +60,7 @@ class Notifications
const DemoSendMessageError = 750; const DemoSendMessageError = 750;
const AccountAlreadyExists = 801; const AccountAlreadyExists = 801;
const AccountDoesNotExist = 802;
const MailServerError = 901; const MailServerError = 901;
const ClientViewError = 902; const ClientViewError = 902;
@ -124,6 +125,7 @@ class Notifications
self::LicensingBanned => 'LicensingBanned', self::LicensingBanned => 'LicensingBanned',
self::DemoSendMessageError => 'DemoSendMessageError', self::DemoSendMessageError => 'DemoSendMessageError',
self::AccountAlreadyExists => 'AccountAlreadyExists', self::AccountAlreadyExists => 'AccountAlreadyExists',
self::AccountDoesNotExist => 'AccountDoesNotExist',
self::MailServerError => 'MailServerError', self::MailServerError => 'MailServerError',
self::ClientViewError => 'ClientViewError', self::ClientViewError => 'ClientViewError',
self::InvalidInputArgument => 'InvalidInputArgument', self::InvalidInputArgument => 'InvalidInputArgument',

View file

@ -4,7 +4,8 @@
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button> <button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h3> <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> </h3>
</div> </div>
<div class="modal-body"> <div class="modal-body">
@ -17,8 +18,9 @@
<div class="control-group" data-bind="css: {'error': emailError}"> <div class="control-group" data-bind="css: {'error': emailError}">
<label class="i18n control-label" data-i18n-text="LOGIN/LABEL_EMAIL"></label> <label class="i18n control-label" data-i18n-text="LOGIN/LABEL_EMAIL"></label>
<div class="controls"> <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" <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> </div>
<div class="control-group" data-bind="css: {'error': passwordError}"> <div class="control-group" data-bind="css: {'error': passwordError}">
@ -32,9 +34,11 @@
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a class="btn buttonAddAccount" data-bind="command: addAccountCommand"> <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; &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> </a>
</div> </div>
</div> </div>

View file

@ -4,7 +4,8 @@
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button> <button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h3> <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> </h3>
</div> </div>
<div class="modal-body"> <div class="modal-body">
@ -56,9 +57,11 @@
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a class="btn buttonAddAccount" data-bind="command: addOrEditIdentityCommand"> <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; &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> </a>
</div> </div>
</div> </div>

View file

@ -17,14 +17,18 @@
<table class="table table-hover list-table" data-bind="i18nUpdate: accounts"> <table class="table table-hover list-table" data-bind="i18nUpdate: accounts">
<colgroup> <colgroup>
<col /> <col />
<col style="width: 150px" />
<col style="width: 1%" /> <col style="width: 1%" />
</colgroup> </colgroup>
<tbody data-bind="foreach: accounts"> <tbody data-bind="foreach: accounts">
<tr class="account-item"> <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-img icon-user"></span>
<span class="account-name" data-bind="text: email"></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> <span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/DELETING_ASK"></span>
</a> </a>
</td> </td>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -234,6 +234,8 @@ TITLE_LANGUAGES = "Pasirinkite kalbą"
[POPUPS_ADD_ACCOUNT] [POPUPS_ADD_ACCOUNT]
TITLE_ADD_ACCOUNT = "Pridėti paskyrą?" TITLE_ADD_ACCOUNT = "Pridėti paskyrą?"
BUTTON_ADD_ACCOUNT = "Pridėti" BUTTON_ADD_ACCOUNT = "Pridėti"
TITLE_UPDATE_ACCOUNT = "Update Account?"
BUTTON_UPDATE_ACCOUNT = "Update"
[POPUPS_IDENTITIES] [POPUPS_IDENTITIES]
TITLE_ADD_IDENTITY = "Pridėti tapatybę?" TITLE_ADD_IDENTITY = "Pridėti tapatybę?"

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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