Merge branch 'dev/supportPasswordManagers' into maintenance

This commit is contained in:
Gina Häußge 2016-12-13 14:43:45 +01:00
commit 0560009204
4 changed files with 34 additions and 15 deletions

View file

@ -1297,6 +1297,7 @@ def collect_core_assets(enable_gcodeviewer=True, preferred_stylesheet="css"):
'js/app/bindings/slimscrolledforeach.js',
'js/app/bindings/toggle.js',
'js/app/bindings/togglecontent.js',
'js/app/bindings/valuewithinit.js',
'js/app/viewmodels/appearance.js',
'js/app/viewmodels/connection.js',
'js/app/viewmodels/control.js',

View file

@ -0,0 +1,11 @@
ko.bindingHandlers.valueWithInit = {
init: function(element, valueAccessor, allBindingsAccessor, context) {
var observable = valueAccessor();
var value = element.value;
observable(value);
ko.bindingHandlers.value.init(element, valueAccessor, allBindingsAccessor, context);
},
update: ko.bindingHandlers.value.update
};

View file

@ -76,6 +76,10 @@ $(function() {
self.loginUser("");
self.loginPass("");
self.loginRemember(false);
if (history && history.replaceState) {
history.replaceState({success: true}, document.title, window.location.pathname);
}
})
.fail(function() {
new PNotify({title: gettext("Login failed"), text: gettext("User unknown or wrong password"), type: "error"});
@ -95,17 +99,18 @@ $(function() {
});
};
self.onLoginUserKeyup = function(data, event) {
if (event.keyCode == 13) {
self.elementPasswordInput.focus();
self.prepareLogin = function(data, event) {
if(event && event.preventDefault) {
event.preventDefault();
}
self.login();
};
self.onLoginPassKeyup = function(data, event) {
if (event.keyCode == 13) {
self.login();
self.onKeyUp = function(data, event) {
if (event && event.keyCode == 13) {
$('#loginForm').submit();
}
};
}
self.onAllBound = function(allViewModels) {
self.allViewModels = allViewModels;

View file

@ -3,14 +3,16 @@
<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()}">
<label for="login_user">{{ _('Username') }}</label>
<input type="text" id="login_user" data-bind="value: loginState.loginUser, event: {'keyup': loginState.onLoginUserKeyup}" placeholder="{{ _('Username') }}" autocapitalize="none">
<label for="login_pass">{{ _('Password') }}</label>
<input type="password" id="login_pass" data-bind="value: loginState.loginPass, event: {'keyup': loginState.onLoginPassKeyup}" placeholder="{{ _('Password') }}">
<label class="checkbox">
<input type="checkbox" id="login_remember" data-bind="checked: loginState.loginRemember"> {{ _('Remember me') }}
</label>
<button class="btn btn-block btn-primary" id="login_button" data-bind="click: function() { loginState.login(); }">{{ _('Login') }}</button>
<form id="loginForm" data-bind="event: {'submit': loginState.prepareLogin }" autocomplete="on">
<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">
<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">
<label class="checkbox">
<input type="checkbox" id="login_remember" data-bind="checked: loginState.loginRemember"> {{ _('Remember me') }}
</label>
<button type="submit" class="btn btn-block btn-primary" id="login_button">{{ _('Login') }}</button>
</form>
</div>
<ul id="login_dropdown_loggedin" class="hide" data-bind="css: {hide: !loginState.loggedIn(), 'dropdown-menu': loginState.loggedIn()}">
<li><a href="#" id="usersettings_button" data-bind="click: function() { usersettings.show(); }">{{ _('User Settings') }}</a></li>