Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

{"version":3,"file":"actions.min.js","sources":["../src/actions.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\n/**\n * Module to manage content bank actions, such as delete or rename.\n *\n * @module     core_contentbank/actions\n * @copyright  2020 Sara Arjona <sara@moodle.com>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([\n    'jquery',\n    'core/ajax',\n    'core/notification',\n    'core/str',\n    'core/templates',\n    'core/url',\n    'core/modal_save_cancel',\n    'core/modal_events'],\nfunction($, Ajax, Notification, Str, Templates, Url, ModalSaveCancel, ModalEvents) {\n\n    /**\n     * List of action selectors.\n     *\n     * @type {{DELETE_CONTENT: string}}\n     */\n    var ACTIONS = {\n        DELETE_CONTENT: '[data-action=\"deletecontent\"]',\n        RENAME_CONTENT: '[data-action=\"renamecontent\"]',\n        SET_CONTENT_VISIBILITY: '[data-action=\"setcontentvisibility\"]',\n        COPY_CONTENT: '[data-action=\"copycontent\"]',\n    };\n\n    /**\n     * Actions class.\n     */\n    var Actions = function() {\n        this.registerEvents();\n    };\n\n    /**\n     * Register event listeners.\n     */\n    Actions.prototype.registerEvents = function() {\n        $(ACTIONS.DELETE_CONTENT).click(function(e) {\n            e.preventDefault();\n\n            var contentname = $(this).data('contentname');\n            var contentuses = $(this).data('uses');\n            var contentid = $(this).data('contentid');\n            var contextid = $(this).data('contextid');\n\n            var strings = [\n                {\n                    key: 'deletecontent',\n                    component: 'core_contentbank'\n                },\n                {\n                    key: 'deletecontentconfirm',\n                    component: 'core_contentbank',\n                    param: {\n                        name: contentname,\n                    }\n                },\n                {\n                    key: 'deletecontentconfirmlinked',\n                    component: 'core_contentbank',\n                },\n                {\n                    key: 'delete',\n                    component: 'core'\n                },\n            ];\n\n            var deleteButtonText = '';\n            Str.get_strings(strings).then(function(langStrings) {\n                var modalTitle = langStrings[0];\n                var modalContent = langStrings[1];\n                if (contentuses > 0) {\n                    modalContent += ' ' + langStrings[2];\n                }\n                deleteButtonText = langStrings[3];\n\n                return ModalSaveCancel.create({\n                    title: modalTitle,\n                    body: modalContent,\n                    large: true,\n                    removeOnClose: true,\n                    show: true,\n                    buttons: {\n                        save: deleteButtonText,\n                    },\n                });\n            }).then(function(modal) {\n                modal.getRoot().on(ModalEvents.save, function() {\n                    // The action is now confirmed, sending an action for it.\n                    return deleteContent(contentid, contextid);\n                });\n\n                return;\n            }).catch(Notification.exception);\n        });\n\n        $(ACTIONS.RENAME_CONTENT).click(function(e) {\n            e.preventDefault();\n\n            var contentname = $(this).data('contentname');\n            var contentid = $(this).data('contentid');\n\n            var strings = [\n                {\n                    key: 'renamecontent',\n                    component: 'core_contentbank'\n                },\n                {\n                    key: 'rename',\n                    component: 'core_contentbank'\n                },\n            ];\n\n            var saveButtonText = '';\n            Str.get_strings(strings).then(function(langStrings) {\n                var modalTitle = langStrings[0];\n                saveButtonText = langStrings[1];\n\n                return ModalSaveCancel.create({\n                    title: modalTitle,\n                    body: Templates.render('core_contentbank/renamecontent', {'contentid': contentid, 'name': contentname}),\n                    removeOnClose: true,\n                    show: true,\n                    buttons: {\n                        save: saveButtonText,\n                    },\n                });\n            }).then(function(modal) {\n                modal.getRoot().on(ModalEvents.save, function(e) {\n                    // The action is now confirmed, sending an action for it.\n                    var newname = $(\"#newname\").val().trim();\n                    if (newname) {\n                        renameContent(contentid, newname);\n                    } else {\n                        var errorStrings = [\n                            {\n                                key: 'error',\n                            },\n                            {\n                                key: 'emptynamenotallowed',\n                                component: 'core_contentbank',\n                            },\n                        ];\n                        Str.get_strings(errorStrings).then(function(langStrings) {\n                            Notification.alert(langStrings[0], langStrings[1]);\n                        }).catch(Notification.exception);\n                        e.preventDefault();\n                    }\n                });\n\n                return;\n            }).catch(Notification.exception);\n        });\n\n        $(ACTIONS.COPY_CONTENT).click(function(e) {\n            e.preventDefault();\n\n            var contentname = $(this).data('contentname');\n            var contentid = $(this).data('contentid');\n\n            var strings = [\n                {\n                    key: 'copycontent',\n                    component: 'core_contentbank'\n                },\n                {\n                    key: 'error',\n                },\n                {\n                    key: 'emptynamenotallowed',\n                    component: 'core_contentbank',\n                },\n            ];\n\n            let errorTitle, errorMessage;\n            Str.get_strings(strings).then(function(langStrings) {\n                var modalTitle = langStrings[0];\n                errorTitle = langStrings[1];\n                errorMessage = langStrings[2];\n\n                return ModalSaveCancel.create({\n                    title: modalTitle,\n                    body: Templates.render('core_contentbank/copycontent', {'contentid': contentid, 'name': contentname}),\n                    removeOnClose: true,\n                    show: true,\n                });\n            }).then(function(modal) {\n                modal.getRoot().on(ModalEvents.save, function() {\n                    // The action is now confirmed, sending an action for it.\n                    var newname = $(\"#newname\").val().trim();\n                    if (newname) {\n                        copyContent(contentid, newname);\n                    } else {\n                        Notification.alert(errorTitle, errorMessage);\n                        return false;\n                    }\n                });\n                return;\n            }).catch(Notification.exception);\n        });\n\n        $(ACTIONS.SET_CONTENT_VISIBILITY).click(function(e) {\n            e.preventDefault();\n\n            var contentid = $(this).data('contentid');\n            var visibility = $(this).data('visibility');\n\n            setContentVisibility(contentid, visibility);\n        });\n    };\n\n    /**\n     * Delete content from the content bank.\n     *\n     * @param {int} contentid The content to delete.\n     * @param {int} contextid The contextid where the content belongs.\n     */\n    function deleteContent(contentid, contextid) {\n        var request = {\n            methodname: 'core_contentbank_delete_content',\n            args: {\n                contentids: {contentid}\n            }\n        };\n\n        var requestType = 'success';\n        Ajax.call([request])[0].then(function(data) {\n            if (data.result) {\n                return 'contentdeleted';\n            }\n            requestType = 'error';\n            return 'contentnotdeleted';\n\n        }).done(function(message) {\n            var params = {\n                contextid: contextid\n            };\n            if (requestType == 'success') {\n                params.statusmsg = message;\n            } else {\n                params.errormsg = message;\n            }\n            // Redirect to the main content bank page and display the message as a notification.\n            window.location.href = Url.relativeUrl('contentbank/index.php', params, false);\n        }).fail(Notification.exception);\n    }\n\n    /**\n     * Rename content in the content bank.\n     *\n     * @param {int} contentid The content to rename.\n     * @param {string} name The new name for the content.\n     */\n    function renameContent(contentid, name) {\n        var request = {\n            methodname: 'core_contentbank_rename_content',\n            args: {\n                contentid: contentid,\n                name: name\n            }\n        };\n        var requestType = 'success';\n        Ajax.call([request])[0].then(function(data) {\n            if (data.result) {\n                return 'contentrenamed';\n            }\n            requestType = 'error';\n            return data.warnings[0].message;\n\n        }).then(function(message) {\n            var params = null;\n            if (requestType == 'success') {\n                params = {\n                    id: contentid,\n                    statusmsg: message\n                };\n                // Redirect to the content view page and display the message as a notification.\n                window.location.href = Url.relativeUrl('contentbank/view.php', params, false);\n            } else {\n                // Fetch error notifications.\n                Notification.addNotification({\n                    message: message,\n                    type: 'error'\n                });\n                Notification.fetchNotifications();\n            }\n            return;\n        }).catch(Notification.exception);\n    }\n\n    /**\n     * Copy content in the content bank.\n     *\n     * @param {int} contentid The content to copy.\n     * @param {string} name The name for the new content.\n     */\n    function copyContent(contentid, name) {\n        var request = {\n            methodname: 'core_contentbank_copy_content',\n            args: {\n                contentid: contentid,\n                name: name\n            }\n        };\n        Ajax.call([request])[0].then(function(data) {\n            if (data.id == 0) {\n                // Fetch error notifications.\n                Notification.addNotification({\n                    message: data.warnings[0].message,\n                    type: 'error'\n                });\n                Notification.fetchNotifications();\n                return data.warnings[0].message;\n            } else {\n                let params = {\n                    id: data.id,\n                    statusmsg: 'contentcopied'\n                };\n                // Redirect to the content view page and display the message as a notification.\n                window.location.href = Url.relativeUrl('contentbank/view.php', params, false);\n            }\n            return '';\n        }).catch(Notification.exception);\n    }\n\n    /**\n     * Set content visibility in the content bank.\n     *\n     * @param {int} contentid The content to modify\n     * @param {int} visibility The new visibility value\n     */\n    function setContentVisibility(contentid, visibility) {\n        var request = {\n            methodname: 'core_contentbank_set_content_visibility',\n            args: {\n                contentid: contentid,\n                visibility: visibility\n            }\n        };\n        var requestType = 'success';\n        Ajax.call([request])[0].then(function(data) {\n            if (data.result) {\n                return 'contentvisibilitychanged';\n            }\n            requestType = 'error';\n            return data.warnings[0].message;\n\n        }).then(function(message) {\n            var params = null;\n            if (requestType == 'success') {\n                params = {\n                    id: contentid,\n                    statusmsg: message\n                };\n                // Redirect to the content view page and display the message as a notification.\n                window.location.href = Url.relativeUrl('contentbank/view.php', params, false);\n            } else {\n                // Fetch error notifications.\n                Notification.addNotification({\n                    message: message,\n                    type: 'error'\n                });\n                Notification.fetchNotifications();\n            }\n            return;\n        }).catch(Notification.exception);\n    }\n\n    return /** @alias module:core_contentbank/actions */ {\n        // Public variables and functions.\n\n        /**\n         * Initialise the contentbank actions.\n         *\n         * @method init\n         * @return {Actions}\n         */\n        'init': function() {\n            return new Actions();\n        }\n    };\n});\n"],"names":["define","$","Ajax","Notification","Str","Templates","Url","ModalSaveCancel","ModalEvents","ACTIONS","Actions","registerEvents","prototype","click","e","preventDefault","contentname","this","data","contentuses","contentid","contextid","strings","key","component","param","name","deleteButtonText","get_strings","then","langStrings","modalTitle","modalContent","create","title","body","large","removeOnClose","show","buttons","save","modal","getRoot","on","request","methodname","args","contentids","requestType","call","result","done","message","params","statusmsg","errormsg","window","location","href","relativeUrl","fail","exception","deleteContent","catch","saveButtonText","render","newname","val","trim","warnings","id","addNotification","type","fetchNotifications","renameContent","alert","errorTitle","errorMessage","copyContent","visibility","setContentVisibility"],"mappings":"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"}