Merge branch 'MDL-2051-master-2' of git://github.com/junpataleta/moodle

This commit is contained in:
Eloy Lafuente (stronk7)
2017-12-26 01:25:14 +01:00
3 changed files with 144 additions and 1 deletions
+5
View File
@@ -114,6 +114,11 @@ $string['publishafteranswer'] = 'Show results to students after they answer';
$string['publishafterclose'] = 'Show results to students only after the choice is closed';
$string['publishalways'] = 'Always show results to students';
$string['publishanonymous'] = 'Publish anonymous results, do not show student names';
$string['publishinfoanonafter'] = 'Anonymous results will be published after you answer.';
$string['publishinfoanonclose'] = 'Anonymous results will be published after the activity is closed.';
$string['publishinfofullafter'] = 'Full results, showing everyone\'s choices, will be published after you answer.';
$string['publishinfofullclose'] = 'Full results, showing everyone\'s choices, will be published after the activity is closed.';
$string['publishinfonever'] = 'The results of this activity will not be published after you answer.';
$string['publishnames'] = 'Publish full results, showing names and their choices';
$string['publishnot'] = 'Do not publish results to students';
$string['removemychoice'] = 'Remove my choice';
+104
View File
@@ -0,0 +1,104 @@
@mod @mod_choice
Feature: A student can see how the results of the choice activity will be published
In order to put my mind at ease when it comes to answering a choice
As a student
I need to learn how my choice will be handled and published to the other course participants.
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| teacher1 | Teacher | 1 | teacher1@example.com |
| student1 | Student | 1 | student1@example.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 am on "Course 1" course homepage with editing mode on
Scenario: Results will not be published to the students
Given I add a "Choice" to section "1" and I fill the form with:
| Choice name | Choice 1 |
| Description | Choice Description |
| Publish results | Do not publish results to students |
| option[0] | Option 1 |
| option[1] | Option 2 |
And I log out
And I log in as "student1"
And I am on "Course 1" course homepage
When I follow "Choice 1"
Then I should see "The results of this activity will not be published after you answer."
Scenario: Full results will be shown to the students after they answer
Given I add a "Choice" to section "1" and I fill the form with:
| Choice name | Choice 1 |
| Description | Choice Description |
| option[0] | Option 1 |
| option[1] | Option 2 |
| Publish results | Show results to students after they answer |
| Privacy of results | Publish full results, showing names and their choices |
And I log out
And I log in as "student1"
And I am on "Course 1" course homepage
When I follow "Choice 1"
Then I should see "Full results, showing everyone's choices, will be published after you answer."
Scenario: Anonymous results will be shown to students after they answer
Given I add a "Choice" to section "1" and I fill the form with:
| Choice name | Choice 1 |
| Description | Choice Description |
| option[0] | Option 1 |
| option[1] | Option 2 |
| Publish results | Show results to students after they answer |
And I log out
And I log in as "student1"
And I am on "Course 1" course homepage
When I follow "Choice 1"
Then I should see "Anonymous results will be published after you answer."
Scenario: Full results will be shown to students only after the choice is closed
Given I add a "Choice" to section "1" and I fill the form with:
| Choice name | Choice 1 |
| Description | Choice Description |
| Publish results | Show results to students only after the choice is closed |
| Privacy of results | Publish full results, showing names and their choices |
| option[0] | Option 1 |
| option[1] | Option 2 |
And I log out
And I log in as "student1"
And I am on "Course 1" course homepage
When I follow "Choice 1"
Then I should see "Full results, showing everyone's choices, will be published after the activity is closed."
Scenario: Anonymous results will be shown to students only after the choice is closed
Given I add a "Choice" to section "1" and I fill the form with:
| Choice name | Choice 1 |
| Description | Choice Description |
| Publish results | Show results to students only after the choice is closed |
| option[0] | Option 1 |
| option[1] | Option 2 |
And I log out
And I log in as "student1"
And I am on "Course 1" course homepage
When I follow "Choice 1"
Then I should see "Anonymous results will be published after the activity is closed."
Scenario: Results will always be shown to students
Given I add a "Choice" to section "1" and I fill the form with:
| Choice name | Choice 1 |
| Description | Choice Description |
| option[0] | Option 1 |
| option[1] | Option 2 |
| Publish results | Always show results to students |
And I log out
And I log in as "student1"
And I am on "Course 1" course homepage
When I follow "Choice 1"
Then I should not see "Full results, showing everyone's choices, will be published after you answer."
And I should not see "Full results, showing everyone's choices, will be published after the activity is closed."
And I should not see "Anonymous results will be published after you answer."
And I should not see "Anonymous results will be published after the activity is closed."
And I should not see "The results of this activity will not be published after you answer."
+35 -1
View File
@@ -164,8 +164,42 @@ if ((!empty($choice->timeopen)) && ($choice->timeopen > $timenow)) {
}
if ( (!$current or $choice->allowupdate) and $choiceopen and is_enrolled($context, NULL, 'mod/choice:choose')) {
// They haven't made their choice yet or updates allowed and choice is open
// Show information on how the results will be published to students.
$publishinfo = null;
switch ($choice->showresults) {
case CHOICE_SHOWRESULTS_NOT:
$publishinfo = get_string('publishinfonever', 'choice');
break;
case CHOICE_SHOWRESULTS_AFTER_ANSWER:
if ($choice->publish == CHOICE_PUBLISH_ANONYMOUS) {
$publishinfo = get_string('publishinfoanonafter', 'choice');
} else {
$publishinfo = get_string('publishinfofullafter', 'choice');
}
break;
case CHOICE_SHOWRESULTS_AFTER_CLOSE:
if ($choice->publish == CHOICE_PUBLISH_ANONYMOUS) {
$publishinfo = get_string('publishinfoanonclose', 'choice');
} else {
$publishinfo = get_string('publishinfofullclose', 'choice');
}
break;
default:
// No need to inform the user in the case of CHOICE_SHOWRESULTS_ALWAYS since it's already obvious that the results are
// being published.
break;
}
// Show info if necessary.
if (!empty($publishinfo)) {
echo $OUTPUT->notification($publishinfo, 'info');
}
// They haven't made their choice yet or updates allowed and choice is open.
$options = choice_prepare_options($choice, $USER, $cm, $allresponses);
$renderer = $PAGE->get_renderer('mod_choice');
echo $renderer->display_options($options, $cm->id, $choice->display, $choice->allowmultiple);