📄 continue.php
字号:
} elseif ($newpageid == LESSON_RANDOMBRANCH) { $newpageid = lesson_unseen_branch_jump($lesson->id, $USER->id); } // no need to record anything in lesson_attempts redirect("$CFG->wwwroot/mod/lesson/view.php?id=$cm->id&pageid=$newpageid"); break; } $attemptsremaining = 0; $maxattemptsreached = 0; $nodefaultresponse = false; // Flag for redirecting when default feedback is turned off if ($noanswer) { $newpageid = $pageid; // display same page again $feedback = get_string('noanswer', 'lesson'); } else { $nretakes = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); if (!has_capability('mod/lesson:manage', $context)) { // record student's attempt $attempt = new stdClass; $attempt->lessonid = $lesson->id; $attempt->pageid = $pageid; $attempt->userid = $USER->id; $attempt->answerid = $answerid; $attempt->retry = $nretakes; $attempt->correct = $correctanswer; if(isset($userresponse)) { $attempt->useranswer = $userresponse; } $attempt->timeseen = time(); // if allow modattempts, then update the old attempt record, otherwise, insert new answer record if (isset($USER->modattempts[$lesson->id])) { $attempt->retry = $nretakes - 1; // they are going through on review, $nretakes will be too high } if (!$newattemptid = insert_record("lesson_attempts", $attempt)) { error("Continue: attempt not inserted"); } // "number of attempts remaining" message if $lesson->maxattempts > 1 // displaying of message(s) is at the end of page for more ergonomic display if (!$correctanswer and ($newpageid == 0)) { // wrong answer and student is stuck on this page - check how many attempts // the student has had at this page/question $nattempts = count_records("lesson_attempts", "pageid", $pageid, "userid", $USER->id, "retry", $nretakes); // retreive the number of attempts left counter for displaying at bottom of feedback page if ($nattempts >= $lesson->maxattempts) { if ($lesson->maxattempts > 1) { // don't bother with message if only one attempt $maxattemptsreached = 1; } $newpageid = LESSON_NEXTPAGE; } else if ($lesson->maxattempts > 1) { // don't bother with message if only one attempt $attemptsremaining = $lesson->maxattempts - $nattempts; } } } // TODO: merge this code with the jump code below. Convert jumpto page into a proper page id if ($newpageid == 0) { $newpageid = $pageid; } elseif ($newpageid == LESSON_NEXTPAGE) { if ($lesson->nextpagedefault) { // in Flash Card mode... // ... first get the page ids (lessonid the 5th param is needed to make get_records play) $allpages = get_records("lesson_pages", "lessonid", $lesson->id, "id", "id,lessonid,qtype"); shuffle ($allpages); $found = false; if ($lesson->nextpagedefault == LESSON_UNSEENPAGE) { foreach ($allpages as $thispage) { if (!count_records("lesson_attempts", "pageid", $thispage->id, "userid", $USER->id, "retry", $nretakes)) { $found = true; break; } } } elseif ($lesson->nextpagedefault == LESSON_UNANSWEREDPAGE) { foreach ($allpages as $thispage) { if ($thispage->qtype == LESSON_ESSAY) { if (!count_records_select("lesson_attempts", "pageid = $thispage->id AND userid = $USER->id AND retry = $nretakes")) { $found = true; break; } } else { if (!count_records_select("lesson_attempts", "pageid = $thispage->id AND userid = $USER->id AND correct = 1 AND retry = $nretakes")) { $found = true; break; } } } } if ($found) { $newpageid = $thispage->id; if ($lesson->maxpages) { // check number of pages viewed (in the lesson) if (count_records("lesson_attempts", "lessonid", $lesson->id, "userid", $USER->id, "retry", $nretakes) >= $lesson->maxpages) { $newpageid = LESSON_EOL; } } } else { $newpageid = LESSON_EOL; } } elseif (!$newpageid = $page->nextpageid) { // no nextpage go to end of lesson $newpageid = LESSON_EOL; } } // Determine default feedback if necessary if (empty($response)) { if (!$lesson->feedback and !$noanswer and !($lesson->review and !$correctanswer and !$isessayquestion)) { // These conditions have been met: // 1. The lesson manager has not supplied feedback to the student // 2. Not displaying default feedback // 3. The user did provide an answer // 4. We are not reviewing with an incorrect answer (and not reviewing an essay question) $nodefaultresponse = true; // This will cause a redirect below } else if ($isessayquestion) { $response = get_string('defaultessayresponse', 'lesson'); } else if ($correctanswer) { $response = get_string('thatsthecorrectanswer', 'lesson'); } else { $response = get_string('thatsthewronganswer', 'lesson'); } } // display response (if there is one - there should be!) // display: lesson title, page title, question text, student's answer(s) before feedback message if ($response) { //optionally display question page title //if ($title = get_field("lesson_pages", "title", "id", $pageid)) { // print_heading($title); //} if ($lesson->review and !$correctanswer and !$isessayquestion) { $nretakes = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); $qattempts = count_records("lesson_attempts", "userid", $USER->id, "retry", $nretakes, "pageid", $pageid); if ($qattempts == 1) { $feedback = get_string("firstwrong", "lesson"); } else { $feedback = get_string("secondpluswrong", "lesson"); } } else { if ($correctanswer) { $class = 'response correct'; //CSS over-ride this if they exist (!important) } else if ($isessayquestion) { $class = 'response'; } else { $class = 'response incorrect'; } $options = new stdClass; $options->noclean = true; $options->para = true; $feedback = print_simple_box(format_text($page->contents, FORMAT_MOODLE, $options), 'center', '', '', 5, 'generalbox', '', true); $feedback .= '<em>'.get_string("youranswer", "lesson").'</em> : '.format_text($studentanswer, FORMAT_MOODLE, $options). "<div class=\"$class\">".format_text($response, FORMAT_MOODLE, $options).'</div>'; } } } // TODO: merge with the jump code above. This is where some jump numbers are interpreted if (isset($USER->modattempts[$lesson->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) { // remember, this session variable holds the pageid of the last page that the user saw $newpageid = LESSON_EOL; } else { $nretakes--; // make sure we are looking at the right try. $attempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND userid = $USER->id AND retry = $nretakes", "timeseen", "id, pageid"); $found = false; $temppageid = 0; foreach($attempts as $attempt) { if ($found && $temppageid != $attempt->pageid) { // now try to find the next page, make sure next few attempts do no belong to current page $newpageid = $attempt->pageid; break; } if ($attempt->pageid == $pageid) { $found = true; // if found current page $temppageid = $attempt->pageid; } } } } elseif ($newpageid != LESSON_CLUSTERJUMP && $pageid != 0 && $newpageid > 0) { // going to check to see if the page that the user is going to view next, is a cluster page. If so, dont display, go into the cluster. The $newpageid > 0 is used to filter out all of the negative code jumps. if (!$page = get_record("lesson_pages", "id", $newpageid)) { error("Error: could not find page"); } if ($page->qtype == LESSON_CLUSTER) { $newpageid = lesson_cluster_jump($lesson->id, $USER->id, $page->id); } elseif ($page->qtype == LESSON_ENDOFCLUSTER) { $jump = get_field("lesson_answers", "jumpto", "pageid", $page->id, "lessonid", $lesson->id); if ($jump == LESSON_NEXTPAGE) { if ($page->nextpageid == 0) { $newpageid = LESSON_EOL; } else { $newpageid = $page->nextpageid; } } else { $newpageid = $jump; } } } elseif ($newpageid == LESSON_UNSEENBRANCHPAGE) { if (has_capability('mod/lesson:manage', $context)) { if ($page->nextpageid == 0) { $newpageid = LESSON_EOL; } else { $newpageid = $page->nextpageid; } } else { $newpageid = lesson_unseen_question_jump($lesson->id, $USER->id, $pageid); } } elseif ($newpageid == LESSON_PREVIOUSPAGE) { $newpageid = $page->prevpageid; } elseif ($newpageid == LESSON_RANDOMPAGE) { $newpageid = lesson_random_question_jump($lesson->id, $pageid); } elseif ($newpageid == LESSON_CLUSTERJUMP) { if (has_capability('mod/lesson:manage', $context)) { if ($page->nextpageid == 0) { // if teacher, go to next page $newpageid = LESSON_EOL; } else { $newpageid = $page->nextpageid; } } else { $newpageid = lesson_cluster_jump($lesson->id, $USER->id, $pageid); } } if ($nodefaultresponse) { // Don't display feedback redirect("$CFG->wwwroot/mod/lesson/view.php?id=$cm->id&pageid=$newpageid"); } /// Set Messages // This is the warning msg for teachers to inform them that cluster and unseen does not work while logged in as a teacher if(has_capability('mod/lesson:manage', $context) and lesson_display_teacher_warning($lesson->id)) { $warningvars->cluster = get_string("clusterjump", "lesson"); $warningvars->unseen = get_string("unseenpageinbranch", "lesson"); lesson_set_message(get_string("teacherjumpwarning", "lesson", $warningvars)); } // Inform teacher that s/he will not see the timer if ($lesson->timed and has_capability('mod/lesson:manage', $context)) { lesson_set_message(get_string("teachertimerwarning", "lesson")); } // Report attempts remaining if ($attemptsremaining != 0) { lesson_set_message(get_string('attemptsremaining', 'lesson', $attemptsremaining)); } // Report if max attempts reached if ($maxattemptsreached != 0) { lesson_set_message('('.get_string("maximumnumberofattemptsreached", "lesson").')'); } $PAGE = page_create_object('mod-lesson-view', $lesson->id); $PAGE->set_lessonpageid($page->id); $pageblocks = blocks_setup($PAGE); $leftcolumnwidth = bounded_number(180, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT]), 210); $rightcolumnwidth = bounded_number(180, blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT]), 210);/// Print the header, heading and tabs $PAGE->print_header(); include(dirname(__FILE__).'/continue.html');?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -