AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"fragment.min.js","sources":["../src/fragment.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 * A way to call HTML fragments to be inserted as required via JavaScript.\n *\n * @module core/fragment\n * @copyright 2016 Adrian Greeve <adrian@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 o
r later\n * @since 3.1\n */\ndefine(['jquery', 'core/ajax'], function($, ajax) {\n\n /**\n * Loads an HTML fragment through a callback.\n *\n * @method loadFragment\n * @param {string} component Component where callback is located.\n * @param {string} callback Callback function name.\n * @param {integer} contextid Context ID of the fragment.\n * @param {object} params Parameters for the callback.\n * @return {Promise} JQuery promise object resolved when the fragment has been loaded.\n */\n var loadFragment = function(component, callback, contextid, params) {\n // Change params into required webservice format.\n var formattedparams = [];\n for (var index in params) {\n formattedparams.push({\n name: index,\n value: params[index]\n });\n }\n\n return ajax.call([{\n methodname: 'core_get_fragment',\n args: {\n component: component,\n
callback: callback,\n contextid: contextid,\n args: formattedparams\n }\n }])[0];\n };\n\n /**\n * Converts the JS that was received from collecting JS requirements on the $PAGE so it can be added to the existing page\n *\n * @param {string} js\n * @return {string}\n */\n var processCollectedJavascript = function(js) {\n var jsNodes = $(js);\n var allScript = '';\n jsNodes.each(function(index, scriptNode) {\n scriptNode = $(scriptNode);\n var tagName = scriptNode.prop('tagName');\n if (tagName && (tagName.toLowerCase() == 'script')) {\n if (scriptNode.attr('src')) {\n // We only reload the script if it was not loaded already.\n var exists = false;\n $('script').each(function(index, s) {\n if ($(s).attr('src') == scriptNode.attr('src')) {\n exists = true;
\n }\n return !exists;\n });\n if (!exists) {\n allScript += ' { ';\n allScript += ' node = document.createElement(\"script\"); ';\n allScript += ' node.type = \"text/javascript\"; ';\n allScript += ' node.src = decodeURI(\"' + encodeURI(scriptNode.attr('src')) + '\"); ';\n allScript += ' document.getElementsByTagName(\"head\")[0].appendChild(node); ';\n allScript += ' } ';\n }\n } else {\n allScript += ' ' + scriptNode.text();\n }\n }\n });\n return allScript;\n };\n\n return {\n /**\n * Appends HTML and JavaScript fragments to specified nodes.\n * Callbacks called by this AMD module are responsible for doing the appropriate security checks\n * to access the inf
ormation that is returned. This only does minimal validation on the context.\n *\n * @method fragmentAppend\n * @param {string} component Component where callback is located.\n * @param {string} callback Callback function name.\n * @param {integer} contextid Context ID of the fragment.\n * @param {object} params Parameters for the callback.\n * @return {Deferred} new promise that is resolved with the html and js.\n */\n loadFragment: function(component, callback, contextid, params) {\n var promise = $.Deferred();\n loadFragment(component, callback, contextid, params).then(function(data) {\n promise.resolve(data.html, processCollectedJavascript(data.javascript));\n }).fail(function(ex) {\n promise.reject(ex);\n });\n return promise.promise();\n },\n\n /**\n * Converts the JS that was received from collecting JS requirements on the $PA
GE so it can be added to the existing page\n *\n * @param {string} js\n * @return {string}\n */\n processCollectedJavascript: function(js) {\n return processCollectedJavascript(js);\n }\n };\n});\n"],"names":["define","$","ajax","processCollectedJavascript","js","jsNodes","allScript","each","index","scriptNode","tagName","prop","toLowerCase","attr","exists","s","encodeURI","text","loadFragment","component","callback","contextid","params","promise","Deferred","formattedparams","push","name","value","call","methodname","args","then","data","resolve","html","javascript","fail","ex","reject"],"mappings":";;;;;;;;AAuBAA,uBAAO,CAAC,SAAU,cAAc,SAASC,EAAGC,UAuCpCC,2BAA6B,SAASC,QAClCC,QAAUJ,EAAEG,IACZE,UAAY,UAChBD,QAAQE,MAAK,SAASC,MAAOC,gBAErBC,SADJD,WAAaR,EAAEQ,aACUE,KAAK,cAC1BD,SAAqC,UAAzBA,QAAQE,iBAChBH,WAAWI,KAAK,OAAQ,KAEpBC,QAAS,EACbb,EAAE,UAAUM,MAAK,SAASC,MAAOO,UACzBd,EAAEc,GAAGF,KAAK,QAAUJ,WAAWI,KAAK,SACpCC,QAAS,IAELA,UAEPA,SACDR,WAAa,MACbA,WAAa,6CACbA
,WAAa,mCACbA,WAAa,0BAA4BU,UAAUP,WAAWI,KAAK,QAAU,OAC7EP,WAAa,gEACbA,WAAa,YAGjBA,WAAa,IAAMG,WAAWQ,UAInCX,iBAGJ,CAaHY,aAAc,SAASC,UAAWC,SAAUC,UAAWC,YAC/CC,QAAUtB,EAAEuB,kBAzEL,SAASL,UAAWC,SAAUC,UAAWC,YAEpDG,gBAAkB,OACjB,IAAIjB,SAASc,OACdG,gBAAgBC,KAAK,CACjBC,KAAMnB,MACNoB,MAAON,OAAOd,gBAIfN,KAAK2B,KAAK,CAAC,CACdC,WAAY,oBACZC,KAAM,CACFZ,UAAWA,UACXC,SAAUA,SACVC,UAAWA,UACXU,KAAMN,oBAEV,GAwDAP,CAAaC,UAAWC,SAAUC,UAAWC,QAAQU,MAAK,SAASC,MAC/DV,QAAQW,QAAQD,KAAKE,KAAMhC,2BAA2B8B,KAAKG,gBAC5DC,MAAK,SAASC,IACbf,QAAQgB,OAAOD,OAEZf,QAAQA,WASnBpB,2BAA4B,SAASC,WAC1BD,2BAA2BC"}