Skip to content

Commit

Permalink
MDL-2051 mod_choice: Show info how choice results will be published
Browse files Browse the repository at this point in the history
  • Loading branch information
junpataleta committed Dec 13, 2017
1 parent 109aa07 commit 3cd76cb
Show file tree
Hide file tree
Showing 3 changed files with 144 additions and 1 deletion.
5 changes: 5 additions & 0 deletions mod/choice/lang/en/choice.php
Expand Up @@ -114,6 +114,11 @@
$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';
Expand Down
104 changes: 104 additions & 0 deletions mod/choice/tests/behat/publish_info.feature
@@ -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."
36 changes: 35 additions & 1 deletion mod/choice/view.php
Expand Up @@ -164,8 +164,42 @@
}

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);
Expand Down

0 comments on commit 3cd76cb

Please sign in to comment.