mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-06 07:57: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
|
|
@ -80,24 +80,24 @@ html.no-mobile {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.no-mobile .b-login-content .errorAnimated {
|
.b-login-content .errorAnimated {
|
||||||
animation: login-form-shake 400ms ease-in-out;
|
animation: login-form-shake 400ms ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.no-mobile .b-login-content .errorAnimated .buttonLogin {
|
.b-login-content .errorAnimated .buttonLogin {
|
||||||
color: #b94a48;
|
color: #b94a48;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.no-mobile .b-login-content .afterLoginHide {
|
.b-login-content .afterLoginHide {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.no-mobile .btn-group.dropdown.colored-toggle.open .animate-this-icon-on-open {
|
.btn-group.dropdown.colored-toggle.open .animate-this-icon-on-open {
|
||||||
animation: bounce-me .5s linear;
|
animation: bounce-me .5s linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.no-mobile .b-login-content .loginFormWrapper {
|
.b-login-content .loginFormWrapper {
|
||||||
transition: all 0.3s ease-out;
|
transition: all 0.3s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,59 +1,36 @@
|
||||||
|
|
||||||
|
.rl-view-model {
|
||||||
|
&.RL-Login, &.RL-AdminLogin {
|
||||||
|
position: fixed;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
width: 100%;
|
||||||
|
max-width: 450px;
|
||||||
|
z-index: 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.b-login-content {
|
.b-login-content {
|
||||||
|
|
||||||
height: 100%;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
.loginFormWrapper {
|
.loginFormWrapper {
|
||||||
|
position: relative;
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
|
||||||
text-align: center;
|
|
||||||
perspective: 500px;
|
|
||||||
|
|
||||||
.descWrapper {
|
.descWrapper {
|
||||||
|
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
.desc {
|
.desc {
|
||||||
font-size: 18px;
|
font-size: 30px;
|
||||||
padding: 2px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.alertError {
|
|
||||||
max-width: 450px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrapper-parent {
|
|
||||||
}
|
|
||||||
|
|
||||||
.loginForm {
|
.loginForm {
|
||||||
background-color: #efefef;
|
background-color: #efefef;
|
||||||
text-align: left;
|
|
||||||
color: #333;
|
color: #333;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
float: none;
|
|
||||||
width: 303px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.loginWelcomeForm {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.welcome-on {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.welcome-off {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* .control-label {
|
|
||||||
font-size: 16px;
|
|
||||||
line-height: 30px;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
.controls, .control-group {
|
.controls, .control-group {
|
||||||
margin-bottom: 25px;
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
|
|
@ -62,11 +39,6 @@
|
||||||
padding: 40px 40px 20px 40px;
|
padding: 40px 40px 20px 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#recaptcha_image img {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.controls {
|
.controls {
|
||||||
.inputLoginForm, .inputEmail, .inputLogin, .inputPassword, .inputAdditionalCode {
|
.inputLoginForm, .inputEmail, .inputLogin, .inputPassword, .inputAdditionalCode {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
|
|
@ -80,18 +52,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.languageLabel {
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.signMeLabel .e-checkbox {
|
.signMeLabel .e-checkbox {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.languageLabel {
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-append .add-on {
|
.input-append .add-on {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
|
|
@ -116,6 +80,10 @@
|
||||||
.controls.error .add-on i, .control-group.error .add-on i {
|
.controls.error .add-on i, .control-group.error .add-on i {
|
||||||
color: #b94a48;
|
color: #b94a48;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.e-mobile-switcher {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttonLogin {
|
.buttonLogin {
|
||||||
|
|
@ -123,15 +91,17 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert {
|
.alert {
|
||||||
margin: 0 0 20px 0;
|
position: absolute;
|
||||||
text-align: left;
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flag-selector {
|
.flag-selector {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-buttons {
|
.language-buttons {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -141,6 +111,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 480px) {
|
||||||
|
.b-login-content .loginFormWrapper {
|
||||||
|
.wrapper {
|
||||||
|
padding: 30px 4vw 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@keyframes loginRotation {
|
@keyframes loginRotation {
|
||||||
to {transform: rotate(1turn);}
|
to {transform: rotate(1turn);}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,17 +32,6 @@ option:disabled {
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
body:before {
|
|
||||||
content: "";
|
|
||||||
position: fixed;
|
|
||||||
top: -10px;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 8px;
|
|
||||||
z-index: 100;
|
|
||||||
box-shadow: 0 0 10px rgba(0,0,0,.6);
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
* {
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,4 @@
|
||||||
|
|
||||||
.rl-view-model {
|
|
||||||
&.RL-Login, &.RL-LoginNew, &.RL-AdminLogin {
|
|
||||||
position: relative;
|
|
||||||
height: 100%;
|
|
||||||
z-index: 5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.mfp-container .mfp-figure {
|
.mfp-container .mfp-figure {
|
||||||
min-height: 300px;
|
min-height: 300px;
|
||||||
min-width: 300px;
|
min-width: 300px;
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,8 @@ class LoginUserView extends AbstractViewNext {
|
||||||
this.hideSubmitButton = Settings.app('hideSubmitButton');
|
this.hideSubmitButton = Settings.app('hideSubmitButton');
|
||||||
|
|
||||||
this.addObservables({
|
this.addObservables({
|
||||||
welcome: !!Settings.get('UseLoginWelcomePage'),
|
loadingDesc: Settings.get('LoadingDescription'),
|
||||||
|
|
||||||
email: '',
|
email: '',
|
||||||
password: '',
|
password: '',
|
||||||
signMe: false,
|
signMe: false,
|
||||||
|
|
@ -204,10 +205,6 @@ class LoginUserView extends AbstractViewNext {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
displayMainForm() {
|
|
||||||
this.welcome(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
onShow() {
|
onShow() {
|
||||||
rl.route.off();
|
rl.route.off();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1058,7 +1058,6 @@ class Actions
|
||||||
'LoginDefaultDomain' => $oConfig->Get('login', 'default_domain', ''),
|
'LoginDefaultDomain' => $oConfig->Get('login', 'default_domain', ''),
|
||||||
'DetermineUserLanguage' => (bool)$oConfig->Get('login', 'determine_user_language', true),
|
'DetermineUserLanguage' => (bool)$oConfig->Get('login', 'determine_user_language', true),
|
||||||
'DetermineUserDomain' => (bool)$oConfig->Get('login', 'determine_user_domain', false),
|
'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', '')), '#/')),
|
'StartupUrl' => \trim(\ltrim(\trim($oConfig->Get('labs', 'startup_url', '')), '#/')),
|
||||||
'SieveAllowFileintoInbox' => (bool)$oConfig->Get('labs', 'sieve_allow_fileinto_inbox', false),
|
'SieveAllowFileintoInbox' => (bool)$oConfig->Get('labs', 'sieve_allow_fileinto_inbox', false),
|
||||||
'ContactsIsAllowed' => false,
|
'ContactsIsAllowed' => false,
|
||||||
|
|
|
||||||
|
|
@ -206,8 +206,6 @@ class Application extends \RainLoop\Config\AbstractConfig
|
||||||
'determine_user_language' => array(true, ''),
|
'determine_user_language' => array(true, ''),
|
||||||
'determine_user_domain' => array(false, ''),
|
'determine_user_domain' => array(false, ''),
|
||||||
|
|
||||||
'welcome_page' => array(false, ''),
|
|
||||||
|
|
||||||
'hide_submit_button' => array(true),
|
'hide_submit_button' => array(true),
|
||||||
|
|
||||||
'forgot_password_link_url' => array('', ''),
|
'forgot_password_link_url' => array('', ''),
|
||||||
|
|
|
||||||
|
|
@ -634,7 +634,6 @@ class ServiceActions
|
||||||
$aResult = array();
|
$aResult = array();
|
||||||
|
|
||||||
$sThemeFile = ($bCustomTheme ? APP_INDEX_ROOT_PATH : APP_VERSION_ROOT_PATH).'themes/'.$sRealTheme.'/styles.less';
|
$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';
|
$sThemeValuesFile = APP_VERSION_ROOT_PATH.'app/templates/Themes/values.less';
|
||||||
$sThemeTemplateFile = APP_VERSION_ROOT_PATH.'app/templates/Themes/template.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($sThemeValuesFile);
|
||||||
$aResult[] = \file_get_contents($sThemeFile);
|
$aResult[] = \file_get_contents($sThemeFile);
|
||||||
$aResult[] = \file_get_contents($sThemeTemplateFile);
|
$aResult[] = \file_get_contents($sThemeTemplateFile);
|
||||||
|
|
||||||
if (\is_file($sThemeExtFile))
|
|
||||||
{
|
|
||||||
$aResult[] = \file_get_contents($sThemeExtFile);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$aResult[] = $this->Plugins()->CompileCss($bAdmin);
|
$aResult[] = $this->Plugins()->CompileCss($bAdmin);
|
||||||
|
|
|
||||||
|
|
@ -1,46 +1,44 @@
|
||||||
<div class="b-login-content">
|
<div class="b-login-content">
|
||||||
<div class="loginFormWrapper" data-bind="css: {'afterLoginHide': formHidden}">
|
<div class="loginFormWrapper" data-bind="css: {'afterLoginHide': formHidden}">
|
||||||
<center>
|
<div class="alert alertError" data-bind="visible: '' !== submitError()">
|
||||||
<div class="alert alertError" data-bind="visible: '' !== submitError()">
|
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
<span data-bind="text: submitError"></span>
|
||||||
<span data-bind="text: submitError"></span>
|
</div>
|
||||||
</div>
|
<div class="wrapper-parent">
|
||||||
<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()}">
|
||||||
<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="controls" data-bind="css: {'error': loginError, 'animated': loginErrorAnimation}">
|
<div class="input-append">
|
||||||
<div class="input-append">
|
<input type="text" class="input-block-level inputLogin"
|
||||||
<input type="text" class="input-block-level inputLogin"
|
name="RainLoopAdminLogin" id="RainLoopAdminLogin"
|
||||||
name="RainLoopAdminLogin" id="RainLoopAdminLogin"
|
autofocus=""
|
||||||
autofocus=""
|
autocomplete="username" autocorrect="off" autocapitalize="off" spellcheck="false" data-i18n="[placeholder]LOGIN/LABEL_LOGIN"
|
||||||
autocomplete="username" autocorrect="off" autocapitalize="off" spellcheck="false" data-i18n="[placeholder]LOGIN/LABEL_LOGIN"
|
data-bind="textInput: login, disable: submitRequest" />
|
||||||
data-bind="textInput: login, disable: submitRequest" />
|
<span class="add-on">
|
||||||
<span class="add-on">
|
<i class="icon-user"></i>
|
||||||
<i class="icon-user"></i>
|
</span>
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="controls" data-bind="css: {'error': passwordError, 'animated': passwordErrorAnimation}">
|
</div>
|
||||||
<div class="input-append">
|
<div class="controls" data-bind="css: {'error': passwordError, 'animated': passwordErrorAnimation}">
|
||||||
<input type="password" class="input-block-level inputPassword"
|
<div class="input-append">
|
||||||
placeholder="Password" name="RainLoopAdminPassword" id="RainLoopAdminPassword"
|
<input type="password" class="input-block-level inputPassword"
|
||||||
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false" data-i18n="[placeholder]LOGIN/LABEL_PASSWORD"
|
placeholder="Password" name="RainLoopAdminPassword" id="RainLoopAdminPassword"
|
||||||
data-bind="textInput: password, disable: submitRequest" />
|
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false" data-i18n="[placeholder]LOGIN/LABEL_PASSWORD"
|
||||||
<span class="add-on" tabindex="-1" data-bind="command: submitCommand, tooltip: 'LOGIN/BUTTON_LOGIN'">
|
data-bind="textInput: password, disable: submitRequest" />
|
||||||
<i class="icon-key" data-bind="visible: '' === password()"></i>
|
<span class="add-on" tabindex="-1" data-bind="command: submitCommand, tooltip: 'LOGIN/BUTTON_LOGIN'">
|
||||||
<button type="submit" class="btn-submit-icon-wrp" data-bind="visible: '' !== password()">
|
<i class="icon-key" data-bind="visible: '' === password()"></i>
|
||||||
<i class="icon-right-middle login-submit-icon"></i>
|
<button type="submit" class="btn-submit-icon-wrp" data-bind="visible: '' !== password()">
|
||||||
</button>
|
<i class="icon-right-middle login-submit-icon"></i>
|
||||||
</span>
|
</button>
|
||||||
</div>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="controls controls-submit-wrp" data-bind="hidden: hideSubmitButton">
|
</div>
|
||||||
<button type="submit" class="btn btn-large btn-block buttonLogin" data-bind="command: submitCommand">
|
<div class="controls controls-submit-wrp" data-bind="hidden: hideSubmitButton">
|
||||||
<span data-i18n="LOGIN/BUTTON_LOGIN"></span>
|
<button type="submit" class="btn btn-large btn-block buttonLogin" data-bind="command: submitCommand">
|
||||||
</button>
|
<span data-i18n="LOGIN/BUTTON_LOGIN"></span>
|
||||||
</div>
|
</button>
|
||||||
</form>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</center>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,130 +1,128 @@
|
||||||
<div class="b-login-content">
|
<div class="b-login-content">
|
||||||
<div class="loginFormWrapper" data-bind="css: {'afterLoginHide': formHidden}">
|
<div class="loginFormWrapper" data-bind="css: {'afterLoginHide': formHidden}">
|
||||||
<center class="plugin-mark-Login-BeforeLogo">
|
<div class="descWrapper thm-login-desc plugin-mark-Login-AfterLogoDescription"
|
||||||
<div class="alert alertError" data-bind="hidden: !submitError()" hidden="">
|
data-bind="visible: '' !== loadingDesc">
|
||||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
<span class="desc" data-bind="text: loadingDesc"></span>
|
||||||
<span data-bind="text: submitError"></span>
|
</div>
|
||||||
<div data-bind="visible: '' !== submitErrorAddidional()">
|
<div class="alert alertError" data-bind="hidden: !submitError()" hidden="">
|
||||||
<br />
|
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||||
<span data-bind="text: submitErrorAddidional"></span>
|
<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>
|
<div class="controls" data-bind="css: {'error': passwordError, 'animated': passwordErrorAnimation}">
|
||||||
<div class="wrapper-parent">
|
<div class="input-append">
|
||||||
<div class="wrapper loginWelcomeForm thm-login-text" data-bind="css: {'welcome-on': welcome}">
|
<input type="password" class="i18n input-block-level inputPassword"
|
||||||
<!-- ko template: { name: 'LoginWelcome' } -->
|
name="RainLoopPassword" id="RainLoopPassword"
|
||||||
<!-- /ko -->
|
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>
|
||||||
<form class="wrapper submitting-pane loginForm thm-login thm-login-text" action="#/"
|
<div class="controls"
|
||||||
data-bind="submit: submitForm, css: {'errorAnimated': formError, 'welcome-off': welcome, 'submitting': submitRequest()}">
|
data-bind="visible: additionalCodeVisibility(), css: {'error': additionalCodeError, 'animated': additionalCodeErrorAnimation}">
|
||||||
<div class="controls plugin-mark-Login-TopControlGroup"
|
<div class="input-append">
|
||||||
data-bind="css: {'error': emailError, 'animated': emailErrorAnimation}">
|
<input type="text" class="i18n input-block-level inputAdditionalCode" autocomplete="off"
|
||||||
<div class="input-append">
|
autocorrect="off" autocapitalize="off" spellcheck="false" style="padding-right: 35px;"
|
||||||
<input type="email" class="i18n input-block-level inputEmail"
|
data-bind="textInput: additionalCode, disable: submitRequest"
|
||||||
name="RainLoopEmail" id="RainLoopEmail"
|
data-i18n="[placeholder]LOGIN/LABEL_VERIFICATION_CODE" />
|
||||||
autofocus=""
|
<span class="add-on">
|
||||||
autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false"
|
<i class="icon-key"></i>
|
||||||
data-bind="textInput: email, disable: submitRequest"
|
</span>
|
||||||
data-i18n="[placeholder]LOGIN/LABEL_EMAIL" />
|
|
||||||
<span class="add-on">
|
|
||||||
<i class="icon-mail"></i>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="controls" data-bind="css: {'error': passwordError, 'animated': passwordErrorAnimation}">
|
</div>
|
||||||
<div class="input-append">
|
<div class="controls plugin-mark-Login-BottomControlGroup"
|
||||||
<input type="password" class="i18n input-block-level inputPassword"
|
data-bind="visible: additionalCodeVisibility()">
|
||||||
name="RainLoopPassword" id="RainLoopPassword"
|
<div class="additionalCodeSignMeLabel" data-bind="component: {
|
||||||
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
name: 'CheckboxSimple',
|
||||||
data-bind="textInput: password, disable: submitRequest"
|
params: {
|
||||||
data-i18n="[placeholder]LOGIN/LABEL_PASSWORD" />
|
label: 'LOGIN/LABEL_DONT_ASK_VERIFICATION_CODE',
|
||||||
<span class="add-on" tabindex="-1"
|
value: additionalCodeSignMe
|
||||||
data-bind="command: submitCommand, tooltip: 'LOGIN/BUTTON_SIGN_IN'">
|
}
|
||||||
<i class="icon-key" data-bind="visible: '' === password()"></i>
|
}"></div>
|
||||||
<button type="submit" class="btn-submit-icon-wrp" data-bind="visible: '' !== password()">
|
</div>
|
||||||
<i class="icon-right-middle login-submit-icon"></i>
|
<div class="controls controls-submit-wrp" data-bind="hidden: hideSubmitButton">
|
||||||
</button>
|
<button type="submit" class="btn btn-large btn-block buttonLogin" data-bind="command: submitCommand">
|
||||||
</span>
|
<span class="i18n i18n-animation" data-i18n="LOGIN/BUTTON_SIGN_IN"></span>
|
||||||
</div>
|
</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>
|
||||||
<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: {
|
<div class="signMeLabel" data-bind="visible: signMeVisibility, component: {
|
||||||
name: 'CheckboxSimple',
|
name: 'CheckboxSimple',
|
||||||
params: {
|
params: {
|
||||||
label: 'LOGIN/LABEL_SIGN_ME',
|
label: 'LOGIN/LABEL_SIGN_ME',
|
||||||
labelAnimated: true,
|
labelAnimated: true,
|
||||||
value: signMe
|
value: signMe
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></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>
|
||||||
<div class="controls clearfix"
|
|
||||||
data-bind="visible: '' !== forgotPasswordLinkUrl || '' !== registrationLinkUrl">
|
<div class="registration-link thm-registration pull-right"
|
||||||
<div class="forgot-link thm-forgot pull-left" data-bind="visible: '' !== forgotPasswordLinkUrl"
|
data-bind="visible: '' !== registrationLinkUrl" style="text-align: center">
|
||||||
style="text-align: center">
|
<a href="#" target="_blank" class="g-ui-link"
|
||||||
<a href="#" target="_blank" class="g-ui-link"
|
data-bind="attr: {href: registrationLinkUrl}, css: {'pull-left': '' !== forgotPasswordLinkUrl}"><span
|
||||||
data-bind="attr: {href: forgotPasswordLinkUrl}, css: {'pull-right': '' !== registrationLinkUrl}"><span
|
class="i18n" data-i18n="LOGIN/LABEL_REGISTRATION"></span></a>
|
||||||
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>
|
</div>
|
||||||
</form>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
<div class="e-mobile-switcher thm-mobile-switcher">
|
</div>
|
||||||
<span data-bind="visible: !mobile">
|
<div class="e-mobile-switcher thm-mobile-switcher">
|
||||||
<i class="icon-mobile"></i>
|
<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 href="./?/MobileVersion/" tabindex="-1">
|
||||||
</a>
|
<span class="i18n" data-i18n="MOBILE/BUTTON_MOBILE_VERSION"></span>
|
||||||
</span>
|
</a>
|
||||||
<span data-bind="visible: mobile">
|
</span>
|
||||||
<i class="icon-laptop"></i>
|
<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 href="./?/DesktopVersion/" tabindex="-1">
|
||||||
</a>
|
<span class="i18n" data-i18n="MOBILE/BUTTON_DESKTOP_VERSION"></span>
|
||||||
</span>
|
</a>
|
||||||
</div>
|
</span>
|
||||||
</center>
|
</div>
|
||||||
</div>
|
</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