[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
1 /** 2 * Resource and activity toolbox class. 3 * 4 * This class is responsible for managing AJAX interactions with activities and resources 5 * when viewing a course in editing mode. 6 * 7 * @module moodle-course-toolboxes 8 * @namespace M.course.toolboxes 9 */ 10 11 // The CSS classes we use. 12 var CSS = { 13 ACTIVITYINSTANCE : 'activityinstance', 14 AVAILABILITYINFODIV : 'div.availabilityinfo', 15 CONTENTWITHOUTLINK : 'contentwithoutlink', 16 CONDITIONALHIDDEN : 'conditionalhidden', 17 DIMCLASS : 'dimmed', 18 DIMMEDTEXT : 'dimmed_text', 19 EDITINSTRUCTIONS : 'editinstructions', 20 EDITINGMAXMARK: 'editor_displayed', 21 HIDE : 'hide', 22 JOIN: 'page_join', 23 MODINDENTCOUNT : 'mod-indent-', 24 MODINDENTHUGE : 'mod-indent-huge', 25 MODULEIDPREFIX : 'slot-', 26 PAGE: 'page', 27 SECTIONHIDDENCLASS : 'hidden', 28 SECTIONIDPREFIX : 'section-', 29 SLOT : 'slot', 30 SHOW : 'editing_show', 31 TITLEEDITOR : 'titleeditor' 32 }, 33 // The CSS selectors we use. 34 SELECTOR = { 35 ACTIONAREA: '.actions', 36 ACTIONLINKTEXT : '.actionlinktext', 37 ACTIVITYACTION : 'a.cm-edit-action[data-action], a.editing_maxmark', 38 ACTIVITYFORM : 'span.instancemaxmarkcontainer form', 39 ACTIVITYICON : 'img.activityicon', 40 ACTIVITYINSTANCE : '.' + CSS.ACTIVITYINSTANCE, 41 ACTIVITYLINK: '.' + CSS.ACTIVITYINSTANCE + ' > a', 42 ACTIVITYLI : 'li.activity', 43 ACTIVITYMAXMARK : 'input[name=maxmark]', 44 COMMANDSPAN : '.commands', 45 CONTENTAFTERLINK : 'div.contentafterlink', 46 CONTENTWITHOUTLINK : 'div.contentwithoutlink', 47 EDITMAXMARK: 'a.editing_maxmark', 48 HIDE : 'a.editing_hide', 49 HIGHLIGHT : 'a.editing_highlight', 50 INSTANCENAME : 'span.instancename', 51 INSTANCEMAXMARK : 'span.instancemaxmark', 52 MODINDENTDIV : '.mod-indent', 53 MODINDENTOUTER : '.mod-indent-outer', 54 NUMQUESTIONS : '.numberofquestions', 55 PAGECONTENT : 'div#page-content', 56 PAGELI : 'li.page', 57 SECTIONUL : 'ul.section', 58 SHOW : 'a.' + CSS.SHOW, 59 SHOWHIDE : 'a.editing_showhide', 60 SLOTLI : 'li.slot', 61 SUMMARKS : '.mod_quiz_summarks' 62 }, 63 BODY = Y.one(document.body); 64 65 // Setup the basic namespace. 66 M.mod_quiz = M.mod_quiz || {}; 67 68 /** 69 * The toolbox class is a generic class which should never be directly 70 * instantiated. Please extend it instead. 71 * 72 * @class toolbox 73 * @constructor 74 * @protected 75 * @extends Base 76 */ 77 var TOOLBOX = function() { 78 TOOLBOX.superclass.constructor.apply(this, arguments); 79 }; 80 81 Y.extend(TOOLBOX, Y.Base, { 82 /** 83 * Send a request using the REST API 84 * 85 * @method send_request 86 * @param {Object} data The data to submit with the AJAX request 87 * @param {Node} [statusspinner] A statusspinner which may contain a section loader 88 * @param {Function} success_callback The callback to use on success 89 * @param {Object} [optionalconfig] Any additional configuration to submit 90 * @chainable 91 */ 92 send_request: function(data, statusspinner, success_callback, optionalconfig) { 93 // Default data structure 94 if (!data) { 95 data = {}; 96 } 97 // Handle any variables which we must pass back through to 98 var pageparams = this.get('config').pageparams, 99 varname; 100 for (varname in pageparams) { 101 data[varname] = pageparams[varname]; 102 } 103 104 data.sesskey = M.cfg.sesskey; 105 data.courseid = this.get('courseid'); 106 data.quizid = this.get('quizid'); 107 108 var uri = M.cfg.wwwroot + this.get('ajaxurl'); 109 110 // Define the configuration to send with the request 111 var responsetext = []; 112 var config = { 113 method: 'POST', 114 data: data, 115 on: { 116 success: function(tid, response) { 117 try { 118 responsetext = Y.JSON.parse(response.responseText); 119 if (responsetext.error) { 120 new M.core.ajaxException(responsetext); 121 } 122 } catch (e) {} 123 124 // Run the callback if we have one. 125 if (responsetext.hasOwnProperty('newsummarks')) { 126 Y.one(SELECTOR.SUMMARKS).setHTML(responsetext.newsummarks); 127 } 128 if (responsetext.hasOwnProperty('newnumquestions')) { 129 Y.one(SELECTOR.NUMQUESTIONS).setHTML(M.util.get_string('numquestionsx', 'quiz', responsetext.newnumquestions)); 130 } 131 if (success_callback) { 132 Y.bind(success_callback, this, responsetext)(); 133 } 134 135 if (statusspinner) { 136 window.setTimeout(function() { 137 statusspinner.hide(); 138 }, 400); 139 } 140 }, 141 failure: function(tid, response) { 142 if (statusspinner) { 143 statusspinner.hide(); 144 } 145 new M.core.ajaxException(response); 146 } 147 }, 148 context: this 149 }; 150 151 // Apply optional config 152 if (optionalconfig) { 153 for (varname in optionalconfig) { 154 config[varname] = optionalconfig[varname]; 155 } 156 } 157 158 if (statusspinner) { 159 statusspinner.show(); 160 } 161 162 // Send the request 163 Y.io(uri, config); 164 return this; 165 } 166 }, 167 { 168 NAME: 'mod_quiz-toolbox', 169 ATTRS: { 170 /** 171 * The ID of the Moodle Course being edited. 172 * 173 * @attribute courseid 174 * @default 0 175 * @type Number 176 */ 177 courseid: { 178 'value': 0 179 }, 180 181 /** 182 * The Moodle course format. 183 * 184 * @attribute format 185 * @default 'topics' 186 * @type String 187 */ 188 quizid: { 189 'value': 0 190 }, 191 /** 192 * The URL to use when submitting requests. 193 * @attribute ajaxurl 194 * @default null 195 * @type String 196 */ 197 ajaxurl: { 198 'value': null 199 }, 200 /** 201 * Any additional configuration passed when creating the instance. 202 * 203 * @attribute config 204 * @default {} 205 * @type Object 206 */ 207 config: { 208 'value': {} 209 } 210 } 211 } 212 );
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |