AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"permissionmanager.min.js","sources":["../src/permissionmanager.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 * @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 core/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/aj
ax.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.spanc
lass = '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 handleAddRol
e = 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"],"names":["define","$","config","notification","templates","Y","contextid","contextname","adminurl","overideableroles","SELECTORS","rolesloadedevent","Event","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","i","existingrolelinks","confirmationDetails","cap","context","message","core","dialogue","draggable","modal","closeButton","width","set","roles","disabled","filter","length","roledetails","push","show","on","handleRemoveRol
e","questionDetails","role","confirm","initialize","args","body"],"mappings":"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"}