[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 // This file is part of Moodle - http://moodle.org/ 2 // 3 // Moodle is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU General Public License as published by 5 // the Free Software Foundation, either version 3 of the License, or 6 // (at your option) any later version. 7 // 8 // Moodle is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU General Public License for more details. 12 // 13 // You should have received a copy of the GNU General Public License 14 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 15 16 /** 17 * A utility to check whether the connection to the Moodle server is still 18 * active. 19 * 20 * @module moodle-core-checknet 21 * @package core 22 * @copyright 2014 Andrew Nicols <andrew@nicols.co.uk> 23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 24 * @main moodle-core-checknet 25 */ 26 27 /** 28 * @namespace M.core 29 * @class checknet 30 */ 31 32 function CheckNet() { 33 CheckNet.superclass.constructor.apply(this, arguments); 34 } 35 36 Y.extend(CheckNet, Y.Base, { 37 /** 38 * A link to the warning dialogue. 39 * 40 * @property _alertDialogue 41 * @type M.core.dialogue 42 * @private 43 * @default null 44 */ 45 _alertDialogue: null, 46 47 /** 48 * Setup the checking mechanism. 49 * 50 * @method initializer 51 */ 52 initializer: function() { 53 // Perform our first check. 54 this._scheduleCheck(); 55 }, 56 57 /** 58 * Schedule a check of the checknet file. 59 * 60 * @method _scheduleCheck 61 * @chainable 62 * @private 63 */ 64 _scheduleCheck: function() { 65 // Schedule the next check after five seconds. 66 Y.later(this.get('frequency'), this, this._performCheck); 67 68 return this; 69 }, 70 71 /** 72 * Perform an immediate check of the checknet file. 73 * 74 * @method _performCheck 75 * @private 76 */ 77 _performCheck: function() { 78 Y.io(this.get('uri'), { 79 data: { 80 // Add the session key. 81 sesskey: M.cfg.sesskey, 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 4000 148 */ 149 timeout: { 150 value: 4000 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 10000 161 */ 162 frequency: { 163 value: 10000 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 };
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |