]> git.mjollnir.org Git - moodle.git/commitdiff
Cleaning up assign and override interfaces
authormoodler <moodler>
Fri, 15 Sep 2006 06:04:10 +0000 (06:04 +0000)
committermoodler <moodler>
Fri, 15 Sep 2006 06:04:10 +0000 (06:04 +0000)
admin/roles/assign.php
admin/roles/override.html
admin/roles/override.php
admin/roles/tabs.php
lang/en_utf8/role.php
theme/standard/styles_color.css

index afed977df96a6960aae79e3b65ac268ce24c655d..105dcc57658b4cf1ec1a0dc3b8e37d706c5a71ee 100755 (executable)
 
     }
     
-    // prints a form to swap roles
-    print ('<form name="rolesform" action="assign.php" method="post">');
-    print ('<div align="center">'.$strcurrentcontext.': '.print_context_name($context).'<br/>');
-    if ($userid) {
-        print ('<input type="hidden" name="userid" value="'.$userid.'" />');
-    }
-    if ($courseid) {
-        print ('<input type="hidden" name="courseid" value="'.$courseid.'" />');
-    }
-    print ('<input type="hidden" name="contextid" value="'.$context->id.'" />'.$strroletoassign.': ');
-    choose_from_menu ($assignableroles, 'roleid', $roleid, 'choose', $script='rolesform.submit()');
-    print ('</div></form>');
-    
     if ($roleid) {
+    /// prints a form to swap roles
+        echo '<form name="rolesform" action="assign.php" method="post">';
+        echo '<div align="center">'.$strcurrentcontext.': '.print_context_name($context).'<br/>';
+        if ($userid) {
+            echo '<input type="hidden" name="userid" value="'.$userid.'" />';
+        }
+        if ($courseid) {
+            echo '<input type="hidden" name="courseid" value="'.$courseid.'" />';
+        }
+        echo '<input type="hidden" name="contextid" value="'.$context->id.'" />'.$strroletoassign.': ';
+        choose_from_menu ($assignableroles, 'roleid', $roleid, 'choose', $script='rolesform.submit()');
+        echo '</div></form>';
 
         print_simple_box_start("center");
-    
         include('assign.html');
-
         print_simple_box_end();
 
+    } else {   // Print overview table
+       
+        $table->tablealign = 'center';
+        $table->cellpadding = 5;
+        $table->cellspacing = 0;
+        $table->width = '20%';
+        $table->head = array(get_string('roles', 'role'), get_string('users'));
+        $table->wrap = array('nowrap', 'nowrap');
+        $table->align = array('right', 'center');
+        
+        foreach ($assignableroles as $roleid => $rolename) {
+            $countusers = 0;
+            if ($contextusers = get_role_users($roleid, $context)) {
+                $countusers = count($contextusers);
+            }
+            $table->data[] = array('<a href="assign.php?contextid='.$context->id.'&amp;roleid='.$roleid.'">'.$rolename.'</a>', $countusers);
+        }
+    
+        print_table($table);
     }
+
     print_footer($course);
 
 ?>
index c5cfc89f3c245d10c9f0e62c021cdae509635863..03c1144fa08e1e4d001d1239f19b9a2cd89f5264 100755 (executable)
@@ -10,18 +10,18 @@ if ($courseid) {
 }?>
             <table class="override">
             <tr>
-                <td>Capability Name</td>
-                <td>Inherit</td>
-                <td>Allow</td>
-                <td>Prevent</td>
-                <td>Prohibit</td>
+                <td><?php print_string('capability','role') ?></td>
+                <td><?php print_string('inherit','role') ?></td>
+                <td><?php print_string('allow','role') ?></td>
+                <td><?php print_string('prevent','role') ?></td>
+                <td><?php print_string('prohibit','role') ?></td>
             </tr>
             <?php 
             
             // init these 2
             $contextlevel = 0;
             $component = '';
-            
+
             foreach ($capabilities as $capability) {
             // prints a breaker if component or name or context level  
                 if ($capability->component != $component or $capability->contextlevel != $contextlevel) {
@@ -33,12 +33,12 @@ if ($courseid) {
                 $component = $capability->component;
                 
                 // check the capability override for this cap, this role in this context
-                
-                $SQL = "select * from {$CFG->prefix}role_capabilities where
-                        roleid = $roleid and capability = '$capability->name' and contextid = $contextid";
-                        
-                $localoverride = get_record_sql($SQL);
-                
+                if (isset($localoverrides[$capability->name])) {
+                    $localpermission = $localoverrides[$capability->name]->permission;
+                } else {
+                    $localpermission = 0;  // Just inherit
+                }
+
                 if (isset($r_caps[$capability->name])) {
                     $isallow = $r_caps[$capability->name] > 0;
                     $isprevent = $r_caps[$capability->name] < 0 && $r_caps[$capability->name] > -500;
@@ -48,18 +48,45 @@ if ($courseid) {
                     $isprevent = 0;
                     $isprohibit = 0;  
                 }
+
+                $isdisabled = $isprohibit || islegacy($capability->name);
                 
             ?>
                 
             <tr>
               <td><?php echo get_capability_string($capability->name); ?></td>
-                 <td><input type="radio" name="<?php echo $capability->name; ?>" VALUE="0" <?php if (!isset($localoverride->permission) || $localoverride->permission==0){ echo 'checked="checked"';} if ($isprohibit || islegacy($capability->name)) {echo 'disabled="disabled"'; }?>></td>
-                 <td <?php if ($isallow) {echo "bgcolor=#ffffff";} ?>><INPUT TYPE=radio NAME="<?php echo $capability->name; ?>" VALUE="1" <?php if (isset($localoverride->permission) && $localoverride->permission==1){ echo 'checked="checked"'; } if ($isprohibit || islegacy($capability->name)) {echo 'disabled="disabled"'; }?>></td>
-                 <td <?php if ($isprevent) {echo "bgcolor=#ffffff";} ?>><INPUT TYPE=radio NAME="<?php echo $capability->name; ?>" VALUE="-1" <?php if (isset($localoverride->permission) && $localoverride->permission==-1){ echo 'checked="checked"'; } if ($isprohibit || islegacy($capability->name)) {echo 'disabled="disabled"'; }?>></td>
-                 <td <?php if ($isprohibit) {echo "bgcolor=#ffffff";} ?>><INPUT TYPE=radio NAME="<?php echo $capability->name; ?>" VALUE="-1000" <?php if (isset($localoverride->permission) && $localoverride->permission==-1000){ echo 'checked="checked"'; } if ($isprohibit || islegacy($capability->name)) {echo 'disabled="disabled"'; }?>></td>
+
+                 <td align="center">
+                 <input type="radio" name="<?php echo $capability->name; ?>" value="0" 
+                    <?php 
+                        if ($localpermission == 0) {echo 'checked="checked"';} 
+                        if ($isdisabled)           {echo 'disabled="disabled"';}?>>
+                 </td>
+
+                 <td align="center" <?php if ($isallow) {echo 'class="capcurrent"';} ?>>
+                 <input type="radio" name="<?php echo $capability->name; ?>"
+                    <?php echo ' value="'.CAP_ALLOW.'"';
+                       if ($localpermission == CAP_ALLOW) {echo ' checked="checked"';} 
+                       if ($isdisabled)                   {echo ' disabled="disabled"';}?>>
+                 </td>
+
+                 <td align="center" <?php if ($isprevent) {echo 'class="capcurrent"';} ?>>
+                 <input type="radio" name="<?php echo $capability->name; ?>" 
+                    <?php echo ' value="'.CAP_PREVENT.'"';
+                       if ($localpermission == CAP_PREVENT) {echo ' checked="checked"';} 
+                       if ($isdisabled)                     {echo ' disabled="disabled"';}?>>
+                 </td>
+
+                 <td align="center" <?php if ($isprohibit) {echo 'class="capcurrent"';} ?>>
+                 <input type="radio" name="<?php echo $capability->name; ?>"
+                    <?php echo ' value="'.CAP_PROHIBIT.'"';
+                       if ($localpermission == CAP_PROHIBIT) {echo ' checked="checked"';} 
+                       if ($isdisabled)                      {echo ' disabled="disabled"';}?>>
+                 </td>
             </tr>
             
             <?php } ?>    
             </table>     
-            <input type="submit" value="modify">
+            <br />
+            <div align="center"><input type="submit" value="<?php print_string('savechanges') ?>"></div>
             </form>
index c2d515c8e7bfe16fd832d9f0d0ce914dbb9ffed0..7b1d8c55089fced430b0c8e3188731fc14f759e9 100755 (executable)
         redirect("$CFG->wwwroot/$CFG->admin/index.php");
     }
 
-    $strassignusers = get_string('assignusers', 'role');
+    $strroletooverride = get_string('roletooverride', 'role');
+    $stroverrideusers = get_string('overrideusers', 'role');
     $strpotentialusers = get_string('potentialusers', 'role');
     $strexistingusers = get_string('existingusers', 'role');
-    $straction = get_string('assignroles', 'role');
+    $straction = get_string('overrideroles', 'role');
     $strcurrentrole = get_string('currentrole', 'role');
     $strcurrentcontext = get_string('currentcontext', 'role');
     $strsearch = get_string('search');
       * form processing here  *
       *************************/
      if ($data = data_submitted()) {
-         // add or update 
+
+
+        $localoverrides = get_records_select('role_capabilities', "roleid = $roleid AND contextid = $context->id", 
+                                             '', 'capability, permission, id');
+
          foreach ($data as $capname => $value) {
-             // ignore contextid and roleid
-             if ($capname == "contextid" || $capname == "roleid") {
+             if ($capname == 'contextid' || $capname == 'roleid') {        // ignore contextid and roleid
                  continue;  
              }
          
-             $SQL = "select * from {$CFG->prefix}role_capabilities where
-             roleid = $roleid and capability = '$capname' and contextid = $contextid";
-                        
-             $localoverride = get_record_sql($SQL);
-         
-             if ($localoverride) { // update current overrides
+             if (isset($localoverrides[$capname])) {    // Something exists, so update it
              
-                 if ($value == 0) { // inherit = delete
-                       
-                       delete_records('role_capabilities', 'roleid', $roleid, 'contextid', $contextid, 'capability', $capname);
-                       
+                 if ($value == CAP_INHERIT) {       // inherit = delete
+                     delete_records('role_capabilities', 'roleid', $roleid, 'contextid', $contextid, 
+                                                         'capability', $capname);
                  } else {
-             
+                     $localoverride = new object;
+                     $localoverride->id = $localoverrides[$capname]->id;
                      $localoverride->permission = $value;
                      $localoverride->timemodified = time();
                      $localoverride->modifierid = $USER->id;
                      
-                     update_record('role_capabilities', $localoverride);    
-                 
+                     if (!update_record('role_capabilities', $localoverride)) {
+                         debugging('Could not update a capability!');
+                     }
                  }
             
             } else { // insert a record
             
-                $override->capability = $capname;
-                $override->contextid = $contextid;
-                $override->roleid = $roleid;
-                $override->permission = $value;
-                $override->timemodified = time();
-                $override->modifierid = $USER->id;
-                insert_record('role_capabilities', $override);
+                if ($value != CAP_INHERIT) {    // Ignore inherits
+                    $override->capability = $capname;
+                    $override->contextid = $contextid;
+                    $override->roleid = $roleid;
+                    $override->permission = $value;
+                    $override->timemodified = time();
+                    $override->modifierid = $USER->id;
+                    if (!insert_record('role_capabilities', $override)) {
+                        debugging('Could not insert a capability!');
+                    }
+                }
             }
-           
-         }
-       
+        }
     }
 
-    /*****************************************
-      * drop down for swapping between roles  *
-      *****************************************/
-
-    print ('<form name="rolesform" action="override.php" method="post">');
-    print ('<div align="center">'.$strcurrentcontext.': '.print_context_name($context).'<br/>');
-    print ('<input type="hidden" name="contextid" value="'.$contextid.'">'.$strcurrentrole.': ');
-    if ($userid) {
-        print ('<input type="hidden" name="userid" value="'.$userid.'" />');
-    }
-    if ($courseid) {
-        print ('<input type="hidden" name="courseid" value="'.$courseid.'" />');
-    }
-    choose_from_menu ($overridableroles, 'roleid', $roleid, 'choose', $script='rolesform.submit()');
-    print ('</div></form>');
-   
-    /**************************************
-      * print html for editting overrides  *
-      **************************************/
 
     if ($roleid) {
-        // This is the array holding capabilities of this role sorted till this context
+    /// prints a form to swap roles
+        echo '<form name="rolesform" action="override.php" method="post">';
+        echo '<div align="center">'.$strcurrentcontext.': '.print_context_name($context).'<br/>';
+        if ($userid) {
+            echo '<input type="hidden" name="userid" value="'.$userid.'" />';
+        }
+        if ($courseid) {
+            echo '<input type="hidden" name="courseid" value="'.$courseid.'" />';
+        }
+        echo '<input type="hidden" name="contextid" value="'.$context->id.'" />'.$strroletooverride.': ';
+        choose_from_menu ($overridableroles, 'roleid', $roleid, 'choose', $script='rolesform.submit()');
+        echo '</div></form>';
+
         $r_caps = role_context_capabilities($roleid, $context);
+
+        $localoverrides = get_records_select('role_capabilities', "roleid = $roleid AND contextid = $context->id", 
+                                             '', 'capability, permission, id');
         
-        // Get the capabilities assignable in this context
+        // Get the capabilities overrideable in this context
         if ($capabilities = fetch_context_capabilities($context)) {
             print_simple_box_start("center");
             include_once('override.html');
             notice(get_string('nocapabilitiesincontext', 'role'),
                     $CFG->wwwroot.'/admin/roles/override.php?contextid='.$contextid);
         }
+
+    } else {   // Print overview table
+       
+        $table->tablealign = 'center';
+        $table->cellpadding = 5;
+        $table->cellspacing = 0;
+        $table->width = '20%';
+        $table->head = array(get_string('roles', 'role'), get_string('overrides', 'role'));
+        $table->wrap = array('nowrap', 'nowrap');
+        $table->align = array('right', 'center');
+        
+        foreach ($overridableroles as $roleid => $rolename) {
+            $countusers = 0;
+            $overridecount = count_records_select('role_capabilities', "roleid = $roleid AND contextid = $context->id");
+            $table->data[] = array('<a href="override.php?contextid='.$context->id.'&amp;roleid='.$roleid.'">'.$rolename.'</a>', $overridecount);
+        }
+    
+        print_table($table);
     }
     
     print_footer($course);
     
-?>
\ No newline at end of file
+?>
index b72402af8724d24d10f43a52be9c9529d6ad8ac8..4c5b825b5fc8f82f4132c3003ec5d57f8d465fb9 100755 (executable)
@@ -1,69 +1,70 @@
-<?php
-// this deals with tabs, as well as print_headers for navigation
+<?php // $Id$
+
+// Handles headers and tabs for the roles control at any level apart from SYSTEM level
 
 if ($currenttab != 'update') {
     switch ($context->aggregatelevel) {
-      
+
         case CONTEXT_SYSTEM:
             $stradministration = get_string('administration');
             print_header($site->fullname, "$site->fullname","<a href=\"../index.php\">$stradministration</a> -> $straction");
-        break;
-    
+            break;
+
         case CONTEXT_PERSONAL:
-        break;
-    
+            break;
+
         case CONTEXT_USERID:
             print_header();
-        break;
-    
+            break;
+
         case CONTEXT_COURSECAT:
             $category = get_record('course_categories', 'id', $context->instanceid);
             $strcategories = get_string("categories");
             $strcategory = get_string("category");
             $strcourses = get_string("courses");
             print_header("$site->shortname: $category->name", "$site->fullname: $strcourses",
-                         "<a href=\"$CFG->wwwroot/course/index.php\">$strcategories</a> -> <a href=\"$CFG->wwwroot/course/category.php?id=$category->id\">$category->name</a> -> $straction", "", "", true);
-        break;
-    
+                    "<a href=\"$CFG->wwwroot/course/index.php\">$strcategories</a> -> <a href=\"$CFG->wwwroot/course/category.php?id=$category->id\">$category->name</a> -> $straction", "", "", true);
+            break;
+
         case CONTEXT_COURSE:
             $streditcoursesettings = get_string("editcoursesettings");
-            
+
             $course = get_record('course', 'id', $context->instanceid);
             print_header($streditcoursesettings, "$course->fullname",
-                         "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a>
-                          -> <a href=\"$CFG->wwwroot/course/edit.php?id=$course->id\">$streditcoursesettings</a> -> $straction");
-        break;
-    
+                    "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a>
+                    -> <a href=\"$CFG->wwwroot/course/edit.php?id=$course->id\">$streditcoursesettings</a> -> $straction");
+            break;
+
         case CONTEXT_GROUP:
-        break;
-    
+            break;
+
         case CONTEXT_MODULE:
             // get module type?
             $cm = get_record('course_modules','id',$context->instanceid);
             $module = get_record('modules','id',$cm->module); //$module->name;
             $course = get_record('course','id',$cm->course);
-            
+
             if (! $form = get_record($module->name, "id", $cm->instance)) {
                 error("The required instance of this module doesn't exist");
             }
-    
+
             $strnav = "<a href=\"$CFG->wwwroot/mod/$module->name/view.php?id=$cm->id\">$form->name</a> ->";
             $fullmodulename = get_string("modulename", $module->name);
             $streditinga = get_string("editinga", "moodle", $fullmodulename);
             $strmodulenameplural = get_string("modulenameplural", $module->name);
-    
+
             if ($module->name == "label") {
                 $focuscursor = "";
             } else {
                 $focuscursor = "form.name";
             }
-    
+
             print_header_simple($streditinga, '',
-             "<a href=\"$CFG->wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural</a> ->
-             $strnav <a href=\"$CFG->wwwroot/course/mod.php?update=$cm->id&sesskey=".sesskey()."\">$streditinga</a> -> $straction", $focuscursor, "", false);
-    
-        break;
-    
+                    "<a href=\"$CFG->wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural</a> ->
+                    $strnav <a href=\"$CFG->wwwroot/course/mod.php?update=$cm->id&sesskey=".sesskey()."\">$streditinga</a> -> $straction", $focuscursor, "", false);
+
+            break;
+
         case CONTEXT_BLOCK:
             if ($blockinstance = get_record('block_instance', 'id', $context->instanceid)) {
                 if ($block = get_record('block', 'id', $blockinstance->blockid)) {
@@ -74,86 +75,90 @@ if ($currenttab != 'update') {
                         case 'course-view':
                             if ($course = get_record('course', 'id', $blockinstance->pageid)) {
                                 if ($course->id != SITEID) {
-                                     $navigation = "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> -> $navigation";
+                                    $navigation = "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> -> $navigation";
                                 }
                                 print_header("$straction: $blockname", $course->fullname, $navigation);
                             }
-                        break;
+                            break;
 
                         case 'blog-view':
                             $strblogs = get_string('blogs','blog');
                             $navigation = '<a href="'.$CFG->wwwroot.'/blog/index.php">'.
-                                          $strblogs.'</a> -> '.$navigation;
+                                $strblogs.'</a> -> '.$navigation;
                             print_header("$straction: $strblogs", $SITE->fullname, $navigation);
-                        break;
+                            break;
 
                         default:
                             print_header("$straction: $blockname", $SITE->fullname, $navigation);
-                        break;
+                            break;
                     }
                 }
             }
-        break;
-    
+            break;
+
         default:
             error ('This is an unknown context!');
-        return false;
-       
+            return false;
+
     }
 }
 
 
-    // Printing the tabs
+if ($context->aggregatelevel != CONTEXT_SYSTEM) {    // Print tabs for anything except SYSTEM context
+
     if ($context->aggregatelevel == CONTEXT_MODULE) { // only show update button if module?
-    
-        $toprow[] = new tabobject('update', $CFG->wwwroot.'/course/mod.php?update='.$context->instanceid.'&amp;return=true&amp;sesskey='.sesskey(), get_string('update'));
-        
+
+        $toprow[] = new tabobject('update', $CFG->wwwroot.'/course/mod.php?update='.
+                       $context->instanceid.'&amp;return=true&amp;sesskey='.sesskey(), get_string('update'));
+
     }    
-    
-    $toprow[] = new tabobject('roles', $CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.$context->id, get_string('roles')); 
+
+    $toprow[] = new tabobject('roles', $CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.
+                               $context->id, get_string('roles')); 
 
     if (isset($tabsmode)) {
-      
+
         if (!isset($assignableroles)) {
             $assignableroles = get_assignable_roles($context);          
         }
         if (!isset($overridableroles)) {
             $overridableroles = get_overridable_roles($context); 
-        }    
-    
-      
+        }
+
         $inactive[] = 'roles';
         if (!empty($assignableroles)) {
-            $secondrow[] = new tabobject('assign', $CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.$context->id, get_string('assignroles', 'role')); 
+            $secondrow[] = new tabobject('assign', 
+                                         $CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.$context->id, 
+                                         get_string('assignroles', 'role'), 
+                                         get_string('showallroles', 'role'), 
+                                         true); 
         }
-             
+
         if (!empty($overridableroles)) {  
-            if ($context->aggregatelevel == CONTEXT_SYSTEM) {
-                $secondrow[] = new tabobject('override', '', get_string('overrideroles', 'role'));         
-            } else {
-                $secondrow[] = new tabobject('override', $CFG->wwwroot.'/'.$CFG->admin.'/roles/override.php?contextid='.$context->id,
-                                          get_string('overrideroles', 'role'));         
-            }
+            $secondrow[] = new tabobject('override', 
+                               $CFG->wwwroot.'/'.$CFG->admin.'/roles/override.php?contextid='.$context->id,
+                               get_string('overrideroles', 'role'), 
+                               get_string('showallroles', 'role'),  
+                               true);         
         }
-        
+
         if ($tabsmode == 'override') {
             $currenttab = 'override';  
         } elseif ($tabsmode == 'assign') {
             $currenttab = 'assign';  
         }
-        
+
     } else {
         $inactive[] = '';  
     }
-    
+
     if (!empty($secondrow)) {
         $tabs = array($toprow, $secondrow);
     } else {
         $tabs = array($toprow);
     }
-    
-    if ($context->aggregatelevel != CONTEXT_SYSTEM) { // do not show tabs otherwise
-        print_tabs($tabs, $currenttab, $inactive);
-    }
+
+    print_tabs($tabs, $currenttab, $inactive);
+}
 
 ?>
index fba358d56af2638a9df5fe9bee6b7b33e3521c29..e96ba7580e725dcef37b794c595241cb0c4bfc4e 100644 (file)
@@ -7,6 +7,7 @@ $string['allow'] = 'Allow';
 $string['allowassign'] = 'Allow role assignments';
 $string['allowoverride'] = 'Allow role overrides';
 $string['capability'] = 'Capability';
+$string['capabilities'] = 'Capabilities';
 $string['currentrole'] = 'Current role';
 $string['currentcontext'] = 'Current context';
 $string['defineroles'] = 'Define roles';
@@ -15,11 +16,13 @@ $string['inherit'] = 'Inherit';
 $string['manageroles'] = 'Manage roles';
 $string['nocapabilitiesincontext'] = 'No capabilities available in this context';
 $string['overrideroles'] = 'Override roles';
+$string['overrides'] = 'Overrides';
 $string['permissions'] = 'Permissions';
 $string['potentialusers'] = '$a potential users';
 $string['prevent'] = 'Prevent';
 $string['prohibit'] = 'Prohibit';
 $string['roletoassign'] = 'Role to assign';
+$string['roletooverride'] = 'Role to override';
 $string['roles'] = 'Roles';
 
 $string['site:doanything'] = 'Allowed to do everything';
index d2243081bcafff11f4deabe8b620e37351d87451..d6233094fea0031ce5e3c414e1acf7e051bc6160 100644 (file)
@@ -954,3 +954,7 @@ body#mod-quiz-report table#attempts .r1 {
   color:#ff0000;
 }
 
+#admin-roles-override .capcurrent {
+  background-color:#FFFFFF;
+  border: 1px solid #cecece;
+}