diff --git a/lib/tablelib.php b/lib/tablelib.php index 78bade9465f..63510a65519 100644 --- a/lib/tablelib.php +++ b/lib/tablelib.php @@ -1444,23 +1444,19 @@ class flexible_table { } } - // Now, update the column attributes for collapsed columns - foreach (array_keys($this->columns) as $column) { - if (!empty($this->prefs['collapse'][$column])) { - $this->column_style[$column]['width'] = '10px'; - } - } - - // Now, update the column attributes for collapsed columns - foreach (array_keys($this->columns) as $column) { - if (!empty($this->prefs['collapse'][$column])) { - $this->column_style[$column]['width'] = '10px'; - } - } - + $this->set_hide_show_preferences(); $this->set_sorting_preferences(); $this->set_initials_preferences(); + // Now, reduce the width of collapsed columns and remove the width from columns that should be expanded. + foreach (array_keys($this->columns) as $column) { + if (!empty($this->prefs['collapse'][$column])) { + $this->column_style[$column]['width'] = '10px'; + } else { + unset($this->column_style[$column]['width']); + } + } + if (empty($this->baseurl)) { debugging('You should set baseurl when using flexible_table.'); global $PAGE; diff --git a/user/tests/behat/table_column_visibility.feature b/user/tests/behat/table_column_visibility.feature new file mode 100644 index 00000000000..f7dd23b663d --- /dev/null +++ b/user/tests/behat/table_column_visibility.feature @@ -0,0 +1,49 @@ +@core @core_user +Feature: The visibility of table columns can be toggled + In order to customise my view of participants data + As a user + I need to be able to hide and show columns in the participants table + + Background: + Given the following "courses" exist: + | fullname | shortname | category | groupmode | + | Course 1 | C1 | 0 | 1 | + And the following "users" exist: + | username | firstname | lastname | email | + | t1 | Agatha | T | agatha@example.com | + | s1 | Matilda | W | matilda@example.com | + | s2 | Mick | H | mick@example.com | + And the following "course enrolments" exist: + | user | course | role | + | t1 | C1 | editingteacher | + | s1 | C1 | student | + | s2 | C1 | student | + + @javascript + Scenario: The visibility of columns can be individually toggled within the participants table + Given I log in as "t1" + And I am on "Course 1" course homepage + And I navigate to course participants + And I should see "Email address" in the "participants" "table" + And I should see "matilda@example.com" in the "participants" "table" + And I should see "Roles" in the "participants" "table" + And I should see "Student" in the "participants" "table" + When I follow "Hide Email address" + Then I should not see "Email address" in the "participants" "table" + And I should not see "matilda@example.com" in the "participants" "table" + And I should see "Roles" in the "participants" "table" + And I should see "Student" in the "participants" "table" + And I follow "Hide Roles" + And I should not see "Roles" in the "participants" "table" + And I should not see "Student" in the "participants" "table" + And I should not see "matilda@example.com" in the "participants" "table" + And I follow "Show Email address" + And I should see "Email address" in the "participants" "table" + And I should see "matilda@example.com" in the "participants" "table" + And I should not see "Roles" in the "participants" "table" + And I should not see "Student" in the "participants" "table" + And I follow "Show Roles" + And I should see "Roles" in the "participants" "table" + And I should see "Student" in the "participants" "table" + And I should see "Email address" in the "participants" "table" + And I should see "matilda@example.com" in the "participants" "table"