From: tjhunt Date: Wed, 25 Mar 2009 02:17:14 +0000 (+0000) Subject: switch roles: MDL-18132 Convert allow override page to use the shared code. X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=91eb445ca07ec01ce3bfb2a659bcbc39f0f27fcb;p=moodle.git switch roles: MDL-18132 Convert allow override page to use the shared code. --- diff --git a/admin/roles/allowassign.php b/admin/roles/allow.php similarity index 76% rename from admin/roles/allowassign.php rename to admin/roles/allow.php index 2620697507..d870e74fd9 100755 --- a/admin/roles/allowassign.php +++ b/admin/roles/allow.php @@ -39,17 +39,30 @@ require_once($CFG->libdir . '/adminlib.php'); require_once($CFG->dirroot . '/' . $CFG->admin . '/roles/lib.php'); - admin_externalpage_setup('defineroles', '', array(), $CFG->wwwroot . '/' . $CFG->admin . '/roles/allowassign.php'); + $mode = required_param('mode', PARAM_ACTION); + $classformode = array( + 'assign' => 'role_allow_assign_page', + 'override' => 'role_allow_override_page', + 'switch' => 'role_allow_switch_page' + ); + if (!isset($classformode[$mode])) { + print_error('invalidmode', '', '', $mode); + } + + $baseurl = $CFG->wwwroot . '/' . $CFG->admin . '/roles/allow.php?mode=' . $mode; + admin_externalpage_setup('defineroles', '', array(), $baseurl); require_login(); - $controller = new role_allow_assign_page(); - require_capability('moodle/role:manage', $controller->get_context()); + $syscontext = get_context_instance(CONTEXT_SYSTEM); + require_capability('moodle/role:manage', $syscontext); + + $controller = new $classformode[$mode](); if (optional_param('submit', false, PARAM_BOOL) && data_submitted() && confirm_sesskey()) { $controller->process_submission(); - mark_context_dirty($this->systemcontext->path); - add_to_log(SITEID, 'role', 'edit allow assign', 'admin/roles/allowassign.php', '', '', $USER->id); - redirect($CFG->wwwroot . '/' . $CFG->admin . '/roles/allowassign.php'); + mark_context_dirty($syscontext->path); + add_to_log(SITEID, 'role', 'edit allow ' . $mode, str_replace($CFG->wwwroot . '/', '', $baseurl), '', '', $USER->id); + redirect($baseurl); } $controller->load_current_settings(); @@ -57,14 +70,14 @@ /// Display the editing form. admin_externalpage_print_header(); - $currenttab='allowassign'; + $currenttab = $mode; require_once('managetabs.php'); $table = $controller->get_table(); - print_simple_box(get_string('configallowassign', 'admin'), 'center'); + print_simple_box($controller->get_intro_text(), 'center'); - echo '
'; + echo ''; echo ''; print_table($table); echo '
'; diff --git a/admin/roles/allowoverride.php b/admin/roles/allowoverride.php deleted file mode 100755 index 1d1dd2fb39..0000000000 --- a/admin/roles/allowoverride.php +++ /dev/null @@ -1,126 +0,0 @@ -libdir.'/adminlib.php'); - - require_login(); - $systemcontext = get_context_instance(CONTEXT_SYSTEM); - require_capability('moodle/role:manage', $systemcontext); - -/// Get all roles - $roles = get_all_roles(); - role_fix_names($roles, $systemcontext, ROLENAME_ORIGINAL); - -/// Process form submission - if (optional_param('submit', false, PARAM_BOOL) && data_submitted() && confirm_sesskey()) { - /// Delete all records, then add back the ones that should be allowed. - $DB->delete_records('role_allow_override'); - foreach ($roles as $fromroleid => $notused) { - foreach ($roles as $targetroleid => $alsonotused) { - if (optional_param('s_' . $fromroleid . '_' . $targetroleid, false, PARAM_BOOL)) { - allow_override($fromroleid, $targetroleid); - } - } - } - - /// Updated allowoverrides sitewide, so force a premissions refresh, and redirect. - mark_context_dirty($systemcontext->path); - add_to_log(SITEID, 'role', 'edit allow override', 'admin/roles/allowoverride.php', '', '', $USER->id); - redirect($CFG->wwwroot . '/' . $CFG->admin . '/roles/allowoverride.php'); - } - -/// Load the current settings - $allowed = array(); - foreach ($roles as $role) { - // Make an array $role->id => false. This is probalby too clever for its own good.1 - $allowed[$role->id] = array_combine(array_keys($roles), array_fill(0, count($roles), false)); - } - $raas = $DB->get_recordset('role_allow_override'); - foreach ($raas as $raa) { - $allowed[$raa->roleid][$raa->allowoverride] = true; - } - -/// Display the editing form. - admin_externalpage_setup('defineroles', '', array(), $CFG->wwwroot . '/' . $CFG->admin . '/roles/allowoverride.php'); - admin_externalpage_print_header(); - - $currenttab='allowoverride'; - require_once('managetabs.php'); - - $table->tablealign = 'center'; - $table->cellpadding = 5; - $table->cellspacing = 0; - $table->width = '90%'; - $table->align[] = 'left'; - $table->rotateheaders = true; - $table->head = array(' '); - -/// Add role name headers. - foreach ($roles as $targetrole) { - $table->head[] = $targetrole->localname; - $table->align[] = 'left'; - } - -/// Now the rest of the table. - foreach ($roles as $fromrole) { - $row = array($fromrole->localname); - $a = new stdClass; - $a->fromrole = $fromrole->localname; - foreach ($roles as $targetrole) { - if ($allowed[$fromrole->id][$targetrole->id]) { - $checked = ' checked="checked"'; - } else { - $checked = ''; - } - $a->targetrole = $targetrole->localname; - $name = 's_' . $fromrole->id . '_' . $targetrole->id; - $tooltip = get_string('allowroletooverride', 'role', $a); - $row[] = '' . - ''; - } - $table->data[] = $row; - } - - print_simple_box(get_string('configallowoverride2', 'admin'), 'center'); - - echo ''; - echo ''; - print_table($table); - echo '
'; - echo '
'; - - admin_externalpage_print_footer(); -?> diff --git a/admin/roles/lib.php b/admin/roles/lib.php index a32ddba683..911f6b67b7 100644 --- a/admin/roles/lib.php +++ b/admin/roles/lib.php @@ -1257,31 +1257,22 @@ class existing_role_holders_site_admin extends existing_role_holders { abstract class role_allow_role_page { protected $tablename; protected $targetcolname; - protected $systemcontext; protected $roles; protected $allowed = null; public function __construct($tablename, $targetcolname) { $this->tablename = $tablename; $this->targetcolname = $targetcolname; - $this->systemcontext = get_context_instance(CONTEXT_SYSTEM); $this->load_required_roles(); } - /** - * @return object the context we need. (The system context.) - */ - public function get_context() { - return $this->systemcontext; - } - /** * Load all the roles we will need information about. */ protected function load_required_roles() { /// Get all roles $this->roles = get_all_roles(); - role_fix_names($this->roles, $this->systemcontext, ROLENAME_ORIGINAL); + role_fix_names($this->roles, get_context_instance(CONTEXT_SYSTEM), ROLENAME_ORIGINAL); } /** @@ -1354,6 +1345,8 @@ abstract class role_allow_role_page { return $table; } + + public abstract function get_intro_text(); } class role_allow_assign_page extends role_allow_role_page { @@ -1371,6 +1364,31 @@ class role_allow_assign_page extends role_allow_role_page { $a->targetrole = $targetrole->localname; return get_string('allowroletoassign', 'role', $a); } + + public function get_intro_text() { + return get_string('configallowassign', 'admin'); + } +} + +class role_allow_override_page extends role_allow_role_page { + public function __construct() { + parent::__construct('role_allow_override', 'allowoverride'); + } + + protected function set_allow($fromroleid, $targetroleid) { + allow_override($fromroleid, $targetroleid); + } + + protected function get_cell_tooltip($fromrole, $targetrole) { + $a = new stdClass; + $a->fromrole = $fromrole->localname; + $a->targetrole = $targetrole->localname; + return get_string('allowroletooverride', 'role', $a); + } + + public function get_intro_text() { + return get_string('configallowoverride2', 'admin'); + } } ?> \ No newline at end of file diff --git a/admin/roles/managetabs.php b/admin/roles/managetabs.php index efe8de986f..bb969c6704 100755 --- a/admin/roles/managetabs.php +++ b/admin/roles/managetabs.php @@ -35,13 +35,10 @@ } $toprow = array(); - $toprow[] = new tabobject('manage', $CFG->wwwroot.'/'.$CFG->admin.'/roles/manage.php', get_string('manageroles', 'role')); - - $toprow[] = new tabobject('allowassign', $CFG->wwwroot.'/'.$CFG->admin.'/roles/allowassign.php', get_string('allowassign', 'role')); - - $toprow[] = new tabobject('allowoverride', $CFG->wwwroot.'/'.$CFG->admin.'/roles/allowoverride.php', get_string('allowoverride', 'role')); - + $toprow[] = new tabobject('assign', $CFG->wwwroot.'/'.$CFG->admin.'/roles/allow.php?mode=assign', get_string('allowassign', 'role')); + $toprow[] = new tabobject('override', $CFG->wwwroot.'/'.$CFG->admin.'/roles/allow.php?mode=override', get_string('allowoverride', 'role')); + $toprow[] = new tabobject('switch', $CFG->wwwroot.'/'.$CFG->admin.'/roles/allow.php?mode=switch', get_string('allowswitch', 'role')); $tabs = array($toprow); print_tabs($tabs, $currenttab); diff --git a/lang/en_utf8/error.php b/lang/en_utf8/error.php index fc423af5de..023f984183 100644 --- a/lang/en_utf8/error.php +++ b/lang/en_utf8/error.php @@ -277,6 +277,7 @@ $string['invalidipformat'] = 'Invalid IP address format'; $string['invalidlegacy'] = 'Incorrect legacy role definition for type: $a'; $string['invalidkey'] = 'Incorrect key'; $string['invalidmd5'] = 'Invalid md5'; +$string['invalidmode'] = 'Invalid mode ($a)'; $string['invalidmodule'] = 'Invalid module'; $string['invalidmoduleid'] = 'Invalid module ID: $a'; $string['invalidmodulename'] = 'Invalid module name: $a'; diff --git a/lang/en_utf8/role.php b/lang/en_utf8/role.php index c778666282..d5d2c9442f 100644 --- a/lang/en_utf8/role.php +++ b/lang/en_utf8/role.php @@ -11,6 +11,7 @@ $string['allowed'] = 'Allowed'; $string['allowoverride'] = 'Allow role overrides'; $string['allowroletoassign'] = 'Allow users with role $a->fromrole to assign the role $a->targetrole'; $string['allowroletooverride'] = 'Allow users with role $a->fromrole to override the role $a->targetrole'; +$string['allowswitch'] = 'Allow role switches'; $string['allsiteusers'] = 'All site users'; $string['assignanotherrole'] = 'Assign another role'; $string['assignerror'] = 'Error while assigning the role $a->role to user $a->user.'; diff --git a/theme/standard/styles_layout.css b/theme/standard/styles_layout.css index 5caa061c4d..b9f930e542 100644 --- a/theme/standard/styles_layout.css +++ b/theme/standard/styles_layout.css @@ -1115,8 +1115,7 @@ body#admin-modules table.generaltable td.c0 #admin-qtypes #qtypes img.spacer { width: 16px; } -#admin-roles-allowassign .buttons, -#admin-roles-allowoverride .buttons, +#admin-roles-allow .buttons, #admin-roles-manage .buttons, #admin-roles-define .buttons, #admin-roles-override .buttons {