case 'add':
$submitlabel = get_string('addrole', 'role');
break;
- case 'view':
- $submitlabel = get_string('listallroles', 'role');
- break;
case 'edit':
default:
$submitlabel = get_string('savechanges');
if ($action == 'view') {
?>
-<div class="duplicaterole">
-<a href="manage.php?roleid=<?php p($roleid); ?>&action=duplicate"><?php print_string('duplicaterole', 'role'); ?></a>
-</div>
-<?php
- }
+<?php
+ }
?>
<form id="rolesform" action="manage.php" method="post">
<fieldset class="invisiblefieldset">
<input type="hidden" name="action" value="<?php if ($action != 'view') { echo p($action); } ?>" />
</fieldset>
<table cellpadding="9" cellspacing="0" align="center">
-<tr valign="top">
- <td align="right"><label for="name"><?php print_string('name') ?></label></td>
- <td><?php
- if ($action == 'view') {
- p($role->name);
- } else {
- echo '<input type="text" id="name" name="name" maxlength="254" size="50" value="'.s($role->name).'" />';
- if (isset($errors["name"])) formerr($errors["name"]);
- } ?></td>
-</tr>
-<tr valign="top">
- <td align="right"><label for="shortname"><?php print_string('shortname') ?></label></td>
- <td><?php
- if ($action == 'view') {
- p($role->shortname);
- } else {
- echo '<input type="text" id="shortname" name="shortname" maxlength="20" size="15" value="'.s($role->shortname).'" />';
- if (isset($errors["shortname"])) formerr($errors["shortname"]);
- } ?></td>
-</tr>
-<tr valign="top">
- <td align="right"><label for="edit-description"><?php print_string('description') ?></label></td>
- <td><?php
- if ($action == 'view') {
- p($role->description);
- $usehtmleditor = false;
- } else {
- print_textarea($usehtmleditor, 10, 50, 50, 10, 'description', $role->description);
- } ?></td>
-</tr>
+<?php if ($action == 'view') { ?>
+ <tr valign="top">
+ <td align="right"><?php print_string('name') ?>:</td>
+ <td><?php p($role->name); ?></td>
+ </tr>
+ <tr valign="top">
+ <td align="right"><?php print_string('shortname') ?>:</td>
+ <td><?php p($role->shortname); ?></td>
+ </tr>
+ <tr valign="top">
+ <td align="right"><?php print_string('description') ?>:</td>
+ <td><?php p($role->description); $usehtmleditor = false; ?></td>
+ </tr>
+<?php } else { ?>
+ <tr valign="top">
+ <td align="right"><label for="name"><?php print_string('name') ?></label></td>
+ <td><?php
+ echo '<input type="text" id="name" name="name" maxlength="254" size="50" value="'.s($role->name).'" />';
+ if (isset($errors["name"])) formerr($errors["name"]);
+ ?></td>
+ </tr>
+ <tr valign="top">
+ <td align="right"><label for="shortname"><?php print_string('shortname') ?></label></td>
+ <td><?php
+ echo '<input type="text" id="shortname" name="shortname" maxlength="20" size="15" value="'.s($role->shortname).'" />';
+ if (isset($errors["shortname"])) formerr($errors["shortname"]);
+ ?></td>
+ </tr>
+ <tr valign="top">
+ <td align="right"><label for="edit-description"><?php print_string('description') ?></label></td>
+ <td><?php
+ print_textarea($usehtmleditor, 10, 50, 50, 10, 'description', $role->description);
+ ?></td>
+ </tr>
+<?php } ?>
</table>
-<?php
+<?php
print_heading_with_help(get_string('permissions','role'), 'permissions');
$strinherit = get_string('inherit','role');
$isallow = (isset($defaultcaps[$capability->name]) and $defaultcaps[$capability->name] == CAP_ALLOW) ? $capclass : '';
$isprevent = (isset($defaultcaps[$capability->name]) and $defaultcaps[$capability->name] == CAP_PREVENT) ? $capclass : '';
$isprohibit = (isset($defaultcaps[$capability->name]) and $defaultcaps[$capability->name] == CAP_PROHIBIT) ? $capclass : '';
-
+
?>
<tr class="rolecap <?php echo $rowclasses; ?>">
<?php } ?>
</table>
-<div class="submit" align="center">
-<input type="submit" value="<?php p($submitlabel) ?>" />
<?php if ($action != 'view') { ?>
+<div class="submit buttons">
+<input type="submit" value="<?php p($submitlabel) ?>" />
<input type="submit" name="cancel" value="<?php print_string('cancel') ?>" />
-<?php } ?>
</div>
+<?php } ?>
</form>
$cancel = optional_param('cancel', 0, PARAM_BOOL);
$sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID);
-
+
require_capability('moodle/role:manage', $sitecontext);
-
+
if ($cancel) {
redirect('manage.php');
}
case 'delete':
if (in_array($roleid, $defaultroles)) {
- error('This role is used as one of the default system roles, it can not be deleted');
+ error('This role is used as one of the default system roles, it can not be deleted');
}
if ($confirm and data_submitted() and confirm_sesskey()) {
if (!delete_role($roleid)) {
redirect('manage.php');
break;
+
case 'duplicate':
+ if (!array_key_exists($roleid, $roles)) {
+ redirect('manage.php');
+ }
+
+ if ($confirm and data_submitted() and confirm_sesskey()) {
+ //ok - lets duplicate!
+ } else {
+ // show confirmation
+ admin_externalpage_print_header($adminroot);
+ $optionsyes = array('action'=>'duplicate', 'roleid'=>$roleid, 'sesskey'=>sesskey(), 'confirm'=>1);
+ $optionsno = array('action'=>'view', 'roleid'=>$roleid);
+ $a = new object();
+ $a->id = $roleid;
+ $a->name = $roles[$roleid]->name;
+ $a->shortname = $roles[$roleid]->shortname;
+ notice_yesno(get_string('duplicaterolesure', 'role', $a), 'manage.php', 'manage.php', $optionsyes, $optionsno, 'post', 'get');
+ admin_externalpage_print_footer($adminroot);
+ die;
+ }
+
// duplicate current role
$sourcerole = get_record('role','id',$roleid);
-
+
$fullname = $sourcerole->name;
$shortname = $sourcerole->shortname;
$currentfullname = "";
$currentshortname = "";
$counter = 0;
-
- // find a name for the duplicated role
+
+ // find a name for the duplicated role
do {
if ($counter) {
$suffixfull = " ".get_string("copyasnoun")." ".$counter;
$courseshort = get_record("role","shortname",addslashes($currentshortname));
$counter++;
} while ($coursefull || $courseshort);
-
- $description = 'duplicate of '.$fullname;
+
+ $description = 'duplicate of '.$fullname;
if ($newrole = create_role($currentfullname, $currentshortname, $description)) {
// dupilcate all the capabilities
role_cap_duplicate($sourcerole, $newrole);
- }
+ }
redirect('manage.php');
break;
+
+ case 'reset':
+ if (!array_key_exists($roleid, $roles)) {
+ redirect('manage.php');
+ }
+
+ if ($confirm and data_submitted() and confirm_sesskey()) {
+ $legacyroles = get_legacy_roles();
+
+ $defaultcaps = array();
+ foreach($legacyroles as $ltype=>$lcap) {
+ $localoverride = get_local_override($roleid, $sitecontext->id, $lcap);
+ if (!empty($localoverride->permission) and $localoverride->permission == CAP_ALLOW) {
+ //choose first selected legacy capability
+ $defaultcaps = get_default_capabilities($ltype);
+ break;
+ }
+ }
+
+ delete_records('role_capabilities', 'roleid', $roleid);
+ if (!empty($defaultcaps)) {
+ foreach($defaultcaps as $cap=>$permission) {
+ assign_capability($cap, $permission, $roleid, $sitecontext->id);
+ }
+ }
+ redirect('manage.php?action=view&roleid='.$roleid);
+
+ } else {
+ // show confirmation
+ admin_externalpage_print_header($adminroot);
+ $optionsyes = array('action'=>'reset', 'roleid'=>$roleid, 'sesskey'=>sesskey(), 'confirm'=>1);
+ $optionsno = array('action'=>'view', 'roleid'=>$roleid);
+ $a = new object();
+ $a->id = $roleid;
+ $a->name = $roles[$roleid]->name;
+ $a->shortname = $roles[$roleid]->shortname;
+ notice_yesno(get_string('resetrolesure', 'role', $a), 'manage.php', 'manage.php', $optionsyes, $optionsno, 'post', 'get');
+ admin_externalpage_print_footer($adminroot);
+ die;
+ }
+
+ break;
+
default:
break;
}
echo '<div class="selector">';
if ($action == 'view') {
- popup_form('manage.php?action=view&roleid=', $roleoptions, 'switchrole', $roleid, '', '', '',
+ popup_form('manage.php?action=view&roleid=', $roleoptions, 'switchrole', $roleid, '', '', '',
false, 'self', get_string('selectrole', 'role'));
+ echo '<div class="buttons">';
+
$options = array();
$options['roleid'] = $roleid;
$options['action'] = 'edit';
print_single_button('manage.php', $options, get_string('edit'));
+ $options['action'] = 'reset';
+ print_single_button('manage.php', $options, get_string('reset'));
+ $options['action'] = 'duplicate';
+ print_single_button('manage.php', $options, get_string('duplicaterole', 'role'));
+ print_single_button('manage.php', null, get_string('listallroles', 'role'));
+ echo '</div>';
}
echo '</div>';
$systemcontext = get_context_instance(CONTEXT_SYSTEM);
$caps = get_records_sql("SELECT * FROM {$CFG->prefix}role_capabilities
WHERE roleid = $sourcerole->id
- AND contextid = $systemcontext->id");
+ AND contextid = $systemcontext->id");
// adding capabilities
foreach ($caps as $cap) {
unset($cap->id);
$cap->roleid = $targetrole;
insert_record('role_capabilities', $cap);
- }
+ }
}
?>