diff --git a/mod/lesson/tests/behat/lesson_progress_bar.feature b/mod/lesson/tests/behat/lesson_progress_bar.feature new file mode 100644 index 00000000000..32366881a2f --- /dev/null +++ b/mod/lesson/tests/behat/lesson_progress_bar.feature @@ -0,0 +1,84 @@ +@mod @mod_lesson +Feature: In a lesson activity, students can see their progress viewing a progress bar. + In order to create a lesson with conditional paths + As a teacher + I need to add pages and questions with links between them + + @javascript + Scenario: Student navigation with progress bar + Given the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@asd.com | + | student1 | Student | 1 | student1@asd.com | + And the following "courses" exist: + | fullname | shortname | category | + | Course 1 | C1 | 0 | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | C1 | editingteacher | + | student1 | C1 | student | + And I log in as "teacher1" + And I follow "Course 1" + And I turn editing mode on + And I add a "Lesson" to section "1" and I fill the form with: + | Name | Test lesson name | + | Description | Test lesson description | + | Progress bar | Yes | + And I follow "Test lesson name" + And I follow "Add a content page" + And I set the following fields to these values: + | Page title | First page name | + | Page contents | First page contents | + | id_answer_editor_0 | Next page | + | id_jumpto_0 | Next page | + And I press "Save page" + And I set the field "qtype" to "Add a content page" + And I set the following fields to these values: + | Page title | Second page name | + | Page contents | Second page contents | + | id_answer_editor_0 | Previous page | + | id_jumpto_0 | Previous page | + | id_answer_editor_1 | Next page | + | id_jumpto_1 | Next page | + And I press "Save page" + And I follow "Expanded" + And I click on "Add a question page here" "link" in the "//div[contains(concat(' ', normalize-space(@class), ' '), ' addlinks ')][3]" "xpath_element" + And I set the field "Select a question type" to "Numerical" + And I press "Add a question page" + And I set the following fields to these values: + | Page title | Hardest question ever | + | Page contents | 1 + 1? | + | id_answer_editor_0 | 2 | + | id_response_editor_0 | Correct answer | + | id_jumpto_0 | End of lesson | + | id_score_0 | 1 | + | id_answer_editor_1 | 1 | + | id_response_editor_1 | Incorrect answer | + | id_jumpto_1 | Second page name | + | id_score_1 | 0 | + And I press "Save page" + And I log out + And I log in as "student1" + And I follow "Course 1" + When I follow "Test lesson name" + Then I should see "First page contents" + And I should see "You have completed 0% of the lesson" + And I press "Next page" + And I should see "Second page contents" + And I should see "You have completed 33% of the lesson" + And I press "Previous page" + And I should see "First page contents" + And I should see "You have completed 67% of the lesson" + And I press "Next page" + And I should see "Second page contents" + And I should see "You have completed 67% of the lesson" + And I press "Next page" + And I should see "1 + 1?" + And I should see "You have completed 67% of the lesson" + And I set the following fields to these values: + | Your answer | 2 | + And I press "Submit" + And I should see "Correct answer" + And I press "Continue" + And I should see "Congratulations - end of lesson reached" + And I should see "You have completed 100% of the lesson" diff --git a/mod/lesson/view.php b/mod/lesson/view.php index 0a008b9640b..4b6824a6f5c 100644 --- a/mod/lesson/view.php +++ b/mod/lesson/view.php @@ -429,6 +429,8 @@ if ($pageid != LESSON_EOL) { $ntries--; // need to look at the old attempts :) } if (!$canmanage) { + // Store this now before any modifications to pages viewed. + $progressbar = $lessonoutput->progress_bar($lesson); // Update the clock / get time information for this user. $lesson->stop_timer(); $gradeinfo = lesson_grade($lesson, $ntries); @@ -489,15 +491,16 @@ if ($pageid != LESSON_EOL) { if (!$lesson->practice) { $newgradeid = $DB->insert_record("lesson_grades", $grade); } - $lessoncontent .= get_string("eolstudentoutoftimenoanswers", "lesson"); + $lessoncontent .= $lessonoutput->paragraph(get_string("eolstudentoutoftimenoanswers", "lesson")); } } else { - $lessoncontent .= get_string("welldone", "lesson"); + $lessoncontent .= $lessonoutput->paragraph(get_string("welldone", "lesson")); } } // update central gradebook lesson_update_grades($lesson, $USER->id); + $lessoncontent .= $progressbar; } else { // display for teacher