AutorÃa | Ultima modificación | Ver Log |
// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Display Competency in dialogue box.** @module tool_lp/competencydialogue* @copyright 2015 Issam Taboubi <issam.taboubi@umontreal.ca>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/define(['jquery','core/notification','core/ajax','core/templates','core/str','tool_lp/dialogue'],function($, notification, ajax, templates, str, Dialogue) {/*** The main instance we'll be working with.** @type {Competencydialogue}*/var instance;/*** Constructor for CompetencyDialogue.*/var Competencydialogue = function() {// Intentionally left empty.};/*** Log the competency viewed event.** @param {Number} competencyId The competency ID.* @method triggerCompetencyViewedEvent*/Competencydialogue.prototype.triggerCompetencyViewedEvent = function(competencyId) {ajax.call([{methodname: 'core_competency_competency_viewed',args: {id: competencyId}}]);};/*** Display a dialogue box by competencyid.** @param {Number} competencyid The competency ID.* @param {Object} options The options.* @method showDialogue*/Competencydialogue.prototype.showDialogue = function(competencyid, options) {var datapromise = this.getCompetencyDataPromise(competencyid, options);var localthis = this;datapromise.done(function(data) {// Inner Html in the dialogue content.templates.render('tool_lp/competency_summary', data).done(function(html) {// Log competency viewed event.localthis.triggerCompetencyViewedEvent(competencyid);// Show the dialogue.new Dialogue(data.competency.shortname,html);}).fail(notification.exception);}).fail(notification.exception);};/*** Display a dialogue box from data.** @param {Object} dataSource data to be used to display dialogue box* @method showDialogueFromData*/Competencydialogue.prototype.showDialogueFromData = function(dataSource) {var localthis = this;// Inner Html in the dialogue content.templates.render('tool_lp/competency_summary', dataSource).done(function(html) {// Log competency viewed event.localthis.triggerCompetencyViewedEvent(dataSource.id);// Show the dialogue.new Dialogue(dataSource.shortname,html,localthis.enhanceDialogue);}).fail(notification.exception);};/*** The action on the click event.** @param {Event} e event click* @method clickEventHandler*/Competencydialogue.prototype.clickEventHandler = function(e) {var compdialogue = e.data.compdialogue;var currentTarget = $(e.currentTarget);var competencyid = currentTarget.data('id');var includerelated = !(currentTarget.data('excluderelated'));var includecourses = currentTarget.data('includecourses');// Show the dialogue box.compdialogue.showDialogue(competencyid, {includerelated: includerelated,includecourses: includecourses});e.preventDefault();};/*** Get a promise on data competency.** @param {Number} competencyid* @param {Object} options* @return {Promise} return promise on data request* @method getCompetencyDataPromise*/Competencydialogue.prototype.getCompetencyDataPromise = function(competencyid, options) {var requests = ajax.call([{methodname: 'tool_lp_data_for_competency_summary',args: {competencyid: competencyid,includerelated: options.includerelated || false,includecourses: options.includecourses || false}}]);return requests[0].then(function(context) {return context;}).fail(notification.exception);};return /** @alias module:tool_lp/competencydialogue */ {/*** Initialise the competency dialogue module.** Only the first call matters.*/init: function() {if (typeof instance !== 'undefined') {return;}// Instantiate the one instance and delegate event on the body.instance = new Competencydialogue();$('body').delegate('[data-action="competency-dialogue"]', 'click', {compdialogue: instance},instance.clickEventHandler.bind(instance));}};});