[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/mod/chat/gui_header_js/ -> module.js (source)

   1  /*
   2   * NOTE: the /mod/chat/gui_header_js/ is not a real plugin,
   3   * ideally this code should be in /mod/chat/module.js
   4   */
   5  
   6  /**
   7   * @namespace M.mod_chat_header
   8   */
   9  M.mod_chat_header = M.mod_chat_ajax || {};
  10  
  11  /**
  12   * Init header based Chat UI - frame input
  13   *
  14   * @namespace M.mod_chat_header
  15   * @function
  16   * @param {YUI} Y
  17   * @param {Boolean} forcerefreshasap refresh users frame asap
  18   */
  19  M.mod_chat_header.init_insert = function(Y, forcerefreshasap) {
  20      if (forcerefreshasap) {
  21          parent.jsupdate.location.href = parent.jsupdate.document.anchors[0].href;
  22      }
  23      parent.input.enableForm();
  24  };
  25  
  26  /**
  27   * Init header based Chat UI - frame input
  28   *
  29   * @namespace M.mod_chat_header
  30   * @function
  31   * @param {YUI} Y
  32   */
  33  M.mod_chat_header.init_input = function(Y) {
  34  
  35      var inputframe = {
  36  
  37          waitflag : false,       // True when a submission is in progress
  38  
  39          /**
  40           * Initialises the input frame
  41           *
  42           * @function
  43           */
  44          init : function() {
  45              Y.one('#inputForm').on('submit', this.submit, this);
  46          },
  47          /**
  48           * Enables the input form
  49           * @this {M.mod_chat.js}
  50           */
  51          enable_form : function() {
  52              var el = Y.one('#input_chat_message');
  53              this.waitflag = false;
  54              el.set('className', '');
  55              el.focus();
  56          },
  57          /**
  58           * Submits the entered message
  59           * @param {Event} e
  60           */
  61          submit : function(e) {
  62              e.halt();
  63              if (this.waitflag) {
  64                  return false;
  65              }
  66              this.waitflag = true;
  67              var inputchatmessage = Y.one('#input_chat_message');
  68              Y.one('#insert_chat_message').set('value', inputchatmessage.get('value'));
  69              inputchatmessage.set('value', '');
  70              inputchatmessage.addClass('wait');
  71              Y.one('#sendForm').submit();
  72              this.enable_form();
  73              return false;
  74          }
  75  
  76      };
  77  
  78      inputframe.init();
  79  };
  80  
  81  /**
  82   * Init header based Chat UI - frame users
  83   *
  84   * @namespace M.mod_chat_header
  85   * @function
  86   * @param {YUI} Y
  87   * @param {Array} users
  88   */
  89  M.mod_chat_header.init_users = function(Y, users) {
  90  
  91      var usersframe = {
  92  
  93          timer : null,           // Stores the timer object
  94          timeout : 1,            // The seconds between updates
  95          users : [],             // An array of users
  96  
  97          /**
  98           * Initialises the frame with list of users
  99           *
 100           * @function
 101           * @this
 102           * @param {Array|null} users
 103           */
 104          init : function(users) {
 105              this.users = users;
 106              this.start();
 107              Y.one(document.body).on('unload', this.stop, this);
 108          },
 109          /**
 110           * Starts the update timeout
 111           *
 112           * @function
 113           * @this
 114           */
 115          start : function() {
 116              this.timer = setTimeout(function(self) {
 117                  self.update();
 118              }, this.timeout * 1000, this);
 119          },
 120          /**
 121           * Stops the update timeout
 122           * @function
 123           * @this
 124           */
 125          stop : function() {
 126              clearTimeout(this.timer);
 127          },
 128          /**
 129           * Updates the user information
 130           *
 131           * @function
 132           * @this
 133           */
 134          update : function() {
 135              for (var i in this.users) {
 136                  var el  = Y.one('#uidle' + this.users[i]);
 137                  if (el) {
 138                      var parts = el.get('innerHTML').split(':');
 139                      var time = this.timeout + (parseInt(parts[0], 10) * 60) + parseInt(parts[1], 10);
 140                      var min = Math.floor(time / 60);
 141                      var sec = time % 60;
 142                      el.set('innerHTML', ((min < 10) ? "0" : "") + min + ":" + ((sec < 10) ? "0" : "") + sec);
 143                  }
 144              }
 145              this.start();
 146          }
 147      };
 148  
 149      usersframe.init(users);
 150  };


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