diff --git a/lib/behat/classes/behat_selectors.php b/lib/behat/classes/behat_selectors.php index add2130ec74..4b85386dbb6 100644 --- a/lib/behat/classes/behat_selectors.php +++ b/lib/behat/classes/behat_selectors.php @@ -131,7 +131,7 @@ XPATH [./descendant::*[self::h2][normalize-space(.) = %locator%] or %locator% = 'frontpage'] XPATH , 'table' => << <<id.'-'.$cm->id.'-'.$roleid); $table->course = $course; - $table->define_columns(array('fullname','count','select')); - $table->define_headers(array(get_string('user'),((!empty($action)) ? get_string($action) : get_string('allactions')),get_string('select'))); + $actionheader = !empty($action) ? get_string($action) : get_string('allactions'); + + if (empty($CFG->messaging)) { + $table->define_columns(array('fullname', 'count')); + $table->define_headers(array(get_string('user'), $actionheader)); + } else { + $table->define_columns(array('fullname', 'count', 'select')); + $table->define_headers(array(get_string('user'), $actionheader, get_string('select'))); + } $table->define_baseurl($baseurl); $table->set_attribute('cellpadding','5'); @@ -336,10 +343,14 @@ if (!empty($instanceid) && !empty($roleid)) { echo ''."\n"; foreach ($users as $u) { - $data = array(''.fullname($u,true).''."\n", - ((!empty($u->count)) ? get_string('yes').' ('.$u->count.') ' : get_string('no')), - ''."\n", - ); + $data = array(); + $data[] = html_writer::link(new moodle_url('/user/view.php', array('id' => $u->userid, 'course' => $course->id)), + fullname($u, true)); + $data[] = !empty($u->count) ? get_string('yes').' ('.$u->count.') ' : get_string('no'); + + if (!empty($CFG->messaging)) { + $data[] = ''; + } $table->add_data($data); } @@ -357,25 +368,27 @@ if (!empty($instanceid) && !empty($roleid)) { echo html_writer::end_div(); } - echo '
'; - echo ' '."\n"; - echo ' '."\n"; - if ($perpage >= $matchcount) { - echo ''."\n"; - } - echo '
'; - echo '
'; - echo html_writer::label(get_string('withselectedusers'), 'formactionselect'); - $displaylist['messageselect.php'] = get_string('messageselectadd'); - echo html_writer::select($displaylist, 'formaction', '', array(''=>'choosedots'), array('id'=>'formactionselect')); - echo $OUTPUT->help_icon('withselectedusers'); - echo ''."\n"; - echo '
'; - echo ''."\n"; - echo ''."\n"; - echo ''."\n"; + if (!empty($CFG->messaging)) { + echo '
'; + echo ' '."\n"; + echo ' '."\n"; + if ($perpage >= $matchcount) { + echo ''."\n"; + } + echo '
'; + echo '
'; + echo html_writer::label(get_string('withselectedusers'), 'formactionselect'); + $displaylist['messageselect.php'] = get_string('messageselectadd'); + echo html_writer::select($displaylist, 'formaction', '', array('' => 'choosedots'), array('id' => 'formactionselect')); + echo $OUTPUT->help_icon('withselectedusers'); + echo ''."\n"; + echo '
'; + echo ''."\n"; + echo ''."\n"; + echo ''."\n"; - $PAGE->requires->js_init_call('M.report_participation.init'); + $PAGE->requires->js_init_call('M.report_participation.init'); + } } echo $OUTPUT->footer(); diff --git a/report/participation/tests/behat/message_participants.feature b/report/participation/tests/behat/message_participants.feature new file mode 100644 index 00000000000..72da3f338cc --- /dev/null +++ b/report/participation/tests/behat/message_participants.feature @@ -0,0 +1,69 @@ +@report @report_participation @javascript +Feature: Use the particiaption report to message groups of students + In order to engage with students based on participation + As a teacher + I need to be able to message students who have not participated in an activity + + Background: + Given the following "courses" exist: + | fullname | shortname | category | groupmode | + | Course 1 | C1 | 0 | 1 | + And the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@example.com | + | student1 | Student | 1 | student1@example.com | + | student2 | Student | 2 | student2@example.com | + | student3 | Student | 3 | student3@example.com | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | C1 | editingteacher | + | student1 | C1 | student | + | student2 | C1 | student | + | student3 | C1 | student | + And I log in as "teacher1" + And I follow "Course 1" + And I turn editing mode on + And I add a "Book" to section "1" and I fill the form with: + | Name | Test book name | + | Description | Test book | + And I follow "Test book name" + And I set the following fields to these values: + | Chapter title | Test chapter | + | Content | Test chapter content | + And I log out + And I log in as "student1" + And I follow "Course 1" + And I follow "Test book name" + And I log out + + Scenario: Message students who have not participated in book + Given I log in as "teacher1" + And I follow "Course 1" + And I navigate to "Course participation" node in "Course administration > Reports" + And I set the field "instanceid" to "Test book name" + And I set the field "roleid" to "Student" + And I press "Go" + And I should see "Yes (1)" in the "Student 1" "table_row" + And I should see "No" in the "Student 2" "table_row" + And I should see "No" in the "Student 3" "table_row" + When I press "Select all 'No'" + And I set the field "With selected users..." to "Send a message" + And I press "OK" + Then I should see "Added 2 new recipients" + And I should see "Student 2" in the "Currently selected users" "table" + And I should see "Student 3" in the "Currently selected users" "table" + And I should not see "Student 1" in the "Currently selected users" "table" + + Scenario: Ensure no message options when messaging is disabled + Given I log in as "admin" + And I set the following administration settings values: + | messaging | 0 | + And I log out + And I log in as "teacher1" + And I follow "Course 1" + And I navigate to "Course participation" node in "Course administration > Reports" + When I set the field "instanceid" to "Test book name" + And I set the field "roleid" to "Student" + And I press "Go" + Then I should not see "With selected users..." + And I should not see "Select all"