[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/lib/yui/build/moodle-core-checknet/ -> moodle-core-checknet-debug.js (source)

   1  YUI.add('moodle-core-checknet', function (Y, NAME) {
   2  
   3  // This file is part of Moodle - http://moodle.org/
   4  //
   5  // Moodle is free software: you can redistribute it and/or modify
   6  // it under the terms of the GNU General Public License as published by
   7  // the Free Software Foundation, either version 3 of the License, or
   8  // (at your option) any later version.
   9  //
  10  // Moodle is distributed in the hope that it will be useful,
  11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13  // GNU General Public License for more details.
  14  //
  15  // You should have received a copy of the GNU General Public License
  16  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  17  
  18  /**
  19   * A utility to check whether the connection to the Moodle server is still
  20   * active.
  21   *
  22   * @module     moodle-core-checknet
  23   * @package    core
  24   * @copyright  2014 Andrew Nicols <[email protected]>
  25   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  26   * @main       moodle-core-checknet
  27   */
  28  
  29  /**
  30   * @namespace M.core
  31   * @class checknet
  32   */
  33  
  34  function CheckNet() {
  35      CheckNet.superclass.constructor.apply(this, arguments);
  36  }
  37  
  38  Y.extend(CheckNet, Y.Base, {
  39      /**
  40       * A link to the warning dialogue.
  41       *
  42       * @property _alertDialogue
  43       * @type M.core.dialogue
  44       * @private
  45       * @default null
  46       */
  47      _alertDialogue: null,
  48  
  49      /**
  50       * Setup the checking mechanism.
  51       *
  52       * @method initializer
  53       */
  54      initializer: function() {
  55          // Perform our first check.
  56          this._scheduleCheck();
  57      },
  58  
  59      /**
  60       * Schedule a check of the checknet file.
  61       *
  62       * @method _scheduleCheck
  63       * @chainable
  64       * @private
  65       */
  66      _scheduleCheck: function() {
  67          // Schedule the next check after five seconds.
  68          Y.later(this.get('frequency'), this, this._performCheck);
  69  
  70          return this;
  71      },
  72  
  73      /**
  74       * Perform an immediate check of the checknet file.
  75       *
  76       * @method _performCheck
  77       * @private
  78       */
  79      _performCheck: function() {
  80          Y.io(this.get('uri'), {
  81              data: {
  82                  // Add a query string to prevent older versions of IE from using the cache.
  83                  time: new Date().getTime()
  84              },
  85              timeout: this.get('timeout'),
  86              headers: {
  87                  'Cache-Control': 'no-cache',
  88                  'Expires': '-1'
  89              },
  90              context: this,
  91              on: {
  92                  complete: function(tid, response) {
  93                      // Check for failure conditions.
  94                      // We check for a valid status here because if the user is moving away from the page at the time we
  95                      // run this callback we do not want to display the error.
  96                      if (response && typeof response.status !== "undefined") {
  97                          var code = parseInt(response.status, 10);
  98  
  99                          if (code === 200) {
 100                              // This is a valid attempt - clear any existing warning dialogue and destroy it.
 101                              if (this._alertDialogue) {
 102                                  this._alertDialogue.destroy();
 103                                  this._alertDialogue = null;
 104                              }
 105                          } else if (code >= 300 && code <= 399) {
 106                              // This is a cached status - warn developers, but otherwise ignore.
 107                              Y.log("A cached copy of the checknet status file was returned so it's reliablity cannot be guaranteed",
 108                                  'warn',
 109                                  'moodle-mod_scorm-checknet');
 110                          } else {
 111                              if (this._alertDialogue === null || this._alertDialogue.get('destroyed')) {
 112                                  // Only create a new dialogue if it isn't already displayed.
 113                                  this._alertDialogue = new M.core.alert({
 114                                      message: M.util.get_string.apply(this, this.get('message'))
 115                                  });
 116                              } else {
 117                                  this._alertDialogue.show();
 118                              }
 119                          }
 120                      }
 121  
 122                      // Start the next check.
 123                      this._scheduleCheck();
 124                  }
 125              }
 126          });
 127      }
 128  }, {
 129      NAME: 'checkNet',
 130      ATTRS: {
 131          /**
 132           * The file to check access against.
 133           *
 134           * @attribute uri
 135           * @type String
 136           * @default M.cfg.wwwroot + '/lib/yui/build/moodle-core-checknet/assets/checknet.txt'
 137           */
 138          uri: {
 139              value: M.cfg.wwwroot + '/lib/yui/build/moodle-core-checknet/assets/checknet.txt'
 140          },
 141  
 142          /**
 143           * The timeout (in milliseconds) before the checker should give up and display a warning.
 144           *
 145           * @attribute timeout
 146           * @type Number
 147           * @value 2000
 148           */
 149          timeout: {
 150              value: 2000
 151          },
 152  
 153          /**
 154           * The frequency (in milliseconds) that checks should be run.
 155           * A new check is not begun until the previous check has completed.
 156           *
 157           * @attribute frequency
 158           * @writeOnce
 159           * @type Number
 160           * @value 5000
 161           */
 162          frequency: {
 163              value: 5000
 164          },
 165  
 166          /**
 167           * The message which should be displayed upon a test failure.
 168           *
 169           * The array values are passed directly to M.util.get_string() and arguments should match accordingly.
 170           *
 171           * @attribute message
 172           * @type Array
 173           * @value [
 174           *  'networkdropped',
 175           *  'moodle'
 176           * ]
 177           */
 178          message: {
 179              value: [
 180                  'networkdropped',
 181                  'moodle'
 182              ]
 183          }
 184      }
 185  });
 186  
 187  M.core = M.core || {};
 188  M.core.checknet = M.core.checknet || {};
 189  M.core.checknet.init = function(config) {
 190      return new CheckNet(config);
 191  };
 192  
 193  
 194  }, '@VERSION@', {"requires": ["base-base", "moodle-core-notification-alert", "io-base"]});


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1