Current Path : C:/xampp/htdocs/moodle/mod/workshop/amd/src/ |
Current File : C:/xampp/htdocs/moodle/mod/workshop/amd/src/modform.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/>. /** * Additional javascript for the Workshop module form. * * @module mod_workshop/modform * @copyright The Open University 2018 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ define(['jquery'], function($) { var submissionTypes = { text: { available: null, required: null, requiredHidden: null }, file: { available: null, required: null, requiredHidden: null } }; /** * Determine whether one of the submission types has been marked as not available. * * If it has been marked not available, clear and disable its required checkbox. Then determine if the other submission * type is available, and if it is, check and disable its required checkbox. * * @param {Object} checkUnavailable * @param {Object} checkAvailable */ function checkAvailability(checkUnavailable, checkAvailable) { if (!checkUnavailable.available.prop('checked')) { checkUnavailable.required.prop('disabled', true); checkUnavailable.required.prop('checked', false); if (checkAvailable.available.prop('checked')) { checkAvailable.required.prop('disabled', true); checkAvailable.required.prop('checked', true); // Also set the checkbox's hidden field to 1 so a 'required' value is submitted for the submission type. checkAvailable.requiredHidden.val(1); } } } /** * Enable the submission type's required checkbox and uncheck it. * * @param {Object} submissionType */ function enableRequired(submissionType) { submissionType.required.prop('disabled', false); submissionType.required.prop('checked', false); submissionType.requiredHidden.val(0); } /** * Check which submission types have been marked as available, and disable required checkboxes as necessary. */ function submissionTypeChanged() { checkAvailability(submissionTypes.file, submissionTypes.text); checkAvailability(submissionTypes.text, submissionTypes.file); if (submissionTypes.text.available.prop('checked') && submissionTypes.file.available.prop('checked')) { enableRequired(submissionTypes.text); enableRequired(submissionTypes.file); } } return /** @alias module:mod_workshop/modform */ { /** * Find all the required fields, set up event listeners, and set the initial state of required checkboxes. */ init: function() { submissionTypes.text.available = $('#id_submissiontypetextavailable'); submissionTypes.text.required = $('#id_submissiontypetextrequired'); submissionTypes.text.requiredHidden = $('input[name="submissiontypetextrequired"][type="hidden"]'); submissionTypes.file.available = $('#id_submissiontypefileavailable'); submissionTypes.file.required = $('#id_submissiontypefilerequired'); submissionTypes.file.requiredHidden = $('input[name="submissiontypefilerequired"][type="hidden"]'); submissionTypes.text.available.on('change', submissionTypeChanged); submissionTypes.file.available.on('change', submissionTypeChanged); submissionTypeChanged(); } }; });