studentquiz / moodle-mod_studentquiz

Moodle-Plugin
GNU General Public License v3.0
38 stars 37 forks source link

Activity completion "Expect Completed on" function doesn't add entry to Calendar/Timeline block #407

Closed atbinix closed 1 year ago

atbinix commented 2 years ago

Hi,

It has been observed that the 'Student Quiz' activity does not add calendar/timeline block entries whenever the activity is set to use the 'Expect completion by' function of Activity Completion.

It appears the Moodle core code might not automatically handle adding entries to the calendar via this field, so requires plugins to explicitly update '\core_completion\api::update_completion_date_event' instead. This was noted elsewhere for the Checklist activity via https://tracker.moodle.org/browse/CONTRIB-8344 where the following code was required to be added for it, for example: https://github.com/davosmith/moodle-checklist/commit/c2edd07cd27a8c20e80e640b5234d990185b744d.patch

Not sure if that is relevant or applicable in this case, but thought I'd mention it.

STEPS TO REPLICATE:

Ensure either/both the Calendar/Timeline block is added to your testing course. Activity Completion should also be enabled and tracked within this test course per the course settings.

Add a new 'Student Quiz' activity. Under Activity Completion, set 'Completion tracking' to 'Students can manually mark the activity as completed' and set the 'Expect completion by' date to the next day. Leave all other settings default. Save and return to course.

Look at the Calendar/timeline block and observe there is no entry listed for the date specified.

===== Further note:

I think It would be best to handle this more like how other core modules (ex: Quiz) handles this:

$completionexpected = (!empty($quiz->completionexpected)) ? $quiz->completionexpected : null;
\core_completion\api::update_completion_date_event($quiz->coursemodule, 'quiz', $quiz->id, $completionexpected);

The checklist method actually means you can never make the calendar event go away by unticking 'Expect completion by'. The way the Quiz does it means it can be un-set via the applicable tick-box, which would be the preferable outcome.

oucnelson commented 2 years ago

Thanks for reporting, atbinix. We will try to fix this as soon as possible (following ironing out any general Moodle 4.x bugs).

timhunt commented 1 year ago

I think that the fix for this has just been merged (https://github.com/studentquiz/moodle-mod_studentquiz/pull/425). I will release after a bit more testing.