%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/vacivi36/ava/course/format/amd/build/local/courseeditor/
Upload File :
Create Path :
Current File : /home/vacivi36/ava/course/format/amd/build/local/courseeditor/mutations.min.js.map

{"version":3,"file":"mutations.min.js","sources":["../../../src/local/courseeditor/mutations.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.\n\nimport ajax from 'core/ajax';\n\n/**\n * Default mutation manager\n *\n * @module     core_courseformat/local/courseeditor/mutations\n * @class     core_courseformat/local/courseeditor/mutations\n * @copyright  2021 Ferran Recio <ferran@moodle.com>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nexport default class {\n\n    // All course editor mutations for Moodle 4.0 will be located in this file.\n\n    /**\n     * Private method to call core_courseformat_update_course webservice.\n     *\n     * @method _callEditWebservice\n     * @param {string} action\n     * @param {number} courseId\n     * @param {array} ids\n     * @param {number} targetSectionId optional target section id (for moving actions)\n     * @param {number} targetCmId optional target cm id (for moving actions)\n     */\n    async _callEditWebservice(action, courseId, ids, targetSectionId, targetCmId) {\n        const args = {\n            action,\n            courseid: courseId,\n            ids,\n        };\n        if (targetSectionId) {\n            args.targetsectionid = targetSectionId;\n        }\n        if (targetCmId) {\n            args.targetcmid = targetCmId;\n        }\n        let ajaxresult = await ajax.call([{\n            methodname: 'core_courseformat_update_course',\n            args,\n        }])[0];\n        return JSON.parse(ajaxresult);\n    }\n\n    /**\n     * Execute a basic section state action.\n     * @param {StateManager} stateManager the current state manager\n     * @param {string} action the action name\n     * @param {array} sectionIds the section ids\n     * @param {number} targetSectionId optional target section id (for moving actions)\n     * @param {number} targetCmId optional target cm id (for moving actions)\n     */\n    async _sectionBasicAction(stateManager, action, sectionIds, targetSectionId, targetCmId) {\n        const course = stateManager.get('course');\n        this.sectionLock(stateManager, sectionIds, true);\n        const updates = await this._callEditWebservice(\n            action,\n            course.id,\n            sectionIds,\n            targetSectionId,\n            targetCmId\n        );\n        stateManager.processUpdates(updates);\n        this.sectionLock(stateManager, sectionIds, false);\n    }\n\n    /**\n     * Execute a basic course module state action.\n     * @param {StateManager} stateManager the current state manager\n     * @param {string} action the action name\n     * @param {array} cmIds the cm ids\n     * @param {number} targetSectionId optional target section id (for moving actions)\n     * @param {number} targetCmId optional target cm id (for moving actions)\n     */\n    async _cmBasicAction(stateManager, action, cmIds, targetSectionId, targetCmId) {\n        const course = stateManager.get('course');\n        this.cmLock(stateManager, cmIds, true);\n        const updates = await this._callEditWebservice(\n            action,\n            course.id,\n            cmIds,\n            targetSectionId,\n            targetCmId\n        );\n        stateManager.processUpdates(updates);\n        this.cmLock(stateManager, cmIds, false);\n    }\n\n    /**\n     * Mutation module initialize.\n     *\n     * The reactive instance will execute this method when addMutations or setMutation is invoked.\n     *\n     * @param {StateManager} stateManager the state manager\n     */\n    init(stateManager) {\n        // Add a method to prepare the fields when some update is comming from the server.\n        stateManager.addUpdateTypes({\n            prepareFields: this._prepareFields,\n        });\n    }\n\n    /**\n     * Add default values to state elements.\n     *\n     * This method is called every time a webservice returns a update state message.\n     *\n     * @param {Object} stateManager the state manager\n     * @param {String} updateName the state element to update\n     * @param {Object} fields the new data\n     * @returns {Object} final fields data\n     */\n    _prepareFields(stateManager, updateName, fields) {\n        // Any update should unlock the element.\n        fields.locked = false;\n        return fields;\n    }\n\n    /**\n     * Hides sections.\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} sectionIds the list of section ids\n     */\n    async sectionHide(stateManager, sectionIds) {\n        await this._sectionBasicAction(stateManager, 'section_hide', sectionIds);\n    }\n\n    /**\n     * Show sections.\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} sectionIds the list of section ids\n     */\n    async sectionShow(stateManager, sectionIds) {\n        await this._sectionBasicAction(stateManager, 'section_show', sectionIds);\n    }\n\n    /**\n     * Show cms.\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} cmIds the list of cm ids\n     */\n    async cmShow(stateManager, cmIds) {\n        await this._cmBasicAction(stateManager, 'cm_show', cmIds);\n    }\n\n    /**\n     * Hide cms.\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} cmIds the list of cm ids\n     */\n    async cmHide(stateManager, cmIds) {\n        await this._cmBasicAction(stateManager, 'cm_hide', cmIds);\n    }\n\n    /**\n     * Stealth cms.\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} cmIds the list of cm ids\n     */\n    async cmStealth(stateManager, cmIds) {\n        await this._cmBasicAction(stateManager, 'cm_stealth', cmIds);\n    }\n\n    /**\n     * Move course modules to specific course location.\n     *\n     * Note that one of targetSectionId or targetCmId should be provided in order to identify the\n     * new location:\n     *  - targetCmId: the activities will be located avobe the target cm. The targetSectionId\n     *                value will be ignored in this case.\n     *  - targetSectionId: the activities will be appended to the section. In this case\n     *                     targetSectionId should not be present.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} cmids the list of cm ids to move\n     * @param {number} targetSectionId the target section id\n     * @param {number} targetCmId the target course module id\n     */\n    async cmMove(stateManager, cmids, targetSectionId, targetCmId) {\n        if (!targetSectionId && !targetCmId) {\n            throw new Error(`Mutation cmMove requires targetSectionId or targetCmId`);\n        }\n        const course = stateManager.get('course');\n        this.cmLock(stateManager, cmids, true);\n        const updates = await this._callEditWebservice('cm_move', course.id, cmids, targetSectionId, targetCmId);\n        stateManager.processUpdates(updates);\n        this.cmLock(stateManager, cmids, false);\n    }\n\n    /**\n     * Move course modules to specific course location.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} sectionIds the list of section ids to move\n     * @param {number} targetSectionId the target section id\n     */\n    async sectionMove(stateManager, sectionIds, targetSectionId) {\n        if (!targetSectionId) {\n            throw new Error(`Mutation sectionMove requires targetSectionId`);\n        }\n        const course = stateManager.get('course');\n        this.sectionLock(stateManager, sectionIds, true);\n        const updates = await this._callEditWebservice('section_move', course.id, sectionIds, targetSectionId);\n        stateManager.processUpdates(updates);\n        this.sectionLock(stateManager, sectionIds, false);\n    }\n\n    /**\n     * Add a new section to a specific course location.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {number} targetSectionId optional the target section id\n     */\n    async addSection(stateManager, targetSectionId) {\n        if (!targetSectionId) {\n            targetSectionId = 0;\n        }\n        const course = stateManager.get('course');\n        const updates = await this._callEditWebservice('section_add', course.id, [], targetSectionId);\n        stateManager.processUpdates(updates);\n    }\n\n    /**\n     * Delete sections.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} sectionIds the list of course modules ids\n     */\n    async sectionDelete(stateManager, sectionIds) {\n        const course = stateManager.get('course');\n        const updates = await this._callEditWebservice('section_delete', course.id, sectionIds);\n        stateManager.processUpdates(updates);\n    }\n\n    /**\n     * Mark or unmark course modules as dragging.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} cmIds the list of course modules ids\n     * @param {bool} dragValue the new dragging value\n     */\n    cmDrag(stateManager, cmIds, dragValue) {\n        this.setPageItem(stateManager);\n        this._setElementsValue(stateManager, 'cm', cmIds, 'dragging', dragValue);\n    }\n\n    /**\n     * Mark or unmark course sections as dragging.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} sectionIds the list of section ids\n     * @param {bool} dragValue the new dragging value\n     */\n    sectionDrag(stateManager, sectionIds, dragValue) {\n        this.setPageItem(stateManager);\n        this._setElementsValue(stateManager, 'section', sectionIds, 'dragging', dragValue);\n    }\n\n    /**\n     * Mark or unmark course modules as complete.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} cmIds the list of course modules ids\n     * @param {bool} complete the new completion value\n     */\n    cmCompletion(stateManager, cmIds, complete) {\n        const newValue = (complete) ? 1 : 0;\n        this._setElementsValue(stateManager, 'cm', cmIds, 'completionstate', newValue);\n    }\n\n    /**\n     * Move cms to the right: indent = 1.\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} cmIds the list of cm ids\n     */\n    async cmMoveRight(stateManager, cmIds) {\n        await this._cmBasicAction(stateManager, 'cm_moveright', cmIds);\n    }\n\n    /**\n     * Move cms to the left: indent = 0.\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} cmIds the list of cm ids\n     */\n    async cmMoveLeft(stateManager, cmIds) {\n        await this._cmBasicAction(stateManager, 'cm_moveleft', cmIds);\n    }\n\n    /**\n     * Lock or unlock course modules.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} cmIds the list of course modules ids\n     * @param {bool} lockValue the new locked value\n     */\n    cmLock(stateManager, cmIds, lockValue) {\n        this._setElementsValue(stateManager, 'cm', cmIds, 'locked', lockValue);\n    }\n\n    /**\n     * Lock or unlock course sections.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} sectionIds the list of section ids\n     * @param {bool} lockValue the new locked value\n     */\n    sectionLock(stateManager, sectionIds, lockValue) {\n        this._setElementsValue(stateManager, 'section', sectionIds, 'locked', lockValue);\n    }\n\n    _setElementsValue(stateManager, name, ids, fieldName, newValue) {\n        stateManager.setReadOnly(false);\n        ids.forEach((id) => {\n            const element = stateManager.get(name, id);\n            if (element) {\n                element[fieldName] = newValue;\n            }\n        });\n        stateManager.setReadOnly(true);\n    }\n\n    /**\n     * Set the page current item.\n     *\n     * Only one element of the course state can be the page item at a time.\n     *\n     * There are several actions that can alter the page current item. For example, when the user is in an activity\n     * page, the page item is always the activity one. However, in a course page, when the user scrolls to an element,\n     * this element get the page item.\n     *\n     * If the page item is static means that it is not meant to change. This is important because\n     * static page items has some special logic. For example, if a cm is the static page item\n     * and it is inside a collapsed section, the course index will expand the section to make it visible.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {String|undefined} type the element type (section or cm). Undefined will remove the current page item.\n     * @param {Number|undefined} id the element id\n     * @param {boolean|undefined} isStatic if the page item is static\n     */\n    setPageItem(stateManager, type, id, isStatic) {\n        let newPageItem;\n        if (type !== undefined) {\n            newPageItem = stateManager.get(type, id);\n            if (!newPageItem) {\n                return;\n            }\n        }\n        stateManager.setReadOnly(false);\n        // Remove the current page item.\n        const course = stateManager.get('course');\n        course.pageItem = null;\n        // Save the new page item.\n        if (newPageItem) {\n            course.pageItem = {\n                id,\n                type,\n                sectionId: (type == 'section') ? newPageItem.id : newPageItem.sectionid,\n                isStatic,\n            };\n        }\n        stateManager.setReadOnly(true);\n    }\n\n    /**\n     * Unlock all course elements.\n     *\n     * @param {StateManager} stateManager the current state manager\n     */\n    unlockAll(stateManager) {\n        const state = stateManager.state;\n        stateManager.setReadOnly(false);\n        state.section.forEach((section) => {\n            section.locked = false;\n        });\n        state.cm.forEach((cm) => {\n            cm.locked = false;\n        });\n        stateManager.setReadOnly(true);\n    }\n\n    /**\n     * Update the course index collapsed attribute of some sections.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} sectionIds the affected section ids\n     * @param {boolean} collapsed the new collapsed value\n     */\n    async sectionIndexCollapsed(stateManager, sectionIds, collapsed) {\n        const collapsedIds = this._updateStateSectionPreference(stateManager, 'indexcollapsed', sectionIds, collapsed);\n        if (!collapsedIds) {\n            return;\n        }\n        const course = stateManager.get('course');\n        await this._callEditWebservice('section_index_collapsed', course.id, collapsedIds);\n    }\n\n    /**\n     * Update the course content collapsed attribute of some sections.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {array} sectionIds the affected section ids\n     * @param {boolean} collapsed the new collapsed value\n     */\n    async sectionContentCollapsed(stateManager, sectionIds, collapsed) {\n        const collapsedIds = this._updateStateSectionPreference(stateManager, 'contentcollapsed', sectionIds, collapsed);\n        if (!collapsedIds) {\n            return;\n        }\n        const course = stateManager.get('course');\n        await this._callEditWebservice('section_content_collapsed', course.id, collapsedIds);\n    }\n\n    /**\n     * Private batch update for a section preference attribute.\n     *\n     * @param {StateManager} stateManager the current state manager\n     * @param {string} preferenceName the preference name\n     * @param {array} sectionIds the affected section ids\n     * @param {boolean} preferenceValue the new preferenceValue value\n     * @return {Number[]|null} sections ids with the preference value true or null if no update is required\n     */\n    _updateStateSectionPreference(stateManager, preferenceName, sectionIds, preferenceValue) {\n        stateManager.setReadOnly(false);\n        const affectedSections = new Set();\n        // Check if we need to update preferences.\n        sectionIds.forEach(sectionId => {\n            const section = stateManager.get('section', sectionId);\n            if (section === undefined) {\n                return null;\n            }\n            const newValue = preferenceValue ?? section[preferenceName];\n            if (section[preferenceName] != newValue) {\n                section[preferenceName] = newValue;\n                affectedSections.add(section.id);\n            }\n        });\n        stateManager.setReadOnly(true);\n        if (affectedSections.size == 0) {\n            return null;\n        }\n        // Get all collapsed section ids.\n        const collapsedSectionIds = [];\n        const state = stateManager.state;\n        state.section.forEach(section => {\n            if (section[preferenceName]) {\n                collapsedSectionIds.push(section.id);\n            }\n        });\n        return collapsedSectionIds;\n    }\n\n    /**\n     * Get updated state data related to some cm ids.\n     *\n     * @method cmState\n     * @param {StateManager} stateManager the current state\n     * @param {array} cmids the list of cm ids to update\n     */\n    async cmState(stateManager, cmids) {\n        this.cmLock(stateManager, cmids, true);\n        const course = stateManager.get('course');\n        const updates = await this._callEditWebservice('cm_state', course.id, cmids);\n        stateManager.processUpdates(updates);\n        this.cmLock(stateManager, cmids, false);\n    }\n\n    /**\n     * Get updated state data related to some section ids.\n     *\n     * @method sectionState\n     * @param {StateManager} stateManager the current state\n     * @param {array} sectionIds the list of section ids to update\n     */\n    async sectionState(stateManager, sectionIds) {\n        this.sectionLock(stateManager, sectionIds, true);\n        const course = stateManager.get('course');\n        const updates = await this._callEditWebservice('section_state', course.id, sectionIds);\n        stateManager.processUpdates(updates);\n        this.sectionLock(stateManager, sectionIds, false);\n    }\n\n    /**\n     * Get the full updated state data of the course.\n     *\n     * @param {StateManager} stateManager the current state\n     */\n    async courseState(stateManager) {\n        const course = stateManager.get('course');\n        const updates = await this._callEditWebservice('course_state', course.id);\n        stateManager.processUpdates(updates);\n    }\n\n}\n"],"names":["action","courseId","ids","targetSectionId","targetCmId","args","courseid","targetsectionid","targetcmid","ajaxresult","ajax","call","methodname","JSON","parse","stateManager","sectionIds","course","get","sectionLock","updates","this","_callEditWebservice","id","processUpdates","cmIds","cmLock","init","addUpdateTypes","prepareFields","_prepareFields","updateName","fields","locked","_sectionBasicAction","_cmBasicAction","cmids","Error","cmDrag","dragValue","setPageItem","_setElementsValue","sectionDrag","cmCompletion","complete","newValue","lockValue","name","fieldName","setReadOnly","forEach","element","type","isStatic","newPageItem","undefined","pageItem","sectionId","sectionid","unlockAll","state","section","cm","collapsed","collapsedIds","_updateStateSectionPreference","preferenceName","preferenceValue","affectedSections","Set","add","size","collapsedSectionIds","push"],"mappings":"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"}

Zerion Mini Shell 1.0