Merge branch 'improve/passwordManagers' into maintenance

This commit is contained in:
Gina Häußge 2017-01-12 18:59:39 +01:00
commit 9e3d2bed65
4 changed files with 53 additions and 11 deletions

File diff suppressed because one or more lines are too long

View file

@ -106,12 +106,6 @@ $(function() {
self.login();
};
self.onKeyUp = function(data, event) {
if (event && event.keyCode == 13) {
$('#loginForm').submit();
}
}
self.onAllBound = function(allViewModels) {
self.allViewModels = allViewModels;
};
@ -125,6 +119,28 @@ $(function() {
self.elementUsernameInput = $("#login_user");
self.elementPasswordInput = $("#login_pass");
self.elementLoginButton = $("#login_button");
var toggle = $("li.dropdown#navbar_login");
var button = $("a", toggle);
button.on("click", function(e) {
$(this).parent().toggleClass("open");
});
$("body").on("click", function(e) {
var anyFormLinkOrButton = $("#login_dropdown_loggedout a, #login_dropdown_loggedin a, #login_dropdown_loggedout button, #login_dropdown_loggedin button");
var dropdown = $("li.dropdown#navbar_login");
var anyLastpassButton = $("#__lpform_login_user, #__lpform_login_pass");
var isLinkOrButton = anyFormLinkOrButton.is(e.target) || anyFormLinkOrButton.has(e.target).length !== 0;
var isDropdown = dropdown.is(e.target) || dropdown.has(e.target).length === 0;
var isLastpass = anyLastpassButton.is(e.target) || anyLastpassButton.has(e.target).length === 0;
if (isLinkOrButton || !(isDropdown || isLastpass)) {
toggle.removeClass("open");
}
});
if (self.elementUsernameInput && self.elementUsernameInput.length
&& self.elementLoginButton && self.elementLoginButton.length) {
self.elementLoginButton.blur(function() {

View file

@ -1139,3 +1139,29 @@ input[type=number] {
width: 100%;
}
}
// Navbar loginForm
// Make the overlay always visible so that extensions are able to auto-submit (i.e. password-managers)
#navbar_login:not(.open) #login_dropdown_loggedout {
display: block;
z-index: -1;
height: 0;
width: 0;
padding: 0 !important;
overflow: hidden;
border: 0;
box-shadow: none;
left: -9999px;
&.hide {
display: none;
}
}
#loginForm {
margin: 0;
button {
margin-top: 20px;
}
}

View file

@ -1,13 +1,13 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<a href="#" class="dropdown-toggle">
<i class="icon-user"></i> <span data-bind="text: loginState.userMenuText">{{ _('Login') }}</span>
<b class="caret"></b>
</a>
<div id="login_dropdown_loggedout" style="padding: 15px" class="dropdown-menu" data-bind="css: {hide: loginState.loggedIn(), 'dropdown-menu': !loginState.loggedIn()}">
<form id="loginForm" data-bind="event: {'submit': loginState.prepareLogin }" autocomplete="on">
<form id="loginForm" data-bind="event: {'submit': loginState.prepareLogin }">
<label for="login_user">{{ _('Username') }}</label>
<input type="text" id="login_user" name="username" data-bind="valueWithInit: loginState.loginUser, event: {'keyup': loginState.onKeyUp }" placeholder="{{ _('Username') }}" autocapitalize="none" autocomplete="on">
<input type="text" id="login_user" name="username" data-bind="valueWithInit: loginState.loginUser" placeholder="{{ _('Username') }}" autocapitalize="none">
<label for="login_pass">{{ _('Password') }}</label>
<input type="password" id="login_pass" name="password" data-bind="valueWithInit: loginState.loginPass, event: {'keyup': loginState.onKeyUp }" placeholder="{{ _('Password') }}" autocomplete="on">
<input type="password" id="login_pass" name="password" data-bind="valueWithInit: loginState.loginPass" placeholder="{{ _('Password') }}">
<label class="checkbox">
<input type="checkbox" id="login_remember" data-bind="checked: loginState.loginRemember"> {{ _('Remember me') }}
</label>