From 058caae6f3ad1c468d49bd19cf905992cba033f3 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Thu, 2 Apr 2015 17:02:39 +0800 Subject: [PATCH 1/2] MDL-49687 enrol: allow to add user to multiple gorups --- enrol/users.php | 7 ++++++- enrol/users_forms.php | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/enrol/users.php b/enrol/users.php index ac2b68d1aab..e6940302518 100644 --- a/enrol/users.php +++ b/enrol/users.php @@ -144,7 +144,12 @@ if ($action) { $mform = new enrol_users_addmember_form(NULL, array('user'=>$user, 'course'=>$course, 'allgroups'=>$manager->get_all_groups())); $mform->set_data($PAGE->url->params()); $data = $mform->get_data(); - if ($mform->is_cancelled() || ($data && $manager->add_user_to_group($user, $data->groupid))) { + if ($mform->is_cancelled()) { + redirect($PAGE->url); + } if (!empty($data->groupids)) { + foreach ($data->groupids as $groupid) { + $manager->add_user_to_group($user, $groupid); + } redirect($PAGE->url); } else { $pagetitle = get_string('addgroup', 'group'); diff --git a/enrol/users_forms.php b/enrol/users_forms.php index ab5553057b9..b2ac13cdc0a 100644 --- a/enrol/users_forms.php +++ b/enrol/users_forms.php @@ -99,7 +99,8 @@ class enrol_users_addmember_form extends moodleform { $mform->addElement('header','general', fullname($user)); - $mform->addElement('select', 'groupid', get_string('addgroup', 'group'), $options); + $mform->addElement('select', 'groupids', get_string('addgroup', 'group'), $options, array('multiple' => 'multiple')); + $mform->addRule('groupids', null, 'required'); $mform->addElement('hidden', 'id'); $mform->setType('id', PARAM_INT); From 31635bfb63f64739cdce66c9c08227af82e78043 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Wed, 8 Apr 2015 09:24:57 +0800 Subject: [PATCH 2/2] MDL-49687 enrol: Add behat tests for adding multiple groups --- enrol/tests/behat/add_to_group.feature | 43 ++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 enrol/tests/behat/add_to_group.feature diff --git a/enrol/tests/behat/add_to_group.feature b/enrol/tests/behat/add_to_group.feature new file mode 100644 index 00000000000..bc57846389f --- /dev/null +++ b/enrol/tests/behat/add_to_group.feature @@ -0,0 +1,43 @@ +@core_enrol @core_group +Feature: Users can be added to multiple groups at once + In order to manage group membership effectively + As a user + I need to add another user to multiple groups + + Background: + 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 | format | + | Course 1 | C1 | topics | + And the following "groups" exist: + | name | course | idnumber | + | Group 1 | C1 | G1 | + | Group 2 | C1 | G2 | + | Group 3 | C1 | G3 | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | C1 | editingteacher | + | student1 | C1 | editingteacher | + + Scenario: Adding a user to one group + Given I log in as "teacher1" + And I follow "Course 1" + And I navigate to "Enrolled users" node in "Course administration > Users" + And I click on "Add user into group" "link" in the "student1" "table_row" + When I set the field "Add user into group" to "Group 1" + And I press "Save changes" + Then I should see "Group 1" + + Scenario: Adding a user to multiple group + Given I log in as "teacher1" + And I follow "Course 1" + And I navigate to "Enrolled users" node in "Course administration > Users" + And I click on "Add user into group" "link" in the "student1" "table_row" + When I set the field "Add user into group" to "Group 1, Group 2, Group 3" + And I press "Save changes" + Then I should see "Group 1" + And I should see "Group 2" + And I should see "Group 3"