diff -r da6f5be33087 -r 1082b5ee29c5 pytask/static/js/login.js --- a/pytask/static/js/login.js Tue Jan 18 14:34:26 2011 +0530 +++ b/pytask/static/js/login.js Tue Jan 18 14:37:06 2011 +0530 @@ -1,17 +1,42 @@ var login_user = function (login_url) { + + /* Function that handles the post login request changes. */ + var process_login_response = function (raw_data) { + /* We expect an exception when login fails. Read comment with catch. */ + try { + data = $.parseJSON(raw_data); + if (data.authentication == "success") { + /* Login succeeded */ + if (data.markup) { + /* Replace the HTML with the user actions since + * the request came from a URL other than logout page */ + $("div#useraction").replaceWith(data.markup); + } else if (data.redirect) { + /* Reload the page to the pytask home page since + * the login request came from logout page. This + * is done because the logout text says you have + * been logged out, which will be awkward after + * user re-logs in. */ + window.location.href=data.redirect; + } + } + } catch (e) { + /* Login failed so the login view returned to the same view as + * the existing page from which the call was made and thus we + * get html. So let us display the error. */ + $('div #loginform #error').show(); + } + } + + + /* Attach a handler which does the form post upon the submit + * button is pressed on the login form. */ $(document).ready(function () { $('#form_login').submit(function() { $.post( login_url, $("#form_login").serialize(), - function (raw_data) { - data = $.parseJSON(raw_data); - alert(data); - if (data.authentication == "success") { - $("div#useraction").replaceWith(data.markup); - alert(data.markup); - } - }); + process_login_response); return false; }); });