__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* @copyright 2015 Martin Mastny <mastnym@vscht.cz>
* @since 3.0
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* @module core/permissionmanager
*/
define(['jquery', 'core/config', 'core/notification', 'core/templates', 'core/yui'],
function($, config, notification, templates, Y) {
/**
* Used CSS selectors
* @access private
*/
var SELECTORS = {
ADDROLE: 'a.allowlink, a.prohibitlink',
REMOVEROLE: 'a.preventlink, a.unprohibitlink',
UNPROHIBIT: 'a.unprohibitlink'
};
var rolesloadedevent = $.Event('rolesloaded');
var contextid;
var contextname;
var adminurl;
var overideableroles;
var panel = null;
/**
* Load all possible roles, which could be assigned from server
*
* @access private
* @method loadOverideableRoles
*/
var loadOverideableRoles = function() {
var params = {
contextid: contextid,
getroles: 1,
sesskey: config.sesskey
};
// Need to tell jQuery to expect JSON as the content type may not be correct (MDL-55041).
$.post(adminurl + 'roles/ajax.php', params, null, 'json')
.done(function(data) {
try {
overideableroles = data;
loadOverideableRoles = function() {
$('body').trigger(rolesloadedevent);
};
loadOverideableRoles();
} catch (err) {
notification.exception(err);
}
})
.fail(function(jqXHR, status, error) {
notification.exception(error);
});
};
/**
* Perform the UI changes after server change
*
* @access private
* @method changePermissions
* @param {JQuery} row
* @param {int} roleid
* @param {string} action
*/
var changePermissions = function(row, roleid, action) {
var params = {
contextid: contextid,
roleid: roleid,
sesskey: M.cfg.sesskey,
action: action,
capability: row.data('name')
};
$.post(adminurl + 'roles/ajax.php', params, null, 'json')
.done(function(data) {
var action = data;
try {
var templatedata = {rolename: overideableroles[roleid],
roleid: roleid,
adminurl: adminurl,
imageurl: M.util.image_url('t/delete', 'moodle')
};
switch (action) {
case 'allow':
templatedata.spanclass = 'allowed';
templatedata.linkclass = 'preventlink';
templatedata.action = 'prevent';
templatedata.icon = 't/delete';
templatedata.iconalt = M.util.get_string('deletexrole', 'core_role', overideableroles[roleid]);
break;
case 'prohibit':
templatedata.spanclass = 'forbidden';
templatedata.linkclass = 'unprohibitlink';
templatedata.action = 'unprohibit';
templatedata.icon = 't/delete';
templatedata.iconalt = M.util.get_string('deletexrole', 'core_role', overideableroles[roleid]);
break;
case 'prevent':
row.find('a[data-role-id="' + roleid + '"]').first().closest('.allowed').remove();
return;
case 'unprohibit':
row.find('a[data-role-id="' + roleid + '"]').first().closest('.forbidden').remove();
return;
default:
return;
}
templates.render('core/permissionmanager_role', templatedata)
.done(function(content) {
if (action == 'allow') {
$(content).insertBefore(row.find('.allowmore').first());
} else if (action == 'prohibit') {
$(content).insertBefore(row.find('.prohibitmore').first());
// Remove allowed link
var allowedLink = row.find('.allowedroles').first().find('a[data-role-id="' + roleid + '"]');
if (allowedLink) {
allowedLink.first().closest('.allowed').remove();
}
}
panel.hide();
})
.fail(notification.exception);
} catch (err) {
notification.exception(err);
}
})
.fail(function(jqXHR, status, error) {
notification.exception(error);
});
};
/**
* Prompts user for selecting a role which is permitted
*
* @access private
* @method handleAddRole
* @param {event} e
*/
var handleAddRole = function(e) {
e.preventDefault();
var link = $(e.currentTarget);
// TODO: MDL-57778 Convert to core/modal.
$('body').one('rolesloaded', function() {
Y.use('moodle-core-notification-dialogue', function() {
var action = link.data('action');
var row = link.closest('tr.rolecap');
var confirmationDetails = {
cap: row.data('humanname'),
context: contextname
};
var message = M.util.get_string('role' + action + 'info', 'core_role', confirmationDetails);
if (panel === null) {
panel = new M.core.dialogue({
draggable: true,
modal: true,
closeButton: true,
width: '450px'
});
}
panel.set('headerContent', M.util.get_string('role' + action + 'header', 'core_role'));
var i, existingrolelinks;
var roles = [];
switch (action) {
case 'allow':
existingrolelinks = row.find(SELECTORS.REMOVEROLE);
break;
case 'prohibit':
existingrolelinks = row.find(SELECTORS.UNPROHIBIT);
break;
}
for (i in overideableroles) {
var disabled = '';
var disable = existingrolelinks.filter("[data-role-id='" + i + "']").length;
if (disable) {
disabled = 'disabled';
}
var roledetails = {roleid: i, rolename: overideableroles[i], disabled: disabled};
roles.push(roledetails);
}
templates.render('core/permissionmanager_panelcontent', {message: message, roles: roles})
.done(function(content) {
panel.set('bodyContent', content);
panel.show();
$('div.role_buttons').on('click', 'button', function(e) {
var roleid = $(e.currentTarget).data('role-id');
changePermissions(row, roleid, action);
});
})
.fail(notification.exception);
});
});
loadOverideableRoles();
};
/**
* Prompts user when removing permission
*
* @access private
* @method handleRemoveRole
* @param {event} e
*/
var handleRemoveRole = function(e) {
e.preventDefault();
var link = $(e.currentTarget);
$('body').one('rolesloaded', function() {
var action = link.data('action');
var roleid = link.data('role-id');
var row = link.closest('tr.rolecap');
var questionDetails = {
role: overideableroles[roleid],
cap: row.data('humanname'),
context: contextname
};
notification.confirm(M.util.get_string('confirmunassigntitle', 'core_role'),
M.util.get_string('confirmrole' + action, 'core_role', questionDetails),
M.util.get_string('confirmunassignyes', 'core_role'),
M.util.get_string('confirmunassignno', 'core_role'),
function() {
changePermissions(row, roleid, action);
}
);
});
loadOverideableRoles();
};
return /** @alias module:core/permissionmanager */ {
/**
* Initialize permissionmanager
* @access public
* @param {Object} args
*/
initialize: function(args) {
contextid = args.contextid;
contextname = args.contextname;
adminurl = args.adminurl;
var body = $('body');
body.on('click', SELECTORS.ADDROLE, handleAddRole);
body.on('click', SELECTORS.REMOVEROLE, handleRemoveRole);
}
};
});
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| bulkactions | Folder | 0777 |
|
|
| check | Folder | 0777 |
|
|
| comboboxsearch | Folder | 0777 |
|
|
| datafilter | Folder | 0777 |
|
|
| emoji | Folder | 0777 |
|
|
| local | Folder | 0777 |
|
|
| moodlenet | Folder | 0777 |
|
|
| adapter.js | File | 123.08 KB | 0777 |
|
| addblockmodal.js | File | 4.34 KB | 0777 |
|
| ajax.js | File | 11.97 KB | 0777 |
|
| aria.js | File | 1011 B | 0777 |
|
| auto_rows.js | File | 3.46 KB | 0777 |
|
| autoscroll.js | File | 6.49 KB | 0777 |
|
| backoff_timer.js | File | 4.98 KB | 0777 |
|
| chart_axis.js | File | 7.39 KB | 0777 |
|
| chart_bar.js | File | 3.08 KB | 0777 |
|
| chart_base.js | File | 11.36 KB | 0777 |
|
| chart_builder.js | File | 1.65 KB | 0777 |
|
| chart_line.js | File | 2.08 KB | 0777 |
|
| chart_output.js | File | 1.08 KB | 0777 |
|
| chart_output_base.js | File | 2.03 KB | 0777 |
|
| chart_output_chartjs.js | File | 11.5 KB | 0777 |
|
| chart_output_htmltable.js | File | 3.3 KB | 0777 |
|
| chart_pie.js | File | 3.03 KB | 0777 |
|
| chart_series.js | File | 8.35 KB | 0777 |
|
| chartjs-lazy.js | File | 497.88 KB | 0777 |
|
| chartjs.js | File | 913 B | 0777 |
|
| checkbox-toggleall.js | File | 12.78 KB | 0777 |
|
| config.js | File | 978 B | 0777 |
|
| copy_to_clipboard.js | File | 7.38 KB | 0777 |
|
| custom_interaction_events.js | File | 22.18 KB | 0777 |
|
| datafilter.js | File | 17.92 KB | 0777 |
|
| dragdrop.js | File | 12.92 KB | 0777 |
|
| drawer.js | File | 3.49 KB | 0777 |
|
| drawer_events.js | File | 967 B | 0777 |
|
| dropzone.js | File | 5.71 KB | 0777 |
|
| dynamic_tabs.js | File | 6.67 KB | 0777 |
|
| edit_switch.js | File | 3.45 KB | 0777 |
|
| event.js | File | 2.53 KB | 0777 |
|
| event_dispatcher.js | File | 2.79 KB | 0777 |
|
| fetch.js | File | 9.4 KB | 0777 |
|
| first.js | File | 1.33 KB | 0777 |
|
| form-autocomplete.js | File | 53.74 KB | 0777 |
|
| form-cohort-selector.js | File | 2.5 KB | 0777 |
|
| form-course-selector.js | File | 3.77 KB | 0777 |
|
| fragment.js | File | 5.03 KB | 0777 |
|
| fullscreen.js | File | 1.62 KB | 0777 |
|
| icon_system.js | File | 3.39 KB | 0777 |
|
| icon_system_fontawesome.js | File | 5.35 KB | 0777 |
|
| icon_system_standard.js | File | 1.96 KB | 0777 |
|
| inplace_editable.js | File | 16.82 KB | 0777 |
|
| key_codes.js | File | 1.34 KB | 0777 |
|
| loadingicon.js | File | 3.88 KB | 0777 |
|
| localstorage.js | File | 2.24 KB | 0777 |
|
| log.js | File | 1.74 KB | 0777 |
|
| loglevel.js | File | 12.38 KB | 0777 |
|
| menu_navigation.js | File | 9.2 KB | 0777 |
|
| modal.js | File | 36.33 KB | 0777 |
|
| modal_backdrop.js | File | 4.17 KB | 0777 |
|
| modal_cancel.js | File | 1.6 KB | 0777 |
|
| modal_copy_to_clipboard.js | File | 3.75 KB | 0777 |
|
| modal_delete_cancel.js | File | 2.36 KB | 0777 |
|
| modal_events.js | File | 1.28 KB | 0777 |
|
| modal_factory.js | File | 5.91 KB | 0777 |
|
| modal_registry.js | File | 2.26 KB | 0777 |
|
| modal_save_cancel.js | File | 2.34 KB | 0777 |
|
| moremenu.js | File | 10.3 KB | 0777 |
|
| mustache.js | File | 28.75 KB | 0777 |
|
| network.js | File | 9.66 KB | 0777 |
|
| normalise.js | File | 2.43 KB | 0777 |
|
| notification.js | File | 11.57 KB | 0777 |
|
| page_global.js | File | 5.38 KB | 0777 |
|
| paged_content.js | File | 2.87 KB | 0777 |
|
| paged_content_events.js | File | 1.17 KB | 0777 |
|
| paged_content_factory.js | File | 20.61 KB | 0777 |
|
| paged_content_pages.js | File | 11.75 KB | 0777 |
|
| paged_content_paging_bar.js | File | 20.36 KB | 0777 |
|
| paged_content_paging_bar_limit_selector.js | File | 2.36 KB | 0777 |
|
| paged_content_paging_dropdown.js | File | 7.36 KB | 0777 |
|
| pagehelpers.js | File | 5.38 KB | 0777 |
|
| pending.js | File | 4.46 KB | 0777 |
|
| permissionmanager.js | File | 9.77 KB | 0777 |
|
| popover_region_controller.js | File | 13.16 KB | 0777 |
|
| popper.js | File | 79.2 KB | 0777 |
|
| popper2.js | File | 61.59 KB | 0777 |
|
| prefetch.js | File | 5.82 KB | 0777 |
|
| process_monitor.js | File | 3.55 KB | 0777 |
|
| pubsub.js | File | 2.17 KB | 0777 |
|
| reactive.js | File | 1.38 KB | 0777 |
|
| scroll_manager.js | File | 5.5 KB | 0777 |
|
| sessionstorage.js | File | 2.22 KB | 0777 |
|
| showhidesettings.js | File | 11.82 KB | 0777 |
|
| showmore.js | File | 1.83 KB | 0777 |
|
| sortable_list.js | File | 29.62 KB | 0777 |
|
| sticky-footer.js | File | 3.16 KB | 0777 |
|
| storage_validation.js | File | 1.36 KB | 0777 |
|
| storagewrapper.js | File | 5.36 KB | 0777 |
|
| stored_progress.js | File | 3.15 KB | 0777 |
|
| str.js | File | 10.01 KB | 0777 |
|
| tag.js | File | 15.02 KB | 0777 |
|
| templates.js | File | 10.83 KB | 0777 |
|
| toast.js | File | 4.26 KB | 0777 |
|
| togglesensitive.js | File | 5.15 KB | 0777 |
|
| tooltip.js | File | 4.09 KB | 0777 |
|
| tree.js | File | 18.39 KB | 0777 |
|
| truncate.js | File | 6.56 KB | 0777 |
|
| url.js | File | 3.65 KB | 0777 |
|
| user_date.js | File | 9.27 KB | 0777 |
|
| userfeedback.js | File | 2.91 KB | 0777 |
|
| usermenu.js | File | 5.13 KB | 0777 |
|
| utility.js | File | 7.5 KB | 0777 |
|
| utils.js | File | 4.83 KB | 0777 |
|
| yui.js | File | 1.13 KB | 0777 |
|