MDL-56581 Roles: Permissions override screen not inherited styling
authorJes Ackland-Snow <jes.ackland-snow@open.ac.uk>
Thu, 20 Oct 2016 15:52:33 +0000 (17:52 +0200)
committerDan Poltawski <dan@moodle.com>
Tue, 20 Dec 2016 12:09:01 +0000 (12:09 +0000)
admin/roles/classes/override_permissions_table_advanced.php
admin/roles/tests/behat/override_roles_highlighting.feature [new file with mode: 0644]
theme/bootstrapbase/less/moodle/admin.less
theme/bootstrapbase/style/moodle.css

index a872b96..1a119d8 100644 (file)
@@ -56,6 +56,24 @@ class core_role_override_permissions_table_advanced extends core_role_capability
         }
     }
 
+    /**
+     * This method adds an additional class to a row if capability is other than inherited.
+     *
+     * @param stdClass $capability
+     * @return array
+     */
+    protected function get_row_attributes($capability) {
+        $rowattributes = parent::get_row_attributes($capability);
+        if ($this->permissions[$capability->name] !== 0) {
+            if (empty($rowattributes['class'])) {
+                $rowattributes['class'] = "overriddenpermission";
+            } else {
+                $rowattributes['class'] .= " overriddenpermission";
+            }
+        }
+        return $rowattributes;
+    }
+
     protected function load_parent_permissions() {
         // Get the capabilities from the parent context, so that can be shown in the interface.
         $parentcontext = $this->context->get_parent_context();
diff --git a/admin/roles/tests/behat/override_roles_highlighting.feature b/admin/roles/tests/behat/override_roles_highlighting.feature
new file mode 100644 (file)
index 0000000..1ed349d
--- /dev/null
@@ -0,0 +1,23 @@
+@core @core_admin @core_admin_roles
+Feature: Highlight non-inherited permissions
+  In order that the status of capabilities can be more easily seen
+  As an admin
+  I need altered permissions to be highlighted
+
+  Background:
+    Given the following "courses" exist:
+      | fullname        | shortname   |
+      | Course fullname | C_shortname |
+    And I log in as "admin"
+    And I am on site homepage
+
+  @javascript
+  Scenario: Override a permission
+    Given I follow "Course fullname"
+    When I expand "Users" node
+    And I follow "Permissions"
+    And I select "1" from the "roleid" singleselect
+    And I click on "Prohibit" "radio" in the "View added and updated modules in recent activity block" "table_row"
+    And I press "Save changes"
+    And I select "1" from the "roleid" singleselect
+    Then the "class" attribute of "View added and updated modules in recent activity block" "table_row" should contain "overriddenpermission"
index 61947c9..bd85e2b 100644 (file)
@@ -850,3 +850,7 @@ img.iconsmall {
     color: @infoText;
     background-color: @infoBackground;
 }
+
+#overriderolestable .overriddenpermission {
+    background-color: @warningBackground;
+}
index 7a89d03..677e340 100644 (file)
@@ -3234,6 +3234,9 @@ img.iconsmall {
   color: #3a87ad;
   background-color: #d9edf7;
 }
+#overriderolestable .overriddenpermission {
+  background-color: #fcf8e3;
+}
 /* calendar.less */
 .calendar_event_course {
   background-color: #ffd3bd;