MDL-70320 permission overrides: role names were double-escaped
[moodle.git] / lib / amd / build / permissionmanager.min.js.map
CommitLineData
374d3e77 1{"version":3,"sources":["../src/permissionmanager.js"],"names":["define","$","config","notification","templates","Y","SELECTORS","ADDROLE","REMOVEROLE","UNPROHIBIT","rolesloadedevent","Event","contextid","contextname","adminurl","overideableroles","panel","loadOverideableRoles","params","getroles","sesskey","post","done","data","trigger","err","exception","fail","jqXHR","status","error","changePermissions","row","roleid","action","M","cfg","capability","templatedata","rolename","imageurl","util","image_url","spanclass","linkclass","icon","iconalt","get_string","find","first","closest","remove","render","content","insertBefore","allowedLink","hide","handleAddRole","e","preventDefault","link","currentTarget","one","use","confirmationDetails","cap","context","message","core","dialogue","draggable","modal","closeButton","width","set","i","existingrolelinks","roles","disabled","disable","filter","length","roledetails","push","show","on","handleRemoveRole","questionDetails","role","confirm","initialize","args","body"],"mappings":"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","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 * @package core\n * @class permissionmanager\n * @copyright 2015 Martin Mastny <mastnym@vscht.cz>\n * @since 3.0\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n /**\n * @module admin/permissionmanager\n */\ndefine(['jquery', 'core/config', 'core/notification', 'core/templates', 'core/yui'],\n function($, config, notification, templates, Y) {\n\n /**\n * Used CSS selectors\n * @access private\n */\n var SELECTORS = {\n ADDROLE: 'a.allowlink, a.prohibitlink',\n REMOVEROLE: 'a.preventlink, a.unprohibitlink',\n UNPROHIBIT: 'a.unprohibitlink'\n };\n var rolesloadedevent = $.Event('rolesloaded');\n var contextid;\n var contextname;\n var adminurl;\n var overideableroles;\n var panel = null;\n\n /**\n * Load all possible roles, which could be assigned from server\n *\n * @access private\n * @method loadOverideableRoles\n */\n var loadOverideableRoles = function() {\n var params = {\n contextid: contextid,\n getroles: 1,\n sesskey: config.sesskey\n };\n\n // Need to tell jQuery to expect JSON as the content type may not be correct (MDL-55041).\n $.post(adminurl + 'roles/ajax.php', params, null, 'json')\n .done(function(data) {\n try {\n overideableroles = data;\n loadOverideableRoles = function() {\n $('body').trigger(rolesloadedevent);\n };\n loadOverideableRoles();\n } catch (err) {\n notification.exception(err);\n }\n })\n .fail(function(jqXHR, status, error) {\n notification.exception(error);\n });\n };\n\n /**\n * Perform the UI changes after server change\n *\n * @access private\n * @method changePermissions\n * @param {JQuery} row\n * @param {int} roleid\n * @param {string} action\n */\n var changePermissions = function(row, roleid, action) {\n var params = {\n contextid: contextid,\n roleid: roleid,\n sesskey: M.cfg.sesskey,\n action: action,\n capability: row.data('name')\n };\n $.post(adminurl + 'roles/ajax.php', params, null, 'json')\n .done(function(data) {\n var action = data;\n try {\n var templatedata = {rolename: overideableroles[roleid],\n roleid: roleid,\n adminurl: adminurl,\n imageurl: M.util.image_url('t/delete', 'moodle')\n };\n switch (action) {\n case 'allow':\n templatedata.spanclass = 'allowed';\n templatedata.linkclass = 'preventlink';\n templatedata.action = 'prevent';\n templatedata.icon = 't/delete';\n templatedata.iconalt = M.util.get_string('deletexrole', 'core_role', overideableroles[roleid]);\n break;\n case 'prohibit':\n templatedata.spanclass = 'forbidden';\n templatedata.linkclass = 'unprohibitlink';\n templatedata.action = 'unprohibit';\n templatedata.icon = 't/delete';\n templatedata.iconalt = M.util.get_string('deletexrole', 'core_role', overideableroles[roleid]);\n break;\n case 'prevent':\n row.find('a[data-role-id=\"' + roleid + '\"]').first().closest('.allowed').remove();\n return;\n case 'unprohibit':\n row.find('a[data-role-id=\"' + roleid + '\"]').first().closest('.forbidden').remove();\n return;\n default:\n return;\n }\n templates.render('core/permissionmanager_role', templatedata)\n .done(function(content) {\n if (action == 'allow') {\n $(content).insertBefore(row.find('.allowmore:first'));\n } else if (action == 'prohibit') {\n $(content).insertBefore(row.find('.prohibitmore:first'));\n // Remove allowed link\n var allowedLink = row.find('.allowedroles').first().find('a[data-role-id=\"' + roleid + '\"]');\n if (allowedLink) {\n allowedLink.first().closest('.allowed').remove();\n }\n }\n panel.hide();\n })\n .fail(notification.exception);\n } catch (err) {\n notification.exception(err);\n }\n })\n .fail(function(jqXHR, status, error) {\n notification.exception(error);\n });\n };\n\n /**\n * Prompts user for selecting a role which is permitted\n *\n * @access private\n * @method handleAddRole\n * @param {event} e\n */\n var handleAddRole = function(e) {\n e.preventDefault();\n\n var link = $(e.currentTarget);\n\n // TODO: MDL-57778 Convert to core/modal.\n $('body').one('rolesloaded', function() {\n Y.use('moodle-core-notification-dialogue', function() {\n var action = link.data('action');\n var row = link.closest('tr.rolecap');\n var confirmationDetails = {\n cap: row.data('humanname'),\n context: contextname\n };\n var message = M.util.get_string('role' + action + 'info', 'core_role', confirmationDetails);\n if (panel === null) {\n panel = new M.core.dialogue({\n draggable: true,\n modal: true,\n closeButton: true,\n width: '450px'\n });\n }\n panel.set('headerContent', M.util.get_string('role' + action + 'header', 'core_role'));\n\n var i, existingrolelinks;\n\n var roles = [];\n switch (action) {\n case 'allow':\n existingrolelinks = row.find(SELECTORS.REMOVEROLE);\n break;\n case 'prohibit':\n existingrolelinks = row.find(SELECTORS.UNPROHIBIT);\n break;\n }\n for (i in overideableroles) {\n var disabled = '';\n var disable = existingrolelinks.filter(\"[data-role-id='\" + i + \"']\").length;\n if (disable) {\n disabled = 'disabled';\n }\n var roledetails = {roleid: i, rolename: overideableroles[i], disabled: disabled};\n roles.push(roledetails);\n }\n\n templates.render('core/permissionmanager_panelcontent', {message: message, roles: roles})\n .done(function(content) {\n panel.set('bodyContent', content);\n panel.show();\n $('div.role_buttons').on('click', 'button', function(e) {\n var roleid = $(e.currentTarget).data('role-id');\n changePermissions(row, roleid, action);\n });\n })\n .fail(notification.exception);\n\n });\n });\n loadOverideableRoles();\n };\n\n /**\n * Prompts user when removing permission\n *\n * @access private\n * @method handleRemoveRole\n * @param {event} e\n */\n var handleRemoveRole = function(e) {\n e.preventDefault();\n var link = $(e.currentTarget);\n $('body').one('rolesloaded', function() {\n var action = link.data('action');\n var roleid = link.data('role-id');\n var row = link.closest('tr.rolecap');\n var questionDetails = {\n role: overideableroles[roleid],\n cap: row.data('humanname'),\n context: contextname\n };\n\n notification.confirm(M.util.get_string('confirmunassigntitle', 'core_role'),\n M.util.get_string('confirmrole' + action, 'core_role', questionDetails),\n M.util.get_string('confirmunassignyes', 'core_role'),\n M.util.get_string('confirmunassignno', 'core_role'),\n function() {\n changePermissions(row, roleid, action);\n }\n );\n });\n loadOverideableRoles();\n };\n\n return /** @alias module:core/permissionmanager */ {\n /**\n * Initialize permissionmanager\n * @access public\n * @param {Object} args\n */\n initialize: function(args) {\n contextid = args.contextid;\n contextname = args.contextname;\n adminurl = args.adminurl;\n var body = $('body');\n body.on('click', SELECTORS.ADDROLE, handleAddRole);\n body.on('click', SELECTORS.REMOVEROLE, handleRemoveRole);\n }\n };\n});\n"],"file":"permissionmanager.min.js"}