From fb992d716a5c53e1d547e5c5e68cfa75fb831870 Mon Sep 17 00:00:00 2001 From: mark-nielsen Date: Sun, 10 Sep 2006 02:38:09 +0000 Subject: [PATCH] Started to reorganize view.php --- mod/lesson/essay.php | 4 +- mod/lesson/highscores.php | 6 +- mod/lesson/locallib.php | 36 +- mod/lesson/tabs.php | 5 +- mod/lesson/view.php | 1891 ++++++++++++++++++------------------- 5 files changed, 942 insertions(+), 1000 deletions(-) diff --git a/mod/lesson/essay.php b/mod/lesson/essay.php index e839366a27..32209e4d9e 100644 --- a/mod/lesson/essay.php +++ b/mod/lesson/essay.php @@ -11,8 +11,8 @@ require_once('locallib.php'); require_once('lib.php'); - $id = required_param('id', PARAM_INT); // Course Module ID - $mode = optional_param('mode', 'display', PARAM_ALPHA); // for eacherview action todo use user pref + $id = required_param('id', PARAM_INT); // Course Module ID + $mode = optional_param('mode', 'display', PARAM_ALPHA); list($cm, $course, $lesson) = lesson_get_basics($id); diff --git a/mod/lesson/highscores.php b/mod/lesson/highscores.php index bcffe24168..d54074c21f 100644 --- a/mod/lesson/highscores.php +++ b/mod/lesson/highscores.php @@ -195,10 +195,10 @@ if (!has_capability('mod/lesson:manage', $context)) { // teachers don't need the links echo '
'; if ($link) { - echo "
"; + echo "
"; } else { - echo "
id\">".get_string("cancel", "lesson").' '. - " id&action=navigation\">".get_string("startlesson", "lesson").''; + echo "
wwwroot/course/view.php?id=$course->id\">".get_string("cancel", "lesson").' '. + " wwwroot/mod/lesson/view.php?id=$cm->id&viewed=1\">".get_string("startlesson", "lesson").''; } echo "
"; } diff --git a/mod/lesson/locallib.php b/mod/lesson/locallib.php index 78f89523dc..5822ff05fd 100644 --- a/mod/lesson/locallib.php +++ b/mod/lesson/locallib.php @@ -219,8 +219,38 @@ if (!defined("LESSON_RESPONSE_EDITOR")) { **/ function lesson_print_header($cm, $course, $lesson, $currenttab = '') { global $CFG, $USER; + + $strlessons = get_string('modulenameplural', 'lesson'); + $strlesson = get_string('modulename', 'lesson'); + $strname = format_string($lesson->name, true); + $context = get_context_instance(CONTEXT_MODULE, $cm->id); + // Changed the update_module_button and added another button when a teacher is checking the navigation of the lesson + if (has_capability('mod/lesson:edit', $context)) { + + $button = update_module_button($cm->id, $course->id, $strlesson); + + if ($currenttab == 'view') { + if (!$pageid = optional_param('pageid', 0, PARAM_INT)) { + $pageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0); + } + if (!empty($pageid) and $pageid != LESSON_EOL) { + $button = '
'.$button. + ''. + '
'. + ''. + ''. + ''. + ''. + '
+
'; + } + } + } else { + $button = ''; + } + /// Header setup if ($course->category) { $navigation = "wwwroot/course/view.php?id=$course->id\" title=\"$course->fullname\">$course->shortname ->"; @@ -228,15 +258,11 @@ function lesson_print_header($cm, $course, $lesson, $currenttab = '') { $navigation = ''; } - $strlessons = get_string('modulenameplural', 'lesson'); - $strlesson = get_string('modulename', 'lesson'); - $strname = format_string($lesson->name, true); /// Print header, heading, tabs and messages print_header("$course->shortname: $strname", $course->fullname, "$navigation id\" title=\"$strlessons\">$strlessons -> $strname", - '', '', true, update_module_button($cm->id, $course->id, $strlesson), - navmenu($course, $cm)); + '', '', true, $button, navmenu($course, $cm)); if (has_capability('mod/lesson:manage')) { print_heading_with_help(format_string($lesson->name, true), "overview", "lesson"); diff --git a/mod/lesson/tabs.php b/mod/lesson/tabs.php index b1cf2f1aee..9536227c82 100644 --- a/mod/lesson/tabs.php +++ b/mod/lesson/tabs.php @@ -34,10 +34,9 @@ $counts = new stdClass; $counts->attempts = count_records('lesson_grades', 'lessonid', $lesson->id); $counts->student = $course->student; - - + + $row[] = new tabobject('view', "$CFG->wwwroot/mod/lesson/view.php?id=$cm->id&action=navigation", get_string('preview', 'lesson'), get_string('previewlesson', 'lesson', format_string($lesson->name))); $row[] = new tabobject('edit', "$CFG->wwwroot/mod/lesson/edit.php?id=$cm->id", get_string('edit'), get_string('editlesson', 'lesson', format_string($lesson->name))); - $row[] = new tabobject('navigation', "$CFG->wwwroot/mod/lesson/view.php?id=$cm->id&action=navigation", get_string('preview', 'lesson'), get_string('previewlesson', 'lesson', format_string($lesson->name))); $row[] = new tabobject('reports', "$CFG->wwwroot/mod/lesson/report.php?id=$cm->id", get_string('reports', 'lesson'), get_string('viewreports', 'lesson', $counts)); if (has_capability('mod/lesson:edit', $context)) { $row[] = new tabobject('essay', "$CFG->wwwroot/mod/lesson/essay.php?id=$cm->id", get_string('manualgrading', 'lesson')); diff --git a/mod/lesson/view.php b/mod/lesson/view.php index 1492db51f1..cd8d2beba0 100644 --- a/mod/lesson/view.php +++ b/mod/lesson/view.php @@ -11,45 +11,21 @@ $pageid = optional_param('pageid', NULL, PARAM_INT); // Lesson Page ID $action = optional_param('action', '', PARAM_ALPHA); - - - if (! $cm = get_coursemodule_from_id('lesson', $id)) { - error('Course Module ID was incorrect'); - } - - if (! $course = get_record('course', 'id', $cm->course)) { - error('Course is misconfigured'); - } - - if (! $lesson = get_record('lesson', 'id', $cm->instance)) { - error('Course module is incorrect'); - } + list($cm, $course, $lesson) = lesson_get_basics($id); require_login($course->id, false, $cm); $context = get_context_instance(CONTEXT_MODULE, $cm->id); require_capability('mod/lesson:view', $context); -/// Print the page header +/// Check these for students only +/// Check lesson availability +/// Check for password +/// Check for high scores + if (!has_capability('mod/lesson:manage', $context)) { - if ($course->category) { - $navigation = ''. $course->shortname .' ->'; - } else { - $navigation = ''; - } - - $strlessons = get_string('modulenameplural', 'lesson'); - $strlesson = get_string('modulename', 'lesson'); - - // moved the action up because I needed to know what the action will be before the header is printed - if (empty($action)) { - if (has_capability('mod/lesson:manage', $context)) { - redirect("$CFG->wwwroot/mod/lesson/edit.php?id=$cm->id"); - } elseif (time() < $lesson->available) { - print_header($course->shortname .': '. format_string($lesson->name), $course->fullname, - $navigation .''. $strlessons .' -> '. - ''. format_string($lesson->name,true) .'', - '', '', true, '', navmenu($course, $cm)); + if (time() < $lesson->available) { + lesson_print_header($cm, $course, $lesson); print_simple_box_start('center'); echo '
'; echo get_string('lessonopen', 'lesson', userdate($lesson->available)).'
'; @@ -58,10 +34,9 @@ print_simple_box_end(); print_footer($course); exit(); - } elseif (time() > $lesson->deadline) { - print_header($course->shortname .': '. format_string($lesson->name), $course->fullname, - "$navigation id\">$strlessons -> id\">".format_string($lesson->name,true)."", '', "", true, - '', navmenu($course, $cm)); + + } else if (time() > $lesson->deadline) { + lesson_print_header($cm, $course, $lesson); print_simple_box_start('center'); echo '
'; echo get_string('lessonclosed', 'lesson', userdate($lesson->deadline)) .'
'; @@ -70,70 +45,8 @@ print_simple_box_end(); print_footer($course); exit(); - } elseif ($lesson->highscores and !$lesson->practice) { - if ($lesson->usepassword and empty($USER->lessonloggedin[$lesson->id])) { - // User needs to be logged in - $action = 'navigation'; - } else { - redirect("$CFG->wwwroot/mod/lesson/highscores.php?id=$cm->id"); - } - } else { - $action = 'navigation'; - } - } - - // changed the update_module_button and added another button when a teacher is checking the navigation of the lesson - if (has_capability('mod/lesson:edit', $context)) { - $button = '
'; - $button .= '
'. - ''. - ''. - ''. - '
'; - if ($action == 'navigation' && $pageid != LESSON_EOL) { - $currentpageid = $pageid; // very important not to alter $pageid. - if (empty($currentpageid)) { - $currentpageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0); - } - if (!empty($currentpageid)) { // if still empty, then something is wrong - $button .= '
'. - '
'. - ''. - ''. - ''. - ''. - '
'; - } - } - $button .= '
'; - } else { - $button = ''; - } - - print_header($course->shortname .': '. format_string($lesson->name), $course->fullname, - "$navigation id\">$strlessons -> id\">".format_string($lesson->name,true)."", '', '', true, - $button, // took out update_module_button($cm->id, $course->id, $strlesson) and replaced it with $button - navmenu($course, $cm)); - - if (has_capability('mod/lesson:manage', $context)) { - if ($action == 'teacherview' and $display) { - // teacherview tab not selected when displaying a single page/question - $currenttab = ''; - } else { - $currenttab = $action; - } - include('tabs.php'); - } - - // set up some general variables - $usehtmleditor = can_use_html_editor(); - $path = $CFG->wwwroot .'/course'; - - /************** navigation **************************************/ - if ($action == 'navigation') { - // password protected lesson code - if ($lesson->usepassword && !has_capability('mod/lesson:manage', $context)) { + } else if ($lesson->usepassword) { // Password protected lesson code $correctpass = false; if ($password = optional_param('userpassword', '', PARAM_CLEAN)) { if ($lesson->password == md5(trim($password))) { @@ -157,1024 +70,1028 @@ if (optional_param('userpassword', 0, PARAM_CLEAN)) { notify(get_string('loginfail', 'lesson')); } - + echo get_string('passwordprotectedlesson', 'lesson', format_string($lesson->name))."

\n". get_string('enterpassword', 'lesson')."

\n". ''. get_string('cancel', 'lesson') .' '; - + lesson_print_submit_link(get_string('continue', 'lesson'), 'password', 'center', 'standardbutton submitbutton'); print_simple_box_end(); echo "
\n"; exit(); } + } else if ($lesson->highscores and !$lesson->practice and !optional_param('viewed', 0)) { + // Display high scores before starting lesson + redirect("$CFG->wwwroot/mod/lesson/highscores.php?id=$cm->id"); } + } - // this is called if a student leaves during a lesson - if($pageid == LESSON_UNSEENBRANCHPAGE) { - $pageid = lesson_unseen_question_jump($lesson->id, $USER->id, $pageid); - } - - // display individual pages and their sets of answers - // if pageid is EOL then the end of the lesson has been reached - // for flow, changed to simple echo for flow styles, michaelp, moved lesson name and page title down - $timedflag = false; - $attemptflag = false; - if (empty($pageid)) { - // make sure there are pages to view - if (!get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0)) { - if (!has_capability('mod/lesson:manage', $context)) { - notify(get_string('lessonnotready', 'lesson', $course->teacher)); // a nice message to the student + lesson_print_header($cm, $course, $lesson, 'view'); + + // set up some general variables + $path = $CFG->wwwroot .'/course'; + + // this is called if a student leaves during a lesson + if($pageid == LESSON_UNSEENBRANCHPAGE) { + $pageid = lesson_unseen_question_jump($lesson->id, $USER->id, $pageid); + } + + // display individual pages and their sets of answers + // if pageid is EOL then the end of the lesson has been reached + // for flow, changed to simple echo for flow styles, michaelp, moved lesson name and page title down + $timedflag = false; + $attemptflag = false; + if (empty($pageid)) { + // make sure there are pages to view + if (!get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0)) { + if (!has_capability('mod/lesson:manage', $context)) { + notify(get_string('lessonnotready', 'lesson', $course->teacher)); // a nice message to the student + } else { + if (!count_records('lesson_pages', 'lessonid', $lesson->id)) { + redirect('view.php?id='.$cm->id); // no pages - redirect to add pages } else { - if (!count_records('lesson_pages', 'lessonid', $lesson->id)) { - redirect('view.php?id='.$cm->id); // no pages - redirect to add pages - } else { - notify(get_string('lessonpagelinkingbroken', 'lesson')); // ok, bad mojo - } + notify(get_string('lessonpagelinkingbroken', 'lesson')); // ok, bad mojo } - print_footer($course); - exit(); } - - // check for dependencies - if ($lesson->dependency and !has_capability('mod/lesson:manage', $context)) { - if ($dependentlesson = get_record('lesson', 'id', $lesson->dependency)) { - // lesson exists, so we can proceed - $conditions = unserialize($lesson->conditions); - // assume false for all - $timespent = false; - $completed = false; - $gradebetterthan = false; - // check for the timespent condition - if ($conditions->timespent) { - if ($attempttimes = get_records_select('lesson_timer', "userid = $USER->id AND lessonid = $dependentlesson->id")) { - // go through all the times and test to see if any of them satisfy the condition - foreach($attempttimes as $attempttime) { - $duration = $attempttime->lessontime - $attempttime->starttime; - if ($conditions->timespent < $duration/60) { - $timespent = true; - } - } - } - } else { - $timespent = true; // there isn't one set - } - - // check for the gradebetterthan condition - if($conditions->gradebetterthan) { - if ($studentgrades = get_records_select('lesson_grades', "userid = $USER->id AND lessonid = $dependentlesson->id")) { - // go through all the grades and test to see if any of them satisfy the condition - foreach($studentgrades as $studentgrade) { - if ($studentgrade->grade >= $conditions->gradebetterthan) { - $gradebetterthan = true; - } + print_footer($course); + exit(); + } + + // check for dependencies + if ($lesson->dependency and !has_capability('mod/lesson:manage', $context)) { + if ($dependentlesson = get_record('lesson', 'id', $lesson->dependency)) { + // lesson exists, so we can proceed + $conditions = unserialize($lesson->conditions); + // assume false for all + $timespent = false; + $completed = false; + $gradebetterthan = false; + // check for the timespent condition + if ($conditions->timespent) { + if ($attempttimes = get_records_select('lesson_timer', "userid = $USER->id AND lessonid = $dependentlesson->id")) { + // go through all the times and test to see if any of them satisfy the condition + foreach($attempttimes as $attempttime) { + $duration = $attempttime->lessontime - $attempttime->starttime; + if ($conditions->timespent < $duration/60) { + $timespent = true; } } - } else { - $gradebetterthan = true; // there isn't one set - } + } + } else { + $timespent = true; // there isn't one set + } - // check for the completed condition - if ($conditions->completed) { - if (count_records('lesson_grades', 'userid', $USER->id, 'lessonid', $dependentlesson->id)) { - $completed = true; + // check for the gradebetterthan condition + if($conditions->gradebetterthan) { + if ($studentgrades = get_records_select('lesson_grades', "userid = $USER->id AND lessonid = $dependentlesson->id")) { + // go through all the grades and test to see if any of them satisfy the condition + foreach($studentgrades as $studentgrade) { + if ($studentgrade->grade >= $conditions->gradebetterthan) { + $gradebetterthan = true; + } } - } else { - $completed = true; // not set - } - - $errors = array(); - // collect all of our error statements - if (!$timespent) { - $errors[] = get_string('timespenterror', 'lesson', $conditions->timespent); - } - if (!$completed) { - $errors[] = get_string('completederror', 'lesson'); } - if (!$gradebetterthan) { - $errors[] = get_string('gradebetterthanerror', 'lesson', $conditions->gradebetterthan); + } else { + $gradebetterthan = true; // there isn't one set + } + + // check for the completed condition + if ($conditions->completed) { + if (count_records('lesson_grades', 'userid', $USER->id, 'lessonid', $dependentlesson->id)) { + $completed = true; } - if (!empty($errors)) { // print out the errors if any - echo '

'; - print_simple_box_start('center'); - print_string('completethefollowingconditions', 'lesson', $dependentlesson->name); - echo '

'.implode('
'.get_string('and', 'lesson').'
', $errors).'

'; - print_simple_box_end(); - echo '

'; - print_footer($course); - exit(); - } + } else { + $completed = true; // not set } - } - add_to_log($course->id, 'lesson', 'start', 'view.php?id='. $cm->id, $lesson->id, $cm->id); - // if no pageid given see if the lesson has been started - if ($grades = get_records_select('lesson_grades', 'lessonid = '. $lesson->id .' AND userid = '. $USER->id, - 'grade DESC')) { - $retries = count($grades); - } else { - $retries = 0; - } - if ($retries) { - $attemptflag = true; - } - if (isset($USER->modattempts[$lesson->id])) { - unset($USER->modattempts[$lesson->id]); // if no pageid, then student is NOT reviewing + $errors = array(); + // collect all of our error statements + if (!$timespent) { + $errors[] = get_string('timespenterror', 'lesson', $conditions->timespent); + } + if (!$completed) { + $errors[] = get_string('completederror', 'lesson'); + } + if (!$gradebetterthan) { + $errors[] = get_string('gradebetterthanerror', 'lesson', $conditions->gradebetterthan); + } + if (!empty($errors)) { // print out the errors if any + echo '

'; + print_simple_box_start('center'); + print_string('completethefollowingconditions', 'lesson', $dependentlesson->name); + echo '

'.implode('
'.get_string('and', 'lesson').'
', $errors).'

'; + print_simple_box_end(); + echo '

'; + print_footer($course); + exit(); + } } + } + add_to_log($course->id, 'lesson', 'start', 'view.php?id='. $cm->id, $lesson->id, $cm->id); + // if no pageid given see if the lesson has been started + if ($grades = get_records_select('lesson_grades', 'lessonid = '. $lesson->id .' AND userid = '. $USER->id, + 'grade DESC')) { + $retries = count($grades); + } else { + $retries = 0; + } + if ($retries) { + $attemptflag = true; + } + + if (isset($USER->modattempts[$lesson->id])) { + unset($USER->modattempts[$lesson->id]); // if no pageid, then student is NOT reviewing + } + + // if there are any questions have been answered correctly in this attempt + if ($attempts = get_records_select('lesson_attempts', + "lessonid = $lesson->id AND userid = $USER->id AND retry = $retries AND + correct = 1", 'timeseen DESC')) { - // if there are any questions have been answered correctly in this attempt - if ($attempts = get_records_select('lesson_attempts', - "lessonid = $lesson->id AND userid = $USER->id AND retry = $retries AND - correct = 1", 'timeseen DESC')) { - - foreach ($attempts as $attempt) { - $jumpto = get_field('lesson_answers', 'jumpto', 'id', $attempt->answerid); - // convert the jumpto to a proper page id - if ($jumpto == 0) { // unlikely value! - $lastpageseen = $attempt->pageid; - } elseif ($jumpto == LESSON_NEXTPAGE) { - if (!$lastpageseen = get_field('lesson_pages', 'nextpageid', 'id', - $attempt->pageid)) { - // no nextpage go to end of lesson - $lastpageseen = LESSON_EOL; - } - } else { - $lastpageseen = $jumpto; + foreach ($attempts as $attempt) { + $jumpto = get_field('lesson_answers', 'jumpto', 'id', $attempt->answerid); + // convert the jumpto to a proper page id + if ($jumpto == 0) { // unlikely value! + $lastpageseen = $attempt->pageid; + } elseif ($jumpto == LESSON_NEXTPAGE) { + if (!$lastpageseen = get_field('lesson_pages', 'nextpageid', 'id', + $attempt->pageid)) { + // no nextpage go to end of lesson + $lastpageseen = LESSON_EOL; } - break; // only look at the latest correct attempt + } else { + $lastpageseen = $jumpto; } - } else { - $attempts = NULL; + break; // only look at the latest correct attempt } + } else { + $attempts = NULL; + } - if ($branchtables = get_records_select('lesson_branch', - "lessonid = $lesson->id AND userid = $USER->id AND retry = $retries", 'timeseen DESC')) { - // in here, user has viewed a branch table - $lastbranchtable = current($branchtables); - if ($attempts != NULL) { - foreach($attempts as $attempt) { - if ($lastbranchtable->timeseen > $attempt->timeseen) { - // branch table was viewed later than the last attempt - $lastpageseen = $lastbranchtable->pageid; - } - break; + if ($branchtables = get_records_select('lesson_branch', + "lessonid = $lesson->id AND userid = $USER->id AND retry = $retries", 'timeseen DESC')) { + // in here, user has viewed a branch table + $lastbranchtable = current($branchtables); + if ($attempts != NULL) { + foreach($attempts as $attempt) { + if ($lastbranchtable->timeseen > $attempt->timeseen) { + // branch table was viewed later than the last attempt + $lastpageseen = $lastbranchtable->pageid; } - } else { - // hasnt answered any questions but has viewed a branch table - $lastpageseen = $lastbranchtable->pageid; + break; } + } else { + // hasnt answered any questions but has viewed a branch table + $lastpageseen = $lastbranchtable->pageid; } - //if ($lastpageseen != $firstpageid) { - if (isset($lastpageseen) and count_records('lesson_attempts', 'lessonid', $lesson->id, 'userid', $USER->id, 'retry', $retries) > 0) { - // get the first page - if (!$firstpageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, - 'prevpageid', 0)) { - error('Navigation: first page not found'); - } - if ($lesson->timed) { - if ($lesson->retake) { - print_simple_box('

'. get_string('leftduringtimed', 'lesson') .'

', 'center'); - echo ''; - } else { - print_simple_box_start('center'); - echo '
'; - echo get_string('leftduringtimednoretake', 'lesson'); - echo '

'; - echo '
'; - print_simple_box_end(); - } - + } + //if ($lastpageseen != $firstpageid) { + if (isset($lastpageseen) and count_records('lesson_attempts', 'lessonid', $lesson->id, 'userid', $USER->id, 'retry', $retries) > 0) { + // get the first page + if (!$firstpageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, + 'prevpageid', 0)) { + error('Navigation: first page not found'); + } + if ($lesson->timed) { + if ($lesson->retake) { + print_simple_box('

'. get_string('leftduringtimed', 'lesson') .'

', 'center'); + echo ''; } else { - print_simple_box("

".get_string('youhaveseen','lesson').'

', - "center"); - + print_simple_box_start('center'); echo '
'; - echo ''. - ''. - get_string('yes').'   '; - echo ''. - ''. - get_string('no').'
'; - echo ''; + echo get_string('leftduringtimednoretake', 'lesson'); + echo '

'; + echo '
'; + print_simple_box_end(); } + + } else { + print_simple_box("

".get_string('youhaveseen','lesson').'

', + "center"); + + echo '
'; + echo ''. + ''. + get_string('yes').'   '; + echo ''. + ''. + get_string('no').'
'; + echo ''; + } + print_footer($course); + exit(); + } + + if ($grades) { + foreach ($grades as $grade) { + $bestgrade = $grade->grade; + break; + } + if (!$lesson->retake) { + print_simple_box_start('center'); + echo "
"; + echo get_string("noretake", "lesson"); + echo "

'; + echo "
"; + print_simple_box_end(); print_footer($course); exit(); + //redirect("../../course/view.php?id=$course->id", get_string("alreadytaken", "lesson")); + // allow student to retake course even if they have the maximum grade + // } elseif ($bestgrade == 100) { + // redirect("../../course/view.php?id=$course->id", get_string("maximumgradeachieved", + // "lesson")); } + } + // start at the first page + if (!$pageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0)) { + error('Navigation: first page not found'); + } + /// This is the code for starting a timed test + if(!isset($USER->startlesson[$lesson->id]) && !has_capability('mod/lesson:manage', $context)) { + $USER->startlesson[$lesson->id] = true; + $startlesson = new stdClass; + $startlesson->lessonid = $lesson->id; + $startlesson->userid = $USER->id; + $startlesson->starttime = time(); + $startlesson->lessontime = time(); - if ($grades) { - foreach ($grades as $grade) { - $bestgrade = $grade->grade; - break; - } - if (!$lesson->retake) { - print_simple_box_start('center'); - echo "
"; - echo get_string("noretake", "lesson"); - echo "

'; - echo "
"; - print_simple_box_end(); - print_footer($course); - exit(); - //redirect("../../course/view.php?id=$course->id", get_string("alreadytaken", "lesson")); - // allow student to retake course even if they have the maximum grade - // } elseif ($bestgrade == 100) { - // redirect("../../course/view.php?id=$course->id", get_string("maximumgradeachieved", - // "lesson")); - } + if (!insert_record('lesson_timer', $startlesson)) { + error('Error: could not insert row into lesson_timer table'); } - // start at the first page - if (!$pageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0)) { - error('Navigation: first page not found'); + if ($lesson->timed) { + $timedflag = true; } - /// This is the code for starting a timed test - if(!isset($USER->startlesson[$lesson->id]) && !has_capability('mod/lesson:manage', $context)) { - $USER->startlesson[$lesson->id] = true; - $startlesson = new stdClass; - $startlesson->lessonid = $lesson->id; - $startlesson->userid = $USER->id; - $startlesson->starttime = time(); - $startlesson->lessontime = time(); - - if (!insert_record('lesson_timer', $startlesson)) { - error('Error: could not insert row into lesson_timer table'); + } + + if (!empty($lesson->mediafile)) { + // open our pop-up + $url = '/mod/lesson/mediafile.php?id='.$cm->id; + $name = 'lessonmediafile'; + $options = 'menubar=0,location=0,left=5,top=5,scrollbars,resizable,width='. $lesson->mediawidth .',height='. $lesson->mediaheight; + echo "\n'; + } + } + + if ($pageid != LESSON_EOL) { + /// This is the code updates the lessontime for a timed test + if ($startlastseen = optional_param('startlastseen', '', PARAM_ALPHA)) { /// this deletes old records not totally sure if this is necessary anymore + if ($startlastseen == 'no') { + if ($grades = get_records_select('lesson_grades', "lessonid = $lesson->id AND userid = $USER->id", + 'grade DESC')) { + $retries = count($grades); + } else { + $retries = 0; } - if ($lesson->timed) { - $timedflag = true; + if (!delete_records('lesson_attempts', 'userid', $USER->id, 'lessonid', $lesson->id, 'retry', $retries)) { + error('Error: could not delete old attempts'); + } + if (!delete_records('lesson_branch', 'userid', $USER->id, 'lessonid', $lesson->id, 'retry', $retries)) { + error('Error: could not delete old seen branches'); } - } - - if (!empty($lesson->mediafile)) { - // open our pop-up - $url = '/mod/lesson/mediafile.php?id='.$cm->id; - $name = 'lessonmediafile'; - $options = 'menubar=0,location=0,left=5,top=5,scrollbars,resizable,width='. $lesson->mediawidth .',height='. $lesson->mediaheight; - echo "\n'; } } - if ($pageid != LESSON_EOL) { - /// This is the code updates the lessontime for a timed test - if ($startlastseen = optional_param('startlastseen', '', PARAM_ALPHA)) { /// this deletes old records not totally sure if this is necessary anymore - if ($startlastseen == 'no') { - if ($grades = get_records_select('lesson_grades', "lessonid = $lesson->id AND userid = $USER->id", - 'grade DESC')) { - $retries = count($grades); - } else { - $retries = 0; - } - if (!delete_records('lesson_attempts', 'userid', $USER->id, 'lessonid', $lesson->id, 'retry', $retries)) { - error('Error: could not delete old attempts'); - } - if (!delete_records('lesson_branch', 'userid', $USER->id, 'lessonid', $lesson->id, 'retry', $retries)) { - error('Error: could not delete old seen branches'); - } - } - } - - add_to_log($course->id, 'lesson', 'view', 'view.php?id='. $cm->id, $pageid, $cm->id); - if (!$page = get_record('lesson_pages', 'id', $pageid)) { - error('Navigation: the page record not found'); - } + add_to_log($course->id, 'lesson', 'view', 'view.php?id='. $cm->id, $pageid, $cm->id); + if (!$page = get_record('lesson_pages', 'id', $pageid)) { + error('Navigation: the page record not found'); + } - if ($page->qtype == LESSON_CLUSTER) { //this only gets called when a user starts up a new lesson and the first page is a cluster page - if (!has_capability('mod/lesson:manage', $context)) { - // get new id - $pageid = lesson_cluster_jump($lesson->id, $USER->id, $pageid); - // get new page info - if (!$page = get_record('lesson_pages', 'id', $pageid)) { - error('Navigation: the page record not found'); - } - add_to_log($course->id, 'lesson', 'view', 'view.php?id='. $cm->id, $pageid, $cm->id); - } else { - // get the next page - $pageid = $page->nextpageid; - if (!$page = get_record('lesson_pages', 'id', $pageid)) { - error('Navigation: the page record not found'); - } + if ($page->qtype == LESSON_CLUSTER) { //this only gets called when a user starts up a new lesson and the first page is a cluster page + if (!has_capability('mod/lesson:manage', $context)) { + // get new id + $pageid = lesson_cluster_jump($lesson->id, $USER->id, $pageid); + // get new page info + if (!$page = get_record('lesson_pages', 'id', $pageid)) { + error('Navigation: the page record not found'); } - } elseif ($page->qtype == LESSON_ENDOFCLUSTER) { - if ($page->nextpageid == 0) { - $nextpageid = LESSON_EOL; - } else { - $nextpageid = $page->nextpageid; + add_to_log($course->id, 'lesson', 'view', 'view.php?id='. $cm->id, $pageid, $cm->id); + } else { + // get the next page + $pageid = $page->nextpageid; + if (!$page = get_record('lesson_pages', 'id', $pageid)) { + error('Navigation: the page record not found'); } - redirect("view.php?id=$cm->id&action=navigation&pageid=$nextpageid", get_string('endofclustertitle', 'lesson')); } - - - // check to see if the user can see the left menu - if (!has_capability('mod/lesson:manage', $context)) { - $lesson->displayleft = lesson_displayleftif($lesson); + } elseif ($page->qtype == LESSON_ENDOFCLUSTER) { + if ($page->nextpageid == 0) { + $nextpageid = LESSON_EOL; + } else { + $nextpageid = $page->nextpageid; } - - // start of left menu - if ($lesson->displayleft) { - echo '
'; - // skip navigation link - echo ''; - if($firstpageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0)) { - // print the pages - echo "
\n"; - echo '
'.get_string('lessonmenu', 'lesson')."
\n"; - echo '\n"; - echo "
\n"; - lesson_print_tree_menu($lesson->id, $firstpageid, $cm->id); - echo "
\n"; + redirect("view.php?id=$cm->id&action=navigation&pageid=$nextpageid", get_string('endofclustertitle', 'lesson')); + } + + + // check to see if the user can see the left menu + if (!has_capability('mod/lesson:manage', $context)) { + $lesson->displayleft = lesson_displayleftif($lesson); + } + + // start of left menu + if ($lesson->displayleft) { + echo '
'; + // skip navigation link + echo ''; + if($firstpageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0)) { + // print the pages + echo "
\n"; + echo '
'.get_string('lessonmenu', 'lesson')."
\n"; + echo '\n"; - } - if ($page->qtype == LESSON_BRANCHTABLE) { - $width = ''; - } else { - $width = ' width="100%" '; - } - echo '
'; - // skip to anchor - echo ''; - } elseif ($lesson->slideshow && $page->qtype == LESSON_BRANCHTABLE) { - echo '
'; // only want this if no left menu + echo "
\n"; + lesson_print_tree_menu($lesson->id, $firstpageid, $cm->id); + echo "
\n"; + echo "\n"; } + if ($page->qtype == LESSON_BRANCHTABLE) { + $width = ''; + } else { + $width = ' width="100%" '; + } + echo '
'; + // skip to anchor + echo ''; + } elseif ($lesson->slideshow && $page->qtype == LESSON_BRANCHTABLE) { + echo '
'; // only want this if no left menu + } - // starts the slideshow div - if($lesson->slideshow && $page->qtype == LESSON_BRANCHTABLE) { - echo "'; + if ($answer != end($answers)) { + echo ''; + } + $i++; + } + echo '
\n". - "
bgcolor; - height: ".$lesson->height."px; - width: ".$lesson->width."px; - \">\n"; + // starts the slideshow div + if($lesson->slideshow && $page->qtype == LESSON_BRANCHTABLE) { + echo "'; - if ($answer != end($answers)) { - echo ""; - } - $i++; + // only one answer allowed + echo "id}\"$checked />"; } - echo '
\n". + "
bgcolor; + height: ".$lesson->height."px; + width: ".$lesson->width."px; + \">\n"; + } else { + echo "
\n"; + $lesson->slideshow = false; // turn off slide show for all pages other than LESSON_BRANTCHTABLE + } + + // This is where several messages (usually warnings) are displayed + // all of this is displayed above the actual page + + if (!empty($lesson->mediafile)) { + $url = '/mod/lesson/mediafile.php?id='.$cm->id; + $options = 'menubar=0,location=0,left=5,top=5,scrollbars,resizable,width='. $lesson->mediawidth .',height='. $lesson->mediaheight; + $name = 'lessonmediafile'; + echo '
'; + link_to_popup_window ($url, $name, get_string('mediafilepopup', 'lesson'), '', '', get_string('mediafilepopup', 'lesson'), $options); + helpbutton("mediafilestudent", get_string("mediafile", "lesson"), "lesson"); + echo '
'; + } + // clock code + // get time information for this user + if(!has_capability('mod/lesson:manage', $context)) { + if (!$timer = get_records_select('lesson_timer', "lessonid = $lesson->id AND userid = $USER->id", 'starttime')) { + error('Error: could not find records'); } else { - echo "'; + if ($answer != end($answers)) { + echo ""; + } + $i++; + } + echo '
\n"; - $lesson->slideshow = false; // turn off slide show for all pages other than LESSON_BRANTCHTABLE + $timer = array_pop($timer); // this will get the latest start time record } + } - // This is where several messages (usually warnings) are displayed - // all of this is displayed above the actual page + $startlastseen = optional_param('startlastseen', '', PARAM_ALPHA); + if ($startlastseen == 'yes') { // continue a previous test, need to update the clock (think this option is disabled atm) + $timer->starttime = time() - ($timer->lessontime - $timer->starttime); + $timer->lessontime = time(); + } else if ($startlastseen == 'no') { // starting over + // starting over, so reset the clock + $timer->starttime = time(); + $timer->lessontime = time(); + } - if (!empty($lesson->mediafile)) { - $url = '/mod/lesson/mediafile.php?id='.$cm->id; - $options = 'menubar=0,location=0,left=5,top=5,scrollbars,resizable,width='. $lesson->mediawidth .',height='. $lesson->mediaheight; - $name = 'lessonmediafile'; - echo '
'; - link_to_popup_window ($url, $name, get_string('mediafilepopup', 'lesson'), '', '', get_string('mediafilepopup', 'lesson'), $options); - helpbutton("mediafilestudent", get_string("mediafile", "lesson"), "lesson"); - echo '
'; - } - // clock code - // get time information for this user - if(!has_capability('mod/lesson:manage', $context)) { - if (!$timer = get_records_select('lesson_timer', "lessonid = $lesson->id AND userid = $USER->id", 'starttime')) { - error('Error: could not find records'); + // for timed lessons, display clock + if ($lesson->timed) { + if(has_capability('mod/lesson:manage', $context)) { + echo '

'. get_string('teachertimerwarning', 'lesson') .'

'; + } else { + if ((($timer->starttime + $lesson->maxtime * 60) - time()) > 0) { + // code for the clock + echo ''. + "
".get_string("timeremaining", "lesson"). + "
"; + echo "\n"; + echo '\n"; + echo "
"; + echo "


"; } else { - $timer = array_pop($timer); // this will get the latest start time record + redirect("view.php?id=$cm->id&action=navigation&pageid=".LESSON_EOL."&outoftime=normal", get_string("outoftime", "lesson")); } - } - - $startlastseen = optional_param('startlastseen', '', PARAM_ALPHA); - if ($startlastseen == 'yes') { // continue a previous test, need to update the clock (think this option is disabled atm) - $timer->starttime = time() - ($timer->lessontime - $timer->starttime); - $timer->lessontime = time(); - } else if ($startlastseen == 'no') { // starting over - // starting over, so reset the clock - $timer->starttime = time(); - $timer->lessontime = time(); - } + // update clock when viewing a new page... no special treatment + if ((($timer->starttime + $lesson->maxtime * 60) - time()) < 60) { + echo "

".get_string('studentoneminwarning', 'lesson')."

"; + } - // for timed lessons, display clock - if ($lesson->timed) { - if(has_capability('mod/lesson:manage', $context)) { - echo '

'. get_string('teachertimerwarning', 'lesson') .'

'; - } else { - if ((($timer->starttime + $lesson->maxtime * 60) - time()) > 0) { - // code for the clock - echo ''. - "
".get_string("timeremaining", "lesson"). - "
"; - echo "\n"; - echo '\n"; - echo "
"; - echo "


"; - } else { - redirect("view.php?id=$cm->id&action=navigation&pageid=".LESSON_EOL."&outoftime=normal", get_string("outoftime", "lesson")); - } - // update clock when viewing a new page... no special treatment - if ((($timer->starttime + $lesson->maxtime * 60) - time()) < 60) { - echo "

".get_string('studentoneminwarning', 'lesson')."

"; - } - - if ($timedflag) { - print_simple_box(get_string('maxtimewarning', 'lesson', $lesson->maxtime), 'center'); - } + if ($timedflag) { + print_simple_box(get_string('maxtimewarning', 'lesson', $lesson->maxtime), 'center'); } } + } - // update the clock - if (!has_capability('mod/lesson:manage', $context)) { - $timer->lessontime = time(); - if (!update_record('lesson_timer', $timer)) { - error('Error: could not update lesson_timer table'); - } - } - - if ($attemptflag) { - print_heading(get_string('attempt', 'lesson', $retries + 1)); + // update the clock + if (!has_capability('mod/lesson:manage', $context)) { + $timer->lessontime = time(); + if (!update_record('lesson_timer', $timer)) { + error('Error: could not update lesson_timer table'); } - - // before we output everything check to see if the page is a EOB, if so jump directly - // to it's associated branch table - if ($page->qtype == LESSON_ENDOFBRANCH) { - if ($answers = get_records('lesson_answers', 'pageid', $page->id, 'id')) { - // print_heading(get_string('endofbranch', 'lesson')); - foreach ($answers as $answer) { - // just need the first answer - if ($answer->jumpto == LESSON_RANDOMBRANCH) { - $answer->jumpto = lesson_unseen_branch_jump($lesson->id, $USER->id); - } elseif ($answer->jumpto == LESSON_CLUSTERJUMP) { - if (!has_capability('mod/lesson:manage', $context)) { - $answer->jumpto = lesson_cluster_jump($lesson->id, $USER->id, $pageid); - } else { - if ($page->nextpageid == 0) { - $answer->jumpto = LESSON_EOL; - } else { - $answer->jumpto = $page->nextpageid; - } - } - } else if ($answer->jumpto == LESSON_NEXTPAGE) { + } + + if ($attemptflag) { + print_heading(get_string('attempt', 'lesson', $retries + 1)); + } + + // before we output everything check to see if the page is a EOB, if so jump directly + // to it's associated branch table + if ($page->qtype == LESSON_ENDOFBRANCH) { + if ($answers = get_records('lesson_answers', 'pageid', $page->id, 'id')) { + // print_heading(get_string('endofbranch', 'lesson')); + foreach ($answers as $answer) { + // just need the first answer + if ($answer->jumpto == LESSON_RANDOMBRANCH) { + $answer->jumpto = lesson_unseen_branch_jump($lesson->id, $USER->id); + } elseif ($answer->jumpto == LESSON_CLUSTERJUMP) { + if (!has_capability('mod/lesson:manage', $context)) { + $answer->jumpto = lesson_cluster_jump($lesson->id, $USER->id, $pageid); + } else { if ($page->nextpageid == 0) { $answer->jumpto = LESSON_EOL; } else { $answer->jumpto = $page->nextpageid; } - } else if ($answer->jumpto == 0) { - $answer->jumpto = $page->id; - } else if ($answer->jumpto == LESSON_PREVIOUSPAGE) { - $answer->jumpto = $page->prevpageid; } - redirect("view.php?id=$cm->id&action=navigation&pageid=$answer->jumpto");// REMOVED: , get_string("endofbranch", "lesson") - break; - } - print_footer($course); - exit(); - } else { - error('Navigation: No answers on EOB'); - } - } - - /// 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)) { - if (lesson_display_teacher_warning($lesson->id)) { - $warningvars->cluster = get_string('clusterjump', 'lesson'); - $warningvars->unseen = get_string('unseenpageinbranch', 'lesson'); - echo '

'. get_string('teacherjumpwarning', 'lesson', $warningvars) .'

'; - } - } - - /// This calculates and prints the ongoing score - if ($lesson->ongoing and !empty($pageid)) { - lesson_print_ongoing_score($lesson); + } else if ($answer->jumpto == LESSON_NEXTPAGE) { + if ($page->nextpageid == 0) { + $answer->jumpto = LESSON_EOL; + } else { + $answer->jumpto = $page->nextpageid; + } + } else if ($answer->jumpto == 0) { + $answer->jumpto = $page->id; + } else if ($answer->jumpto == LESSON_PREVIOUSPAGE) { + $answer->jumpto = $page->prevpageid; + } + redirect("view.php?id=$cm->id&action=navigation&pageid=$answer->jumpto");// REMOVED: , get_string("endofbranch", "lesson") + break; + } + print_footer($course); + exit(); + } else { + error('Navigation: No answers on EOB'); } - - if ($page->qtype == LESSON_BRANCHTABLE) { - if ($lesson->minquestions and !has_capability('mod/lesson:manage', $context)) { - // tell student how many questions they have seen, how many are required and their grade - $ntries = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); - - $gradeinfo = lesson_grade($lesson, $ntries); + } - if ($gradeinfo->attempts) { - echo "

".get_string("numberofpagesviewed", "lesson", $gradeinfo->nquestions). - "; (".get_string("youshouldview", "lesson", $lesson->minquestions).")
"; - // count the number of distinct correct pages - if ($gradeinfo->nquestions < $lesson->minquestions) { - $gradeinfo->nquestions = $lesson->minquestions; - } - echo get_string("numberofcorrectanswers", "lesson", $gradeinfo->earned)."
\n"; - echo get_string("yourcurrentgradeis", "lesson", - number_format($gradeinfo->grade * $lesson->grade / 100, 1)). - " (".get_string("outof", "lesson", $lesson->grade).")

\n"; + /// 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)) { + if (lesson_display_teacher_warning($lesson->id)) { + $warningvars->cluster = get_string('clusterjump', 'lesson'); + $warningvars->unseen = get_string('unseenpageinbranch', 'lesson'); + echo '

'. get_string('teacherjumpwarning', 'lesson', $warningvars) .'

'; + } + } + + /// This calculates and prints the ongoing score + if ($lesson->ongoing and !empty($pageid)) { + lesson_print_ongoing_score($lesson); + } + + if ($page->qtype == LESSON_BRANCHTABLE) { + if ($lesson->minquestions and !has_capability('mod/lesson:manage', $context)) { + // tell student how many questions they have seen, how many are required and their grade + $ntries = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); + + $gradeinfo = lesson_grade($lesson, $ntries); + + if ($gradeinfo->attempts) { + echo "

".get_string("numberofpagesviewed", "lesson", $gradeinfo->nquestions). + "; (".get_string("youshouldview", "lesson", $lesson->minquestions).")
"; + // count the number of distinct correct pages + if ($gradeinfo->nquestions < $lesson->minquestions) { + $gradeinfo->nquestions = $lesson->minquestions; } + echo get_string("numberofcorrectanswers", "lesson", $gradeinfo->earned)."
\n"; + echo get_string("yourcurrentgradeis", "lesson", + number_format($gradeinfo->grade * $lesson->grade / 100, 1)). + " (".get_string("outof", "lesson", $lesson->grade).")

\n"; } } - - // now starting to print the page's contents - echo "
"; - echo ""; - echo format_string($lesson->name) . ""; - if ($page->qtype == LESSON_BRANCHTABLE) { - echo ":
"; - print_heading(format_string($page->title)); + } + + // now starting to print the page's contents + echo "
"; + echo ""; + echo format_string($lesson->name) . ""; + if ($page->qtype == LESSON_BRANCHTABLE) { + echo ":
"; + print_heading(format_string($page->title)); + } + echo "

"; + + if (!$lesson->slideshow) { + $options = new stdClass; + $options->noclean = true; + print_simple_box('
'. + format_text($page->contents, FORMAT_MOODLE, $options). + '
', 'center'); + } + echo "
\n"; + + // this is for modattempts option. Find the users previous answer to this page, + // and then display it below in answer processing + if (isset($USER->modattempts[$lesson->id])) { + $retries = count_records('lesson_grades', "lessonid", $lesson->id, "userid", $USER->id); + $retries--; + if (! $attempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND userid = $USER->id AND pageid = $page->id AND retry = $retries", "timeseen")) { + error("Previous attempt record could not be found!"); } - echo "

"; - + $attempt = end($attempts); + } + + // get the answers in a set order, the id order + if ($answers = get_records("lesson_answers", "pageid", $page->id, "id")) { + echo "
"; + echo "id\" />"; + echo ""; + echo ""; + echo "sesskey."\" />"; if (!$lesson->slideshow) { - $options = new stdClass; - $options->noclean = true; - print_simple_box('
'. - format_text($page->contents, FORMAT_MOODLE, $options). - '
', 'center'); - } - echo "
\n"; - - // this is for modattempts option. Find the users previous answer to this page, - // and then display it below in answer processing - if (isset($USER->modattempts[$lesson->id])) { - $retries = count_records('lesson_grades', "lessonid", $lesson->id, "userid", $USER->id); - $retries--; - if (! $attempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND userid = $USER->id AND pageid = $page->id AND retry = $retries", "timeseen")) { - error("Previous attempt record could not be found!"); - } - $attempt = end($attempts); + if ($page->qtype != LESSON_BRANCHTABLE) { + print_simple_box_start("center"); + } + echo ''; } - - // get the answers in a set order, the id order - if ($answers = get_records("lesson_answers", "pageid", $page->id, "id")) { - echo ""; - echo "id\" />"; - echo ""; - echo ""; - echo "sesskey."\" />"; - if (!$lesson->slideshow) { - if ($page->qtype != LESSON_BRANCHTABLE) { - print_simple_box_start("center"); - } - echo '
'; - } - // default format text options - $options = new stdClass; - $options->para = false; // no

- $options->noclean = true; - switch ($page->qtype) { - case LESSON_SHORTANSWER : - case LESSON_NUMERICAL : - if (isset($USER->modattempts[$lesson->id])) { - $value = "value=\"$attempt->useranswer\""; + // default format text options + $options = new stdClass; + $options->para = false; // no

+ $options->noclean = true; + switch ($page->qtype) { + case LESSON_SHORTANSWER : + case LESSON_NUMERICAL : + if (isset($USER->modattempts[$lesson->id])) { + $value = "value=\"$attempt->useranswer\""; + } else { + $value = ""; + } + echo '
'. + ": \n"; + echo '
'; + print_simple_box_end(); + lesson_print_submit_link(get_string('pleaseenteryouranswerinthebox', 'lesson'), 'answerform'); + break; + case LESSON_TRUEFALSE : + shuffle($answers); + $i = 0; + foreach ($answers as $answer) { + echo '
'; + if (isset($USER->modattempts[$lesson->id]) && $answer->id == $attempt->answerid) { + $checked = 'checked="checked"'; + } else { + $checked = ''; + } + echo "id}\" $checked />"; + echo ""; + echo "'; + echo '

'; + print_simple_box_end(); + lesson_print_submit_link(get_string('pleasecheckoneanswer', 'lesson'), 'answerform'); + break; + case LESSON_MULTICHOICE : + $i = 0; + shuffle($answers); + + foreach ($answers as $answer) { + echo '
'; + if ($page->qoption) { + $checked = ''; + if (isset($USER->modattempts[$lesson->id])) { + $answerids = explode(",", $attempt->useranswer); + if (in_array($answer->id, $answerids)) { + $checked = ' checked="checked"'; + } else { + $checked = ''; + } + } + // more than one answer allowed + echo "id}\"$checked />"; } else { - $value = ""; - } - echo '
'. - ": \n"; - echo '
'; - print_simple_box_end(); - lesson_print_submit_link(get_string('pleaseenteryouranswerinthebox', 'lesson'), 'answerform'); - break; - case LESSON_TRUEFALSE : - shuffle($answers); - $i = 0; - foreach ($answers as $answer) { - echo '
'; if (isset($USER->modattempts[$lesson->id]) && $answer->id == $attempt->answerid) { - $checked = 'checked="checked"'; + $checked = ' checked="checked"'; } else { $checked = ''; } - echo "id}\" $checked />"; - echo ""; - echo "'; - echo '

'; - print_simple_box_end(); - lesson_print_submit_link(get_string('pleasecheckoneanswer', 'lesson'), 'answerform'); - break; - case LESSON_MULTICHOICE : - $i = 0; - shuffle($answers); + echo '
'; + echo "'; + echo '

'; + print_simple_box_end(); + if ($page->qoption) { + $linkname = get_string('pleasecheckoneormoreanswers', 'lesson'); + } else { + $linkname = get_string('pleasecheckoneanswer', 'lesson'); + } + lesson_print_submit_link($linkname, 'answerform'); + break; + + case LESSON_MATCHING : + echo '
'; + // don't suffle answers (could be an option??) + foreach ($answers as $answer) { + // get all the response + if ($answer->response != NULL) { + $responses[] = trim($answer->response); + } + } + shuffle($responses); + $responses = array_unique($responses); + + $responseoptions = array(); + foreach ($responses as $response) { + $responseoptions[htmlspecialchars(trim($response))] = $response; + } + + if (isset($USER->modattempts[$lesson->id])) { + $useranswers = explode(',', $attempt->useranswer); + $t = 0; + } + foreach ($answers as $answer) { + if ($answer->response != NULL) { + echo ''; if ($answer != end($answers)) { - echo ''; + echo ''; } - $i++; } - echo '
'; + echo ": '; - foreach ($answers as $answer) { - echo '
'; - if ($page->qoption) { - $checked = ''; - if (isset($USER->modattempts[$lesson->id])) { - $answerids = explode(",", $attempt->useranswer); - if (in_array($answer->id, $answerids)) { - $checked = ' checked="checked"'; - } else { - $checked = ''; - } - } - // more than one answer allowed - echo "id}\"$checked />"; + if (isset($USER->modattempts[$lesson->id])) { + $selected = htmlspecialchars(trim($answers[$useranswers[$t]]->response)); // gets the user's previous answer + choose_from_menu ($responseoptions, "response[$answer->id]", $selected); + $t++; } else { - if (isset($USER->modattempts[$lesson->id]) && $answer->id == $attempt->answerid) { - $checked = ' checked="checked"'; - } else { - $checked = ''; - } - // only one answer allowed - echo "id}\"$checked />"; + choose_from_menu ($responseoptions, "response[$answer->id]"); } - echo ''; - echo "'; echo '


'; - print_simple_box_end(); - if ($page->qoption) { - $linkname = get_string('pleasecheckoneormoreanswers', 'lesson'); + } + echo '
'; + print_simple_box_end(); + lesson_print_submit_link(get_string('pleasematchtheabovepairs', 'lesson'), 'answerform'); + break; + case LESSON_BRANCHTABLE : + $options = new stdClass; + $options->para = false; + $buttons = array('next' => array(), 'prev' => array(), 'other' => array()); + /// seperate out next and previous jumps from the other jumps + foreach ($answers as $answer) { + if ($answer->jumpto == LESSON_NEXTPAGE) { + $type = 'next'; + } else if ($answer->jumpto == LESSON_PREVIOUSPAGE) { + $type = 'prev'; } else { - $linkname = get_string('pleasecheckoneanswer', 'lesson'); - } - lesson_print_submit_link($linkname, 'answerform'); - break; - - case LESSON_MATCHING : - echo '
'; - // don't suffle answers (could be an option??) - foreach ($answers as $answer) { - // get all the response - if ($answer->response != NULL) { - $responses[] = trim($answer->response); - } + $type = 'other'; } - shuffle($responses); - $responses = array_unique($responses); - - $responseoptions = array(); - foreach ($responses as $response) { - $responseoptions[htmlspecialchars(trim($response))] = $response; - } - - if (isset($USER->modattempts[$lesson->id])) { - $useranswers = explode(',', $attempt->useranswer); - $t = 0; - } - foreach ($answers as $answer) { - if ($answer->response != NULL) { - echo ''; - if ($answer != end($answers)) { - echo ''; - } - } - } - echo '
'; - echo ": '; - - if (isset($USER->modattempts[$lesson->id])) { - $selected = htmlspecialchars(trim($answers[$useranswers[$t]]->response)); // gets the user's previous answer - choose_from_menu ($responseoptions, "response[$answer->id]", $selected); - $t++; - } else { - choose_from_menu ($responseoptions, "response[$answer->id]"); - } - echo '

'; - print_simple_box_end(); - lesson_print_submit_link(get_string('pleasematchtheabovepairs', 'lesson'), 'answerform'); - break; - case LESSON_BRANCHTABLE : - $options = new stdClass; - $options->para = false; - $buttons = array('next' => array(), 'prev' => array(), 'other' => array()); - /// seperate out next and previous jumps from the other jumps - foreach ($answers as $answer) { - if ($answer->jumpto == LESSON_NEXTPAGE) { - $type = 'next'; - } else if ($answer->jumpto == LESSON_PREVIOUSPAGE) { - $type = 'prev'; - } else { - $type = 'other'; - } - $buttons[$type][] = ''. - strip_tags(format_text($answer->answer, FORMAT_MOODLE, $options)).''; + $buttons[$type][] = ''. + strip_tags(format_text($answer->answer, FORMAT_MOODLE, $options)).''; + } + + /// set the order and orientation (order is very important for the divs to work for horizontal!) + if ($page->layout) { + $orientation = 'horizontal'; + $a = 'a'; + $b = 'b'; + $c = 'c'; + $implode = ' '; + $implode2 = "\n "; + if (empty($buttons['other'])) { + $buttons['other'][] = ' '; // very critical! If nothing is in the middle, + // then the div style float left/right will not + // render properly with next/previous buttons } + } else { + $orientation = 'vertical'; + $a = 'c'; + $b = 'a'; + $c = 'b'; + $implode = '

'; + $implode2 = "

\n "; + } + $buttonsarranged = array(); + $buttonsarranged[$a] = ''.implode($implode, $buttons['prev']).''; + $buttonsarranged[$b] = ''.implode($implode, $buttons['next']).''; + $buttonsarranged[$c] = ''.implode($implode, $buttons['other']).''; + ksort($buttonsarranged); // sort by key - /// set the order and orientation (order is very important for the divs to work for horizontal!) - if ($page->layout) { - $orientation = 'horizontal'; - $a = 'a'; - $b = 'b'; - $c = 'c'; - $implode = ' '; - $implode2 = "\n "; - if (empty($buttons['other'])) { - $buttons['other'][] = ' '; // very critical! If nothing is in the middle, - // then the div style float left/right will not - // render properly with next/previous buttons - } - } else { - $orientation = 'vertical'; - $a = 'c'; - $b = 'a'; - $c = 'b'; - $implode = '

'; - $implode2 = "

\n "; - } - $buttonsarranged = array(); - $buttonsarranged[$a] = ''.implode($implode, $buttons['prev']).''; - $buttonsarranged[$b] = ''.implode($implode, $buttons['next']).''; - $buttonsarranged[$c] = ''.implode($implode, $buttons['other']).''; - ksort($buttonsarranged); // sort by key - - $fullbuttonhtml = "\n
\n " . implode($implode2, $buttonsarranged). "\n
\n"; + $fullbuttonhtml = "\n
\n " . implode($implode2, $buttonsarranged). "\n
\n"; + + if ($lesson->slideshow) { + echo '
' . $fullbuttonhtml . '
'; + $options = new stdClass; + $options->noclean = true; + echo '
'.format_text($page->contents, FORMAT_MOODLE, $options)."
\n"; + echo '
'; + echo '
' . $fullbuttonhtml . '
'; + } else { + echo '
'; + print_simple_box($fullbuttonhtml, 'center'); + echo '
'; // ends the answers table + } + echo ''; - if ($lesson->slideshow) { - echo '
' . $fullbuttonhtml . '
'; - $options = new stdClass; - $options->noclean = true; - echo '
'.format_text($page->contents, FORMAT_MOODLE, $options)."
\n"; - echo ''; - echo '
' . $fullbuttonhtml . '
'; - } else { - echo ''; - print_simple_box($fullbuttonhtml, 'center'); - echo ''; // ends the answers table - } - echo ''; - - break; - case LESSON_ESSAY : - if (isset($USER->modattempts[$lesson->id])) { - $essayinfo = unserialize($attempt->useranswer); - $value = $essayinfo->answer; - } else { - $value = ""; - } - echo ':'. - '\n"; - echo ''; - print_simple_box_end(); - lesson_print_submit_link(get_string('pleaseenteryouranswerinthebox', 'lesson'), 'answerform'); - break; - } - echo "\n"; - } else { - // a page without answers - find the next (logical) page - echo "
\n"; - echo "id\" />\n"; - echo "\n"; - if ($lesson->nextpagedefault) { - // in Flash Card mode... - // ...first get number of retakes - $nretakes = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); - // ...then 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"); - 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; - } + break; + case LESSON_ESSAY : + if (isset($USER->modattempts[$lesson->id])) { + $essayinfo = unserialize($attempt->useranswer); + $value = $essayinfo->answer; + } else { + $value = ""; + } + echo ':'. + '\n"; + echo ''; + print_simple_box_end(); + lesson_print_submit_link(get_string('pleaseenteryouranswerinthebox', 'lesson'), 'answerform'); + break; + } + echo "
\n"; + } else { + // a page without answers - find the next (logical) page + echo "
\n"; + echo "id\" />\n"; + echo "\n"; + if ($lesson->nextpagedefault) { + // in Flash Card mode... + // ...first get number of retakes + $nretakes = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); + // ...then 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"); + 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 (!count_records_select("lesson_attempts", "pageid = $thispage->id AND - userid = $USER->id AND correct = 1 AND retry = $nretakes")) { - $found = true; - break; - } + } + } elseif ($lesson->nextpagedefault == LESSON_UNANSWEREDPAGE) { + foreach ($allpages as $thispage) { + 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; - } + } + 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; } } else { - // in normal lesson mode... - if (!$newpageid = get_field("lesson_pages", "nextpageid", "id", $pageid)) { - // this is the last page - flag end of lesson - $newpageid = LESSON_EOL; - } + $newpageid = LESSON_EOL; } - echo "\n"; - echo "

\n"; - echo "
\n"; - } - lesson_print_progress_bar($lesson, $course); - echo "\n"; - } else { - // end of lesson reached work out grade - - // check to see if the student ran out of time - $outoftime = optional_param('outoftime', '', PARAM_ALPHA); - if ($lesson->timed && !has_capability('mod/lesson:manage', $context)) { - if ($outoftime == 'normal') { - print_simple_box(get_string("eolstudentoutoftime", "lesson"), "center"); + } else { + // in normal lesson mode... + if (!$newpageid = get_field("lesson_pages", "nextpageid", "id", $pageid)) { + // this is the last page - flag end of lesson + $newpageid = LESSON_EOL; } } + echo "\n"; + echo "

\n"; + echo "\n"; + } + lesson_print_progress_bar($lesson, $course); + echo "\n"; + } else { + // end of lesson reached work out grade + + // check to see if the student ran out of time + $outoftime = optional_param('outoftime', '', PARAM_ALPHA); + if ($lesson->timed && !has_capability('mod/lesson:manage', $context)) { + if ($outoftime == 'normal') { + print_simple_box(get_string("eolstudentoutoftime", "lesson"), "center"); + } + } - // Update the clock / get time information for this user - if (!has_capability('mod/lesson:manage', $context)) { - unset($USER->startlesson[$lesson->id]); - if (!$timer = get_records_select('lesson_timer', "lessonid = $lesson->id AND userid = $USER->id", 'starttime')) { - error('Error: could not find records'); - } else { - $timer = array_pop($timer); // this will get the latest start time record - } - $timer->lessontime = time(); - - if (!update_record("lesson_timer", $timer)) { - error("Error: could not update lesson_timer table"); - } + // Update the clock / get time information for this user + if (!has_capability('mod/lesson:manage', $context)) { + unset($USER->startlesson[$lesson->id]); + if (!$timer = get_records_select('lesson_timer', "lessonid = $lesson->id AND userid = $USER->id", 'starttime')) { + error('Error: could not find records'); + } else { + $timer = array_pop($timer); // this will get the latest start time record } + $timer->lessontime = time(); - add_to_log($course->id, "lesson", "end", "view.php?id=$cm->id", "$lesson->id", $cm->id); - print_heading(get_string("congratulations", "lesson")); - print_simple_box_start("center"); - $ntries = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); - if (isset($USER->modattempts[$lesson->id])) { - $ntries--; // need to look at the old attempts :) + if (!update_record("lesson_timer", $timer)) { + error("Error: could not update lesson_timer table"); } - if (!has_capability('mod/lesson:manage', $context)) { - - $gradeinfo = lesson_grade($lesson, $ntries); - - if ($gradeinfo->attempts) { - if (!$lesson->custom) { - echo "

".get_string("numberofpagesviewed", "lesson", $gradeinfo->nquestions). - "

\n"; - if ($lesson->minquestions) { - if ($gradeinfo->nquestions < $lesson->minquestions) { - // print a warning and set nviewed to minquestions - echo "

".get_string("youshouldview", "lesson", - $lesson->minquestions)."

\n"; - } + } + + add_to_log($course->id, "lesson", "end", "view.php?id=$cm->id", "$lesson->id", $cm->id); + print_heading(get_string("congratulations", "lesson")); + print_simple_box_start("center"); + $ntries = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); + if (isset($USER->modattempts[$lesson->id])) { + $ntries--; // need to look at the old attempts :) + } + if (!has_capability('mod/lesson:manage', $context)) { + + $gradeinfo = lesson_grade($lesson, $ntries); + + if ($gradeinfo->attempts) { + if (!$lesson->custom) { + echo "

".get_string("numberofpagesviewed", "lesson", $gradeinfo->nquestions). + "

\n"; + if ($lesson->minquestions) { + if ($gradeinfo->nquestions < $lesson->minquestions) { + // print a warning and set nviewed to minquestions + echo "

".get_string("youshouldview", "lesson", + $lesson->minquestions)."

\n"; } - echo "

".get_string("numberofcorrectanswers", "lesson", $gradeinfo->earned). - "

\n"; - } - $a = new stdClass; - $a->score = $gradeinfo->earned; - $a->grade = $gradeinfo->total; - if ($gradeinfo->nmanual) { - $a->tempmaxgrade = $gradeinfo->total - $gradeinfo->manualpoints; - $a->essayquestions = $gradeinfo->nmanual; - echo "
".get_string("displayscorewithessays", "lesson", $a)."
"; - } else { - echo "
".get_string("displayscorewithoutessays", "lesson", $a)."
"; } - echo "

".get_string("gradeis", "lesson", - number_format($gradeinfo->grade * $lesson->grade / 100, 1)). - " (".get_string("outof", "lesson", $lesson->grade).")

\n"; - - $grade->lessonid = $lesson->id; - $grade->userid = $USER->id; - $grade->grade = $gradeinfo->grade; - $grade->completed = time(); - if (!$lesson->practice) { - if (isset($USER->modattempts[$lesson->id])) { // if reviewing, make sure update old grade record - if (!$grades = get_records_select("lesson_grades", "lessonid = $lesson->id and userid = $USER->id", "completed")) { - error("Could not find Grade Records"); - } - $oldgrade = end($grades); - $grade->id = $oldgrade->id; - if (!$update = update_record("lesson_grades", $grade)) { - error("Navigation: grade not updated"); - } - } else { - if (!$newgradeid = insert_record("lesson_grades", $grade)) { - error("Navigation: grade not inserted"); - } + echo "

".get_string("numberofcorrectanswers", "lesson", $gradeinfo->earned). + "

\n"; + } + $a = new stdClass; + $a->score = $gradeinfo->earned; + $a->grade = $gradeinfo->total; + if ($gradeinfo->nmanual) { + $a->tempmaxgrade = $gradeinfo->total - $gradeinfo->manualpoints; + $a->essayquestions = $gradeinfo->nmanual; + echo "
".get_string("displayscorewithessays", "lesson", $a)."
"; + } else { + echo "
".get_string("displayscorewithoutessays", "lesson", $a)."
"; + } + echo "

".get_string("gradeis", "lesson", + number_format($gradeinfo->grade * $lesson->grade / 100, 1)). + " (".get_string("outof", "lesson", $lesson->grade).")

\n"; + + $grade->lessonid = $lesson->id; + $grade->userid = $USER->id; + $grade->grade = $gradeinfo->grade; + $grade->completed = time(); + if (!$lesson->practice) { + if (isset($USER->modattempts[$lesson->id])) { // if reviewing, make sure update old grade record + if (!$grades = get_records_select("lesson_grades", "lessonid = $lesson->id and userid = $USER->id", "completed")) { + error("Could not find Grade Records"); + } + $oldgrade = end($grades); + $grade->id = $oldgrade->id; + if (!$update = update_record("lesson_grades", $grade)) { + error("Navigation: grade not updated"); } } else { - if (!delete_records("lesson_attempts", "lessonid", $lesson->id, "userid", $USER->id, "retry", $ntries)) { - error("Could not delete lesson attempts"); + if (!$newgradeid = insert_record("lesson_grades", $grade)) { + error("Navigation: grade not inserted"); } } } else { - if ($lesson->timed) { - if ($outoftime == 'normal') { - $grade = new stdClass; - $grade->lessonid = $lesson->id; - $grade->userid = $USER->id; - $grade->grade = 0; - $grade->completed = time(); - if (!$lesson->practice) { - if (!$newgradeid = insert_record("lesson_grades", $grade)) { - error("Navigation: grade not inserted"); - } + if (!delete_records("lesson_attempts", "lessonid", $lesson->id, "userid", $USER->id, "retry", $ntries)) { + error("Could not delete lesson attempts"); + } + } + } else { + if ($lesson->timed) { + if ($outoftime == 'normal') { + $grade = new stdClass; + $grade->lessonid = $lesson->id; + $grade->userid = $USER->id; + $grade->grade = 0; + $grade->completed = time(); + if (!$lesson->practice) { + if (!$newgradeid = insert_record("lesson_grades", $grade)) { + error("Navigation: grade not inserted"); } - echo get_string("eolstudentoutoftimenoanswers", "lesson"); } - } else { - echo get_string("welldone", "lesson"); + echo get_string("eolstudentoutoftimenoanswers", "lesson"); } - } - } else { - // display for teacher - echo "

".get_string("displayofgrade", "lesson")."

\n"; - } - print_simple_box_end(); //End of Lesson button to Continue. + } else { + echo get_string("welldone", "lesson"); + } + } + } else { + // display for teacher + echo "

".get_string("displayofgrade", "lesson")."

\n"; + } + print_simple_box_end(); //End of Lesson button to Continue. - // after all the grade processing, check to see if "Show Grades" is off for the course - // if yes, redirect to the course page - if (!$course->showgrades) { - redirect($CFG->wwwroot.'/course/view.php?id='.$course->id); - } + // after all the grade processing, check to see if "Show Grades" is off for the course + // if yes, redirect to the course page + if (!$course->showgrades) { + redirect($CFG->wwwroot.'/course/view.php?id='.$course->id); + } - // high scores code - if ($lesson->highscores && !has_capability('mod/lesson:manage', $context) && !$lesson->practice) { - echo "

"; - if ($grades = get_records_select("lesson_grades", "lessonid = $lesson->id", "completed")) { - $madeit = false; - if ($highscores = get_records_select("lesson_high_scores", "lessonid = $lesson->id")) { - // get all the high scores into an array - foreach ($highscores as $highscore) { - $grade = $grades[$highscore->gradeid]->grade; - $topscores[] = $grade; - } - // sort to find the lowest score - sort($topscores); - $lowscore = $topscores[0]; - - if ($gradeinfo->grade >= $lowscore || count($topscores) <= $lesson->maxhighscores) { - $madeit = true; - } + // high scores code + if ($lesson->highscores && !has_capability('mod/lesson:manage', $context) && !$lesson->practice) { + echo "

"; + if ($grades = get_records_select("lesson_grades", "lessonid = $lesson->id", "completed")) { + $madeit = false; + if ($highscores = get_records_select("lesson_high_scores", "lessonid = $lesson->id")) { + // get all the high scores into an array + foreach ($highscores as $highscore) { + $grade = $grades[$highscore->gradeid]->grade; + $topscores[] = $grade; } - if (!$highscores or $madeit) { - echo '

'.get_string("youmadehighscore", "lesson", $lesson->maxhighscores). - '

-

- - - -

'; - lesson_print_submit_link(get_string('clicktopost', 'lesson'), 'highscores'); - echo '

-
'; - } else { - echo get_string("nothighscore", "lesson", $lesson->maxhighscores)."
"; + // sort to find the lowest score + sort($topscores); + $lowscore = $topscores[0]; + + if ($gradeinfo->grade >= $lowscore || count($topscores) <= $lesson->maxhighscores) { + $madeit = true; } } - echo "
'; - echo "
"; - } - - if ($lesson->modattempts && !has_capability('mod/lesson:manage', $context)) { - // make sure if the student is reviewing, that he/she sees the same pages/page path that he/she saw the first time - // look at the attempt records to find the first QUESTION page that the user answered, then use that page id - // to pass to view again. This is slick cause it wont call the empty($pageid) code - // $ntries is decremented above - if (!$attempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND userid = $USER->id AND retry = $ntries", "timeseen")) { - $attempts = array(); - } - $firstattempt = current($attempts); - $pageid = $firstattempt->pageid; - // IF the student wishes to review, need to know the last question page that the student answered. This will help to make - // sure that the student can leave the lesson via pushing the continue button. - $lastattempt = end($attempts); - $USER->modattempts[$lesson->id] = $lastattempt->pageid; - echo "\n"; - } elseif ($lesson->modattempts && has_capability('mod/lesson:manage', $context)) { - echo "

".get_string("modattemptsnoteacher", "lesson")."

"; - } - - if ($lesson->activitylink) { - if ($module = get_record('course_modules', 'id', $lesson->activitylink)) { - if ($modname = get_field('modules', 'name', 'id', $module->module)) - if ($instance = get_record($modname, 'id', $module->instance)) { - echo "\n"; - } + if (!$highscores or $madeit) { + echo '

'.get_string("youmadehighscore", "lesson", $lesson->maxhighscores). + '

+

+ + + +

'; + lesson_print_submit_link(get_string('clicktopost', 'lesson'), 'highscores'); + echo '

+
'; + } else { + echo get_string("nothighscore", "lesson", $lesson->maxhighscores)."
"; } } + echo "
'; + echo "
"; + } - echo "
id\">".get_string("mainmenu", "lesson")."
\n"; // Back to the menu (course view). - echo "
id\">".get_string("viewgrades", "lesson")."
\n"; //view grades + if ($lesson->modattempts && !has_capability('mod/lesson:manage', $context)) { + // make sure if the student is reviewing, that he/she sees the same pages/page path that he/she saw the first time + // look at the attempt records to find the first QUESTION page that the user answered, then use that page id + // to pass to view again. This is slick cause it wont call the empty($pageid) code + // $ntries is decremented above + if (!$attempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND userid = $USER->id AND retry = $ntries", "timeseen")) { + $attempts = array(); + } + $firstattempt = current($attempts); + $pageid = $firstattempt->pageid; + // IF the student wishes to review, need to know the last question page that the student answered. This will help to make + // sure that the student can leave the lesson via pushing the continue button. + $lastattempt = end($attempts); + $USER->modattempts[$lesson->id] = $lastattempt->pageid; + echo "
id&pageid=$pageid\">".get_string("reviewlesson", "lesson")."
\n"; + } elseif ($lesson->modattempts && has_capability('mod/lesson:manage', $context)) { + echo "

".get_string("modattemptsnoteacher", "lesson")."

"; } - if ($lesson->displayleft || $lesson->slideshow) { // this ends the table cell and table for the leftmenu or for slideshow - echo ""; - } - } + if ($lesson->activitylink) { + if ($module = get_record('course_modules', 'id', $lesson->activitylink)) { + if ($modname = get_field('modules', 'name', 'id', $module->module)) + if ($instance = get_record($modname, 'id', $module->instance)) { + echo "
". + "wwwroot/mod/$modname/view.php?id=$lesson->activitylink\">". + get_string('activitylinkname', 'lesson', $instance->name)."
\n"; + } + } + } - /*************** no man's land **************************************/ - else { - error("Fatal Error: Unknown Action: ".$action."\n"); + echo "
id\">".get_string("mainmenu", "lesson")."
\n"; // Back to the menu (course view). + echo "
id\">".get_string("viewgrades", "lesson")."
\n"; //view grades } + + if ($lesson->displayleft || $lesson->slideshow) { // this ends the table cell and table for the leftmenu or for slideshow + echo ""; + } + /// Finish the page print_footer($course); -- 2.39.5