mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-09 17:37:02 +03:00
Cleanup Login and removed the ancient obsolete <center> with small redesign
Also placed the loading description above the login form
This commit is contained in:
parent
2047525ce6
commit
4adc672ccd
12 changed files with 192 additions and 271 deletions
|
|
@ -1058,7 +1058,6 @@ class Actions
|
|||
'LoginDefaultDomain' => $oConfig->Get('login', 'default_domain', ''),
|
||||
'DetermineUserLanguage' => (bool)$oConfig->Get('login', 'determine_user_language', true),
|
||||
'DetermineUserDomain' => (bool)$oConfig->Get('login', 'determine_user_domain', false),
|
||||
'UseLoginWelcomePage' => (bool)$oConfig->Get('login', 'welcome_page', false),
|
||||
'StartupUrl' => \trim(\ltrim(\trim($oConfig->Get('labs', 'startup_url', '')), '#/')),
|
||||
'SieveAllowFileintoInbox' => (bool)$oConfig->Get('labs', 'sieve_allow_fileinto_inbox', false),
|
||||
'ContactsIsAllowed' => false,
|
||||
|
|
|
|||
|
|
@ -206,8 +206,6 @@ class Application extends \RainLoop\Config\AbstractConfig
|
|||
'determine_user_language' => array(true, ''),
|
||||
'determine_user_domain' => array(false, ''),
|
||||
|
||||
'welcome_page' => array(false, ''),
|
||||
|
||||
'hide_submit_button' => array(true),
|
||||
|
||||
'forgot_password_link_url' => array('', ''),
|
||||
|
|
|
|||
|
|
@ -634,7 +634,6 @@ class ServiceActions
|
|||
$aResult = array();
|
||||
|
||||
$sThemeFile = ($bCustomTheme ? APP_INDEX_ROOT_PATH : APP_VERSION_ROOT_PATH).'themes/'.$sRealTheme.'/styles.less';
|
||||
$sThemeExtFile = ($bCustomTheme ? APP_INDEX_ROOT_PATH : APP_VERSION_ROOT_PATH).'themes/'.$sRealTheme.'/ext.less';
|
||||
|
||||
$sThemeValuesFile = APP_VERSION_ROOT_PATH.'app/templates/Themes/values.less';
|
||||
$sThemeTemplateFile = APP_VERSION_ROOT_PATH.'app/templates/Themes/template.less';
|
||||
|
|
@ -648,11 +647,6 @@ class ServiceActions
|
|||
$aResult[] = \file_get_contents($sThemeValuesFile);
|
||||
$aResult[] = \file_get_contents($sThemeFile);
|
||||
$aResult[] = \file_get_contents($sThemeTemplateFile);
|
||||
|
||||
if (\is_file($sThemeExtFile))
|
||||
{
|
||||
$aResult[] = \file_get_contents($sThemeExtFile);
|
||||
}
|
||||
}
|
||||
|
||||
$aResult[] = $this->Plugins()->CompileCss($bAdmin);
|
||||
|
|
|
|||
|
|
@ -1,46 +1,44 @@
|
|||
<div class="b-login-content">
|
||||
<div class="loginFormWrapper" data-bind="css: {'afterLoginHide': formHidden}">
|
||||
<center>
|
||||
<div class="alert alertError" data-bind="visible: '' !== submitError()">
|
||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
</div>
|
||||
<div class="wrapper-parent">
|
||||
<form class="wrapper submitting-pane loginForm thm-login thm-login-text" action="#/" data-bind="submit: submitForm, css: {'errorAnimated': formError, 'submitting': submitRequest()}">
|
||||
<div class="controls" data-bind="css: {'error': loginError, 'animated': loginErrorAnimation}">
|
||||
<div class="input-append">
|
||||
<input type="text" class="input-block-level inputLogin"
|
||||
name="RainLoopAdminLogin" id="RainLoopAdminLogin"
|
||||
autofocus=""
|
||||
autocomplete="username" autocorrect="off" autocapitalize="off" spellcheck="false" data-i18n="[placeholder]LOGIN/LABEL_LOGIN"
|
||||
data-bind="textInput: login, disable: submitRequest" />
|
||||
<span class="add-on">
|
||||
<i class="icon-user"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="alert alertError" data-bind="visible: '' !== submitError()">
|
||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
</div>
|
||||
<div class="wrapper-parent">
|
||||
<form class="wrapper submitting-pane loginForm thm-login thm-login-text" action="#/" data-bind="submit: submitForm, css: {'errorAnimated': formError, 'submitting': submitRequest()}">
|
||||
<div class="controls" data-bind="css: {'error': loginError, 'animated': loginErrorAnimation}">
|
||||
<div class="input-append">
|
||||
<input type="text" class="input-block-level inputLogin"
|
||||
name="RainLoopAdminLogin" id="RainLoopAdminLogin"
|
||||
autofocus=""
|
||||
autocomplete="username" autocorrect="off" autocapitalize="off" spellcheck="false" data-i18n="[placeholder]LOGIN/LABEL_LOGIN"
|
||||
data-bind="textInput: login, disable: submitRequest" />
|
||||
<span class="add-on">
|
||||
<i class="icon-user"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="controls" data-bind="css: {'error': passwordError, 'animated': passwordErrorAnimation}">
|
||||
<div class="input-append">
|
||||
<input type="password" class="input-block-level inputPassword"
|
||||
placeholder="Password" name="RainLoopAdminPassword" id="RainLoopAdminPassword"
|
||||
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false" data-i18n="[placeholder]LOGIN/LABEL_PASSWORD"
|
||||
data-bind="textInput: password, disable: submitRequest" />
|
||||
<span class="add-on" tabindex="-1" data-bind="command: submitCommand, tooltip: 'LOGIN/BUTTON_LOGIN'">
|
||||
<i class="icon-key" data-bind="visible: '' === password()"></i>
|
||||
<button type="submit" class="btn-submit-icon-wrp" data-bind="visible: '' !== password()">
|
||||
<i class="icon-right-middle login-submit-icon"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="controls" data-bind="css: {'error': passwordError, 'animated': passwordErrorAnimation}">
|
||||
<div class="input-append">
|
||||
<input type="password" class="input-block-level inputPassword"
|
||||
placeholder="Password" name="RainLoopAdminPassword" id="RainLoopAdminPassword"
|
||||
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false" data-i18n="[placeholder]LOGIN/LABEL_PASSWORD"
|
||||
data-bind="textInput: password, disable: submitRequest" />
|
||||
<span class="add-on" tabindex="-1" data-bind="command: submitCommand, tooltip: 'LOGIN/BUTTON_LOGIN'">
|
||||
<i class="icon-key" data-bind="visible: '' === password()"></i>
|
||||
<button type="submit" class="btn-submit-icon-wrp" data-bind="visible: '' !== password()">
|
||||
<i class="icon-right-middle login-submit-icon"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
<div class="controls controls-submit-wrp" data-bind="hidden: hideSubmitButton">
|
||||
<button type="submit" class="btn btn-large btn-block buttonLogin" data-bind="command: submitCommand">
|
||||
<span data-i18n="LOGIN/BUTTON_LOGIN"></span>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</center>
|
||||
</div>
|
||||
<div class="controls controls-submit-wrp" data-bind="hidden: hideSubmitButton">
|
||||
<button type="submit" class="btn btn-large btn-block buttonLogin" data-bind="command: submitCommand">
|
||||
<span data-i18n="LOGIN/BUTTON_LOGIN"></span>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,130 +1,128 @@
|
|||
<div class="b-login-content">
|
||||
<div class="loginFormWrapper" data-bind="css: {'afterLoginHide': formHidden}">
|
||||
<center class="plugin-mark-Login-BeforeLogo">
|
||||
<div class="alert alertError" data-bind="hidden: !submitError()" hidden="">
|
||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
<div data-bind="visible: '' !== submitErrorAddidional()">
|
||||
<br />
|
||||
<span data-bind="text: submitErrorAddidional"></span>
|
||||
<div class="descWrapper thm-login-desc plugin-mark-Login-AfterLogoDescription"
|
||||
data-bind="visible: '' !== loadingDesc">
|
||||
<span class="desc" data-bind="text: loadingDesc"></span>
|
||||
</div>
|
||||
<div class="alert alertError" data-bind="hidden: !submitError()" hidden="">
|
||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
<div data-bind="visible: '' !== submitErrorAddidional()">
|
||||
<br />
|
||||
<span data-bind="text: submitErrorAddidional"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper-parent">
|
||||
<form class="wrapper submitting-pane loginForm thm-login thm-login-text" action="#/"
|
||||
data-bind="submit: submitForm, css: {'errorAnimated': formError, 'submitting': submitRequest()}">
|
||||
<div class="controls plugin-mark-Login-TopControlGroup"
|
||||
data-bind="css: {'error': emailError, 'animated': emailErrorAnimation}">
|
||||
<div class="input-append">
|
||||
<input type="email" class="i18n input-block-level inputEmail"
|
||||
name="RainLoopEmail" id="RainLoopEmail"
|
||||
autofocus=""
|
||||
autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: email, disable: submitRequest"
|
||||
data-i18n="[placeholder]LOGIN/LABEL_EMAIL" />
|
||||
<span class="add-on">
|
||||
<i class="icon-mail"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper-parent">
|
||||
<div class="wrapper loginWelcomeForm thm-login-text" data-bind="css: {'welcome-on': welcome}">
|
||||
<!-- ko template: { name: 'LoginWelcome' } -->
|
||||
<!-- /ko -->
|
||||
<div class="controls" data-bind="css: {'error': passwordError, 'animated': passwordErrorAnimation}">
|
||||
<div class="input-append">
|
||||
<input type="password" class="i18n input-block-level inputPassword"
|
||||
name="RainLoopPassword" id="RainLoopPassword"
|
||||
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: password, disable: submitRequest"
|
||||
data-i18n="[placeholder]LOGIN/LABEL_PASSWORD" />
|
||||
<span class="add-on" tabindex="-1"
|
||||
data-bind="command: submitCommand, tooltip: 'LOGIN/BUTTON_SIGN_IN'">
|
||||
<i class="icon-key" data-bind="visible: '' === password()"></i>
|
||||
<button type="submit" class="btn-submit-icon-wrp" data-bind="visible: '' !== password()">
|
||||
<i class="icon-right-middle login-submit-icon"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<form class="wrapper submitting-pane loginForm thm-login thm-login-text" action="#/"
|
||||
data-bind="submit: submitForm, css: {'errorAnimated': formError, 'welcome-off': welcome, 'submitting': submitRequest()}">
|
||||
<div class="controls plugin-mark-Login-TopControlGroup"
|
||||
data-bind="css: {'error': emailError, 'animated': emailErrorAnimation}">
|
||||
<div class="input-append">
|
||||
<input type="email" class="i18n input-block-level inputEmail"
|
||||
name="RainLoopEmail" id="RainLoopEmail"
|
||||
autofocus=""
|
||||
autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: email, disable: submitRequest"
|
||||
data-i18n="[placeholder]LOGIN/LABEL_EMAIL" />
|
||||
<span class="add-on">
|
||||
<i class="icon-mail"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="controls"
|
||||
data-bind="visible: additionalCodeVisibility(), css: {'error': additionalCodeError, 'animated': additionalCodeErrorAnimation}">
|
||||
<div class="input-append">
|
||||
<input type="text" class="i18n input-block-level inputAdditionalCode" autocomplete="off"
|
||||
autocorrect="off" autocapitalize="off" spellcheck="false" style="padding-right: 35px;"
|
||||
data-bind="textInput: additionalCode, disable: submitRequest"
|
||||
data-i18n="[placeholder]LOGIN/LABEL_VERIFICATION_CODE" />
|
||||
<span class="add-on">
|
||||
<i class="icon-key"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="controls" data-bind="css: {'error': passwordError, 'animated': passwordErrorAnimation}">
|
||||
<div class="input-append">
|
||||
<input type="password" class="i18n input-block-level inputPassword"
|
||||
name="RainLoopPassword" id="RainLoopPassword"
|
||||
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: password, disable: submitRequest"
|
||||
data-i18n="[placeholder]LOGIN/LABEL_PASSWORD" />
|
||||
<span class="add-on" tabindex="-1"
|
||||
data-bind="command: submitCommand, tooltip: 'LOGIN/BUTTON_SIGN_IN'">
|
||||
<i class="icon-key" data-bind="visible: '' === password()"></i>
|
||||
<button type="submit" class="btn-submit-icon-wrp" data-bind="visible: '' !== password()">
|
||||
<i class="icon-right-middle login-submit-icon"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="controls plugin-mark-Login-BottomControlGroup"
|
||||
data-bind="visible: additionalCodeVisibility()">
|
||||
<div class="additionalCodeSignMeLabel" data-bind="component: {
|
||||
name: 'CheckboxSimple',
|
||||
params: {
|
||||
label: 'LOGIN/LABEL_DONT_ASK_VERIFICATION_CODE',
|
||||
value: additionalCodeSignMe
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
<div class="controls controls-submit-wrp" data-bind="hidden: hideSubmitButton">
|
||||
<button type="submit" class="btn btn-large btn-block buttonLogin" data-bind="command: submitCommand">
|
||||
<span class="i18n i18n-animation" data-i18n="LOGIN/BUTTON_SIGN_IN"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="controls clearfix" style="margin-bottom: 10px">
|
||||
<div class="pull-right language-buttons">
|
||||
<a href="#" tabindex="-1" class="language-button"
|
||||
data-bind="visible: allowLanguagesOnLogin, click: selectLanguage, tooltip: 'POPUPS_LANGUAGES/TITLE_LANGUAGES'">
|
||||
<i data-bind="css: langRequest() ? 'icon-spinner animated' : 'icon-world'"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="controls"
|
||||
data-bind="visible: additionalCodeVisibility(), css: {'error': additionalCodeError, 'animated': additionalCodeErrorAnimation}">
|
||||
<div class="input-append">
|
||||
<input type="text" class="i18n input-block-level inputAdditionalCode" autocomplete="off"
|
||||
autocorrect="off" autocapitalize="off" spellcheck="false" style="padding-right: 35px;"
|
||||
data-bind="textInput: additionalCode, disable: submitRequest"
|
||||
data-i18n="[placeholder]LOGIN/LABEL_VERIFICATION_CODE" />
|
||||
<span class="add-on">
|
||||
<i class="icon-key"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="controls plugin-mark-Login-BottomControlGroup"
|
||||
data-bind="visible: additionalCodeVisibility()">
|
||||
<div class="additionalCodeSignMeLabel" data-bind="component: {
|
||||
name: 'CheckboxSimple',
|
||||
params: {
|
||||
label: 'LOGIN/LABEL_DONT_ASK_VERIFICATION_CODE',
|
||||
value: additionalCodeSignMe
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
<div class="controls controls-submit-wrp" data-bind="hidden: hideSubmitButton">
|
||||
<button type="submit" class="btn btn-large btn-block buttonLogin" data-bind="command: submitCommand">
|
||||
<span class="i18n i18n-animation" data-i18n="LOGIN/BUTTON_SIGN_IN"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="controls clearfix" style="margin-bottom: 10px">
|
||||
<div class="pull-right social-buttons">
|
||||
<a href="#" tabindex="-1" class="language-button"
|
||||
data-bind="visible: allowLanguagesOnLogin, click: selectLanguage, tooltip: 'POPUPS_LANGUAGES/TITLE_LANGUAGES'">
|
||||
<i data-bind="css: langRequest() ? 'icon-spinner animated' : 'icon-world'"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="signMeLabel" data-bind="visible: signMeVisibility, component: {
|
||||
name: 'CheckboxSimple',
|
||||
params: {
|
||||
label: 'LOGIN/LABEL_SIGN_ME',
|
||||
labelAnimated: true,
|
||||
value: signMe
|
||||
}
|
||||
}"></div>
|
||||
<div class="signMeLabel" data-bind="visible: signMeVisibility, component: {
|
||||
name: 'CheckboxSimple',
|
||||
params: {
|
||||
label: 'LOGIN/LABEL_SIGN_ME',
|
||||
labelAnimated: true,
|
||||
value: signMe
|
||||
}
|
||||
}"></div>
|
||||
|
||||
</div>
|
||||
<div class="controls clearfix"
|
||||
data-bind="visible: '' !== forgotPasswordLinkUrl || '' !== registrationLinkUrl">
|
||||
<div class="forgot-link thm-forgot pull-left" data-bind="visible: '' !== forgotPasswordLinkUrl"
|
||||
style="text-align: center">
|
||||
<a href="#" target="_blank" class="g-ui-link"
|
||||
data-bind="attr: {href: forgotPasswordLinkUrl}, css: {'pull-right': '' !== registrationLinkUrl}"><span
|
||||
class="i18n" data-i18n="LOGIN/LABEL_FORGOT_PASSWORD"></span></a>
|
||||
</div>
|
||||
<div class="controls clearfix"
|
||||
data-bind="visible: '' !== forgotPasswordLinkUrl || '' !== registrationLinkUrl">
|
||||
<div class="forgot-link thm-forgot pull-left" data-bind="visible: '' !== forgotPasswordLinkUrl"
|
||||
style="text-align: center">
|
||||
<a href="#" target="_blank" class="g-ui-link"
|
||||
data-bind="attr: {href: forgotPasswordLinkUrl}, css: {'pull-right': '' !== registrationLinkUrl}"><span
|
||||
class="i18n" data-i18n="LOGIN/LABEL_FORGOT_PASSWORD"></span></a>
|
||||
</div>
|
||||
|
||||
<div class="registration-link thm-registration pull-right"
|
||||
data-bind="visible: '' !== registrationLinkUrl" style="text-align: center">
|
||||
<a href="#" target="_blank" class="g-ui-link"
|
||||
data-bind="attr: {href: registrationLinkUrl}, css: {'pull-left': '' !== forgotPasswordLinkUrl}"><span
|
||||
class="i18n" data-i18n="LOGIN/LABEL_REGISTRATION"></span></a>
|
||||
</div>
|
||||
|
||||
<div class="registration-link thm-registration pull-right"
|
||||
data-bind="visible: '' !== registrationLinkUrl" style="text-align: center">
|
||||
<a href="#" target="_blank" class="g-ui-link"
|
||||
data-bind="attr: {href: registrationLinkUrl}, css: {'pull-left': '' !== forgotPasswordLinkUrl}"><span
|
||||
class="i18n" data-i18n="LOGIN/LABEL_REGISTRATION"></span></a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="e-mobile-switcher thm-mobile-switcher">
|
||||
<span data-bind="visible: !mobile">
|
||||
<i class="icon-mobile"></i>
|
||||
|
||||
<a href="./?/MobileVersion/" tabindex="-1">
|
||||
<span class="i18n" data-i18n="MOBILE/BUTTON_MOBILE_VERSION"></span>
|
||||
</a>
|
||||
</span>
|
||||
<span data-bind="visible: mobile">
|
||||
<i class="icon-laptop"></i>
|
||||
|
||||
<a href="./?/DesktopVersion/" tabindex="-1">
|
||||
<span class="i18n" data-i18n="MOBILE/BUTTON_DESKTOP_VERSION"></span>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</center>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="e-mobile-switcher thm-mobile-switcher">
|
||||
<span data-bind="visible: !mobile">
|
||||
<i class="icon-mobile"></i>
|
||||
|
||||
<a href="./?/MobileVersion/" tabindex="-1">
|
||||
<span class="i18n" data-i18n="MOBILE/BUTTON_MOBILE_VERSION"></span>
|
||||
</a>
|
||||
</span>
|
||||
<span data-bind="visible: mobile">
|
||||
<i class="icon-laptop"></i>
|
||||
|
||||
<a href="./?/DesktopVersion/" tabindex="-1">
|
||||
<span class="i18n" data-i18n="MOBILE/BUTTON_DESKTOP_VERSION"></span>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
<div class="b-login--welcome-content">
|
||||
<i class="icon-mail iconsize50" style="cursor: pointer" data-bind="click: displayMainForm"></i>
|
||||
<br /><br />
|
||||
</div>
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
|
||||
.b-login-content .loginFormWrapper {
|
||||
width: 90%;
|
||||
.wrapper {
|
||||
padding: 30px 30px 10px 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.thm-login {
|
||||
|
||||
width: 100% !important;
|
||||
width: calc(~'100% - 60px') !important;
|
||||
max-width: 303px !important;
|
||||
|
||||
box-shadow: 0 1px 4px #ccc !important;
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,.2) !important;
|
||||
box-shadow: 0 0 0 1px rgba(0,0,0,.04),0 1px 5px rgba(0,0,0,.1) !important;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue