AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"ajax_response_renderer.min.js","sources":["../src/ajax_response_renderer.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 * Parse the response from the navblock ajax page and render the correct DOM\n * structure for the tree from it.\n *\n * @module block_navigation/ajax_response_renderer\n * @copyright 2015 John Ok
ely <john@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([\n 'jquery',\n 'core/templates',\n 'core/notification',\n 'core/url',\n 'core/aria',\n], function(\n $,\n Templates,\n Notification,\n Url,\n Aria\n) {\n\n // Mappings for the different types of nodes coming from the navigation.\n // Copied from lib/navigationlib.php navigation_node constants.\n var NODETYPE = {\n // @type int Activity (course module) = 40.\n ACTIVITY: 40,\n // @type int Resource (course module = 50.\n RESOURCE: 50,\n };\n\n /**\n * Build DOM.\n *\n * @method buildDOM\n * @param {Object} rootElement the root element of DOM.\n * @param {object} nodes jquery object representing the nodes to be build.\n */\n function buildDOM(rootElement, nodes) {\n var ul = $('<ul></ul>');\n ul.attr('role', 'group');\n Aria.hide(ul);\n\n $.each(nodes, function(index, node) {\n
if (typeof node !== 'object') {\n return;\n }\n\n var li = $('<li></li>');\n var p = $('<p></p>');\n var id = node.id || node.key + '_tree_item';\n var icon = null;\n var isBranch = (node.expandable || node.haschildren) ? true : false;\n\n li.attr('role', 'treeitem');\n p.addClass('tree_item');\n p.attr('id', id);\n // Negative tab index to allow it to receive focus.\n p.attr('tabindex', '-1');\n\n if (node.requiresajaxloading) {\n li.attr('data-requires-ajax', true);\n li.attr('data-node-id', node.id);\n li.attr('data-node-key', node.key);\n li.attr('data-node-type', node.type);\n }\n\n if (isBranch) {\n li.addClass('collapsed contains_branch');\n li.attr('aria-expanded', false);\n p.addClass('branch');\n }\n\n
var eleToAddIcon = null;\n if (node.link) {\n var link = $('<a title=\"' + node.title + '\" href=\"' + node.link + '\"></a>');\n\n eleToAddIcon = link;\n link.append('<span class=\"item-content-wrap\">' + node.name + '</span>');\n\n if (node.hidden) {\n link.addClass('dimmed');\n }\n\n p.append(link);\n } else {\n var span = $('<span></span>');\n\n eleToAddIcon = span;\n span.append('<span class=\"item-content-wrap\">' + node.name + '</span>');\n\n if (node.hidden) {\n span.addClass('dimmed');\n }\n\n p.append(span);\n }\n\n if (node.icon && (!isBranch || node.type === NODETYPE.ACTIVITY || node.type === NODETYPE.RESOURCE)) {\n li.addClass('item_with_icon');\n p.addClass('hasicon');\n\n if (node.type =
== NODETYPE.ACTIVITY || node.type === NODETYPE.RESOURCE) {\n icon = $('<img/>');\n icon.attr('alt', node.icon.alt);\n icon.attr('title', node.icon.title);\n icon.attr('src', Url.imageUrl(node.icon.pix, node.icon.component));\n $.each(node.icon.classes, function(index, className) {\n icon.addClass(className);\n });\n eleToAddIcon.prepend(icon);\n } else {\n if (node.icon.component == 'moodle') {\n node.icon.component = 'core';\n }\n Templates.renderPix(node.icon.pix, node.icon.component, node.icon.title).then(function(html) {\n // Prepend.\n eleToAddIcon.prepend(html);\n return;\n }).catch(Notification.exception);\n }\n }\n\n li.append(p);\
n ul.append(li);\n\n if (node.children && node.children.length) {\n buildDOM(li, node.children);\n } else if (isBranch && !node.requiresajaxloading) {\n li.removeClass('contains_branch');\n p.addClass('emptybranch');\n }\n });\n\n rootElement.append(ul);\n var id = rootElement.attr('id') + '_group';\n ul.attr('id', id);\n rootElement.attr('aria-owns', id);\n rootElement.attr('role', 'treeitem');\n }\n\n return {\n render: function(element, nodes) {\n // The first element of the response is the existing node so we start with processing the children.\n if (nodes.children && nodes.children.length) {\n buildDOM(element, nodes.children);\n\n var item = element.children(\"[role='treeitem']\").first();\n var group = element.find('#' + item.attr('aria-owns'));\n\n item.attr('aria-expanded', tru
e);\n Aria.unhide(group);\n } else {\n if (element.hasClass('contains_branch')) {\n element.removeClass('contains_branch');\n element.addClass('emptybranch');\n }\n }\n }\n };\n});\n"],"names":["define","$","Templates","Notification","Url","Aria","NODETYPE","buildDOM","rootElement","nodes","ul","attr","hide","each","index","node","li","p","id","key","icon","isBranch","expandable","haschildren","addClass","requiresajaxloading","type","eleToAddIcon","link","title","append","name","hidden","span","alt","imageUrl","pix","component","classes","className","prepend","renderPix","then","html","catch","exception","children","length","removeClass","render","element","item","first","group","find","unhide","hasClass"],"mappings":"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"}