Current Path : C:/xampp/htdocs/moodle/mod/quiz/amd/src/ |
Current File : C:/xampp/htdocs/moodle/mod/quiz/amd/src/preflightcheck.js |
// 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/>. /** * This class manages the confirmation pop-up (also called the pre-flight check) * that is sometimes shown when a use clicks the start attempt button. * * This is also responsible for opening the pop-up window, if the quiz requires to be in one. * * @module mod_quiz/preflightcheck * @class preflightcheck * @package mod_quiz * @copyright 2016 The Open University * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @since 3.1 */ define(['jquery', 'core/yui'], function($, Y) { /** * @alias module:mod_quiz/preflightcheck */ var t = { confirmDialogue: null, /** * Initialise the start attempt button. * * @param {String} startButton the id of the start attempt button that we will be enhancing. * @param {String} confirmationTitle the title of the dialogue. * @param {String} confirmationForm selector for the confirmation form to show in the dialogue. * @param {String} popupoptions If not null, the quiz should be launced in a pop-up. */ init: function(startButton, confirmationTitle, confirmationForm, popupoptions) { var finalStartButton = startButton; Y.use('moodle-core-notification', function() { if (Y.one(confirmationForm)) { t.confirmDialogue = new M.core.dialogue({ headerContent: confirmationTitle, bodyContent: Y.one(confirmationForm), draggable: true, visible: false, center: true, modal: true, width: null, extraClasses: ['mod_quiz_preflight_popup'] }); Y.one(startButton).on('click', t.displayDialogue); Y.one('#id_cancel').on('click', t.hideDialogue); finalStartButton = t.confirmDialogue.get('boundingBox').one('[name="submitbutton"]'); } if (popupoptions) { Y.one(finalStartButton).on('click', t.launchQuizPopup, t, popupoptions); } }); }, /** * Display the dialogue. * @param {Y.EventFacade} e the event being responded to, if any. */ displayDialogue: function(e) { if (e) { e.halt(); } t.confirmDialogue.show(); }, /** * Hide the dialogue. * @param {Y.EventFacade} e the event being responded to, if any. */ hideDialogue: function(e) { if (e) { e.halt(); } t.confirmDialogue.hide(e); }, /** * Event handler for the quiz start attempt button. * @param {Event} e the event being responded to * @param {Object} popupoptions */ launchQuizPopup: function(e, popupoptions) { e.halt(); Y.use('moodle-core-formchangechecker', 'io-form', function() { M.core_formchangechecker.reset_form_dirty_state(); var form = e.target.ancestor('form'); window.openpopup(e, { url: form.get('action') + '?' + Y.IO.stringify(form).replace(/\bcancel=/, 'x='), windowname: 'quizpopup', options: popupoptions, fullscreen: true, }); }); } }; return t; });