[ 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 * User competency workflow. 18 * 19 * @module tool_lp/user_competency_workflow 20 * @package tool_lp 21 * @copyright 2015 Frédéric Massart - FMCorz.net 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 define(['jquery', 25 'core/templates', 26 'core/ajax', 27 'core/notification', 28 'core/str', 29 'tool_lp/menubar', 30 'tool_lp/event_base'], 31 function($, Templates, Ajax, Notification, Str, Menubar, EventBase) { 32 33 /** 34 * UserCompetencyWorkflow class. 35 * 36 * @param {String} selector The node containing the buttons to switch mode. 37 */ 38 var UserCompetencyWorkflow = function() { 39 EventBase.prototype.constructor.apply(this, []); 40 }; 41 UserCompetencyWorkflow.prototype = Object.create(EventBase.prototype); 42 43 /** @type {String} The selector to find the user competency data. */ 44 UserCompetencyWorkflow.prototype._nodeSelector = '[data-node="user-competency"]'; 45 46 /** 47 * Cancel a review request and refresh the view. 48 * 49 * @param {Object} data The user competency data. 50 * @method _cancelReviewRequest 51 */ 52 UserCompetencyWorkflow.prototype._cancelReviewRequest = function(data) { 53 var call = { 54 methodname: 'core_competency_user_competency_cancel_review_request', 55 args: { 56 userid: data.userid, 57 competencyid: data.competencyid 58 } 59 }; 60 61 Ajax.call([call])[0].then(function() { 62 this._trigger('review-request-cancelled', data); 63 this._trigger('status-changed', data); 64 }.bind(this), function() { 65 this._trigger('error-occured', data); 66 }.bind(this)); 67 }; 68 69 /** 70 * Cancel a review request an refresh the view. 71 * 72 * @param {Object} data The user competency data. 73 * @method cancelReviewRequest 74 */ 75 UserCompetencyWorkflow.prototype.cancelReviewRequest = function(data) { 76 this._cancelReviewRequest(data); 77 }; 78 79 /** 80 * Cancel a review request handler. 81 * 82 * @param {Event} e The event. 83 * @method _cancelReviewRequestHandler 84 */ 85 UserCompetencyWorkflow.prototype._cancelReviewRequestHandler = function(e) { 86 e.preventDefault(); 87 var data = this._findUserCompetencyData($(e.target)); 88 this.cancelReviewRequest(data); 89 }; 90 91 /** 92 * Request a review and refresh the view. 93 * 94 * @param {Object} data The user competency data. 95 * @method _requestReview 96 */ 97 UserCompetencyWorkflow.prototype._requestReview = function(data) { 98 var call = { 99 methodname: 'core_competency_user_competency_request_review', 100 args: { 101 userid: data.userid, 102 competencyid: data.competencyid 103 } 104 }; 105 106 Ajax.call([call])[0].then(function() { 107 this._trigger('review-requested', data); 108 this._trigger('status-changed', data); 109 }.bind(this), function() { 110 this._trigger('error-occured', data); 111 }.bind(this)); 112 }; 113 114 /** 115 * Request a review. 116 * 117 * @param {Object} data The user competency data. 118 * @method requestReview 119 */ 120 UserCompetencyWorkflow.prototype.requestReview = function(data) { 121 this._requestReview(data); 122 }; 123 124 /** 125 * Request a review handler. 126 * 127 * @param {Event} e The event. 128 * @method _requestReviewHandler 129 */ 130 UserCompetencyWorkflow.prototype._requestReviewHandler = function(e) { 131 e.preventDefault(); 132 var data = this._findUserCompetencyData($(e.target)); 133 this.requestReview(data); 134 }; 135 136 /** 137 * Start a review and refresh the view. 138 * 139 * @param {Object} data The user competency data. 140 * @method _startReview 141 */ 142 UserCompetencyWorkflow.prototype._startReview = function(data) { 143 var call = { 144 methodname: 'core_competency_user_competency_start_review', 145 args: { 146 userid: data.userid, 147 competencyid: data.competencyid 148 } 149 }; 150 151 Ajax.call([call])[0].then(function() { 152 this._trigger('review-started', data); 153 this._trigger('status-changed', data); 154 }.bind(this), function() { 155 this._trigger('error-occured', data); 156 }.bind(this)); 157 }; 158 159 /** 160 * Start a review. 161 * 162 * @param {Object} data The user competency data. 163 * @method startReview 164 */ 165 UserCompetencyWorkflow.prototype.startReview = function(data) { 166 this._startReview(data); 167 }; 168 169 /** 170 * Start a review handler. 171 * 172 * @param {Event} e The event. 173 * @method _startReviewHandler 174 */ 175 UserCompetencyWorkflow.prototype._startReviewHandler = function(e) { 176 e.preventDefault(); 177 var data = this._findUserCompetencyData($(e.target)); 178 this.startReview(data); 179 }; 180 181 /** 182 * Stop a review and refresh the view. 183 * 184 * @param {Object} data The user competency data. 185 * @method _stopReview 186 */ 187 UserCompetencyWorkflow.prototype._stopReview = function(data) { 188 var call = { 189 methodname: 'core_competency_user_competency_stop_review', 190 args: { 191 userid: data.userid, 192 competencyid: data.competencyid 193 } 194 }; 195 196 Ajax.call([call])[0].then(function() { 197 this._trigger('review-stopped', data); 198 this._trigger('status-changed', data); 199 }.bind(this), function() { 200 this._trigger('error-occured', data); 201 }.bind(this)); 202 }; 203 204 /** 205 * Stop a review. 206 * 207 * @param {Object} data The user competency data. 208 * @method stopReview 209 */ 210 UserCompetencyWorkflow.prototype.stopReview = function(data) { 211 this._stopReview(data); 212 }; 213 214 /** 215 * Stop a review handler. 216 * 217 * @param {Event} e The event. 218 * @method _stopReviewHandler 219 */ 220 UserCompetencyWorkflow.prototype._stopReviewHandler = function(e) { 221 e.preventDefault(); 222 var data = this._findUserCompetencyData($(e.target)); 223 this.stopReview(data); 224 }; 225 226 /** 227 * Enhance a menu bar. 228 * 229 * @param {String} selector Menubar selector. 230 */ 231 UserCompetencyWorkflow.prototype.enhanceMenubar = function(selector) { 232 Menubar.enhance(selector, { 233 '[data-action="request-review"]': this._requestReviewHandler.bind(this), 234 '[data-action="cancel-review-request"]': this._cancelReviewRequestHandler.bind(this), 235 }); 236 }; 237 238 /** 239 * Find the user competency data from a node. 240 * 241 * @param {Node} node The node to search from. 242 * @return {Object} User competency data. 243 */ 244 UserCompetencyWorkflow.prototype._findUserCompetencyData = function(node) { 245 var parent = node.parents(this._nodeSelector), 246 data; 247 248 if (parent.length != 1) { 249 throw new Error('The evidence node was not located.'); 250 } 251 252 data = parent.data(); 253 if (typeof data === 'undefined' || typeof data.userid === 'undefined' || typeof data.competencyid === 'undefined') { 254 throw new Error('User competency data could not be found.'); 255 } 256 257 return data; 258 }; 259 260 /** 261 * Enhance a menu bar. 262 * 263 * @param {String} selector Menubar selector. 264 */ 265 UserCompetencyWorkflow.prototype.enhanceMenubar = function(selector) { 266 Menubar.enhance(selector, { 267 '[data-action="request-review"]': this._requestReviewHandler.bind(this), 268 '[data-action="cancel-review-request"]': this._cancelReviewRequestHandler.bind(this), 269 '[data-action="start-review"]': this._startReviewHandler.bind(this), 270 '[data-action="stop-review"]': this._stopReviewHandler.bind(this), 271 }); 272 }; 273 274 /** 275 * Register the events in the region. 276 * 277 * @param {String} selector The base selector to search nodes in and attach events. 278 */ 279 UserCompetencyWorkflow.prototype.registerEvents = function(selector) { 280 var wrapper = $(selector); 281 282 wrapper.find('[data-action="request-review"]').click(this._requestReviewHandler.bind(this)); 283 wrapper.find('[data-action="cancel-review-request"]').click(this._cancelReviewRequestHandler.bind(this)); 284 wrapper.find('[data-action="start-review"]').click(this._startReviewHandler.bind(this)); 285 wrapper.find('[data-action="stop-review"]').click(this._stopReviewHandler.bind(this)); 286 }; 287 288 return /** @alias module:tool_lp/user_competency_actions */ UserCompetencyWorkflow; 289 });
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 |