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/>./*** Modal for deleting an override with the option to recalculate penalties.** @module `mod_assign/override_delete_modal* @copyright 2025 Catalyst IT Australia Pty Ltd* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/import * as CustomEvents from 'core/custom_interaction_events';import Config from 'core/config';import Modal from 'core/modal';const SELECTORS = {DELETE_BUTTONS: '.delete-override',RECACULATION_CHECKBOX: '#recalculatepenalties',};/*** Custom Modal*/export default class OverrideDeleteModal extends Modal {static TYPE = "mod_assign/override_delete_modal";static TEMPLATE = "mod_assign/override_delete_modal";/*** Configure the modal.** @param {Object} modalConfig*/configure(modalConfig) {// Add question modals are always large.modalConfig.large = true;// Always show on creation.modalConfig.show = true;modalConfig.removeOnClose = true;// Apply standard configuration.super.configure(modalConfig);this.setOverrideId(modalConfig.overrideId);this.setSessionKey(modalConfig.sessionKey);}/*** Constructor.* Set required data to null.** @param {HTMLElement} root*/constructor(root) {super(root);// Recalculate penalties checkbox.this.recalculationCheckbox = this.getModal().find(SELECTORS.RECACULATION_CHECKBOX);// Data.this.setOverrideId(null);this.setSessionKey(null);}/*** Set the override id.** @param {number} id The override id.*/setOverrideId(id) {this.overrideId = id;}/*** Get the override id.** @returns {*}*/getOverrideId() {return this.overrideId;}/*** Set the session key.** @param {string} key*/setSessionKey(key) {this.sessionKey = key;}/*** Get the session key.** @returns {*}*/getSessionKey() {return this.sessionKey;}/*** Register events.**/registerEventListeners() {// Apply parent event listeners.super.registerEventListeners(this);// Register to close on cancel.this.registerCloseOnCancel();// Register the delete action.this.getModal().on(CustomEvents.events.activate, this.getActionSelector('delete'), () => {this.deleteOverride();});}/*** Delete a override.**/deleteOverride() {// Check if the recalculation checkbox is checked.const recalculate = this.recalculationCheckbox.prop('checked');// Redirect to the delete URL.const targetUrl = new URL(`${Config.wwwroot}/mod/assign/overridedelete.php`);targetUrl.searchParams.append('id', this.getOverrideId());targetUrl.searchParams.append('sesskey', this.getSessionKey());targetUrl.searchParams.append('confirm', 1);if (recalculate) {targetUrl.searchParams.append('recalculate', 1);}window.location.href = targetUrl.href;}}