Replaced jQuery UI login dialog with home-grown login.

- New login hides the entire underlying page when open.
- Fits the current design.
This commit is contained in:
Jonathan Bernard
2011-05-06 17:45:56 -05:00
parent 06556020d4
commit 65dbab9c13
4 changed files with 204 additions and 94 deletions

View File

@ -348,7 +348,7 @@ $(document).ready(function(){
loadInitialData: function() {
// assume we are authenticated
var username = $("#login-name").val(); // hackish
var username = $("#username-input").val(); // hackish
var data = jQuery.parseJSON($.ajax({
url: '/ts_api/app/user_summary/' + username,
async: false}).responseText);
@ -365,32 +365,30 @@ $(document).ready(function(){
});
TS.LoginView = Backbone.View.extend({
el: $("#login-dialog"),
el: $("#login"),
events: {
"keypress #password-input" : "loginOnEnter",
"click #login-button a" : "doLogin"
},
initialize: function() {
_.bindAll(this, 'doLogin', 'authenticate');
_.bindAll(this, 'authenticate', 'doLogin', 'hide', 'loginOnEnter',
'show');
var viewThis = this;
$(this.el).dialog({
autoOpen: false,
height: 400,
width: 400,
modal: true,
buttons: { Login: viewThis.doLogin}
});
},
action: function() {},
authenticate: function(nextAction) {
this.action = nextAction;
$(this.el).dialog("open");
this.show();
},
doLogin: function(){
var viewThis = this;
var name = $("#login-name");
var pwd = $("#login-password");
var name = this.$("#username-input");
var pwd = $("#password-input");
// call the API via AJAX
$.ajax({
@ -405,15 +403,25 @@ $(document).ready(function(){
// we should check that, FIXME
var tips = $(".validate-tips");
tips.text("Incorrect username/password combination.");
tips.addClass("ui-state-error");
tips.slideDown();
},
success: function(data, textStatus, jqXHR) {
$(viewThis.el).dialog("close");
viewThis.action()
viewThis.hide();
viewThis.action();
}
});
},
hide: function() { $(this.el).addClass('hidden'); },
show: function() {
$(this.el).removeClass('hidden');
this.$("#username-input").focus();
},
loginOnEnter: function(e) {
if (e.keyCode == 13) { this.doLogin(); }
}
});