Skip to content

Commit

Permalink
MDL-76196 mod_folder: Display manual completion if inline display set
Browse files Browse the repository at this point in the history
  • Loading branch information
davewoloszyn authored and HuongNV13 committed Nov 11, 2022
1 parent 5877ae3 commit b0f872a
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 0 deletions.
84 changes: 84 additions & 0 deletions mod/folder/classes/completion/custom_completion.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

declare(strict_types=1);

namespace mod_folder\completion;

use core_completion\activity_custom_completion;

/**
* Activity custom completion subclass for the folder resource.
*
* Class for defining mod_folder's custom completion rules.
*
* @package mod_folder
* @copyright 2022 David Woloszyn <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class custom_completion extends activity_custom_completion {

/**
* Fetches the completion state for a given completion rule.
*
* @param string $rule The completion rule.
* @return int The completion state.
*/
public function get_state(string $rule): int {
return COMPLETION_UNKNOWN;
}

/**
* Fetch the list of custom completion rules that this module defines.
*
* @return array
*/
public static function get_defined_custom_rules(): array {
// This activity/resource does not have any custom rules.
return [];
}

/**
* Returns an associative array of the descriptions of custom completion rules.
*
* @return array
*/
public function get_custom_rule_descriptions(): array {
// This activity/resource does not have any custom rule descriptions.
return [];
}

/**
* Show the manual completion button depending on the display option set.
*
* @return bool
*/
public function manual_completion_always_shown(): bool {
$display = $this->cm->customdata->display ?? null;

return ($display == FOLDER_DISPLAY_INLINE ?? false);
}

/**
* Returns an array of all completion rules, in the order they should be displayed to users.
*
* @return array
*/
public function get_sort_order(): array {
// This module only supports manual completion.
return [];
}
}
18 changes: 18 additions & 0 deletions mod/folder/tests/behat/folder_activity_completion.feature
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ Feature: View activity completion information in the folder activity
And the following "courses" exist:
| fullname | shortname | enablecompletion | showcompletionconditions |
| Course 1 | C1 | 1 | 1 |
| Course 2 | C2 | 1 | 0 |
And the following "course enrolments" exist:
| user | course | role |
| student1 | C1 | student |
| teacher1 | C1 | editingteacher |
| student1 | C2 | student |

Scenario: View automatic completion items
Given the following "activity" exists:
Expand Down Expand Up @@ -52,3 +54,19 @@ Feature: View activity completion information in the folder activity
Then the manual completion button of "Music history" is displayed as "Mark as done"
And I toggle the manual completion state of "Music history"
And the manual completion button of "Music history" is displayed as "Done"

@javascript
Scenario: The manual completion button will be shown on the course page for Inline on a course page display mode
Given the following "activity" exists:
| activity | folder |
| course | C2 |
| idnumber | mh2 |
| name | Music history |
| section | 1 |
| completion | 1 |
| display | 1 |
When I am on the "Course 2" course page logged in as student1
Then the manual completion button for "Music history" should exist
And the manual completion button of "Music history" is displayed as "Mark as done"
And I toggle the manual completion state of "Music history"
And the manual completion button of "Music history" is displayed as "Done"

0 comments on commit b0f872a

Please sign in to comment.