Proyectos de Subversion Moodle

Rev

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

{"version":3,"file":"cartridge_registration_form.min.js","sources":["../src/cartridge_registration_form.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 * Encapsules the behavior for creating a tool type from a cartridge URL\n * in Moodle. Manages the UI while operations are occuring.\n *\n * See template: mod_lti/cartridge_registration_form\n *\n * @module     mod_lti/cartridge_registration_form\n * @copyright  2015 Ryan Wyllie <ryan@moodle.com>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since      3.1\n */\ndefine(['jquery', 'core/ajax', 'core/notification', 'mod_lti/tool_type', 'mod_lti/events', 'mod_lti/keys', 'core/str'],\n        function($, ajax, notification, toolType, ltiEvents, KEYS, str) {\n\n    var SELECTORS = {\n        CARTRIDGE_URL: '#cartridge-url',\n        CONSUMER_KEY: '#registration-key',\n        SHARED_SECRET: '#registration-secret',\n        REGISTRATION_FORM: '#cartridge-registration-form',\n        REGISTRATION_SUBMIT_BUTTON: '#cartridge-registration-submit',\n        REGISTRATION_CANCEL_BUTTON: '#cartridge-registration-cancel',\n    };\n\n    /**\n     * Return the URL the user entered for the cartridge.\n     *\n     * @method getCartridgeURL\n     * @private\n     * @return {String}\n     */\n    var getCartridgeURL = function() {\n        return $(SELECTORS.REGISTRATION_FORM).attr('data-cartridge-url');\n    };\n\n    /**\n     * Return the submit button element.\n     *\n     * @method getSubmitButton\n     * @private\n     * @return {JQuery} jQuery object\n     */\n    var getSubmitButton = function() {\n        return $(SELECTORS.REGISTRATION_SUBMIT_BUTTON);\n    };\n\n    /**\n     * Return the cancel button element.\n     *\n     * @method getCancelButton\n     * @private\n     * @return {JQuery} jQuery object\n     */\n    var getCancelButton = function() {\n        return $(SELECTORS.REGISTRATION_CANCEL_BUTTON);\n    };\n\n    /**\n     * Return the value that the user entered for the consumer key.\n     *\n     * @method getConsumerKey\n     * @private\n     * @return {String} the value entered for consumer key.\n     */\n    var getConsumerKey = function() {\n        return $(SELECTORS.CONSUMER_KEY).val();\n    };\n\n    /**\n     * Return the value that the user entered for the shared secret.\n     *\n     * @method getSharedSecret\n     * @private\n     * @return {String} the value entered for shared secret\n     */\n    var getSharedSecret = function() {\n        return $(SELECTORS.SHARED_SECRET).val();\n    };\n\n    /**\n     * Trigger a visual loading indicator.\n     *\n     * @method startLoading\n     * @private\n     */\n    var startLoading = function() {\n        getSubmitButton().addClass('loading');\n    };\n\n    /**\n     * Stop the visual loading indicator.\n     *\n     * @method stopLoading\n     * @private\n     */\n    var stopLoading = function() {\n        getSubmitButton().removeClass('loading');\n    };\n\n    /**\n     * Check if the page is currently loading.\n     *\n     * @method isLoading\n     * @private\n     * @return {Boolean}\n     */\n    var isLoading = function() {\n        return getSubmitButton().hasClass('loading');\n    };\n\n    /**\n     * Create a tool type from the cartridge URL that the user input. This will\n     * send an ajax request to the Moodle server to create the Type. The request will\n     * include the consumer key and secret, if any.\n     *\n     * On success the page will be re-rendered to take the user back to the original\n     * page with the list of tools and an alert notifying them of success.\n     *\n     * @method submitCartridgeURL\n     * @private\n     * @return {Promise} jQuery Deferred object\n     */\n    var submitCartridgeURL = function() {\n        if (isLoading()) {\n            return false;\n        }\n\n        var url = getCartridgeURL();\n        // No URL? Do nothing.\n        if (url === \"\") {\n            return false;\n        }\n\n        startLoading();\n        var consumerKey = getConsumerKey();\n        var sharedSecret = getSharedSecret();\n        var promise = toolType.create({cartridgeurl: url, key: consumerKey, secret: sharedSecret});\n\n        promise.done(function() {\n            str.get_string('successfullycreatedtooltype', 'mod_lti').done(function(s) {\n                $(document).trigger(ltiEvents.NEW_TOOL_TYPE);\n                $(document).trigger(ltiEvents.STOP_CARTRIDGE_REGISTRATION);\n                $(document).trigger(ltiEvents.REGISTRATION_FEEDBACK, {\n                    message: s\n                });\n            }).fail(notification.exception);\n        }).fail(function() {\n            str.get_string('failedtocreatetooltype', 'mod_lti').done(function(s) {\n                $(document).trigger(ltiEvents.NEW_TOOL_TYPE);\n                $(document).trigger(ltiEvents.STOP_CARTRIDGE_REGISTRATION);\n                $(document).trigger(ltiEvents.REGISTRATION_FEEDBACK, {\n                    message: s,\n                    error: true\n                });\n            }).fail(notification.exception);\n        }).always(function() {\n          stopLoading();\n        });\n\n        return promise;\n    };\n\n    /**\n     * Sets up the listeners for user interaction on the page.\n     *\n     * @method registerEventListeners\n     * @private\n     */\n    var registerEventListeners = function() {\n        var form = $(SELECTORS.REGISTRATION_FORM);\n        form.submit(function(e) {\n            e.preventDefault();\n            submitCartridgeURL();\n        });\n\n        var cancelButton = getCancelButton();\n        cancelButton.click(function(e) {\n            e.preventDefault();\n            $(document).trigger(ltiEvents.STOP_CARTRIDGE_REGISTRATION);\n        });\n        cancelButton.keypress(function(e) {\n            if (!e.metaKey && !e.shiftKey && !e.altKey && !e.ctrlKey) {\n                if (e.keyCode == KEYS.ENTER || e.keyCode == KEYS.SPACE) {\n                    e.preventDefault();\n                    cancelButton.click();\n                }\n            }\n        });\n    };\n\n    return /** @alias module:mod_lti/cartridge_registration_form */ {\n\n        /**\n         * Initialise this module.\n         */\n        init: function() {\n            registerEventListeners();\n        }\n    };\n});\n"],"names":["define","$","ajax","notification","toolType","ltiEvents","KEYS","str","SELECTORS","getSubmitButton","submitCartridgeURL","hasClass","url","attr","addClass","consumerKey","val","sharedSecret","promise","create","cartridgeurl","key","secret","done","get_string","s","document","trigger","NEW_TOOL_TYPE","STOP_CARTRIDGE_REGISTRATION","REGISTRATION_FEEDBACK","message","fail","exception","error","always","removeClass","registerEventListeners","submit","e","preventDefault","cancelButton","click","keypress","metaKey","shiftKey","altKey","ctrlKey","keyCode","ENTER","SPACE","init"],"mappings":";;;;;;;;;;;AA0BAA,6CAAO,CAAC,SAAU,YAAa,oBAAqB,oBAAqB,iBAAkB,eAAgB,aACnG,SAASC,EAAGC,KAAMC,aAAcC,SAAUC,UAAWC,KAAMC,SAE3DC,uBAEc,oBAFdA,wBAGe,uBAHfA,4BAImB,+BAJnBA,qCAK4B,iCAL5BA,qCAM4B,iCAqB5BC,gBAAkB,kBACXR,EAAEO,uCA+ETE,mBAAqB,cAfdD,kBAAkBE,SAAS,kBAiBvB,MAGPC,IA/FGX,EAAEO,6BAA6BK,KAAK,yBAiG/B,KAARD,WACO,EA5CXH,kBAAkBK,SAAS,eAgDvBC,YArEGd,EAAEO,wBAAwBQ,MAsE7BC,aA3DGhB,EAAEO,yBAAyBQ,MA4D9BE,QAAUd,SAASe,OAAO,CAACC,aAAcR,IAAKS,IAAKN,YAAaO,OAAQL,sBAE5EC,QAAQK,MAAK,WACThB,IAAIiB,WAAW,8BAA+B,WAAWD,MAAK,SAASE,GACnExB,EAAEyB,UAAUC,QAAQtB,UAAUuB,eAC9B3B,EAAEyB,UAAUC,QAAQtB,UAAUwB,6BAC9B5B,EAAEyB,UAAUC,QAAQtB,UAAUyB,sBAAuB,CACjDC,QAASN,OAEdO,KAAK7B,aAAa8B,cACtBD,MAAK,WACJzB,IAAIiB,WAAW,yBAA0B,WAAWD,MAAK,SAASE,GAC9DxB,EAAEyB,UAAUC,QAAQtB,UAAUuB,eAC9B3B,EAAEyB,UAAUC,QAAQtB,UAAUwB,6BAC9B5B,EAAEyB,UAAUC,QAAQtB,UAAUyB,sBAAuB,CACjDC,QAASN,EACTS,OAAO,OAEZF,KAAK7B,aAAa8B,cACtBE,QAAO,WA3DV1B,kBAAkB2B,YAAY,cA+DvBlB,SASPmB,uBAAyB,WACdpC,EAAEO,6BACR8B,QAAO,SAASC,GACjBA,EAAEC,iBACF9B,4BAGA+B,aAzHGxC,EAAEO,sCA0HTiC,aAAaC,OAAM,SAASH,GACxBA,EAAEC,iBACFvC,EAAEyB,UAAUC,QAAQtB,UAAUwB,gCAElCY,aAAaE,UAAS,SAASJ,GACtBA,EAAEK,SAAYL,EAAEM,UAAaN,EAAEO,QAAWP,EAAEQ,SACzCR,EAAES,SAAW1C,KAAK2C,OAASV,EAAES,SAAW1C,KAAK4C,QAC7CX,EAAEC,iBACFC,aAAaC,mBAMmC,CAK5DS,KAAM,WACFd"}