pytask/static/js/login.js
author Madhusudan.C.S <madhusudancs@gmail.com>
Sat, 05 Feb 2011 03:24:52 +0530
changeset 559 96e8e65a3738
parent 457 1082b5ee29c5
permissions -rw-r--r--
Display Pynts on task/textbook description page. Also make some style fixes.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
450
7984094bf6c4 Add the necessary Javascript to implement in place login functionality.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     1
var login_user = function (login_url) {
457
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
     2
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
     3
  /* Function that handles the post login request changes. */
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
     4
  var process_login_response = function (raw_data) {
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
     5
    /* We expect an exception when login fails. Read comment with catch. */
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
     6
    try {
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
     7
      data = $.parseJSON(raw_data);
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
     8
      if (data.authentication == "success") {
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
     9
        /* Login succeeded */
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    10
        if (data.markup) {
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    11
          /* Replace the HTML with the user actions since
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    12
           * the request came from a URL other than logout page */
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    13
          $("div#useraction").replaceWith(data.markup);
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    14
        } else if (data.redirect) {
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    15
          /* Reload the page to the pytask home page since
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    16
           * the login request came from logout page. This
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    17
           * is done because the logout text says you have
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    18
           * been logged out, which will be awkward after
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    19
           * user re-logs in. */
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    20
          window.location.href=data.redirect;
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    21
        }
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    22
      }
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    23
    } catch (e) {
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    24
      /* Login failed so the login view returned to the same view as
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    25
       * the existing page from which the call was made and thus we
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    26
       * get html. So let us display the error. */
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    27
      $('div #loginform #error').show();
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    28
    }
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    29
  }
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    30
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    31
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    32
  /* Attach a handler which does the form post upon the submit
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    33
   * button is pressed on the login form. */
450
7984094bf6c4 Add the necessary Javascript to implement in place login functionality.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    34
  $(document).ready(function () {
7984094bf6c4 Add the necessary Javascript to implement in place login functionality.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    35
    $('#form_login').submit(function() {
7984094bf6c4 Add the necessary Javascript to implement in place login functionality.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    36
      $.post(
7984094bf6c4 Add the necessary Javascript to implement in place login functionality.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    37
        login_url,
7984094bf6c4 Add the necessary Javascript to implement in place login functionality.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    38
        $("#form_login").serialize(),
457
1082b5ee29c5 Handle all cases of login.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 450
diff changeset
    39
        process_login_response);
450
7984094bf6c4 Add the necessary Javascript to implement in place login functionality.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    40
      return false;
7984094bf6c4 Add the necessary Javascript to implement in place login functionality.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    41
    });
7984094bf6c4 Add the necessary Javascript to implement in place login functionality.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    42
  });
7984094bf6c4 Add the necessary Javascript to implement in place login functionality.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    43
}