[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/badges/ -> backpack.js (source)

   1  /**
   2   * Push badges to backpack.
   3   */
   4  function addtobackpack(event, args) {
   5      var badgetable = Y.one('#issued-badge-table');
   6      var errordiv = Y.one('#addtobackpack-error');
   7      var errortext = M.util.get_string('error:backpackproblem', 'badges');
   8      var errorhtml = '<div id="addtobackpack-error" class="box boxaligncenter notifyproblem">' + errortext + '</div>';
   9  
  10      if (typeof OpenBadges !== 'undefined') {
  11          OpenBadges.issue([args.assertion], function(errors, successes) { });
  12      } else {
  13          // Add error div if it doesn't exist yet.
  14          if (!errordiv) {
  15              var badgerror = Y.Node.create(errorhtml);
  16              badgetable.insert(badgerror, 'before');
  17          }
  18      }
  19  }
  20  
  21  /**
  22   * Check if website is externally accessible from the backpack.
  23   */
  24  function check_site_access() {
  25      var add = Y.one('#check_connection');
  26  
  27      var callback = {
  28              method: "GET",
  29              on: {
  30                  success: function(id, o, args) {
  31                              var data = Y.JSON.parse(o.responseText);
  32                              if (data.code == 'http-unreachable') {
  33                                  add.setHTML(data.response);
  34                                  add.removeClass('hide');
  35                              }
  36                          },
  37                  failure: function(o) { }
  38              }
  39          };
  40  
  41      Y.use('io-base', function(Y) {
  42          Y.io('ajax.php', callback);
  43      });
  44  
  45      return false;
  46  }
  47  
  48  /*
  49   * Update the status indicator to show connection progress.
  50   */
  51  function badges_set_connection_progress(status) {
  52      switch (status) {
  53      case 'connecting':
  54          var connecting = M.util.get_string('connecting', 'badges');
  55          var imageurl = M.util.image_url('i/loading_small', 'moodle');
  56          var loading = Y.Node.create(connecting + '&nbsp;<img src="'+imageurl+'" width="16" height="16" alt="'+connecting+'"/>');
  57          Y.one('#connection-status').removeClass('notconnected').addClass('connecting').setHTML(loading);
  58          break;
  59      case 'notconnected':
  60          var notconnected = M.util.get_string('notconnected', 'badges');;
  61          Y.one('#connection-status').removeClass('connecting').addClass('notconnected').setHTML(notconnected);
  62          break;
  63      default:
  64          // Unknown status, do nothing.
  65      }
  66  }
  67  
  68  /*
  69   * Print an error message at the top of the page.
  70   */
  71  function badges_set_error_message(messagekey, param) {
  72      var errortext = M.util.get_string(messagekey, 'badges', param);
  73      Y.one('#connection-error').setHTML(errortext);
  74  }
  75  
  76  /*
  77   * Handle the assertion generated by the Persona dialog.
  78   */
  79  function badges_handle_assertion(assertion) {
  80  
  81      if (!assertion) {
  82          var noassertionstr = M.util.get_string('error:noassertion', 'badges');
  83          badges_set_error_message('error:backpackloginfailed', noassertionstr);
  84          return;
  85      }
  86  
  87      badges_set_connection_progress('connecting');
  88  
  89      Y.io("backpackconnect.php", {
  90          method: "POST",
  91          data: "assertion="+assertion+"&sesskey="+M.cfg.sesskey,
  92          on: {
  93              success: function (id, result) {
  94                  // Reload page to display connected email address.
  95                  window.location.href = "mybackpack.php";
  96              },
  97              failure: function (id, result) {
  98                  try {
  99                      var parsedResponse = Y.JSON.parse(result.response);
 100                  } catch (e) {
 101                      badges_set_connection_progress('notconnected');
 102                      var badjsonstr = M.util.get_string('error:badjson', 'badges');
 103                      badges_set_error_message('error:backpackloginfailed', badjsonstr);
 104                      return;
 105                  }
 106                  badges_set_connection_progress('notconnected');
 107                  badges_set_error_message('error:backpackloginfailed', parsedResponse.reason);
 108                  return;
 109              }
 110          }
 111      });
 112  }
 113  
 114  /**
 115   * Create and bind the persona login button.
 116   */
 117  function badges_init_persona_login_button() {
 118      // Create the login button and add to the page via Javascript.
 119      var imageurl = M.util.image_url('i/persona_sign_in_black', 'moodle');
 120      var imagealt = M.util.get_string('signinwithyouremail', 'badges');
 121      var button = Y.Node.create('<img id="persona_signin" src="'+imageurl+'" width="202" height="25" alt="'+imagealt+'"/>');
 122      Y.one('#persona-container').append(button);
 123  
 124      // Bind a click event to trigger login when clicked.
 125      button.on('click', function() {
 126          Y.one('#connection-error').empty();
 127          navigator.id.get(badges_handle_assertion);
 128      });
 129  }


Generated: Thu Aug 11 10:00:09 2016 Cross-referenced by PHPXref 0.7.1