From 6200c31f94c9216f32902e263620f545250ad9ab Mon Sep 17 00:00:00 2001 From: Sara Arjona Date: Tue, 27 Jan 2026 12:46:06 +0100 Subject: [PATCH] MDL-87662 course: Relocate manual completion button to activity header Co-author: Ferran Recio --- .upgradenotes/MDL-87662-2026012705202377.yml | 12 +++ .../tests/behat/behat_completion.php | 6 +- .../course/templates/activity_info.mustache | 13 +-- .../templates/completion_manual.mustache | 4 + public/lib/classes/output/activity_header.php | 39 ++++++- public/lib/templates/full_header.mustache | 4 +- public/theme/boost/templates/secure.mustache | 2 +- public/theme/classic/config.php | 1 + public/theme/classic/scss/classic/course.scss | 8 ++ .../templates/core/activity_header.mustache | 101 ++++++++++++++++++ .../templates/core/full_header.mustache | 2 +- .../theme/classic/templates/secure.mustache | 2 +- 12 files changed, 175 insertions(+), 19 deletions(-) create mode 100644 .upgradenotes/MDL-87662-2026012705202377.yml create mode 100644 public/theme/classic/templates/core/activity_header.mustache diff --git a/.upgradenotes/MDL-87662-2026012705202377.yml b/.upgradenotes/MDL-87662-2026012705202377.yml new file mode 100644 index 00000000000..6a47f02a2f9 --- /dev/null +++ b/.upgradenotes/MDL-87662-2026012705202377.yml @@ -0,0 +1,12 @@ +issueNumber: MDL-87662 +notes: + theme: + - message: >- + The manual completion button has been moved to the activity header + to improve visibility and proximity to the activity name. A new + theme layout option, `completioninheader`, has been introduced to + control this behaviour and is enabled by default. Themes that set + completioninheader to false must manually override the relevant + template (such as `activity_header` or `activity_info`) to ensure + the completion information is displayed correctly. + type: improved diff --git a/public/completion/tests/behat/behat_completion.php b/public/completion/tests/behat/behat_completion.php index c1b77b3a336..39660d5f197 100644 --- a/public/completion/tests/behat/behat_completion.php +++ b/public/completion/tests/behat/behat_completion.php @@ -302,7 +302,7 @@ class behat_completion extends behat_base { * @param string $activityname The activity name. */ public function the_manual_completion_button_for_activity_should_be_disabled(string $activityname): void { - $selector = "div[data-region='activity-information'][data-activityname='$activityname'] button"; + $selector = "button[data-activityname='$activityname'][data-completion='manual']"; $params = [$selector, "css_element"]; $this->execute("behat_general::the_element_should_be_disabled", $params); @@ -315,7 +315,7 @@ class behat_completion extends behat_base { * @param string $activityname The activity name. */ public function the_manual_completion_button_for_activity_should_not_exist(string $activityname): void { - $selector = "div[data-region=activity-information][data-activityname='$activityname'] button"; + $selector = "button[data-activityname='$activityname'][data-completion='manual']"; $params = [$selector, "css_element"]; $this->execute('behat_general::should_not_exist', $params); @@ -328,7 +328,7 @@ class behat_completion extends behat_base { * @param string $activityname The activity name. */ public function the_manual_completion_button_for_activity_should_exist(string $activityname): void { - $selector = "div[data-region=activity-information][data-activityname='$activityname'] button"; + $selector = "button[data-activityname='$activityname'][data-completion='manual']"; $params = [$selector, "css_element"]; $this->execute('behat_general::should_exist', $params); diff --git a/public/course/templates/activity_info.mustache b/public/course/templates/activity_info.mustache index db544a12b35..9282c4a3161 100644 --- a/public/course/templates/activity_info.mustache +++ b/public/course/templates/activity_info.mustache @@ -53,20 +53,15 @@ {{#hascompletion}} {{#uservisible}} -
- {{#isautomatic}} + {{#isautomatic}} +
{{#completiondetails}} {{> core_course/completion_automatic }} {{/completiondetails}}
- {{/isautomatic}} - {{^isautomatic}} - {{#showmanualcompletion}} - {{> core_course/completion_manual }} - {{/showmanualcompletion}} - {{/isautomatic}} -
+
+ {{/isautomatic}} {{/uservisible}} {{/hascompletion}} diff --git a/public/course/templates/completion_manual.mustache b/public/course/templates/completion_manual.mustache index b2d1dddedbf..361b051baeb 100644 --- a/public/course/templates/completion_manual.mustache +++ b/public/course/templates/completion_manual.mustache @@ -35,6 +35,7 @@ data-toggletype="manual:undo" data-cmid="{{cmid}}" data-activityname="{{activityname}}" + data-completion="manual" data-withavailability="{{withavailability}}" {{! }}{{#accessibledescription}}{{! }}title="{{.}}" {{! @@ -55,6 +56,7 @@ data-toggletype="manual:mark-done" data-cmid="{{cmid}}" data-activityname="{{activityname}}" + data-completion="manual" data-withavailability="{{withavailability}}" {{! }}{{#accessibledescription}}{{! }}title="{{.}}" {{! @@ -72,6 +74,8 @@ {{^istrackeduser}}