mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 04:30:15 +01:00
MDL-57696 mod_lesson: Remove redirects from API
In this commit I removed redirects that potentially could break the Web Services layer. Instead doing redirect inside APIs I return a special flag that is properly checked.
This commit is contained in:
parent
61b51764b8
commit
8d6748380c
@ -69,8 +69,8 @@ $reviewmode = $lesson->is_in_review_mode();
|
||||
// Process the page responses.
|
||||
$result = $lesson->process_page_responses($page);
|
||||
|
||||
if ($result->nodefaultresponse) {
|
||||
// Don't display feedback
|
||||
if ($result->nodefaultresponse || $result->inmediatejump) {
|
||||
// Don't display feedback or force a redirecto to newpageid.
|
||||
redirect(new moodle_url('/mod/lesson/view.php', array('id'=>$cm->id,'pageid'=>$result->newpageid)));
|
||||
}
|
||||
|
||||
|
@ -2699,7 +2699,9 @@ class lesson extends lesson_base {
|
||||
$result->nodefaultresponse = true;
|
||||
}
|
||||
|
||||
if (isset($USER->modattempts[$lesson->id])) {
|
||||
if ($result->inmediatejump) {
|
||||
return $result;
|
||||
} else if (isset($USER->modattempts[$this->properties->id])) {
|
||||
// Make sure if the student is reviewing, that he/she sees the same pages/page path that he/she saw the first time.
|
||||
if ($USER->modattempts[$lesson->id]->pageid == $page->id && $page->nextpageid == 0) {
|
||||
// Remember, this session variable holds the pageid of the last page that the user saw.
|
||||
@ -3228,6 +3230,11 @@ abstract class lesson_page extends lesson_base {
|
||||
*/
|
||||
$result = $this->check_answer();
|
||||
|
||||
// Processes inmediate jumps.
|
||||
if ($result->inmediatejump) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
$result->attemptsremaining = 0;
|
||||
$result->maxattemptsreached = false;
|
||||
|
||||
@ -3743,6 +3750,7 @@ abstract class lesson_page extends lesson_base {
|
||||
$result->userresponse = null;
|
||||
$result->feedback = '';
|
||||
$result->nodefaultresponse = false; // Flag for redirecting when default feedback is turned off
|
||||
$result->inmediatejump = false; // Flag to detect when we should do a jump from the page without further processing.
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
@ -160,6 +160,8 @@ class lesson_page_type_branchtable extends lesson_page {
|
||||
public function check_answer() {
|
||||
global $USER, $DB, $PAGE, $CFG;
|
||||
|
||||
$result = parent::check_answer();
|
||||
|
||||
require_sesskey();
|
||||
$newpageid = optional_param('jumpto', null, PARAM_INT);
|
||||
// going to insert into lesson_branch
|
||||
@ -210,7 +212,10 @@ class lesson_page_type_branchtable extends lesson_page {
|
||||
$branch->nextpageid = $newpageid;
|
||||
$DB->insert_record("lesson_branch", $branch);
|
||||
|
||||
redirect(new moodle_url('/mod/lesson/view.php', array('id' => $PAGE->cm->id, 'pageid' => $newpageid)));
|
||||
// This will force to redirect to the newpageid.
|
||||
$result->inmediatejump = true;
|
||||
$result->newpageid = $newpageid;
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function display_answers(html_table $table) {
|
||||
|
@ -120,7 +120,9 @@ class lesson_page_type_essay extends lesson_page {
|
||||
require_sesskey();
|
||||
|
||||
if (!$data) {
|
||||
redirect(new moodle_url('/mod/lesson/view.php', array('id'=>$PAGE->cm->id, 'pageid'=>$this->properties->id)));
|
||||
$result->inmediatejump = true;
|
||||
$result->newpageid = $this->properties->id;
|
||||
return $result;
|
||||
}
|
||||
|
||||
if (is_array($data->answer)) {
|
||||
|
@ -181,7 +181,9 @@ class lesson_page_type_matching extends lesson_page {
|
||||
require_sesskey();
|
||||
|
||||
if (!$data) {
|
||||
redirect(new moodle_url('/mod/lesson/view.php', array('id'=>$PAGE->cm->id, 'pageid'=>$this->properties->id)));
|
||||
$result->inmediatejump = true;
|
||||
$result->newpageid = $this->properties->id;
|
||||
return $result;
|
||||
}
|
||||
|
||||
$response = $data->response;
|
||||
|
@ -135,7 +135,9 @@ class lesson_page_type_multichoice extends lesson_page {
|
||||
require_sesskey();
|
||||
|
||||
if (!$data) {
|
||||
redirect(new moodle_url('/mod/lesson/view.php', array('id'=>$PAGE->cm->id, 'pageid'=>$this->properties->id)));
|
||||
$result->inmediatejump = true;
|
||||
$result->newpageid = $this->properties->id;
|
||||
return $result;
|
||||
}
|
||||
|
||||
if ($this->properties->qoption) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user