Fix not spam translate (Closes #168)

Small refactoring and fixes
This commit is contained in:
RainLoop Team 2014-05-16 19:57:50 +04:00
parent 07b0f20305
commit d3ee36bb97
68 changed files with 629 additions and 392 deletions

View file

@ -207,6 +207,7 @@ module.exports = function (grunt) {
"dev/Admin/Plugins.js",
"dev/Admin/Packages.js",
"dev/Admin/Licensing.js",
"dev/Admin/About.js",
"dev/Storages/AbstractData.js",
"dev/Storages/AdminData.js",

16
dev/Admin/About.js Normal file
View file

@ -0,0 +1,16 @@
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
function AdminAbout()
{
this.version = ko.observable(RL.settingsGet('Version'));
}
Utils.addSettingsViewModel(AdminAbout, 'AdminSettingsAbout', 'About', 'about');
//AdminAbout.prototype.onBuild = function ()
//{
//
//};

View file

@ -13,11 +13,11 @@ function AdminGeneral()
this.language = oData.language;
this.theme = oData.theme;
this.allowThemes = oData.allowThemes;
this.allowLanguagesOnSettings = oData.allowLanguagesOnSettings;
this.allowAdditionalAccounts = oData.allowAdditionalAccounts;
this.allowIdentities = oData.allowIdentities;
this.allowGravatar = oData.allowGravatar;
this.capaThemes = oData.capaThemes;
this.capaGravatar = oData.capaGravatar;
this.capaAdditionalAccounts = oData.capaAdditionalAccounts;
this.capaAdditionalIdentities = oData.capaAdditionalIdentities;
this.themesOptions = ko.computed(function () {
return _.map(oData.themes(), function (sTheme) {
@ -62,27 +62,27 @@ AdminGeneral.prototype.onBuild = function ()
});
});
self.allowAdditionalAccounts.subscribe(function (bValue) {
self.capaAdditionalAccounts.subscribe(function (bValue) {
RL.remote().saveAdminConfig(null, {
'AllowAdditionalAccounts': bValue ? '1' : '0'
'CapaAdditionalAccounts': bValue ? '1' : '0'
});
});
self.allowIdentities.subscribe(function (bValue) {
self.capaAdditionalIdentities.subscribe(function (bValue) {
RL.remote().saveAdminConfig(null, {
'AllowIdentities': bValue ? '1' : '0'
'CapaAdditionalIdentities': bValue ? '1' : '0'
});
});
self.allowGravatar.subscribe(function (bValue) {
self.capaGravatar.subscribe(function (bValue) {
RL.remote().saveAdminConfig(null, {
'AllowGravatar': bValue ? '1' : '0'
'CapaGravatar': bValue ? '1' : '0'
});
});
self.allowThemes.subscribe(function (bValue) {
self.capaThemes.subscribe(function (bValue) {
RL.remote().saveAdminConfig(null, {
'AllowThemes': bValue ? '1' : '0'
'CapaThemes': bValue ? '1' : '0'
});
});

View file

@ -6,8 +6,8 @@
function AdminSecurity()
{
this.csrfProtection = ko.observable(!!RL.settingsGet('UseTokenProtection'));
this.openPGP = ko.observable(!!RL.settingsGet('OpenPGP'));
this.allowTwoFactorAuth = ko.observable(!!RL.settingsGet('AllowTwoFactorAuth'));
this.capaOpenPGP = ko.observable(RL.capa(Enums.Capa.OpenPGP));
this.capaTwoFactorAuth = ko.observable(RL.capa(Enums.Capa.TwoFactor));
this.adminLogin = ko.observable(RL.settingsGet('AdminLogin'));
this.adminPassword = ko.observable('');
@ -84,15 +84,15 @@ AdminSecurity.prototype.onBuild = function ()
});
});
this.openPGP.subscribe(function (bValue) {
this.capaOpenPGP.subscribe(function (bValue) {
RL.remote().saveAdminConfig(Utils.emptyFunction, {
'OpenPGP': bValue ? '1' : '0'
'CapaOpenPGP': bValue ? '1' : '0'
});
});
this.allowTwoFactorAuth.subscribe(function (bValue) {
this.capaTwoFactorAuth.subscribe(function (bValue) {
RL.remote().saveAdminConfig(Utils.emptyFunction, {
'AllowTwoFactorAuth': bValue ? '1' : '0'
'CapaTwoFactorAuth': bValue ? '1' : '0'
});
});
};

View file

@ -212,6 +212,8 @@ AdminApp.prototype.bootstart = function ()
}
else
{
Utils.removeSettingsViewModel(AdminAbout);
if (!RL.capa(Enums.Capa.Prem))
{
Utils.removeSettingsViewModel(AdminBranding);

View file

@ -425,7 +425,7 @@ RainLoopApp.prototype.folders = function (fCallback)
RainLoopApp.prototype.reloadOpenPgpKeys = function ()
{
if (RL.data().allowOpenPGP())
if (RL.data().capaOpenPGP())
{
var
aKeys = [],
@ -1043,12 +1043,12 @@ RainLoopApp.prototype.bootstart = function ()
Utils.removeSettingsViewModel(SettingsContacts);
}
if (!RL.settingsGet('AllowAdditionalAccounts'))
if (!RL.capa(Enums.Capa.AdditionalAccounts))
{
Utils.removeSettingsViewModel(SettingsAccounts);
}
if (RL.settingsGet('AllowIdentities'))
if (RL.capa(Enums.Capa.AdditionalIdentities))
{
Utils.removeSettingsViewModel(SettingsIdentity);
}
@ -1057,26 +1057,26 @@ RainLoopApp.prototype.bootstart = function ()
Utils.removeSettingsViewModel(SettingsIdentities);
}
if (!RL.settingsGet('OpenPGP'))
if (!RL.capa(Enums.Capa.OpenPGP))
{
Utils.removeSettingsViewModel(SettingsOpenPGP);
}
if (!RL.settingsGet('AllowTwoFactorAuth'))
if (!RL.capa(Enums.Capa.TwoFactor))
{
Utils.removeSettingsViewModel(SettingsSecurity);
}
if (!RL.capa(Enums.Capa.Themes))
{
Utils.removeSettingsViewModel(SettingsThemes);
}
if (!bGoogle && !bFacebook && !bTwitter)
{
Utils.removeSettingsViewModel(SettingsSocialScreen);
}
if (!RL.settingsGet('AllowThemes'))
{
Utils.removeSettingsViewModel(SettingsThemes);
}
Utils.initOnStartOrLangChange(function () {
$.extend(true, $.magnificPopup.defaults, {
@ -1113,7 +1113,7 @@ RainLoopApp.prototype.bootstart = function ()
if (bValue)
{
if (window.crypto && window.crypto.getRandomValues && RL.settingsGet('OpenPGP'))
if (window.crypto && window.crypto.getRandomValues && RL.capa(Enums.Capa.OpenPGP))
{
$.ajax({
'url': RL.link().openPgpJs(),
@ -1123,7 +1123,7 @@ RainLoopApp.prototype.bootstart = function ()
if (window.openpgp)
{
RL.data().openpgpKeyring = new window.openpgp.Keyring();
RL.data().allowOpenPGP(true);
RL.data().capaOpenPGP(true);
RL.pub('openpgp.init');
@ -1134,7 +1134,7 @@ RainLoopApp.prototype.bootstart = function ()
}
else
{
RL.data().allowOpenPGP(false);
RL.data().capaOpenPGP(false);
}
kn.startScreens([MailBoxScreen, SettingsScreen]);

View file

@ -31,7 +31,14 @@ Enums.StateType = {
* @enum {string}
*/
Enums.Capa = {
'Prem': 'PREM'
'Prem': 'PREM',
'TwoFactor': 'TWO_FACTOR',
'OpenPGP': 'OPEN_PGP',
'Prefetch': 'PREFETCH',
'Gravatar': 'GRAVATAR',
'Themes': 'THEMES',
'AdditionalAccounts': 'ADDITIONAL_ACCOUNTS',
'AdditionalIdentities': 'ADDITIONAL_IDENTITIES'
};
/**

View file

@ -772,7 +772,7 @@ Utils.initDataConstructorBySettings = function (oData)
Globals.sAnimationType = Enums.InterfaceAnimation.Full;
oData.allowThemes = ko.observable(true);
oData.capaThemes = ko.observable(false);
oData.allowCustomLogin = ko.observable(false);
oData.allowLanguagesOnSettings = ko.observable(true);
oData.allowLanguagesOnLogin = ko.observable(true);
@ -940,9 +940,9 @@ Utils.initDataConstructorBySettings = function (oData)
}
});
oData.allowAdditionalAccounts = ko.observable(false);
oData.allowIdentities = ko.observable(false);
oData.allowGravatar = ko.observable(false);
oData.capaAdditionalAccounts = ko.observable(false);
oData.capaAdditionalIdentities = ko.observable(false);
oData.capaGravatar = ko.observable(false);
oData.determineUserLanguage = ko.observable(false);
oData.messagesPerPage = ko.observable(Consts.Defaults.MessagesPerPage);//.extend({'throttle': 200});

View file

@ -362,7 +362,7 @@ MessageModel.prototype.initUpdateByMessageJson = function (oJsonMessage)
this.sInReplyTo = oJsonMessage.InReplyTo;
this.sReferences = oJsonMessage.References;
if (RL.data().allowOpenPGP())
if (RL.data().capaOpenPGP())
{
this.isPgpSigned(!!oJsonMessage.PgpSigned);
this.isPgpEncrypted(!!oJsonMessage.PgpEncrypted);
@ -997,7 +997,7 @@ MessageModel.prototype.storeDataToDom = function ()
this.body.data('rl-plain-raw', this.plainRaw);
if (RL.data().allowOpenPGP())
if (RL.data().capaOpenPGP())
{
this.body.data('rl-plain-pgp-signed', !!this.isPgpSigned());
this.body.data('rl-plain-pgp-encrypted', !!this.isPgpEncrypted());
@ -1009,7 +1009,7 @@ MessageModel.prototype.storeDataToDom = function ()
MessageModel.prototype.storePgpVerifyDataToDom = function ()
{
if (this.body && RL.data().allowOpenPGP())
if (this.body && RL.data().capaOpenPGP())
{
this.body.data('rl-pgp-verify-status', this.pgpSignedVerifyStatus());
this.body.data('rl-pgp-verify-user', this.pgpSignedVerifyUser());
@ -1026,7 +1026,7 @@ MessageModel.prototype.fetchDataToDom = function ()
this.plainRaw = Utils.pString(this.body.data('rl-plain-raw'));
if (RL.data().allowOpenPGP())
if (RL.data().capaOpenPGP())
{
this.isPgpSigned(!!this.body.data('rl-plain-pgp-signed'));
this.isPgpEncrypted(!!this.body.data('rl-plain-pgp-encrypted'));

View file

@ -91,7 +91,7 @@ MailBoxScreen.prototype.onStart = function ()
}
;
if (RL.settingsGet('AllowAdditionalAccounts') || RL.settingsGet('AllowIdentities'))
if (RL.capa(Enums.Capa.AdditionalAccounts) || RL.capa(Enums.Capa.AdditionalIdentities))
{
RL.accountsAndIdentities();
}

View file

@ -7,7 +7,7 @@ function AbstractCacheStorage()
{
this.oEmailsPicsHashes = {};
this.oServices = {};
this.bAllowGravatar = !!RL.settingsGet('AllowGravatar');
this.bCapaGravatar = RL.capa(Enums.Capa.Gravatar);
}
/**
@ -23,7 +23,7 @@ AbstractCacheStorage.prototype.oServices = {};
/**
* @type {boolean}
*/
AbstractCacheStorage.prototype.bAllowGravatar = false;
AbstractCacheStorage.prototype.bCapaGravatar = false;
AbstractCacheStorage.prototype.clear = function ()
{
@ -57,7 +57,7 @@ AbstractCacheStorage.prototype.getUserPic = function (sEmail, fCallback)
}
if (this.bAllowGravatar && '' === sUrl)
if (this.bCapaGravatar && '' === sUrl)
{
fCallback('//secure.gravatar.com/avatar/' + Utils.md5(sEmailLower) + '.jpg?s=80&d=mm', sEmail);
}

View file

@ -84,12 +84,12 @@ AbstractData.prototype.populateDataOnStart = function()
this.mainLanguage(RL.settingsGet('Language'));
this.mainTheme(RL.settingsGet('Theme'));
this.allowAdditionalAccounts(!!RL.settingsGet('AllowAdditionalAccounts'));
this.allowIdentities(!!RL.settingsGet('AllowIdentities'));
this.allowGravatar(!!RL.settingsGet('AllowGravatar'));
this.capaAdditionalAccounts(RL.capa(Enums.Capa.AdditionalAccounts));
this.capaAdditionalIdentities(RL.capa(Enums.Capa.AdditionalIdentities));
this.capaGravatar(RL.capa(Enums.Capa.Gravatar));
this.determineUserLanguage(!!RL.settingsGet('DetermineUserLanguage'));
this.allowThemes(!!RL.settingsGet('AllowThemes'));
this.capaThemes(RL.capa(Enums.Capa.Themes));
this.allowCustomLogin(!!RL.settingsGet('AllowCustomLogin'));
this.allowLanguagesOnLogin(!!RL.settingsGet('AllowLanguagesOnLogin'));
this.allowLanguagesOnSettings(!!RL.settingsGet('AllowLanguagesOnSettings'));

View file

@ -402,7 +402,7 @@ function WebMailDataStorage()
}, this);
// other
this.allowOpenPGP = ko.observable(false);
this.capaOpenPGP = ko.observable(false);
this.openpgpkeys = ko.observableArray([]);
this.openpgpKeyring = null;
@ -929,8 +929,7 @@ WebMailDataStorage.prototype.setMessage = function (oData, bCached)
sPlain = oData.Result.Plain.toString();
if ((oMessage.isPgpSigned() || oMessage.isPgpEncrypted()) &&
RL.data().allowOpenPGP() &&
Utils.isNormal(oData.Result.PlainRaw))
RL.data().capaOpenPGP() && Utils.isNormal(oData.Result.PlainRaw))
{
oMessage.plainRaw = Utils.pString(oData.Result.PlainRaw);

View file

@ -70,6 +70,7 @@
@import "AdminPackages.less";
@import "AdminPlugins.less";
@import "AdminPlugin.less";
@import "AdminAbout.less";
@import "Activate.less";
@import "Settings.less";
@import "SettingsGeneral.less";

View file

@ -0,0 +1,10 @@
.b-admin-about {
.rl-logo {
display: inline-block;
width: 250px;
height: 250px;
background-image: url("images/rainloop-logo.png");
}
}

View file

@ -16,7 +16,7 @@ function AbstractSystemDropDownViewModel()
this.accountMenuDropdownTrigger = ko.observable(false);
this.allowAddAccount = RL.settingsGet('AllowAdditionalAccounts');
this.capaAdditionalAccounts = RL.capa(Enums.Capa.AdditionalAccounts);
this.loading = ko.computed(function () {
return this.accountsLoading();
@ -58,7 +58,7 @@ AbstractSystemDropDownViewModel.prototype.settingsHelp = function ()
AbstractSystemDropDownViewModel.prototype.addAccountClick = function ()
{
if (this.allowAddAccount)
if (this.capaAdditionalAccounts)
{
kn.showScreenPopup(PopupsAddAccountViewModel);
}

View file

@ -665,7 +665,7 @@ MailBoxMessageListViewModel.prototype.onBuild = function (oDom)
this.initUploaderForAppend();
this.initShortcuts();
if (!Globals.bMobileDevice && !!RL.settingsGet('AllowPrefetch') && ifvisible)
if (!Globals.bMobileDevice && RL.capa(Enums.Capa.Prefetch) && ifvisible)
{
ifvisible.setIdleDuration(10);

View file

@ -15,7 +15,7 @@ function PopupsComposeViewModel()
this.bSkipNext = false;
this.sReferences = '';
this.bAllowIdentities = RL.settingsGet('AllowIdentities');
this.bCapaAdditionalIdentities = RL.capa(Enums.Capa.AdditionalIdentities);
var
self = this,
@ -28,7 +28,7 @@ function PopupsComposeViewModel()
}
;
this.allowOpenPGP = oRainLoopData.allowOpenPGP;
this.capaOpenPGP = oRainLoopData.capaOpenPGP;
this.resizer = ko.observable(false).extend({'throttle': 50});
@ -125,7 +125,7 @@ function PopupsComposeViewModel()
sID = this.currentIdentityID()
;
if (this.bAllowIdentities && sID && sID !== RL.data().accountEmail())
if (this.bCapaAdditionalIdentities && sID && sID !== RL.data().accountEmail())
{
oItem = _.find(aList, function (oItem) {
return oItem && sID === oItem['id'];
@ -366,7 +366,7 @@ Utils.extendAsViewModel('PopupsComposeViewModel', PopupsComposeViewModel);
PopupsComposeViewModel.prototype.openOpenPgpPopup = function ()
{
if (this.allowOpenPGP() && this.oEditor && !this.oEditor.isHtml())
if (this.capaOpenPGP() && this.oEditor && !this.oEditor.isHtml())
{
var self = this;
kn.showScreenPopup(PopupsComposeOpenPgpViewModel, [
@ -417,7 +417,7 @@ PopupsComposeViewModel.prototype.findIdentityIdByMessage = function (sComposeTyp
}
;
if (this.bAllowIdentities)
if (this.bCapaAdditionalIdentities)
{
_.each(this.identities(), function (oItem) {
oIDs[oItem.email()] = oItem['id'];

View file

@ -47,6 +47,13 @@ function PopupsGenerateNewOpenPgpKeyViewModel()
_.delay(function () {
mKeyPair = window.openpgp.generateKeyPair(1, Utils.pInt(self.keyBitLength()), sUserID, Utils.trim(self.password()));
// 0.6.0
// mKeyPair = window.openpgp.generateKeyPair({
// 'numBits': Utils.pInt(self.keyBitLength()),
// 'userId': sUserID,
// 'passphrase': Utils.trim(self.password())
// });
if (mKeyPair && mKeyPair.privateKeyArmored)
{
oOpenpgpKeyring.privateKeys.importKey(mKeyPair.privateKeyArmored);

View file

@ -981,28 +981,21 @@ class Actions
'LoginDescription' => '',
'LoginCss' => '',
'Token' => $oConfig->Get('security', 'csrf_protection', false) ? \RainLoop\Utils::GetCsrfToken() : '',
'OpenPGP' => $oConfig->Get('security', 'openpgp', false),
'AllowTwoFactorAuth' => (bool) $oConfig->Get('security', 'allow_two_factor_auth', false),
'InIframe' => (bool) $oConfig->Get('labs', 'in_iframe', false),
'AllowAdminPanel' => (bool) $oConfig->Get('security', 'allow_admin_panel', true),
'AllowHtmlEditorSourceButton' => (bool) $oConfig->Get('labs', 'allow_html_editor_source_button', false),
'CustomLoginLink' => $oConfig->Get('labs', 'custom_login_link', ''),
'CustomLogoutLink' => $oConfig->Get('labs', 'custom_logout_link', ''),
'AllowAdditionalAccounts' => (bool) $oConfig->Get('webmail', 'allow_additional_accounts', true),
'AllowIdentities' => (bool) $oConfig->Get('webmail', 'allow_identities', true),
'AllowPrefetch' => (bool) $oConfig->Get('labs', 'allow_prefetch', true),
'AllowGravatar' => (bool) $oConfig->Get('labs', 'allow_gravatar', true),
'AllowCustomLogin' => (bool) $oConfig->Get('login', 'allow_custom_login', false),
'LoginDefaultDomain' => $oConfig->Get('login', 'default_domain', ''),
'DetermineUserLanguage' => (bool) $oConfig->Get('login', 'determine_user_language', true),
'AllowThemes' => (bool) $oConfig->Get('webmail', 'allow_themes', true),
'ChangePasswordIsAllowed' => false,
'ContactsIsAllowed' => false,
'ChangePasswordIsAllowed' => false,
'JsHash' => \md5(\RainLoop\Utils::GetConnectionToken()),
'UseImapThread' => (bool) $oConfig->Get('labs', 'use_imap_thread', false),
'UseImapSubscribe' => (bool) $oConfig->Get('labs', 'use_imap_list_subscribe', true),
'AllowAppendMessage' => (bool) $oConfig->Get('labs', 'allow_message_append', false),
'Capa' => $this->Capa(),
'Capa' => array(),
'Plugins' => array()
);
@ -1011,7 +1004,7 @@ class Actions
$aResult['AuthAccountHash'] = $sAuthAccountHash;
}
if ($this->GetCapa(\RainLoop\Enumerations\Capa::PREM))
if ($this->GetCapa(true, \RainLoop\Enumerations\Capa::PREM))
{
$aResult['Title'] = $oConfig->Get('webmail', 'title', '');
$aResult['LoadingDescription'] = $oConfig->Get('webmail', 'loading_description', '');
@ -1113,6 +1106,8 @@ class Actions
{
$aResult['AllowDropboxSocial'] = false;
}
$aResult['Capa'] = $this->Capa(false, $oAccount);
}
else
{
@ -1157,6 +1152,8 @@ class Actions
$aResult['WeakPassword'] = $oConfig->ValidatePassword('12345');
}
$aResult['Capa'] = $this->Capa(true);
}
$aResult['ProjectHash'] = \md5($aResult['AccountHash'].APP_VERSION.$this->Plugins()->Hash());
@ -2034,6 +2031,36 @@ class Actions
}
}
/**
* @param \RainLoop\Config\Application $oConfig
* @param string $sParamName
* @param string $sCapa
*/
private function setCapaFromParams(&$oConfig, $sParamName, $sCapa)
{
switch ($sCapa)
{
case \RainLoop\Enumerations\Capa::ADDITIONAL_ACCOUNTS:
$this->setConfigFromParams($oConfig, $sParamName, 'webmail', 'allow_additional_accounts', 'bool');
break;
case \RainLoop\Enumerations\Capa::ADDITIONAL_IDENTITIES:
$this->setConfigFromParams($oConfig, $sParamName, 'webmail', 'allow_identities', 'bool');
break;
case \RainLoop\Enumerations\Capa::TWO_FACTOR:
$this->setConfigFromParams($oConfig, $sParamName, 'security', 'allow_two_factor_auth', 'bool');
break;
case \RainLoop\Enumerations\Capa::GRAVATAR:
$this->setConfigFromParams($oConfig, $sParamName, 'labs', 'allow_gravatar', 'bool');
break;
case \RainLoop\Enumerations\Capa::THEMES:
$this->setConfigFromParams($oConfig, $sParamName, 'webmail', 'allow_themes', 'bool');
break;
case \RainLoop\Enumerations\Capa::OPEN_PGP:
$this->setConfigFromParams($oConfig, $sParamName, 'security', 'openpgp', 'bool');
break;
}
}
/**
* @param \RainLoop\Settings $oSettings
* @param string $sConfigName
@ -2091,7 +2118,6 @@ class Actions
return $self->ValidateTheme($sTheme);
});
$this->setConfigFromParams($oConfig, 'AllowThemes', 'webmail', 'allow_themes', 'bool');
$this->setConfigFromParams($oConfig, 'AllowLanguagesOnSettings', 'webmail', 'allow_languages_on_settings', 'bool');
$this->setConfigFromParams($oConfig, 'AllowLanguagesOnLogin', 'login', 'allow_languages_on_login', 'bool');
$this->setConfigFromParams($oConfig, 'AllowCustomLogin', 'login', 'allow_custom_login', 'bool');
@ -2108,14 +2134,16 @@ class Actions
return $self->ValidateContactPdoType($sType);
});
$this->setConfigFromParams($oConfig, 'AllowAdditionalAccounts', 'webmail', 'allow_additional_accounts', 'bool');
$this->setConfigFromParams($oConfig, 'AllowIdentities', 'webmail', 'allow_identities', 'bool');
$this->setConfigFromParams($oConfig, 'AllowGravatar', 'labs', 'allow_gravatar', 'bool');
$this->setCapaFromParams($oConfig, 'CapaAdditionalAccounts', \RainLoop\Enumerations\Capa::ADDITIONAL_ACCOUNTS);
$this->setCapaFromParams($oConfig, 'CapaAdditionalIdentities', \RainLoop\Enumerations\Capa::ADDITIONAL_IDENTITIES);
$this->setCapaFromParams($oConfig, 'CapaTwoFactorAuth', \RainLoop\Enumerations\Capa::TWO_FACTOR);
$this->setCapaFromParams($oConfig, 'CapaOpenPGP', \RainLoop\Enumerations\Capa::OPEN_PGP);
$this->setCapaFromParams($oConfig, 'CapaGravatar', \RainLoop\Enumerations\Capa::GRAVATAR);
$this->setCapaFromParams($oConfig, 'CapaThemes', \RainLoop\Enumerations\Capa::THEMES);
$this->setConfigFromParams($oConfig, 'DetermineUserLanguage', 'login', 'determine_user_language', 'bool');
if ($this->GetCapa(\RainLoop\Enumerations\Capa::PREM))
if ($this->GetCapa(true, \RainLoop\Enumerations\Capa::PREM))
{
$this->setConfigFromParams($oConfig, 'Title', 'webmail', 'title', 'string');
$this->setConfigFromParams($oConfig, 'LoadingDescription', 'webmail', 'loading_description', 'string');
@ -2126,8 +2154,6 @@ class Actions
}
$this->setConfigFromParams($oConfig, 'TokenProtection', 'security', 'csrf_protection', 'bool');
$this->setConfigFromParams($oConfig, 'OpenPGP', 'security', 'openpgp', 'bool');
$this->setConfigFromParams($oConfig, 'AllowTwoFactorAuth', 'security', 'allow_two_factor_auth', 'bool');
$this->setConfigFromParams($oConfig, 'EnabledPlugins', 'plugins', 'enable', 'bool');
$this->setConfigFromParams($oConfig, 'GoogleEnable', 'social', 'google_enable', 'bool');
@ -5959,23 +5985,64 @@ class Actions
}
/**
* @param bool $bAdmin
* @param \RainLoop\Account $oAccount
*
* @return array
*/
public function Capa()
public function Capa($bAdmin, $oAccount = null)
{
return array(
\RainLoop\Enumerations\Capa::PREM
);
$oConfig = $this->Config();
$aResult = array(\RainLoop\Enumerations\Capa::PREM);
if ($oConfig->Get('webmail', 'allow_additional_accounts', false))
{
$aResult[] = \RainLoop\Enumerations\Capa::ADDITIONAL_ACCOUNTS;
}
if ($oConfig->Get('webmail', 'allow_identities', true))
{
$aResult[] = \RainLoop\Enumerations\Capa::ADDITIONAL_IDENTITIES;
}
if ($oConfig->Get('security', 'allow_two_factor_auth', false))
{
$aResult[] = \RainLoop\Enumerations\Capa::TWO_FACTOR;
}
if ($oConfig->Get('labs', 'allow_gravatar', false))
{
$aResult[] = \RainLoop\Enumerations\Capa::GRAVATAR;
}
if ($oConfig->Get('labs', 'allow_prefetch', false))
{
$aResult[] = \RainLoop\Enumerations\Capa::PREFETCH;
}
if ($oConfig->Get('webmail', 'allow_themes', false))
{
$aResult[] = \RainLoop\Enumerations\Capa::THEMES;
}
if ($oConfig->Get('security', 'openpgp', false))
{
$aResult[] = \RainLoop\Enumerations\Capa::OPEN_PGP;
}
return $aResult;
}
/**
* @param bool $bAdmin
* @param string $sName
*
* @return bool
*/
public function GetCapa($sName)
public function GetCapa($bAdmin, $sName)
{
return \in_array($sName, $this->Capa());
return \in_array($sName, $this->Capa($bAdmin));
}
/**

View file

@ -5,4 +5,11 @@ namespace RainLoop\Enumerations;
class Capa
{
const PREM = 'PREM';
const TWO_FACTOR = 'TWO_FACTOR';
const OPEN_PGP = 'OPEN_PGP';
const PREFETCH = 'PREFETCH';
const GRAVATAR = 'GRAVATAR';
const THEMES = 'THEMES';
const ADDITIONAL_ACCOUNTS = 'ADDITIONAL_ACCOUNTS';
const ADDITIONAL_IDENTITIES = 'ADDITIONAL_IDENTITIES';
}

View file

@ -2,7 +2,7 @@
<div class="b-toolbar">
<div class="btn-group show-on-panel-disabled">
<a class="btn buttonResize" data-bind="click: function () { leftPanelDisabled(!leftPanelDisabled()); }">
<i class="icon-resize"></i>
<i data-bind="css: {'icon-resize-out': leftPanelDisabled(), 'icon-resize-in': !leftPanelDisabled()}"></i>
</a>
</div>
</div>

View file

@ -0,0 +1,22 @@
<div class="b-admin-about">
<div class="form-horizontal">
<div class="legend">
About
</div>
<div class="control-group">
<div class="raw">
<div class="span4">
<div class="rl-logo"></div>
</div>
<div class="span4">
RainLoop Webmail
<br />
v<span data-bind="text: version"></span>
</div>
</div>
</div>
<div class="control-group">
</div>
</div>
</div>

View file

@ -42,28 +42,28 @@
<i data-bind="css: allowLanguagesOnSettings() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
Allow language selection on settings screen
</label>
<label data-bind="click: function () { allowThemes(!allowThemes()); }">
<i data-bind="css: allowThemes() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
<label data-bind="click: function () { capaThemes(!capaThemes()); }">
<i data-bind="css: capaThemes() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
Allow theme selection on settings screen
</label>
</div>
</div>
<div class="control-group">
<div class="controls">
<label data-bind="click: function () { allowAdditionalAccounts(!allowAdditionalAccounts()); }">
<i data-bind="css: allowAdditionalAccounts() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
<label data-bind="click: function () { capaAdditionalAccounts(!capaAdditionalAccounts()); }">
<i data-bind="css: capaAdditionalAccounts() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
Allow additional accounts
</label>
<label data-bind="click: function () { allowIdentities(!allowIdentities()); }">
<i data-bind="css: allowIdentities() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
<label data-bind="click: function () { capaAdditionalIdentities(!capaAdditionalIdentities()); }">
<i data-bind="css: capaAdditionalIdentities() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
Allow additional identities
</label>
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="inline" data-bind="click: function () { allowGravatar(!allowGravatar()); }">
<i data-bind="css: allowGravatar() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
<label class="inline" data-bind="click: function () { capaGravatar(!capaGravatar()); }">
<i data-bind="css: capaGravatar() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
Allow Gravatar
</label>
(<a class="g-ui-link" href="http://en.gravatar.com/" target="_blank">http://en.gravatar.com/</a>)

View file

@ -14,8 +14,8 @@
</div>
<div class="control-group">
<div class="controls">
<label data-bind="click: function () { openPGP(!openPGP()); }">
<i data-bind="css: openPGP() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
<label data-bind="click: function () { capaOpenPGP(!capaOpenPGP()); }">
<i data-bind="css: capaOpenPGP() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
&nbsp;&nbsp;
Allow OpenPGP <span style="color:red">(beta)</span>
</label>
@ -23,8 +23,8 @@
</div>
<div class="control-group">
<div class="controls">
<label data-bind="click: function () { allowTwoFactorAuth(!allowTwoFactorAuth()); }">
<i data-bind="css: allowTwoFactorAuth() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
<label data-bind="click: function () { capaTwoFactorAuth(!capaTwoFactorAuth()); }">
<i data-bind="css: capaTwoFactorAuth() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
&nbsp;&nbsp;
Allow 2-Step Verification (Google Authenticator)
</label>

View file

@ -30,7 +30,7 @@
</div>
<div class="btn-group">
<a class="btn buttonResize" data-bind="click: function () { leftPanelDisabled(!leftPanelDisabled()); }">
<i class="icon-resize"></i>
<i data-bind="css: {'icon-resize-out': leftPanelDisabled(), 'icon-resize-in': !leftPanelDisabled()}"></i>
</a>
</div>
</div>

View file

@ -120,7 +120,7 @@
</a>
</li>
<li class="divider"></li>
<li class="e-item" data-bind="visible: allowOpenPGP, click: openOpenPgpPopup, css: {'disabled': isHtml()}">
<li class="e-item" data-bind="visible: capaOpenPGP, click: openOpenPgpPopup, css: {'disabled': isHtml()}">
<a class="e-link">
<i class="icon-key"></i>
&nbsp;&nbsp;

View file

@ -1,8 +1,8 @@
<div class="b-settins-left g-ui-user-select-none">
<div class="b-toolbar">
<div class="btn-group show-on-panel-disabled">
<div class="btn-group">
<a class="btn buttonResize" data-bind="click: function () { leftPanelDisabled(!leftPanelDisabled()); }">
<i class="icon-resize"></i>
<i data-bind="css: {'icon-resize-out': leftPanelDisabled(), 'icon-resize-in': !leftPanelDisabled()}"></i>
</a>
</div>
</div>

View file

@ -32,7 +32,7 @@
<!-- /ko -->
<li class="divider" role="presentation"></li>
<!-- /ko -->
<!-- ko if: allowAddAccount -->
<!-- ko if: capaAdditionalAccounts -->
<li class="e-item" role="presentation">
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addAccountClick">
<i class="icon-user-add"></i>

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Verschieben nach"
BUTTON_DELETE = "Löschen"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Ordner leeren"
BUTTON_MULTY_FORWARD = "Nachrichten weiterleiten"
BUTTON_DELETE_WITHOUT_MOVE = "Endgültig löschen"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Schließen"
BUTTON_DELETE = "Löschen"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Verschieben nach"
BUTTON_MORE = "Mehr"
BUTTON_REPLY = "Antworten"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Move To"
BUTTON_DELETE = "Delete"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Clear Folder"
BUTTON_MULTY_FORWARD = "Forward messages"
BUTTON_DELETE_WITHOUT_MOVE = "Delete permanently"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Close"
BUTTON_DELETE = "Delete"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Move To"
BUTTON_MORE = "More"
BUTTON_REPLY = "Reply"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Mover a..."
BUTTON_DELETE = "Eliminar"
BUTTON_ARCHIVE = "Archivo"
BUTTON_SPAM = "Marcar como Spam (Basura)"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Vaciar carpeta"
BUTTON_MULTY_FORWARD = "Reenviar mensajes"
BUTTON_DELETE_WITHOUT_MOVE = "Eliminar permanentemente"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Cerrar"
BUTTON_DELETE = "Eliminar"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam (Basura)"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Mover a"
BUTTON_MORE = "Más"
BUTTON_REPLY = "Responder"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Déplacer vers"
BUTTON_DELETE = "Supprimer"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Vider le dossier"
BUTTON_MULTY_FORWARD = "Transmettre les messages"
BUTTON_DELETE_WITHOUT_MOVE = "Supprimer définitivement"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Fermer"
BUTTON_DELETE = "Supprimer"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Déplacer vers"
BUTTON_MORE = "Plus"
BUTTON_REPLY = "Répondre"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Áthelyezés"
BUTTON_DELETE = "Törlés"
BUTTON_ARCHIVE = "Archívum"
BUTTON_SPAM = "Levélszemét"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Mappa űrítés"
BUTTON_MULTY_FORWARD = "Levél továbbítás"
BUTTON_DELETE_WITHOUT_MOVE = "Végleges tőrlés"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Bezárás"
BUTTON_DELETE = "Tőrlés"
BUTTON_ARCHIVE = "Archiválás"
BUTTON_SPAM = "Levélszemét"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Áthelyezés"
BUTTON_MORE = "Egyéb"
BUTTON_REPLY = "Válasz"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Færa í"
BUTTON_DELETE = "Eyða"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Ruslpóstur"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Hreinsa Möppu"
BUTTON_MULTY_FORWARD = "Áframsenda skilaboð"
BUTTON_DELETE_WITHOUT_MOVE = "Eyða endanlega"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Loka"
BUTTON_DELETE = "Eyða"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Ruslpóstur"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Færa í"
BUTTON_MORE = "Meira"
BUTTON_REPLY = "Svara"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Sposta in"
BUTTON_DELETE = "Cancella"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Marca come indesiderati"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Pulisci cartella"
BUTTON_MULTY_FORWARD = "Inoltra messaggi"
BUTTON_DELETE_WITHOUT_MOVE = "Cancella permanentemente"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Chiudi"
BUTTON_DELETE = "Cancella"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Marca come indesiderato"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Sposta in"
BUTTON_MORE = "Di più"
BUTTON_REPLY = "Rispondi"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "移動"
BUTTON_DELETE = "削除"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "迷惑メールにする"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "フォルダを空に"
BUTTON_MULTY_FORWARD = "転送"
BUTTON_DELETE_WITHOUT_MOVE = "完全に削除"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "閉じる"
BUTTON_DELETE = "削除"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "迷惑メール"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "移動"
BUTTON_MORE = "その他"
BUTTON_REPLY = "返信"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "이동"
BUTTON_DELETE = "삭제"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "스팸"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "폴더 비우기"
BUTTON_MULTY_FORWARD = "전달"
BUTTON_DELETE_WITHOUT_MOVE = "완전히 삭제"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "닫기"
BUTTON_DELETE = "삭제"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "스팸"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "이동"
BUTTON_MORE = "더보기"
BUTTON_REPLY = "답장"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Pārvietot uz"
BUTTON_DELETE = "Dzēst"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spams"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Iztīrīt mapi"
BUTTON_MULTY_FORWARD = "Pārsūtīt ziņojumus"
BUTTON_DELETE_WITHOUT_MOVE = "Dzēst pavisam"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Aizvērt"
BUTTON_DELETE = "Dzēst"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spams"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Pārvietot uz"
BUTTON_MORE = "Vairāk"
BUTTON_REPLY = "Atbildēt"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Verplaatsen naar"
BUTTON_DELETE = "Verwijderen"
BUTTON_ARCHIVE = "Archief"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Map leeg maken"
BUTTON_MULTY_FORWARD = "Berichten Doorsturen"
BUTTON_DELETE_WITHOUT_MOVE = "Permanent Verwijderen"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Sluiten"
BUTTON_DELETE = "Verwijderen"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Verplaatsen naar"
BUTTON_MORE = "Meer"
BUTTON_REPLY = "Antwoorden"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Flytt til"
BUTTON_DELETE = "Slett"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Fjern mappe"
BUTTON_MULTY_FORWARD = "Videresend meldinger"
BUTTON_DELETE_WITHOUT_MOVE = "Slett permanent"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Lukk"
BUTTON_DELETE = "Slett"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Flytt til"
BUTTON_MORE = "Mer"
BUTTON_REPLY = "Svar"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Przenieś do"
BUTTON_DELETE = "Usuń"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Oznacz jako spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Wyczyść folder"
BUTTON_MULTY_FORWARD = "Przekaż dalej"
BUTTON_DELETE_WITHOUT_MOVE = "Usuń na stałe"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Zamknij"
BUTTON_DELETE = "Usuń"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Oznacz jako spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Przenieś Do"
BUTTON_MORE = "Więcej"
BUTTON_REPLY = "Odpowiedz"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Mover Para"
BUTTON_DELETE = "Excluir"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Lixo Eletrônico"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Limpar Pasta"
BUTTON_MULTY_FORWARD = "Encaminhar mensagens"
BUTTON_DELETE_WITHOUT_MOVE = "Excluir penmanentemente"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Fechar"
BUTTON_DELETE = "Excluir"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Lixo Eletrônico"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Mover para"
BUTTON_MORE = "Mais"
BUTTON_REPLY = "Responder"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Mover Para"
BUTTON_DELETE = "Excluir"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Lixo Eletrônico"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Limpar Pasta"
BUTTON_MULTY_FORWARD = "Encaminhar mensagens"
BUTTON_DELETE_WITHOUT_MOVE = "Excluir penmanentemente"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Fechar"
BUTTON_DELETE = "Excluir"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Lixo Eletrônico"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Mover para"
BUTTON_MORE = "Mais"
BUTTON_REPLY = "Responder"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Mută la"
BUTTON_DELETE = "Șterge"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "SPAM"
BUTTON_NOT_SPAM = "Not SPAM"
BUTTON_EMPTY_FOLDER = "Golește folderul"
BUTTON_MULTY_FORWARD = "Redirecționează mesajul"
BUTTON_DELETE_WITHOUT_MOVE = "Șterge definitiv"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Închide"
BUTTON_DELETE = "Șterge"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "SPAM"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Mută la"
BUTTON_MORE = "Mai mult"
BUTTON_REPLY = "Răspunde"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Переместить"
BUTTON_DELETE = "Удалить"
BUTTON_ARCHIVE = "Архивировать"
BUTTON_SPAM = "В спам"
BUTTON_NOT_SPAM = "Не спам"
BUTTON_EMPTY_FOLDER = "Очистить всю папку"
BUTTON_MULTY_FORWARD = "Переслать сообщения"
BUTTON_DELETE_WITHOUT_MOVE = "Удалить мимо корзины"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Закрыть"
BUTTON_DELETE = "Удалить"
BUTTON_ARCHIVE = "Архивировать"
BUTTON_SPAM = "В спам"
BUTTON_NOT_SPAM = "Не спам"
BUTTON_MOVE_TO = "Переместить"
BUTTON_MORE = "Еще"
BUTTON_REPLY = "Ответить на Письмо"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "Presunúť do"
BUTTON_DELETE = "Odstrániť"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_EMPTY_FOLDER = "Vyčistiť priečinok"
BUTTON_MULTY_FORWARD = "Preposlať správy"
BUTTON_DELETE_WITHOUT_MOVE = "Navždy odstrániť"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "Zatvoriť"
BUTTON_DELETE = "Odstrániť"
BUTTON_ARCHIVE = "Archive"
BUTTON_SPAM = "Spam"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "Presunúť do"
BUTTON_MORE = "Viac"
BUTTON_REPLY = "Odpovedať"

View file

@ -65,6 +65,7 @@ BUTTON_MOVE_TO = "移至"
BUTTON_DELETE = "已删除邮件"
BUTTON_ARCHIVE = "存档"
BUTTON_SPAM = "垃圾邮件"
BUTTON_NOT_SPAM = "Не спам"
BUTTON_EMPTY_FOLDER = "清空文件夹"
BUTTON_MULTY_FORWARD = "转发邮件"
BUTTON_DELETE_WITHOUT_MOVE = "永久删除"
@ -100,6 +101,7 @@ BUTTON_CLOSE = "关闭"
BUTTON_DELETE = "删除"
BUTTON_ARCHIVE = "存档"
BUTTON_SPAM = "垃圾邮件"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_MOVE_TO = "移至"
BUTTON_MORE = "更多"
BUTTON_REPLY = "回复"

View file

@ -1477,39 +1477,42 @@ table {
.icon-filter:before {
content: "\e061";
}
.icon-resize:before {
.icon-sync:before {
content: "\e062";
}
.icon-sync:before {
.icon-ellipsis-alt:before {
content: "\e063";
}
.icon-ellipsis-alt:before {
.icon-cloud-up:before {
content: "\e064";
}
.icon-cloud-up:before {
.icon-cloud-down:before {
content: "\e065";
}
.icon-cloud-down:before {
.icon-import:before {
content: "\e066";
}
.icon-import:before {
.icon-export:before {
content: "\e067";
}
.icon-export:before {
.icon-copy:before {
content: "\e068";
}
.icon-copy:before {
.icon-angry-smiley:before {
content: "\e069";
}
.icon-angry-smiley:before {
.icon-happy-smiley:before {
content: "\e06a";
}
.icon-happy-smiley:before {
.icon-help:before {
content: "\e06b";
}
.icon-help:before {
.icon-resize-in:before {
content: "\e06c";
}
.icon-resize-out:before {
content: "\e06d";
}
/** initial setup **/
.nano {
@ -9175,6 +9178,12 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
width: 400px;
height: 50px;
}
.b-admin-about .rl-logo {
display: inline-block;
width: 250px;
height: 250px;
background-image: url("images/rainloop-logo.png");
}
.popups .b-activate-content {
width: 700px;
}

File diff suppressed because one or more lines are too long

View file

@ -105,15 +105,16 @@
<glyph unicode="&#57439;" d="M456 343c0 1 0 1 0 1 0 5-2 10-5 13l0 1-40 69c-1 6-6 10-13 10 0 0 0 0-1 0l0 0-283 0 0 0c0 0 0 0 0 0-5 0-9-3-12-7l0 0-42-72 0 0c-3-4-4-9-4-14 0 0 0 0 0-1l0-247c0 0 0 0 0 0 0-12 9-21 20-21 1 0 1 0 1 0l358 0c0 0 0 0 0 0 12 0 21 9 21 21 0 0 0 0 0 0l0 247z m-131-125l-64-90c-1-1-3-2-5-2 0 0 0 0 0 0-2 0-4 1-5 2l-64 90c-1 2-1 4 0 6 1 2 3 3 5 3l30 0 0 81c0 3 3 6 6 6l56 0c3 0 6-3 6-6l0-81 30 0c2 0 4-1 5-3 1-2 1-4 0-6z m-231 147l27 47 270 0 27-47z"/>
<glyph unicode="&#57440;" d="M96 288l64 0 0-32-64 0z m0-64l64 0 0-32-64 0z m384 160l-448 0c-18 0-32-14-32-32l0-224c0-18 14-32 32-32l448 0c18 0 32 14 32 32l0 224c0 18-14 32-32 32m-288-224l-128 0 0 160 128 0z m128 0l-96 0 0 160 32 0 0-128 32 0 0 128 32 0z m128 64l-32 0 0-64-32 0 0 64-32 0 0 96 32 0 0-64 32 0 0 64 32 0z"/>
<glyph unicode="&#57441;" d="M456 428c3-8 2-15-4-20l-141-141 0-212c0-8-4-14-11-17-3-1-5-1-7-1-6 0-10 1-13 5l-73 73c-4 4-6 8-6 13l0 139-141 141c-6 5-7 12-4 20 4 7 9 11 17 11l366 0c8 0 13-4 17-11z"/>
<glyph unicode="&#57442;" d="M148 367l-111-111 111-111 0 74 216 0 0-74 111 111-111 111 0-74-216 0z"/>
<glyph unicode="&#57443;" d="M341 94c0-2-1-4-2-6-2-2-4-3-6-3l-256 0c-2 0-3 1-4 1-1 0-2 1-2 2-1 1-1 1-2 2 0 0 0 1 0 3-1 1-1 2-1 3l0 160-51 0c-5 0-9 2-12 5-3 3-5 7-5 12 0 4 1 8 4 11l85 102c4 4 8 6 13 6 6 0 10-2 13-6l86-102c2-3 4-7 4-11 0-5-2-9-5-12-4-3-8-5-12-5l-51 0 0-102 153 0c3 0 5-1 7-3l42-52c2-1 2-3 2-5z m171 111c0-4-1-8-4-11l-85-103c-4-4-8-6-13-6-6 0-10 2-13 6l-86 103c-2 3-4 7-4 11 0 4 2 8 5 12 4 3 8 5 12 5l51 0 0 102-153 0c-3 0-5 1-7 3l-42 52c-2 1-2 3-2 5 0 2 1 4 2 6 2 2 4 3 6 3l256 0c2 0 3-1 4-1 1 0 2-1 2-2 1-1 1-1 2-2 0-1 0-2 0-3 1-2 1-3 1-3l0-160 51 0c5 0 9-2 12-5 3-4 5-8 5-12z"/>
<glyph unicode="&#57444;" d="M311 155l0-54c0-8-3-15-8-20-5-5-12-8-20-8l-54 0c-8 0-15 3-20 8-5 5-8 12-8 20l0 54c0 8 3 15 8 20 5 5 12 8 20 8l54 0c8 0 15-3 20-8 5-5 8-12 8-20z m0 147l0-55c0-8-3-14-8-20-5-5-12-8-20-8l-54 0c-8 0-15 3-20 8-5 6-8 12-8 20l0 55c0 7 3 14 8 19 5 5 12 8 20 8l54 0c8 0 15-3 20-8 5-5 8-12 8-19z m0 146l0-55c0-7-3-14-8-19-5-6-12-8-20-8l-54 0c-8 0-15 2-20 8-5 5-8 12-8 19l0 55c0 8 3 14 8 19 5 6 12 8 20 8l54 0c8 0 15-2 20-8 5-5 8-11 8-19z"/>
<glyph unicode="&#57445;" d="M341 265c0 2 0 4-2 6l-94 94c-2 1-4 2-6 2-3 0-5-1-6-2l-94-94c-2-2-2-4-2-6 0-3 0-5 2-7 2-1 4-2 6-2l60 0 0-94c0-2 1-4 2-6 2-2 4-2 6-2l52 0c2 0 4 0 6 2 1 2 2 4 2 6l0 94 60 0c2 0 4 1 6 3 1 1 2 3 2 6z m171-77c0-29-10-53-30-73-20-20-44-30-72-30l-291 0c-32 0-61 12-84 35-23 24-35 52-35 85 0 23 6 44 19 64 12 19 29 34 50 44-1 5-1 9-1 11 0 38 14 70 40 97 27 26 59 40 97 40 28 0 53-8 76-23 23-16 40-36 50-62 13 11 28 17 44 17 19 0 35-7 49-20 13-14 20-30 20-49 0-13-4-26-11-37 23-5 42-17 57-36 15-18 22-39 22-63z"/>
<glyph unicode="&#57446;" d="M341 247c0 3 0 5-2 7-2 1-4 2-6 2l-60 0 0 94c0 2-1 4-2 6-2 2-4 2-6 2l-52 0c-2 0-4 0-6-2-1-2-2-4-2-6l0-94-60 0c-2 0-4-1-6-3-2-1-2-3-2-6 0-2 0-4 2-6l94-94c1-1 3-2 6-2 2 0 4 1 6 2l94 94c1 2 2 4 2 6z m171-59c0-29-10-53-30-73-20-20-44-30-72-30l-291 0c-32 0-61 12-84 35-23 24-35 52-35 85 0 23 6 44 19 64 12 19 29 34 50 44-1 5-1 9-1 11 0 38 14 70 40 97 27 26 59 40 97 40 28 0 53-8 76-23 23-16 40-36 50-62 13 11 28 17 44 17 19 0 35-7 49-20 13-14 20-30 20-49 0-13-4-26-11-37 23-5 42-17 57-36 15-18 22-39 22-63z"/>
<glyph unicode="&#57447;" d="M375 256c0-5-2-9-6-13l-155-155c-4-4-8-6-13-6-5 0-9 2-13 6-3 3-5 8-5 13l0 82-128 0c-5 0-9 2-13 5-4 4-5 8-5 13l0 110c0 5 1 9 5 13 4 3 8 5 13 5l128 0 0 82c0 5 2 10 5 13 4 4 8 6 13 6 5 0 9-2 13-6l155-155c4-4 6-8 6-13z m100 101l0-202c0-22-8-42-24-58-16-16-35-24-58-24l-91 0c-3 0-5 1-7 3-2 2-2 4-2 6 0 1-1 3-1 6 0 3 0 6 0 8 0 2 1 4 1 6 0 3 1 5 3 6 1 1 3 2 6 2l91 0c13 0 23 4 32 13 9 9 14 20 14 32l0 202c0 12-5 23-14 32-9 9-19 13-32 13l-89 0c0 0-1 0-3 1-2 0-4 0-4 0 0 1 0 1-2 2-1 1-2 2-2 3 0 1 0 2 0 3 0 1-1 3-1 6 0 3 0 6 0 8 0 2 1 4 1 6 0 3 1 5 3 6 1 1 3 2 6 2l91 0c23 0 42-8 58-24 16-16 24-36 24-58z"/>
<glyph unicode="&#57448;" d="M201 101c0-1 0-3 0-6 1-3 1-6 1-8-1-2-1-4-1-6-1-3-2-5-3-6-2-1-4-2-6-2l-91 0c-23 0-42 8-59 24-16 16-24 36-24 58l0 202c0 22 8 42 24 58 17 16 36 24 59 24l91 0c2 0 5-1 6-3 2-2 3-4 3-6 0-1 0-3 0-6 1-3 1-6 1-8-1-2-1-4-1-6-1-3-2-5-3-6-2-1-4-2-6-2l-91 0c-13 0-24-4-33-13-9-9-13-20-13-32l0-202c0-12 4-23 13-32 9-9 20-13 33-13l89 0c0 0 1 0 3-1 2 0 3 0 3 0 0-1 1-1 3-2 1-1 2-2 2-3-1-1 0-2 0-3z m265 155c0-5-2-9-5-13l-156-155c-3-4-7-6-12-6-5 0-10 2-13 6-4 3-6 8-6 13l0 82-128 0c-5 0-9 2-13 5-3 4-5 8-5 13l0 110c0 5 2 9 5 13 4 3 8 5 13 5l128 0 0 82c0 5 2 10 6 13 3 4 8 6 13 6 5 0 9-2 12-6l156-155c3-4 5-8 5-13z"/>
<glyph unicode="&#57449;" d="M485 402c7 0 14-2 19-8 5-5 8-12 8-19l0-348c0-7-3-14-8-19-5-5-12-8-19-8l-275 0c-7 0-14 3-19 8-5 5-8 12-8 19l0 83-156 0c-7 0-14 2-19 8-5 5-8 12-8 19l0 192c0 8 2 16 6 25 4 9 8 17 13 22l117 117c5 5 13 9 22 13 9 4 17 6 25 6l119 0c7 0 14-3 19-8 5-5 8-12 8-19l0-94c13 7 25 11 37 11z m-156-61l-85-85 85 0z m-183 110l-85-85 85 0z m56-185l91 91 0 118-110 0 0-118c0-8-3-15-8-20-5-5-12-8-20-8l-118 0 0-183 146 0 0 73c0 8 2 16 6 26 3 9 8 16 13 21z m273-229l0 329-109 0 0-119c0-8-3-14-8-20-6-5-12-8-20-8l-119 0 0-182z"/>
<glyph unicode="&#57450;" d="M256 512c-141 0-256-115-256-256 0-141 115-256 256-256 141 0 256 115 256 256 0 141-115 256-256 256m0-480c-123 0-224 100-224 224 0 123 101 224 224 224 123 0 224-101 224-224 0-124-101-224-224-224m0 192c-81 0-113-38-160-96l4 0c40 39 95 64 156 64 61 0 116-25 157-64l3 0c-47 58-79 96-160 96m-64 64c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48m128 0c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48"/>
<glyph unicode="&#57451;" d="M256 512c-141 0-256-115-256-256 0-141 115-256 256-256 141 0 256 115 256 256 0 141-115 256-256 256m0-480c-123 0-224 100-224 224 0 123 101 224 224 224 123 0 224-101 224-224 0-124-101-224-224-224m157 192c-41-40-96-64-157-64-61 0-116 24-156 64l-4 0c47-58 79-96 160-96 81 0 113 38 160 96z m-221 64c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48m128 0c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48"/>
<glyph unicode="&#57452;" d="M256 484c-126 0-228-102-228-228 0-126 102-228 228-228 126 0 228 102 228 228 0 126-102 228-228 228z m0-399c-94 0-171 77-171 171 0 94 77 171 171 171 94 0 171-77 171-171 0-94-77-171-171-171z m58 173c-10-9-27-16-31-18-4-2-4-4-4-10l0-8-57 0 0 18c0 14 1 22 16 30l20 10c7 5 16 8 16 15 0 8-7 11-24 11-16 0-33-6-45-14l-15 50c8 4 30 18 72 18 42 0 72-26 72-57 0-26-9-36-20-45z m-64-111c-22 0-37 12-37 32 0 21 15 33 37 33 22 0 37-12 37-33 0-20-15-32-37-32z"/>
<glyph unicode="&#57442;" d="M341 94c0-2-1-4-2-6-2-2-4-3-6-3l-256 0c-2 0-3 1-4 1-1 0-2 1-2 2-1 1-1 1-2 2 0 0 0 1 0 3-1 1-1 2-1 3l0 160-51 0c-5 0-9 2-12 5-3 3-5 7-5 12 0 4 1 8 4 11l85 102c4 4 8 6 13 6 6 0 10-2 13-6l86-102c2-3 4-7 4-11 0-5-2-9-5-12-4-3-8-5-12-5l-51 0 0-102 153 0c3 0 5-1 7-3l42-52c2-1 2-3 2-5z m171 111c0-4-1-8-4-11l-85-103c-4-4-8-6-13-6-6 0-10 2-13 6l-86 103c-2 3-4 7-4 11 0 4 2 8 5 12 4 3 8 5 12 5l51 0 0 102-153 0c-3 0-5 1-7 3l-42 52c-2 1-2 3-2 5 0 2 1 4 2 6 2 2 4 3 6 3l256 0c2 0 3-1 4-1 1 0 2-1 2-2 1-1 1-1 2-2 0-1 0-2 0-3 1-2 1-3 1-3l0-160 51 0c5 0 9-2 12-5 3-4 5-8 5-12z"/>
<glyph unicode="&#57443;" d="M311 155l0-54c0-8-3-15-8-20-5-5-12-8-20-8l-54 0c-8 0-15 3-20 8-5 5-8 12-8 20l0 54c0 8 3 15 8 20 5 5 12 8 20 8l54 0c8 0 15-3 20-8 5-5 8-12 8-20z m0 147l0-55c0-8-3-14-8-20-5-5-12-8-20-8l-54 0c-8 0-15 3-20 8-5 6-8 12-8 20l0 55c0 7 3 14 8 19 5 5 12 8 20 8l54 0c8 0 15-3 20-8 5-5 8-12 8-19z m0 146l0-55c0-7-3-14-8-19-5-6-12-8-20-8l-54 0c-8 0-15 2-20 8-5 5-8 12-8 19l0 55c0 8 3 14 8 19 5 6 12 8 20 8l54 0c8 0 15-2 20-8 5-5 8-11 8-19z"/>
<glyph unicode="&#57444;" d="M341 265c0 2 0 4-2 6l-94 94c-2 1-4 2-6 2-3 0-5-1-6-2l-94-94c-2-2-2-4-2-6 0-3 0-5 2-7 2-1 4-2 6-2l60 0 0-94c0-2 1-4 2-6 2-2 4-2 6-2l52 0c2 0 4 0 6 2 1 2 2 4 2 6l0 94 60 0c2 0 4 1 6 3 1 1 2 3 2 6z m171-77c0-29-10-53-30-73-20-20-44-30-72-30l-291 0c-32 0-61 12-84 35-23 24-35 52-35 85 0 23 6 44 19 64 12 19 29 34 50 44-1 5-1 9-1 11 0 38 14 70 40 97 27 26 59 40 97 40 28 0 53-8 76-23 23-16 40-36 50-62 13 11 28 17 44 17 19 0 35-7 49-20 13-14 20-30 20-49 0-13-4-26-11-37 23-5 42-17 57-36 15-18 22-39 22-63z"/>
<glyph unicode="&#57445;" d="M341 247c0 3 0 5-2 7-2 1-4 2-6 2l-60 0 0 94c0 2-1 4-2 6-2 2-4 2-6 2l-52 0c-2 0-4 0-6-2-1-2-2-4-2-6l0-94-60 0c-2 0-4-1-6-3-2-1-2-3-2-6 0-2 0-4 2-6l94-94c1-1 3-2 6-2 2 0 4 1 6 2l94 94c1 2 2 4 2 6z m171-59c0-29-10-53-30-73-20-20-44-30-72-30l-291 0c-32 0-61 12-84 35-23 24-35 52-35 85 0 23 6 44 19 64 12 19 29 34 50 44-1 5-1 9-1 11 0 38 14 70 40 97 27 26 59 40 97 40 28 0 53-8 76-23 23-16 40-36 50-62 13 11 28 17 44 17 19 0 35-7 49-20 13-14 20-30 20-49 0-13-4-26-11-37 23-5 42-17 57-36 15-18 22-39 22-63z"/>
<glyph unicode="&#57446;" d="M375 256c0-5-2-9-6-13l-155-155c-4-4-8-6-13-6-5 0-9 2-13 6-3 3-5 8-5 13l0 82-128 0c-5 0-9 2-13 5-4 4-5 8-5 13l0 110c0 5 1 9 5 13 4 3 8 5 13 5l128 0 0 82c0 5 2 10 5 13 4 4 8 6 13 6 5 0 9-2 13-6l155-155c4-4 6-8 6-13z m100 101l0-202c0-22-8-42-24-58-16-16-35-24-58-24l-91 0c-3 0-5 1-7 3-2 2-2 4-2 6 0 1-1 3-1 6 0 3 0 6 0 8 0 2 1 4 1 6 0 3 1 5 3 6 1 1 3 2 6 2l91 0c13 0 23 4 32 13 9 9 14 20 14 32l0 202c0 12-5 23-14 32-9 9-19 13-32 13l-89 0c0 0-1 0-3 1-2 0-4 0-4 0 0 1 0 1-2 2-1 1-2 2-2 3 0 1 0 2 0 3 0 1-1 3-1 6 0 3 0 6 0 8 0 2 1 4 1 6 0 3 1 5 3 6 1 1 3 2 6 2l91 0c23 0 42-8 58-24 16-16 24-36 24-58z"/>
<glyph unicode="&#57447;" d="M201 101c0-1 0-3 0-6 1-3 1-6 1-8-1-2-1-4-1-6-1-3-2-5-3-6-2-1-4-2-6-2l-91 0c-23 0-42 8-59 24-16 16-24 36-24 58l0 202c0 22 8 42 24 58 17 16 36 24 59 24l91 0c2 0 5-1 6-3 2-2 3-4 3-6 0-1 0-3 0-6 1-3 1-6 1-8-1-2-1-4-1-6-1-3-2-5-3-6-2-1-4-2-6-2l-91 0c-13 0-24-4-33-13-9-9-13-20-13-32l0-202c0-12 4-23 13-32 9-9 20-13 33-13l89 0c0 0 1 0 3-1 2 0 3 0 3 0 0-1 1-1 3-2 1-1 2-2 2-3-1-1 0-2 0-3z m265 155c0-5-2-9-5-13l-156-155c-3-4-7-6-12-6-5 0-10 2-13 6-4 3-6 8-6 13l0 82-128 0c-5 0-9 2-13 5-3 4-5 8-5 13l0 110c0 5 2 9 5 13 4 3 8 5 13 5l128 0 0 82c0 5 2 10 6 13 3 4 8 6 13 6 5 0 9-2 12-6l156-155c3-4 5-8 5-13z"/>
<glyph unicode="&#57448;" d="M485 402c7 0 14-2 19-8 5-5 8-12 8-19l0-348c0-7-3-14-8-19-5-5-12-8-19-8l-275 0c-7 0-14 3-19 8-5 5-8 12-8 19l0 83-156 0c-7 0-14 2-19 8-5 5-8 12-8 19l0 192c0 8 2 16 6 25 4 9 8 17 13 22l117 117c5 5 13 9 22 13 9 4 17 6 25 6l119 0c7 0 14-3 19-8 5-5 8-12 8-19l0-94c13 7 25 11 37 11z m-156-61l-85-85 85 0z m-183 110l-85-85 85 0z m56-185l91 91 0 118-110 0 0-118c0-8-3-15-8-20-5-5-12-8-20-8l-118 0 0-183 146 0 0 73c0 8 2 16 6 26 3 9 8 16 13 21z m273-229l0 329-109 0 0-119c0-8-3-14-8-20-6-5-12-8-20-8l-119 0 0-182z"/>
<glyph unicode="&#57449;" d="M256 512c-141 0-256-115-256-256 0-141 115-256 256-256 141 0 256 115 256 256 0 141-115 256-256 256m0-480c-123 0-224 100-224 224 0 123 101 224 224 224 123 0 224-101 224-224 0-124-101-224-224-224m0 192c-81 0-113-38-160-96l4 0c40 39 95 64 156 64 61 0 116-25 157-64l3 0c-47 58-79 96-160 96m-64 64c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48m128 0c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48"/>
<glyph unicode="&#57450;" d="M256 512c-141 0-256-115-256-256 0-141 115-256 256-256 141 0 256 115 256 256 0 141-115 256-256 256m0-480c-123 0-224 100-224 224 0 123 101 224 224 224 123 0 224-101 224-224 0-124-101-224-224-224m157 192c-41-40-96-64-157-64-61 0-116 24-156 64l-4 0c47-58 79-96 160-96 81 0 113 38 160 96z m-221 64c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48m128 0c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48"/>
<glyph unicode="&#57451;" d="M256 484c-126 0-228-102-228-228 0-126 102-228 228-228 126 0 228 102 228 228 0 126-102 228-228 228z m0-399c-94 0-171 77-171 171 0 94 77 171 171 171 94 0 171-77 171-171 0-94-77-171-171-171z m58 173c-10-9-27-16-31-18-4-2-4-4-4-10l0-8-57 0 0 18c0 14 1 22 16 30l20 10c7 5 16 8 16 15 0 8-7 11-24 11-16 0-33-6-45-14l-15 50c8 4 30 18 72 18 42 0 72-26 72-57 0-26-9-36-20-45z m-64-111c-22 0-37 12-37 32 0 21 15 33 37 33 22 0 37-12 37-33 0-20-15-32-37-32z"/>
<glyph unicode="&#57452;" d="M411 475l-88-88-65 65 0-194 194 0-65 65 88 88z m-351-221l65-65-88-88 64-64 88 88 65-65 0 194z"/>
<glyph unicode="&#57453;" d="M282 475l65-64-89-89 64-64 89 89 64-65 0 193z m-92-221l-89-89-64 65 0-193 193 0-65 64 89 89z"/>
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View file

@ -383,7 +383,14 @@ Enums.StateType = {
* @enum {string}
*/
Enums.Capa = {
'Prem': 'PREM'
'Prem': 'PREM',
'TwoFactor': 'TWO_FACTOR',
'OpenPGP': 'OPEN_PGP',
'Prefetch': 'PREFETCH',
'Gravatar': 'GRAVATAR',
'Themes': 'THEMES',
'AdditionalAccounts': 'ADDITIONAL_ACCOUNTS',
'AdditionalIdentities': 'ADDITIONAL_IDENTITIES'
};
/**
@ -1506,7 +1513,7 @@ Utils.initDataConstructorBySettings = function (oData)
Globals.sAnimationType = Enums.InterfaceAnimation.Full;
oData.allowThemes = ko.observable(true);
oData.capaThemes = ko.observable(false);
oData.allowCustomLogin = ko.observable(false);
oData.allowLanguagesOnSettings = ko.observable(true);
oData.allowLanguagesOnLogin = ko.observable(true);
@ -1674,9 +1681,9 @@ Utils.initDataConstructorBySettings = function (oData)
}
});
oData.allowAdditionalAccounts = ko.observable(false);
oData.allowIdentities = ko.observable(false);
oData.allowGravatar = ko.observable(false);
oData.capaAdditionalAccounts = ko.observable(false);
oData.capaAdditionalIdentities = ko.observable(false);
oData.capaGravatar = ko.observable(false);
oData.determineUserLanguage = ko.observable(false);
oData.messagesPerPage = ko.observable(Consts.Defaults.MessagesPerPage);//.extend({'throttle': 200});
@ -5920,11 +5927,11 @@ function AdminGeneral()
this.language = oData.language;
this.theme = oData.theme;
this.allowThemes = oData.allowThemes;
this.allowLanguagesOnSettings = oData.allowLanguagesOnSettings;
this.allowAdditionalAccounts = oData.allowAdditionalAccounts;
this.allowIdentities = oData.allowIdentities;
this.allowGravatar = oData.allowGravatar;
this.capaThemes = oData.capaThemes;
this.capaGravatar = oData.capaGravatar;
this.capaAdditionalAccounts = oData.capaAdditionalAccounts;
this.capaAdditionalIdentities = oData.capaAdditionalIdentities;
this.themesOptions = ko.computed(function () {
return _.map(oData.themes(), function (sTheme) {
@ -5969,27 +5976,27 @@ AdminGeneral.prototype.onBuild = function ()
});
});
self.allowAdditionalAccounts.subscribe(function (bValue) {
self.capaAdditionalAccounts.subscribe(function (bValue) {
RL.remote().saveAdminConfig(null, {
'AllowAdditionalAccounts': bValue ? '1' : '0'
'CapaAdditionalAccounts': bValue ? '1' : '0'
});
});
self.allowIdentities.subscribe(function (bValue) {
self.capaAdditionalIdentities.subscribe(function (bValue) {
RL.remote().saveAdminConfig(null, {
'AllowIdentities': bValue ? '1' : '0'
'CapaAdditionalIdentities': bValue ? '1' : '0'
});
});
self.allowGravatar.subscribe(function (bValue) {
self.capaGravatar.subscribe(function (bValue) {
RL.remote().saveAdminConfig(null, {
'AllowGravatar': bValue ? '1' : '0'
'CapaGravatar': bValue ? '1' : '0'
});
});
self.allowThemes.subscribe(function (bValue) {
self.capaThemes.subscribe(function (bValue) {
RL.remote().saveAdminConfig(null, {
'AllowThemes': bValue ? '1' : '0'
'CapaThemes': bValue ? '1' : '0'
});
});
@ -6443,8 +6450,8 @@ AdminDomains.prototype.onDomainListChangeRequest = function ()
function AdminSecurity()
{
this.csrfProtection = ko.observable(!!RL.settingsGet('UseTokenProtection'));
this.openPGP = ko.observable(!!RL.settingsGet('OpenPGP'));
this.allowTwoFactorAuth = ko.observable(!!RL.settingsGet('AllowTwoFactorAuth'));
this.capaOpenPGP = ko.observable(RL.capa(Enums.Capa.OpenPGP));
this.capaTwoFactorAuth = ko.observable(RL.capa(Enums.Capa.TwoFactor));
this.adminLogin = ko.observable(RL.settingsGet('AdminLogin'));
this.adminPassword = ko.observable('');
@ -6521,15 +6528,15 @@ AdminSecurity.prototype.onBuild = function ()
});
});
this.openPGP.subscribe(function (bValue) {
this.capaOpenPGP.subscribe(function (bValue) {
RL.remote().saveAdminConfig(Utils.emptyFunction, {
'OpenPGP': bValue ? '1' : '0'
'CapaOpenPGP': bValue ? '1' : '0'
});
});
this.allowTwoFactorAuth.subscribe(function (bValue) {
this.capaTwoFactorAuth.subscribe(function (bValue) {
RL.remote().saveAdminConfig(Utils.emptyFunction, {
'AllowTwoFactorAuth': bValue ? '1' : '0'
'CapaTwoFactorAuth': bValue ? '1' : '0'
});
});
};
@ -6911,6 +6918,21 @@ AdminLicensing.prototype.licenseExpiredMomentValue = function ()
var oDate = moment.unix(this.licenseExpired());
return oDate.format('LL') + ' (' + oDate.from(moment()) + ')';
};
/**
* @constructor
*/
function AdminAbout()
{
this.version = ko.observable(RL.settingsGet('Version'));
}
Utils.addSettingsViewModel(AdminAbout, 'AdminSettingsAbout', 'About', 'about');
//AdminAbout.prototype.onBuild = function ()
//{
//
//};
/**
* @constructor
*/
@ -6995,12 +7017,12 @@ AbstractData.prototype.populateDataOnStart = function()
this.mainLanguage(RL.settingsGet('Language'));
this.mainTheme(RL.settingsGet('Theme'));
this.allowAdditionalAccounts(!!RL.settingsGet('AllowAdditionalAccounts'));
this.allowIdentities(!!RL.settingsGet('AllowIdentities'));
this.allowGravatar(!!RL.settingsGet('AllowGravatar'));
this.capaAdditionalAccounts(RL.capa(Enums.Capa.AdditionalAccounts));
this.capaAdditionalIdentities(RL.capa(Enums.Capa.AdditionalIdentities));
this.capaGravatar(RL.capa(Enums.Capa.Gravatar));
this.determineUserLanguage(!!RL.settingsGet('DetermineUserLanguage'));
this.allowThemes(!!RL.settingsGet('AllowThemes'));
this.capaThemes(RL.capa(Enums.Capa.Themes));
this.allowCustomLogin(!!RL.settingsGet('AllowCustomLogin'));
this.allowLanguagesOnLogin(!!RL.settingsGet('AllowLanguagesOnLogin'));
this.allowLanguagesOnSettings(!!RL.settingsGet('AllowLanguagesOnSettings'));
@ -7609,7 +7631,7 @@ function AbstractCacheStorage()
{
this.oEmailsPicsHashes = {};
this.oServices = {};
this.bAllowGravatar = !!RL.settingsGet('AllowGravatar');
this.bCapaGravatar = RL.capa(Enums.Capa.Gravatar);
}
/**
@ -7625,7 +7647,7 @@ AbstractCacheStorage.prototype.oServices = {};
/**
* @type {boolean}
*/
AbstractCacheStorage.prototype.bAllowGravatar = false;
AbstractCacheStorage.prototype.bCapaGravatar = false;
AbstractCacheStorage.prototype.clear = function ()
{
@ -7659,7 +7681,7 @@ AbstractCacheStorage.prototype.getUserPic = function (sEmail, fCallback)
}
if (this.bAllowGravatar && '' === sUrl)
if (this.bCapaGravatar && '' === sUrl)
{
fCallback('//secure.gravatar.com/avatar/' + Utils.md5(sEmailLower) + '.jpg?s=80&d=mm', sEmail);
}
@ -8479,6 +8501,8 @@ AdminApp.prototype.bootstart = function ()
}
else
{
Utils.removeSettingsViewModel(AdminAbout);
if (!RL.capa(Enums.Capa.Prem))
{
Utils.removeSettingsViewModel(AdminBranding);

File diff suppressed because one or more lines are too long

View file

@ -387,7 +387,14 @@ Enums.StateType = {
* @enum {string}
*/
Enums.Capa = {
'Prem': 'PREM'
'Prem': 'PREM',
'TwoFactor': 'TWO_FACTOR',
'OpenPGP': 'OPEN_PGP',
'Prefetch': 'PREFETCH',
'Gravatar': 'GRAVATAR',
'Themes': 'THEMES',
'AdditionalAccounts': 'ADDITIONAL_ACCOUNTS',
'AdditionalIdentities': 'ADDITIONAL_IDENTITIES'
};
/**
@ -1510,7 +1517,7 @@ Utils.initDataConstructorBySettings = function (oData)
Globals.sAnimationType = Enums.InterfaceAnimation.Full;
oData.allowThemes = ko.observable(true);
oData.capaThemes = ko.observable(false);
oData.allowCustomLogin = ko.observable(false);
oData.allowLanguagesOnSettings = ko.observable(true);
oData.allowLanguagesOnLogin = ko.observable(true);
@ -1678,9 +1685,9 @@ Utils.initDataConstructorBySettings = function (oData)
}
});
oData.allowAdditionalAccounts = ko.observable(false);
oData.allowIdentities = ko.observable(false);
oData.allowGravatar = ko.observable(false);
oData.capaAdditionalAccounts = ko.observable(false);
oData.capaAdditionalIdentities = ko.observable(false);
oData.capaGravatar = ko.observable(false);
oData.determineUserLanguage = ko.observable(false);
oData.messagesPerPage = ko.observable(Consts.Defaults.MessagesPerPage);//.extend({'throttle': 200});
@ -6803,7 +6810,7 @@ MessageModel.prototype.initUpdateByMessageJson = function (oJsonMessage)
this.sInReplyTo = oJsonMessage.InReplyTo;
this.sReferences = oJsonMessage.References;
if (RL.data().allowOpenPGP())
if (RL.data().capaOpenPGP())
{
this.isPgpSigned(!!oJsonMessage.PgpSigned);
this.isPgpEncrypted(!!oJsonMessage.PgpEncrypted);
@ -7438,7 +7445,7 @@ MessageModel.prototype.storeDataToDom = function ()
this.body.data('rl-plain-raw', this.plainRaw);
if (RL.data().allowOpenPGP())
if (RL.data().capaOpenPGP())
{
this.body.data('rl-plain-pgp-signed', !!this.isPgpSigned());
this.body.data('rl-plain-pgp-encrypted', !!this.isPgpEncrypted());
@ -7450,7 +7457,7 @@ MessageModel.prototype.storeDataToDom = function ()
MessageModel.prototype.storePgpVerifyDataToDom = function ()
{
if (this.body && RL.data().allowOpenPGP())
if (this.body && RL.data().capaOpenPGP())
{
this.body.data('rl-pgp-verify-status', this.pgpSignedVerifyStatus());
this.body.data('rl-pgp-verify-user', this.pgpSignedVerifyUser());
@ -7467,7 +7474,7 @@ MessageModel.prototype.fetchDataToDom = function ()
this.plainRaw = Utils.pString(this.body.data('rl-plain-raw'));
if (RL.data().allowOpenPGP())
if (RL.data().capaOpenPGP())
{
this.isPgpSigned(!!this.body.data('rl-plain-pgp-signed'));
this.isPgpEncrypted(!!this.body.data('rl-plain-pgp-encrypted'));
@ -8389,7 +8396,7 @@ function PopupsComposeViewModel()
this.bSkipNext = false;
this.sReferences = '';
this.bAllowIdentities = RL.settingsGet('AllowIdentities');
this.bCapaAdditionalIdentities = RL.capa(Enums.Capa.AdditionalIdentities);
var
self = this,
@ -8402,7 +8409,7 @@ function PopupsComposeViewModel()
}
;
this.allowOpenPGP = oRainLoopData.allowOpenPGP;
this.capaOpenPGP = oRainLoopData.capaOpenPGP;
this.resizer = ko.observable(false).extend({'throttle': 50});
@ -8499,7 +8506,7 @@ function PopupsComposeViewModel()
sID = this.currentIdentityID()
;
if (this.bAllowIdentities && sID && sID !== RL.data().accountEmail())
if (this.bCapaAdditionalIdentities && sID && sID !== RL.data().accountEmail())
{
oItem = _.find(aList, function (oItem) {
return oItem && sID === oItem['id'];
@ -8740,7 +8747,7 @@ Utils.extendAsViewModel('PopupsComposeViewModel', PopupsComposeViewModel);
PopupsComposeViewModel.prototype.openOpenPgpPopup = function ()
{
if (this.allowOpenPGP() && this.oEditor && !this.oEditor.isHtml())
if (this.capaOpenPGP() && this.oEditor && !this.oEditor.isHtml())
{
var self = this;
kn.showScreenPopup(PopupsComposeOpenPgpViewModel, [
@ -8791,7 +8798,7 @@ PopupsComposeViewModel.prototype.findIdentityIdByMessage = function (sComposeTyp
}
;
if (this.bAllowIdentities)
if (this.bCapaAdditionalIdentities)
{
_.each(this.identities(), function (oItem) {
oIDs[oItem.email()] = oItem['id'];
@ -11025,6 +11032,13 @@ function PopupsGenerateNewOpenPgpKeyViewModel()
_.delay(function () {
mKeyPair = window.openpgp.generateKeyPair(1, Utils.pInt(self.keyBitLength()), sUserID, Utils.trim(self.password()));
// 0.6.0
// mKeyPair = window.openpgp.generateKeyPair({
// 'numBits': Utils.pInt(self.keyBitLength()),
// 'userId': sUserID,
// 'passphrase': Utils.trim(self.password())
// });
if (mKeyPair && mKeyPair.privateKeyArmored)
{
oOpenpgpKeyring.privateKeys.importKey(mKeyPair.privateKeyArmored);
@ -12047,7 +12061,7 @@ function AbstractSystemDropDownViewModel()
this.accountMenuDropdownTrigger = ko.observable(false);
this.allowAddAccount = RL.settingsGet('AllowAdditionalAccounts');
this.capaAdditionalAccounts = RL.capa(Enums.Capa.AdditionalAccounts);
this.loading = ko.computed(function () {
return this.accountsLoading();
@ -12089,7 +12103,7 @@ AbstractSystemDropDownViewModel.prototype.settingsHelp = function ()
AbstractSystemDropDownViewModel.prototype.addAccountClick = function ()
{
if (this.allowAddAccount)
if (this.capaAdditionalAccounts)
{
kn.showScreenPopup(PopupsAddAccountViewModel);
}
@ -13025,7 +13039,7 @@ MailBoxMessageListViewModel.prototype.onBuild = function (oDom)
this.initUploaderForAppend();
this.initShortcuts();
if (!Globals.bMobileDevice && !!RL.settingsGet('AllowPrefetch') && ifvisible)
if (!Globals.bMobileDevice && RL.capa(Enums.Capa.Prefetch) && ifvisible)
{
ifvisible.setIdleDuration(10);
@ -15335,12 +15349,12 @@ AbstractData.prototype.populateDataOnStart = function()
this.mainLanguage(RL.settingsGet('Language'));
this.mainTheme(RL.settingsGet('Theme'));
this.allowAdditionalAccounts(!!RL.settingsGet('AllowAdditionalAccounts'));
this.allowIdentities(!!RL.settingsGet('AllowIdentities'));
this.allowGravatar(!!RL.settingsGet('AllowGravatar'));
this.capaAdditionalAccounts(RL.capa(Enums.Capa.AdditionalAccounts));
this.capaAdditionalIdentities(RL.capa(Enums.Capa.AdditionalIdentities));
this.capaGravatar(RL.capa(Enums.Capa.Gravatar));
this.determineUserLanguage(!!RL.settingsGet('DetermineUserLanguage'));
this.allowThemes(!!RL.settingsGet('AllowThemes'));
this.capaThemes(RL.capa(Enums.Capa.Themes));
this.allowCustomLogin(!!RL.settingsGet('AllowCustomLogin'));
this.allowLanguagesOnLogin(!!RL.settingsGet('AllowLanguagesOnLogin'));
this.allowLanguagesOnSettings(!!RL.settingsGet('AllowLanguagesOnSettings'));
@ -15783,7 +15797,7 @@ function WebMailDataStorage()
}, this);
// other
this.allowOpenPGP = ko.observable(false);
this.capaOpenPGP = ko.observable(false);
this.openpgpkeys = ko.observableArray([]);
this.openpgpKeyring = null;
@ -16310,8 +16324,7 @@ WebMailDataStorage.prototype.setMessage = function (oData, bCached)
sPlain = oData.Result.Plain.toString();
if ((oMessage.isPgpSigned() || oMessage.isPgpEncrypted()) &&
RL.data().allowOpenPGP() &&
Utils.isNormal(oData.Result.PlainRaw))
RL.data().capaOpenPGP() && Utils.isNormal(oData.Result.PlainRaw))
{
oMessage.plainRaw = Utils.pString(oData.Result.PlainRaw);
@ -17709,7 +17722,7 @@ function AbstractCacheStorage()
{
this.oEmailsPicsHashes = {};
this.oServices = {};
this.bAllowGravatar = !!RL.settingsGet('AllowGravatar');
this.bCapaGravatar = RL.capa(Enums.Capa.Gravatar);
}
/**
@ -17725,7 +17738,7 @@ AbstractCacheStorage.prototype.oServices = {};
/**
* @type {boolean}
*/
AbstractCacheStorage.prototype.bAllowGravatar = false;
AbstractCacheStorage.prototype.bCapaGravatar = false;
AbstractCacheStorage.prototype.clear = function ()
{
@ -17759,7 +17772,7 @@ AbstractCacheStorage.prototype.getUserPic = function (sEmail, fCallback)
}
if (this.bAllowGravatar && '' === sUrl)
if (this.bCapaGravatar && '' === sUrl)
{
fCallback('//secure.gravatar.com/avatar/' + Utils.md5(sEmailLower) + '.jpg?s=80&d=mm', sEmail);
}
@ -18387,7 +18400,7 @@ MailBoxScreen.prototype.onStart = function ()
}
;
if (RL.settingsGet('AllowAdditionalAccounts') || RL.settingsGet('AllowIdentities'))
if (RL.capa(Enums.Capa.AdditionalAccounts) || RL.capa(Enums.Capa.AdditionalIdentities))
{
RL.accountsAndIdentities();
}
@ -19279,7 +19292,7 @@ RainLoopApp.prototype.folders = function (fCallback)
RainLoopApp.prototype.reloadOpenPgpKeys = function ()
{
if (RL.data().allowOpenPGP())
if (RL.data().capaOpenPGP())
{
var
aKeys = [],
@ -19897,12 +19910,12 @@ RainLoopApp.prototype.bootstart = function ()
Utils.removeSettingsViewModel(SettingsContacts);
}
if (!RL.settingsGet('AllowAdditionalAccounts'))
if (!RL.capa(Enums.Capa.AdditionalAccounts))
{
Utils.removeSettingsViewModel(SettingsAccounts);
}
if (RL.settingsGet('AllowIdentities'))
if (RL.capa(Enums.Capa.AdditionalIdentities))
{
Utils.removeSettingsViewModel(SettingsIdentity);
}
@ -19911,26 +19924,26 @@ RainLoopApp.prototype.bootstart = function ()
Utils.removeSettingsViewModel(SettingsIdentities);
}
if (!RL.settingsGet('OpenPGP'))
if (!RL.capa(Enums.Capa.OpenPGP))
{
Utils.removeSettingsViewModel(SettingsOpenPGP);
}
if (!RL.settingsGet('AllowTwoFactorAuth'))
if (!RL.capa(Enums.Capa.TwoFactor))
{
Utils.removeSettingsViewModel(SettingsSecurity);
}
if (!RL.capa(Enums.Capa.Themes))
{
Utils.removeSettingsViewModel(SettingsThemes);
}
if (!bGoogle && !bFacebook && !bTwitter)
{
Utils.removeSettingsViewModel(SettingsSocialScreen);
}
if (!RL.settingsGet('AllowThemes'))
{
Utils.removeSettingsViewModel(SettingsThemes);
}
Utils.initOnStartOrLangChange(function () {
$.extend(true, $.magnificPopup.defaults, {
@ -19967,7 +19980,7 @@ RainLoopApp.prototype.bootstart = function ()
if (bValue)
{
if (window.crypto && window.crypto.getRandomValues && RL.settingsGet('OpenPGP'))
if (window.crypto && window.crypto.getRandomValues && RL.capa(Enums.Capa.OpenPGP))
{
$.ajax({
'url': RL.link().openPgpJs(),
@ -19977,7 +19990,7 @@ RainLoopApp.prototype.bootstart = function ()
if (window.openpgp)
{
RL.data().openpgpKeyring = new window.openpgp.Keyring();
RL.data().allowOpenPGP(true);
RL.data().capaOpenPGP(true);
RL.pub('openpgp.init');
@ -19988,7 +20001,7 @@ RainLoopApp.prototype.bootstart = function ()
}
else
{
RL.data().allowOpenPGP(false);
RL.data().capaOpenPGP(false);
}
kn.startScreens([MailBoxScreen, SettingsScreen]);

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -105,15 +105,16 @@
<glyph unicode="&#57439;" d="M456 343c0 1 0 1 0 1 0 5-2 10-5 13l0 1-40 69c-1 6-6 10-13 10 0 0 0 0-1 0l0 0-283 0 0 0c0 0 0 0 0 0-5 0-9-3-12-7l0 0-42-72 0 0c-3-4-4-9-4-14 0 0 0 0 0-1l0-247c0 0 0 0 0 0 0-12 9-21 20-21 1 0 1 0 1 0l358 0c0 0 0 0 0 0 12 0 21 9 21 21 0 0 0 0 0 0l0 247z m-131-125l-64-90c-1-1-3-2-5-2 0 0 0 0 0 0-2 0-4 1-5 2l-64 90c-1 2-1 4 0 6 1 2 3 3 5 3l30 0 0 81c0 3 3 6 6 6l56 0c3 0 6-3 6-6l0-81 30 0c2 0 4-1 5-3 1-2 1-4 0-6z m-231 147l27 47 270 0 27-47z"/>
<glyph unicode="&#57440;" d="M96 288l64 0 0-32-64 0z m0-64l64 0 0-32-64 0z m384 160l-448 0c-18 0-32-14-32-32l0-224c0-18 14-32 32-32l448 0c18 0 32 14 32 32l0 224c0 18-14 32-32 32m-288-224l-128 0 0 160 128 0z m128 0l-96 0 0 160 32 0 0-128 32 0 0 128 32 0z m128 64l-32 0 0-64-32 0 0 64-32 0 0 96 32 0 0-64 32 0 0 64 32 0z"/>
<glyph unicode="&#57441;" d="M456 428c3-8 2-15-4-20l-141-141 0-212c0-8-4-14-11-17-3-1-5-1-7-1-6 0-10 1-13 5l-73 73c-4 4-6 8-6 13l0 139-141 141c-6 5-7 12-4 20 4 7 9 11 17 11l366 0c8 0 13-4 17-11z"/>
<glyph unicode="&#57442;" d="M148 367l-111-111 111-111 0 74 216 0 0-74 111 111-111 111 0-74-216 0z"/>
<glyph unicode="&#57443;" d="M341 94c0-2-1-4-2-6-2-2-4-3-6-3l-256 0c-2 0-3 1-4 1-1 0-2 1-2 2-1 1-1 1-2 2 0 0 0 1 0 3-1 1-1 2-1 3l0 160-51 0c-5 0-9 2-12 5-3 3-5 7-5 12 0 4 1 8 4 11l85 102c4 4 8 6 13 6 6 0 10-2 13-6l86-102c2-3 4-7 4-11 0-5-2-9-5-12-4-3-8-5-12-5l-51 0 0-102 153 0c3 0 5-1 7-3l42-52c2-1 2-3 2-5z m171 111c0-4-1-8-4-11l-85-103c-4-4-8-6-13-6-6 0-10 2-13 6l-86 103c-2 3-4 7-4 11 0 4 2 8 5 12 4 3 8 5 12 5l51 0 0 102-153 0c-3 0-5 1-7 3l-42 52c-2 1-2 3-2 5 0 2 1 4 2 6 2 2 4 3 6 3l256 0c2 0 3-1 4-1 1 0 2-1 2-2 1-1 1-1 2-2 0-1 0-2 0-3 1-2 1-3 1-3l0-160 51 0c5 0 9-2 12-5 3-4 5-8 5-12z"/>
<glyph unicode="&#57444;" d="M311 155l0-54c0-8-3-15-8-20-5-5-12-8-20-8l-54 0c-8 0-15 3-20 8-5 5-8 12-8 20l0 54c0 8 3 15 8 20 5 5 12 8 20 8l54 0c8 0 15-3 20-8 5-5 8-12 8-20z m0 147l0-55c0-8-3-14-8-20-5-5-12-8-20-8l-54 0c-8 0-15 3-20 8-5 6-8 12-8 20l0 55c0 7 3 14 8 19 5 5 12 8 20 8l54 0c8 0 15-3 20-8 5-5 8-12 8-19z m0 146l0-55c0-7-3-14-8-19-5-6-12-8-20-8l-54 0c-8 0-15 2-20 8-5 5-8 12-8 19l0 55c0 8 3 14 8 19 5 6 12 8 20 8l54 0c8 0 15-2 20-8 5-5 8-11 8-19z"/>
<glyph unicode="&#57445;" d="M341 265c0 2 0 4-2 6l-94 94c-2 1-4 2-6 2-3 0-5-1-6-2l-94-94c-2-2-2-4-2-6 0-3 0-5 2-7 2-1 4-2 6-2l60 0 0-94c0-2 1-4 2-6 2-2 4-2 6-2l52 0c2 0 4 0 6 2 1 2 2 4 2 6l0 94 60 0c2 0 4 1 6 3 1 1 2 3 2 6z m171-77c0-29-10-53-30-73-20-20-44-30-72-30l-291 0c-32 0-61 12-84 35-23 24-35 52-35 85 0 23 6 44 19 64 12 19 29 34 50 44-1 5-1 9-1 11 0 38 14 70 40 97 27 26 59 40 97 40 28 0 53-8 76-23 23-16 40-36 50-62 13 11 28 17 44 17 19 0 35-7 49-20 13-14 20-30 20-49 0-13-4-26-11-37 23-5 42-17 57-36 15-18 22-39 22-63z"/>
<glyph unicode="&#57446;" d="M341 247c0 3 0 5-2 7-2 1-4 2-6 2l-60 0 0 94c0 2-1 4-2 6-2 2-4 2-6 2l-52 0c-2 0-4 0-6-2-1-2-2-4-2-6l0-94-60 0c-2 0-4-1-6-3-2-1-2-3-2-6 0-2 0-4 2-6l94-94c1-1 3-2 6-2 2 0 4 1 6 2l94 94c1 2 2 4 2 6z m171-59c0-29-10-53-30-73-20-20-44-30-72-30l-291 0c-32 0-61 12-84 35-23 24-35 52-35 85 0 23 6 44 19 64 12 19 29 34 50 44-1 5-1 9-1 11 0 38 14 70 40 97 27 26 59 40 97 40 28 0 53-8 76-23 23-16 40-36 50-62 13 11 28 17 44 17 19 0 35-7 49-20 13-14 20-30 20-49 0-13-4-26-11-37 23-5 42-17 57-36 15-18 22-39 22-63z"/>
<glyph unicode="&#57447;" d="M375 256c0-5-2-9-6-13l-155-155c-4-4-8-6-13-6-5 0-9 2-13 6-3 3-5 8-5 13l0 82-128 0c-5 0-9 2-13 5-4 4-5 8-5 13l0 110c0 5 1 9 5 13 4 3 8 5 13 5l128 0 0 82c0 5 2 10 5 13 4 4 8 6 13 6 5 0 9-2 13-6l155-155c4-4 6-8 6-13z m100 101l0-202c0-22-8-42-24-58-16-16-35-24-58-24l-91 0c-3 0-5 1-7 3-2 2-2 4-2 6 0 1-1 3-1 6 0 3 0 6 0 8 0 2 1 4 1 6 0 3 1 5 3 6 1 1 3 2 6 2l91 0c13 0 23 4 32 13 9 9 14 20 14 32l0 202c0 12-5 23-14 32-9 9-19 13-32 13l-89 0c0 0-1 0-3 1-2 0-4 0-4 0 0 1 0 1-2 2-1 1-2 2-2 3 0 1 0 2 0 3 0 1-1 3-1 6 0 3 0 6 0 8 0 2 1 4 1 6 0 3 1 5 3 6 1 1 3 2 6 2l91 0c23 0 42-8 58-24 16-16 24-36 24-58z"/>
<glyph unicode="&#57448;" d="M201 101c0-1 0-3 0-6 1-3 1-6 1-8-1-2-1-4-1-6-1-3-2-5-3-6-2-1-4-2-6-2l-91 0c-23 0-42 8-59 24-16 16-24 36-24 58l0 202c0 22 8 42 24 58 17 16 36 24 59 24l91 0c2 0 5-1 6-3 2-2 3-4 3-6 0-1 0-3 0-6 1-3 1-6 1-8-1-2-1-4-1-6-1-3-2-5-3-6-2-1-4-2-6-2l-91 0c-13 0-24-4-33-13-9-9-13-20-13-32l0-202c0-12 4-23 13-32 9-9 20-13 33-13l89 0c0 0 1 0 3-1 2 0 3 0 3 0 0-1 1-1 3-2 1-1 2-2 2-3-1-1 0-2 0-3z m265 155c0-5-2-9-5-13l-156-155c-3-4-7-6-12-6-5 0-10 2-13 6-4 3-6 8-6 13l0 82-128 0c-5 0-9 2-13 5-3 4-5 8-5 13l0 110c0 5 2 9 5 13 4 3 8 5 13 5l128 0 0 82c0 5 2 10 6 13 3 4 8 6 13 6 5 0 9-2 12-6l156-155c3-4 5-8 5-13z"/>
<glyph unicode="&#57449;" d="M485 402c7 0 14-2 19-8 5-5 8-12 8-19l0-348c0-7-3-14-8-19-5-5-12-8-19-8l-275 0c-7 0-14 3-19 8-5 5-8 12-8 19l0 83-156 0c-7 0-14 2-19 8-5 5-8 12-8 19l0 192c0 8 2 16 6 25 4 9 8 17 13 22l117 117c5 5 13 9 22 13 9 4 17 6 25 6l119 0c7 0 14-3 19-8 5-5 8-12 8-19l0-94c13 7 25 11 37 11z m-156-61l-85-85 85 0z m-183 110l-85-85 85 0z m56-185l91 91 0 118-110 0 0-118c0-8-3-15-8-20-5-5-12-8-20-8l-118 0 0-183 146 0 0 73c0 8 2 16 6 26 3 9 8 16 13 21z m273-229l0 329-109 0 0-119c0-8-3-14-8-20-6-5-12-8-20-8l-119 0 0-182z"/>
<glyph unicode="&#57450;" d="M256 512c-141 0-256-115-256-256 0-141 115-256 256-256 141 0 256 115 256 256 0 141-115 256-256 256m0-480c-123 0-224 100-224 224 0 123 101 224 224 224 123 0 224-101 224-224 0-124-101-224-224-224m0 192c-81 0-113-38-160-96l4 0c40 39 95 64 156 64 61 0 116-25 157-64l3 0c-47 58-79 96-160 96m-64 64c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48m128 0c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48"/>
<glyph unicode="&#57451;" d="M256 512c-141 0-256-115-256-256 0-141 115-256 256-256 141 0 256 115 256 256 0 141-115 256-256 256m0-480c-123 0-224 100-224 224 0 123 101 224 224 224 123 0 224-101 224-224 0-124-101-224-224-224m157 192c-41-40-96-64-157-64-61 0-116 24-156 64l-4 0c47-58 79-96 160-96 81 0 113 38 160 96z m-221 64c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48m128 0c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48"/>
<glyph unicode="&#57452;" d="M256 484c-126 0-228-102-228-228 0-126 102-228 228-228 126 0 228 102 228 228 0 126-102 228-228 228z m0-399c-94 0-171 77-171 171 0 94 77 171 171 171 94 0 171-77 171-171 0-94-77-171-171-171z m58 173c-10-9-27-16-31-18-4-2-4-4-4-10l0-8-57 0 0 18c0 14 1 22 16 30l20 10c7 5 16 8 16 15 0 8-7 11-24 11-16 0-33-6-45-14l-15 50c8 4 30 18 72 18 42 0 72-26 72-57 0-26-9-36-20-45z m-64-111c-22 0-37 12-37 32 0 21 15 33 37 33 22 0 37-12 37-33 0-20-15-32-37-32z"/>
<glyph unicode="&#57442;" d="M341 94c0-2-1-4-2-6-2-2-4-3-6-3l-256 0c-2 0-3 1-4 1-1 0-2 1-2 2-1 1-1 1-2 2 0 0 0 1 0 3-1 1-1 2-1 3l0 160-51 0c-5 0-9 2-12 5-3 3-5 7-5 12 0 4 1 8 4 11l85 102c4 4 8 6 13 6 6 0 10-2 13-6l86-102c2-3 4-7 4-11 0-5-2-9-5-12-4-3-8-5-12-5l-51 0 0-102 153 0c3 0 5-1 7-3l42-52c2-1 2-3 2-5z m171 111c0-4-1-8-4-11l-85-103c-4-4-8-6-13-6-6 0-10 2-13 6l-86 103c-2 3-4 7-4 11 0 4 2 8 5 12 4 3 8 5 12 5l51 0 0 102-153 0c-3 0-5 1-7 3l-42 52c-2 1-2 3-2 5 0 2 1 4 2 6 2 2 4 3 6 3l256 0c2 0 3-1 4-1 1 0 2-1 2-2 1-1 1-1 2-2 0-1 0-2 0-3 1-2 1-3 1-3l0-160 51 0c5 0 9-2 12-5 3-4 5-8 5-12z"/>
<glyph unicode="&#57443;" d="M311 155l0-54c0-8-3-15-8-20-5-5-12-8-20-8l-54 0c-8 0-15 3-20 8-5 5-8 12-8 20l0 54c0 8 3 15 8 20 5 5 12 8 20 8l54 0c8 0 15-3 20-8 5-5 8-12 8-20z m0 147l0-55c0-8-3-14-8-20-5-5-12-8-20-8l-54 0c-8 0-15 3-20 8-5 6-8 12-8 20l0 55c0 7 3 14 8 19 5 5 12 8 20 8l54 0c8 0 15-3 20-8 5-5 8-12 8-19z m0 146l0-55c0-7-3-14-8-19-5-6-12-8-20-8l-54 0c-8 0-15 2-20 8-5 5-8 12-8 19l0 55c0 8 3 14 8 19 5 6 12 8 20 8l54 0c8 0 15-2 20-8 5-5 8-11 8-19z"/>
<glyph unicode="&#57444;" d="M341 265c0 2 0 4-2 6l-94 94c-2 1-4 2-6 2-3 0-5-1-6-2l-94-94c-2-2-2-4-2-6 0-3 0-5 2-7 2-1 4-2 6-2l60 0 0-94c0-2 1-4 2-6 2-2 4-2 6-2l52 0c2 0 4 0 6 2 1 2 2 4 2 6l0 94 60 0c2 0 4 1 6 3 1 1 2 3 2 6z m171-77c0-29-10-53-30-73-20-20-44-30-72-30l-291 0c-32 0-61 12-84 35-23 24-35 52-35 85 0 23 6 44 19 64 12 19 29 34 50 44-1 5-1 9-1 11 0 38 14 70 40 97 27 26 59 40 97 40 28 0 53-8 76-23 23-16 40-36 50-62 13 11 28 17 44 17 19 0 35-7 49-20 13-14 20-30 20-49 0-13-4-26-11-37 23-5 42-17 57-36 15-18 22-39 22-63z"/>
<glyph unicode="&#57445;" d="M341 247c0 3 0 5-2 7-2 1-4 2-6 2l-60 0 0 94c0 2-1 4-2 6-2 2-4 2-6 2l-52 0c-2 0-4 0-6-2-1-2-2-4-2-6l0-94-60 0c-2 0-4-1-6-3-2-1-2-3-2-6 0-2 0-4 2-6l94-94c1-1 3-2 6-2 2 0 4 1 6 2l94 94c1 2 2 4 2 6z m171-59c0-29-10-53-30-73-20-20-44-30-72-30l-291 0c-32 0-61 12-84 35-23 24-35 52-35 85 0 23 6 44 19 64 12 19 29 34 50 44-1 5-1 9-1 11 0 38 14 70 40 97 27 26 59 40 97 40 28 0 53-8 76-23 23-16 40-36 50-62 13 11 28 17 44 17 19 0 35-7 49-20 13-14 20-30 20-49 0-13-4-26-11-37 23-5 42-17 57-36 15-18 22-39 22-63z"/>
<glyph unicode="&#57446;" d="M375 256c0-5-2-9-6-13l-155-155c-4-4-8-6-13-6-5 0-9 2-13 6-3 3-5 8-5 13l0 82-128 0c-5 0-9 2-13 5-4 4-5 8-5 13l0 110c0 5 1 9 5 13 4 3 8 5 13 5l128 0 0 82c0 5 2 10 5 13 4 4 8 6 13 6 5 0 9-2 13-6l155-155c4-4 6-8 6-13z m100 101l0-202c0-22-8-42-24-58-16-16-35-24-58-24l-91 0c-3 0-5 1-7 3-2 2-2 4-2 6 0 1-1 3-1 6 0 3 0 6 0 8 0 2 1 4 1 6 0 3 1 5 3 6 1 1 3 2 6 2l91 0c13 0 23 4 32 13 9 9 14 20 14 32l0 202c0 12-5 23-14 32-9 9-19 13-32 13l-89 0c0 0-1 0-3 1-2 0-4 0-4 0 0 1 0 1-2 2-1 1-2 2-2 3 0 1 0 2 0 3 0 1-1 3-1 6 0 3 0 6 0 8 0 2 1 4 1 6 0 3 1 5 3 6 1 1 3 2 6 2l91 0c23 0 42-8 58-24 16-16 24-36 24-58z"/>
<glyph unicode="&#57447;" d="M201 101c0-1 0-3 0-6 1-3 1-6 1-8-1-2-1-4-1-6-1-3-2-5-3-6-2-1-4-2-6-2l-91 0c-23 0-42 8-59 24-16 16-24 36-24 58l0 202c0 22 8 42 24 58 17 16 36 24 59 24l91 0c2 0 5-1 6-3 2-2 3-4 3-6 0-1 0-3 0-6 1-3 1-6 1-8-1-2-1-4-1-6-1-3-2-5-3-6-2-1-4-2-6-2l-91 0c-13 0-24-4-33-13-9-9-13-20-13-32l0-202c0-12 4-23 13-32 9-9 20-13 33-13l89 0c0 0 1 0 3-1 2 0 3 0 3 0 0-1 1-1 3-2 1-1 2-2 2-3-1-1 0-2 0-3z m265 155c0-5-2-9-5-13l-156-155c-3-4-7-6-12-6-5 0-10 2-13 6-4 3-6 8-6 13l0 82-128 0c-5 0-9 2-13 5-3 4-5 8-5 13l0 110c0 5 2 9 5 13 4 3 8 5 13 5l128 0 0 82c0 5 2 10 6 13 3 4 8 6 13 6 5 0 9-2 12-6l156-155c3-4 5-8 5-13z"/>
<glyph unicode="&#57448;" d="M485 402c7 0 14-2 19-8 5-5 8-12 8-19l0-348c0-7-3-14-8-19-5-5-12-8-19-8l-275 0c-7 0-14 3-19 8-5 5-8 12-8 19l0 83-156 0c-7 0-14 2-19 8-5 5-8 12-8 19l0 192c0 8 2 16 6 25 4 9 8 17 13 22l117 117c5 5 13 9 22 13 9 4 17 6 25 6l119 0c7 0 14-3 19-8 5-5 8-12 8-19l0-94c13 7 25 11 37 11z m-156-61l-85-85 85 0z m-183 110l-85-85 85 0z m56-185l91 91 0 118-110 0 0-118c0-8-3-15-8-20-5-5-12-8-20-8l-118 0 0-183 146 0 0 73c0 8 2 16 6 26 3 9 8 16 13 21z m273-229l0 329-109 0 0-119c0-8-3-14-8-20-6-5-12-8-20-8l-119 0 0-182z"/>
<glyph unicode="&#57449;" d="M256 512c-141 0-256-115-256-256 0-141 115-256 256-256 141 0 256 115 256 256 0 141-115 256-256 256m0-480c-123 0-224 100-224 224 0 123 101 224 224 224 123 0 224-101 224-224 0-124-101-224-224-224m0 192c-81 0-113-38-160-96l4 0c40 39 95 64 156 64 61 0 116-25 157-64l3 0c-47 58-79 96-160 96m-64 64c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48m128 0c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48"/>
<glyph unicode="&#57450;" d="M256 512c-141 0-256-115-256-256 0-141 115-256 256-256 141 0 256 115 256 256 0 141-115 256-256 256m0-480c-123 0-224 100-224 224 0 123 101 224 224 224 123 0 224-101 224-224 0-124-101-224-224-224m157 192c-41-40-96-64-157-64-61 0-116 24-156 64l-4 0c47-58 79-96 160-96 81 0 113 38 160 96z m-221 64c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48m128 0c18 0 32 21 32 48 0 26-14 48-32 48-18 0-32-22-32-48 0-27 14-48 32-48"/>
<glyph unicode="&#57451;" d="M256 484c-126 0-228-102-228-228 0-126 102-228 228-228 126 0 228 102 228 228 0 126-102 228-228 228z m0-399c-94 0-171 77-171 171 0 94 77 171 171 171 94 0 171-77 171-171 0-94-77-171-171-171z m58 173c-10-9-27-16-31-18-4-2-4-4-4-10l0-8-57 0 0 18c0 14 1 22 16 30l20 10c7 5 16 8 16 15 0 8-7 11-24 11-16 0-33-6-45-14l-15 50c8 4 30 18 72 18 42 0 72-26 72-57 0-26-9-36-20-45z m-64-111c-22 0-37 12-37 32 0 21 15 33 37 33 22 0 37-12 37-33 0-20-15-32-37-32z"/>
<glyph unicode="&#57452;" d="M411 475l-88-88-65 65 0-194 194 0-65 65 88 88z m-351-221l65-65-88-88 64-64 88 88 65-65 0 194z"/>
<glyph unicode="&#57453;" d="M282 475l65-64-89-89 64-64 89 89 64-65 0 193z m-92-221l-89-89-64 65 0-193 193 0-65 64 89 89z"/>
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Before After
Before After

Binary file not shown.

Binary file not shown.

View file

@ -481,6 +481,10 @@ h2{font-size:18px;padding:0 0 21px 5px;margin:45px 0 0 0;text-transform:uppercas
<div data-icon="&#xe06c;" class="icon"></div>
<input type="text" readonly="readonly" value="&amp;#xe06c;">
</li>
<li>
<div data-icon="&#xe06d;" class="icon"></div>
<input type="text" readonly="readonly" value="&amp;#xe06d;">
</li>
</ul>
<h2>CSS mapping</h2>
<ul class="glyphs css-mapping">
@ -876,10 +880,6 @@ h2{font-size:18px;padding:0 0 21px 5px;margin:45px 0 0 0;text-transform:uppercas
<div class="icon icon-filter"></div>
<input type="text" readonly="readonly" value="filter">
</li>
<li>
<div class="icon icon-resize"></div>
<input type="text" readonly="readonly" value="resize">
</li>
<li>
<div class="icon icon-sync"></div>
<input type="text" readonly="readonly" value="sync">
@ -920,6 +920,14 @@ h2{font-size:18px;padding:0 0 21px 5px;margin:45px 0 0 0;text-transform:uppercas
<div class="icon icon-help"></div>
<input type="text" readonly="readonly" value="help">
</li>
<li>
<div class="icon icon-resize-in"></div>
<input type="text" readonly="readonly" value="resize-in">
</li>
<li>
<div class="icon icon-resize-out"></div>
<input type="text" readonly="readonly" value="resize-out">
</li>
</ul>
</div><script type="text/javascript">
(function() {

View file

@ -332,36 +332,39 @@
.icon-filter:before {
content: "\e061";
}
.icon-resize:before {
.icon-sync:before {
content: "\e062";
}
.icon-sync:before {
.icon-ellipsis-alt:before {
content: "\e063";
}
.icon-ellipsis-alt:before {
.icon-cloud-up:before {
content: "\e064";
}
.icon-cloud-up:before {
.icon-cloud-down:before {
content: "\e065";
}
.icon-cloud-down:before {
.icon-import:before {
content: "\e066";
}
.icon-import:before {
.icon-export:before {
content: "\e067";
}
.icon-export:before {
.icon-copy:before {
content: "\e068";
}
.icon-copy:before {
.icon-angry-smiley:before {
content: "\e069";
}
.icon-angry-smiley:before {
.icon-happy-smiley:before {
content: "\e06a";
}
.icon-happy-smiley:before {
.icon-help:before {
content: "\e06b";
}
.icon-help:before {
.icon-resize-in:before {
content: "\e06c";
}
.icon-resize-out:before {
content: "\e06d";
}

File diff suppressed because one or more lines are too long

7
vendors/openpgp/openpgp-0.6.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long