From f83bba28b514ae9518b8cea48fae142fa61cdfda Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Wed, 31 Jul 2024 11:41:43 +0100 Subject: [PATCH] MDL-64675 mod_feedback: better detection of last page break element. Inform user when a page break item cannot be added. --- mod/feedback/edit_item.php | 10 +++++++--- mod/feedback/lang/en/feedback.php | 1 + mod/feedback/lib.php | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/mod/feedback/edit_item.php b/mod/feedback/edit_item.php index cbc88b076f9..6f9ca6663f6 100644 --- a/mod/feedback/edit_item.php +++ b/mod/feedback/edit_item.php @@ -57,9 +57,13 @@ $PAGE->set_url($url); // If the typ is pagebreak so the item will be saved directly. if (!$item->id && $typ === 'pagebreak') { require_sesskey(); - feedback_create_pagebreak($feedback->id); - redirect($editurl->out(false)); - exit; + + $redirectmessage = ''; + if (!feedback_create_pagebreak($feedback->id)) { + $redirectmessage = get_string('cannotcreatepagebreak', 'mod_feedback'); + } + + redirect($editurl, $redirectmessage, null, \core\output\notification::NOTIFY_WARNING); } //get the existing item or create it diff --git a/mod/feedback/lang/en/feedback.php b/mod/feedback/lang/en/feedback.php index a3816d51173..42ac0a4a6f3 100644 --- a/mod/feedback/lang/en/feedback.php +++ b/mod/feedback/lang/en/feedback.php @@ -41,6 +41,7 @@ $string['bold'] = 'Bold'; $string['calendarend'] = '{$a} closes'; $string['calendarstart'] = '{$a} opens'; $string['cannotaccess'] = 'You can only access this feedback from a course'; +$string['cannotcreatepagebreak'] = 'Page breaks cannot be added at the beginning of a feedback, and only one page break can be added at the end'; $string['cannotsavetempl'] = 'Saving templates is not allowed'; $string['captcha'] = 'Captcha'; $string['captchanotset'] = 'Captcha hasn\'t been set.'; diff --git a/mod/feedback/lib.php b/mod/feedback/lib.php index 23562a62e0d..dc9f1a46d0e 100644 --- a/mod/feedback/lib.php +++ b/mod/feedback/lib.php @@ -1983,7 +1983,7 @@ function feedback_delete_completedtmp() { function feedback_create_pagebreak($feedbackid) { global $DB; - //check if there already is a pagebreak on the last position + // Disallow pagebreak if there's already one present in last position, or the feedback has no items. $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedbackid)); if ($lastposition == feedback_get_last_break_position($feedbackid)) { return false;