diff --git a/db/upgrade.php b/db/upgrade.php index 5054b39..f6271a5 100644 --- a/db/upgrade.php +++ b/db/upgrade.php @@ -38,9 +38,10 @@ function xmldb_block_massaction_upgrade($oldversion, $block): bool { upgrade_block_savepoint(true, 2022000000, 'massaction', false); } - if ($oldversion < 2023041700) { // Add onetopic, grid support. + if ($oldversion < 2023041700) { // Add onetopic, grid, and tiles support. block_massaction_add_supported_format('onetopic'); block_massaction_add_supported_format('grid'); + block_massaction_add_supported_format('tiles'); upgrade_block_savepoint(true, 2023041700, 'massaction', false); } diff --git a/settings.php b/settings.php index 8098695..7daf817 100644 --- a/settings.php +++ b/settings.php @@ -49,7 +49,7 @@ }); // These are the formats supported by the maintainer. - $supportedformatsbydefault = ['weeks' => 1, 'topics' => 1, 'topcoll' => 1, 'onetopic' => 1, 'grid' => 1]; + $supportedformatsbydefault = ['weeks' => 1, 'topics' => 1, 'topcoll' => 1, 'onetopic' => 1, 'grid' => 1, 'tiles' => 1]; $settings->add(new admin_setting_configmulticheckbox( 'block_massaction/applicablecourseformats', diff --git a/tests/behat/tiles.feature b/tests/behat/tiles.feature new file mode 100644 index 0000000..337ade7 --- /dev/null +++ b/tests/behat/tiles.feature @@ -0,0 +1,79 @@ +@block @block_massaction @block_massaction_tiles +Feature: Check if block generates all necessary checkboxes in tiles format and properly disables + the currently not active sections (or sections not containing any modules) + + @javascript + Scenario: Check if checkboxes are created properly for tiles format + Given I installed course format "tiles" + And the following "courses" exist: + | fullname | shortname | numsections | format | + | Test course | TC | 5 | tiles | + And the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Mr | Teacher | teacher1@example.com | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | TC | editingteacher | + And the following "activities" exist: + | activity | course | idnumber | name | intro | section | + | page | TC | 1 | Test Activity1 | Test page description | 0 | + | page | TC | 2 | Test Activity2 | Test page description | 1 | + | label | TC | 3 | Test Activity3 | Label text | 2 | + | page | TC | 4 | Test Activity4 | Test page description | 4 | + | page | TC | 5 | Test Activity5 | Test page description | 4 | + And the following config values are set as admin: + | config | value | plugin | + | assumedatastoreconsent | 1 | format_tiles | + When I log in as "teacher1" + And I am on "Test course" course homepage with editing mode on + And I add the "Mass Actions" block + And I click on "Expand all" "link" + And I click on "Test Activity1 Checkbox" "checkbox" + And I click on "Test Activity4 Checkbox" "checkbox" + Then the field "Test Activity1 Checkbox" matches value "1" + Then the field "Test Activity2 Checkbox" matches value "" + Then the field "Label text Checkbox" matches value "" + Then the field "Test Activity4 Checkbox" matches value "1" + Then the field "Test Activity5 Checkbox" matches value "" + Then the "disabled" attribute of "#block-massaction-control-section-list-select-option-0" "css_element" should not be set + Then the "disabled" attribute of "#block-massaction-control-section-list-select-option-1" "css_element" should not be set + Then the "disabled" attribute of "#block-massaction-control-section-list-select-option-2" "css_element" should not be set + Then the "disabled" attribute of "#block-massaction-control-section-list-select-option-3" "css_element" should be set + Then the "disabled" attribute of "#block-massaction-control-section-list-select-option-4" "css_element" should not be set + + @javascript + Scenario: Check if mass actions 'indent' and 'outdent' work + # We need to use a different course format which supports indentation. + # From moodle 4.0 on this is a feature a course format has to explicitely support. + Given I installed course format "tiles" + And the following "courses" exist: + | fullname | shortname | numsections | format | + | Test course | TC2 | 5 | tiles | + And the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Mr | Teacher | teacher1@example.com | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | TC2 | editingteacher | + And the following "activities" exist: + | activity | course | idnumber | name | intro | section | + | page | TC2 | 1 | Test Activity1 | Test page description | 0 | + | page | TC2 | 2 | Test Activity2 | Test page description | 1 | + | label | TC2 | 3 | Test Activity3 | Label text | 2 | + | page | TC2 | 4 | Test Activity4 | Test page description | 4 | + | assign | TC2 | 5 | Test Activity5 | Test page description | 4 | + When I log in as "teacher1" + And I am on "Test course" course homepage with editing mode on + And I add the "Mass Actions" block + # Everything is setup now, let's do the real test. + And I click on "Expand all" "text" + And I click on "Test Activity2 Checkbox" "checkbox" + And I click on "Test Activity5 Checkbox" "checkbox" + And I click on "Indent (move right)" "link" in the "Mass Actions" "block" + Then "#section-1 li.modtype_page div.indent-1" "css_element" should exist + Then "#section-4 li.modtype_assign div.indent-1" "css_element" should exist + When I click on "Test Activity2 Checkbox" "checkbox" + And I click on "Test Activity5 Checkbox" "checkbox" + And I click on "Outdent (move left)" "link" in the "Mass Actions" "block" + Then "#section-1 li.modtype_page div.indent-1" "css_element" should not exist + Then "#section-4 li.modtype_assign div.indent-1" "css_element" should not exist