From: skodak Date: Sat, 3 Mar 2007 21:07:07 +0000 (+0000) Subject: MDL-8523 Show default capabilities in role definition; added CSS popup_form spacing X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=3562486b7d1781bd0197c45279365628b2372044;p=moodle.git MDL-8523 Show default capabilities in role definition; added CSS popup_form spacing --- diff --git a/admin/roles/manage.html b/admin/roles/manage.html index 7a21c67396..ac9f8a374b 100755 --- a/admin/roles/manage.html +++ b/admin/roles/manage.html @@ -21,33 +21,34 @@ } ?>
+
- +
- + - + - + '; + if ($defaultcaps === false) { + $capclass = ''; + } else { + $capclass = 'capdefault'; + } + $isinherit = (!isset($defaultcaps[$capability->name]) or $defaultcaps[$capability->name] == CAP_INHERIT) ? $capclass : ''; + $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 : ''; + ?> - - - - + + + + diff --git a/admin/roles/manage.php b/admin/roles/manage.php index 87745efdc4..ec9ad157ef 100755 --- a/admin/roles/manage.php +++ b/admin/roles/manage.php @@ -337,7 +337,7 @@ echo '
'; if ($action == 'view') { popup_form('manage.php?action=view&roleid=', $roleoptions, 'switchrole', $roleid, '', '', '', - false, 'self', get_string('selectrole', 'role').': '); + false, 'self', get_string('selectrole', 'role')); $options = array(); $options['roleid'] = $roleid; diff --git a/lib/accesslib.php b/lib/accesslib.php index e6b425d788..960b2df47b 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -1550,6 +1550,21 @@ function moodle_install_roles() { } +/** + * Returns array of all legacy roles. + */ +function get_legacy_roles() { + return array( + 'guest' => 'moodle/legacy:guest', + 'user' => 'moodle/legacy:user', + 'student' => 'moodle/legacy:student', + 'teacher' => 'moodle/legacy:teacher', + 'editingteacher' => 'moodle/legacy:editingteacher', + 'coursecreator' => 'moodle/legacy:coursecreator', + 'admin' => 'moodle/legacy:admin' + ); +} + /** * Assign the defaults found in this capabality definition to roles that have * the corresponding legacy capabilities assigned to them. @@ -1564,19 +1579,17 @@ function moodle_install_roles() { */ function assign_legacy_capabilities($capability, $legacyperms) { + $legacyroles = get_legacy_roles(); + foreach ($legacyperms as $type => $perm) { $systemcontext = get_context_instance(CONTEXT_SYSTEM); - // The legacy capabilities are: - // 'moodle/legacy:guest' - // 'moodle/legacy:student' - // 'moodle/legacy:teacher' - // 'moodle/legacy:editingteacher' - // 'moodle/legacy:coursecreator' - // 'moodle/legacy:admin' + if (!array_key_exists($type, $legacyroles)) { + error('Incorrect legacy role definition for type: '.$type); + } - if ($roles = get_roles_with_capability('moodle/legacy:'.$type, CAP_ALLOW)) { + if ($roles = get_roles_with_capability($legacyroles[$type], CAP_ALLOW)) { foreach ($roles as $role) { // Assign a site level capability. if (!assign_capability($capability, $perm, $role->id, $systemcontext->id)) { @@ -2362,6 +2375,38 @@ function get_cached_capabilities($component='moodle') { return $storedcaps; } +/** + * Returns default capabilities for given legacy role type. + * + * @param string legacy role name + * @return array + */ +function get_default_capabilities($legacyrole) { + if (!$allcaps = get_records('capabilities')) { + error('Error: no capabilitites defined!'); + } + $alldefs = array(); + $defaults = array(); + $components = array(); + foreach ($allcaps as $cap) { + if (!array_search($cap->component, $components)) { + $components[] = $cap->component; + $alldefs = array_merge($alldefs, load_capability_def($cap->component)); + } + } + foreach($alldefs as $name=>$def) { + if (isset($def['legacy'][$legacyrole])) { + $defaults[$name] = $def['legacy'][$legacyrole]; + } + } + + //some exceptions + $defaults['moodle/legacy:'.$legacyrole] = CAP_ALLOW; + if ($legacyrole == 'admin') { + $defaults['moodle/site:doanything'] = CAP_ALLOW; + } + return $defaults; +} /** * Updates the capabilities table with the component capability definitions. diff --git a/theme/standard/styles_color.css b/theme/standard/styles_color.css index 686a36dc93..cace117ca0 100644 --- a/theme/standard/styles_color.css +++ b/theme/standard/styles_color.css @@ -981,6 +981,11 @@ body#mod-quiz-report table#attempts .r1 { border: 1px solid #cecece; } +#admin-roles-manage .capdefault { + background-color:#dddddd; + border: 1px solid #cecece; +} + #admin-roles-manage .rolecap, #admin-roles-override .rolecap { border:none; diff --git a/theme/standard/styles_layout.css b/theme/standard/styles_layout.css index 51402871e0..122b0aeaaa 100644 --- a/theme/standard/styles_layout.css +++ b/theme/standard/styles_layout.css @@ -340,6 +340,10 @@ form.popupform { display: inline; } +form.popupform label { + margin-right: 0.5em; +} + .arrow_button { margin-top:3em; }
: name); } else { - echo ''; + echo ''; if (isset($errors["name"])) formerr($errors["name"]); } ?>
: shortname); } else { - echo ''; + echo ''; if (isset($errors["shortname"])) formerr($errors["shortname"]); } ?>
: description); @@ -87,6 +88,27 @@ $component = ''; $strrisks = s(get_string('risks', 'role')); $strcapabilities = s(get_string('capabilities', 'role')); +// prepare legacy defaults +$legacyroles = get_legacy_roles(); + +$defaultcaps = false; +foreach($legacyroles as $ltype=>$lcap) { + if (empty($errors)) { + // check the capability override for this cap, this role in this context + $localoverride = get_local_override($roleid, $sitecontext->id, $lcap); + } else { + $localoverride->permission = $role->{$lcap}; + } + if (!empty($localoverride->permission) and $localoverride->permission == CAP_ALLOW) { + if ($defaultcaps !== false) { + //oh, several legacy caps selected! + $defaultcaps = false; + break; + } + $defaultcaps = get_default_capabilities($ltype); + } +} + foreach ($capabilities as $capability) { // prints a breaker if component or name or context level if ($capability->component != $component or $capability->contextlevel != $contextlevel) { @@ -100,7 +122,6 @@ foreach ($capabilities as $capability) { if (empty($errors)) { // check the capability override for this cap, this role in this context - $sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID); $localoverride = get_local_override($roleid, $sitecontext->id, $capability->name); } else { $localoverride = new object(); @@ -142,14 +163,28 @@ foreach ($capabilities as $capability) { } $riskinfo .= '
name); ?>name ?>permission) || $localoverride->permission==CAP_INHERIT){ echo 'checked="checked"'; }?> />permission) && $localoverride->permission==CAP_ALLOW){ echo 'checked="checked"'; }?> />permission) && $localoverride->permission==CAP_PREVENT){ echo 'checked="checked"'; }?> />permission) && $localoverride->permission==CAP_PROHIBIT){ echo 'checked="checked"'; }?> /> + permission) || $localoverride->permission==CAP_INHERIT){ echo 'checked="checked"'; }?> /> + permission) && $localoverride->permission==CAP_ALLOW){ echo 'checked="checked"'; }?> /> + permission) && $localoverride->permission==CAP_PREVENT){ echo 'checked="checked"'; }?> /> + permission) && $localoverride->permission==CAP_PROHIBIT){ echo 'checked="checked"'; }?> />