diff --git a/enrol/flatfile/lib.php b/enrol/flatfile/lib.php index fa4b6b83086..e7bcab9c210 100644 --- a/enrol/flatfile/lib.php +++ b/enrol/flatfile/lib.php @@ -130,18 +130,18 @@ class enrol_flatfile_plugin extends enrol_plugin { $instance = $ue->enrolmentinstance; $params = $manager->get_moodlepage()->url->params(); $params['ue'] = $ue->id; - if ($this->allow_unenrol_user($instance, $ue) && has_capability("enrol/flatfile:unenrol", $context)) { - $url = new moodle_url('/enrol/unenroluser.php', $params); - $actionparams = array('class' => 'unenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_UNENROL); - $actions[] = new user_enrolment_action(new pix_icon('t/delete', get_string('unenrol', 'enrol')), - get_string('unenrol', 'enrol'), $url, $actionparams); - } if ($this->allow_manage($instance) && has_capability("enrol/flatfile:manage", $context)) { $url = new moodle_url('/enrol/editenrolment.php', $params); $actionparams = array('class' => 'editenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_EDIT); $actions[] = new user_enrolment_action(new pix_icon('t/edit', get_string('editenrolment', 'enrol')), get_string('editenrolment', 'enrol'), $url, $actionparams); } + if ($this->allow_unenrol_user($instance, $ue) && has_capability("enrol/flatfile:unenrol", $context)) { + $url = new moodle_url('/enrol/unenroluser.php', $params); + $actionparams = array('class' => 'unenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_UNENROL); + $actions[] = new user_enrolment_action(new pix_icon('t/delete', get_string('unenrol', 'enrol')), + get_string('unenrol', 'enrol'), $url, $actionparams); + } return $actions; } diff --git a/enrol/lti/lib.php b/enrol/lti/lib.php index 3e6cb2e7dce..6f5ac9e716f 100644 --- a/enrol/lti/lib.php +++ b/enrol/lti/lib.php @@ -390,18 +390,18 @@ class enrol_lti_plugin extends enrol_plugin { $instance = $ue->enrolmentinstance; $params = $manager->get_moodlepage()->url->params(); $params['ue'] = $ue->id; + if ($this->allow_manage($instance) && has_capability("enrol/lti:manage", $context)) { + $url = new moodle_url('/enrol/editenrolment.php', $params); + $actionparams = array('class' => 'editenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_EDIT); + $actions[] = new user_enrolment_action(new pix_icon('t/edit', get_string('editenrolment', 'enrol')), + get_string('editenrolment', 'enrol'), $url, $actionparams); + } if ($this->allow_unenrol_user($instance, $ue) && has_capability("enrol/lti:unenrol", $context)) { $url = new moodle_url('/enrol/unenroluser.php', $params); $actionparams = array('class' => 'unenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_UNENROL); $actions[] = new user_enrolment_action(new pix_icon('t/delete', get_string('unenrol', 'enrol')), get_string('unenrol', 'enrol'), $url, $actionparams); } - if ($this->allow_manage($instance) && has_capability("enrol/lti:manage", $context)) { - $url = new moodle_url('/enrol/editenrolment.php', $params); - $actionparams = array('class' => 'editenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_EDIT); - $actions[] = new user_enrolment_action(new pix_icon('t/edit', get_string('editenrolment', 'enrol')), - get_string('editenrolment', 'enrol'), $url, $actionparam); - } return $actions; } diff --git a/enrol/manual/lib.php b/enrol/manual/lib.php index 676901d6ee0..01de8e32639 100644 --- a/enrol/manual/lib.php +++ b/enrol/manual/lib.php @@ -374,18 +374,18 @@ class enrol_manual_plugin extends enrol_plugin { $instance = $ue->enrolmentinstance; $params = $manager->get_moodlepage()->url->params(); $params['ue'] = $ue->id; - if ($this->allow_unenrol_user($instance, $ue) && has_capability("enrol/manual:unenrol", $context)) { - $url = new moodle_url('/enrol/unenroluser.php', $params); - $actionparams = array('class' => 'unenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_UNENROL); - $actions[] = new user_enrolment_action(new pix_icon('t/delete', get_string('unenrol', 'enrol')), - get_string('unenrol', 'enrol'), $url, $actionparams); - } if ($this->allow_manage($instance) && has_capability("enrol/manual:manage", $context)) { $url = new moodle_url('/enrol/editenrolment.php', $params); $actionparams = array('class' => 'editenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_EDIT); $actions[] = new user_enrolment_action(new pix_icon('t/edit', get_string('editenrolment', 'enrol')), get_string('editenrolment', 'enrol'), $url, $actionparams); } + if ($this->allow_unenrol_user($instance, $ue) && has_capability("enrol/manual:unenrol", $context)) { + $url = new moodle_url('/enrol/unenroluser.php', $params); + $actionparams = array('class' => 'unenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_UNENROL); + $actions[] = new user_enrolment_action(new pix_icon('t/delete', get_string('unenrol', 'enrol')), + get_string('unenrol', 'enrol'), $url, $actionparams); + } return $actions; } diff --git a/enrol/paypal/lib.php b/enrol/paypal/lib.php index f2cab89fb2d..8041a7ed7cd 100644 --- a/enrol/paypal/lib.php +++ b/enrol/paypal/lib.php @@ -289,18 +289,18 @@ class enrol_paypal_plugin extends enrol_plugin { $instance = $ue->enrolmentinstance; $params = $manager->get_moodlepage()->url->params(); $params['ue'] = $ue->id; - if ($this->allow_unenrol($instance) && has_capability("enrol/paypal:unenrol", $context)) { - $url = new moodle_url('/enrol/unenroluser.php', $params); - $actionparams = array('class' => 'unenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_UNENROL); - $actions[] = new user_enrolment_action(new pix_icon('t/delete', get_string('unenrol', 'enrol')), - get_string('unenrol', 'enrol'), $url, $actionparams); - } if ($this->allow_manage($instance) && has_capability("enrol/paypal:manage", $context)) { $url = new moodle_url('/enrol/editenrolment.php', $params); $actionparams = array('class' => 'editenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_EDIT); $actions[] = new user_enrolment_action(new pix_icon('t/edit', get_string('editenrolment', 'enrol')), get_string('editenrolment', 'enrol'), $url, $actionparams); } + if ($this->allow_unenrol($instance) && has_capability("enrol/paypal:unenrol", $context)) { + $url = new moodle_url('/enrol/unenroluser.php', $params); + $actionparams = array('class' => 'unenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_UNENROL); + $actions[] = new user_enrolment_action(new pix_icon('t/delete', get_string('unenrol', 'enrol')), + get_string('unenrol', 'enrol'), $url, $actionparams); + } return $actions; } diff --git a/enrol/self/lib.php b/enrol/self/lib.php index a1bfd9b46d4..e6128913739 100644 --- a/enrol/self/lib.php +++ b/enrol/self/lib.php @@ -534,18 +534,18 @@ class enrol_self_plugin extends enrol_plugin { $instance = $ue->enrolmentinstance; $params = $manager->get_moodlepage()->url->params(); $params['ue'] = $ue->id; - if ($this->allow_unenrol($instance) && has_capability("enrol/self:unenrol", $context)) { - $url = new moodle_url('/enrol/unenroluser.php', $params); - $actionparams = array('class' => 'unenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_UNENROL); - $actions[] = new user_enrolment_action(new pix_icon('t/delete', get_string('unenrol', 'enrol')), - get_string('unenrol', 'enrol'), $url, $actionparams); - } if ($this->allow_manage($instance) && has_capability("enrol/self:manage", $context)) { $url = new moodle_url('/enrol/editenrolment.php', $params); $actionparams = array('class' => 'editenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_EDIT); $actions[] = new user_enrolment_action(new pix_icon('t/edit', get_string('editenrolment', 'enrol')), get_string('editenrolment', 'enrol'), $url, $actionparams); } + if ($this->allow_unenrol($instance) && has_capability("enrol/self:unenrol", $context)) { + $url = new moodle_url('/enrol/unenroluser.php', $params); + $actionparams = array('class' => 'unenrollink', 'rel' => $ue->id, 'data-action' => ENROL_ACTION_UNENROL); + $actions[] = new user_enrolment_action(new pix_icon('t/delete', get_string('unenrol', 'enrol')), + get_string('unenrol', 'enrol'), $url, $actionparams); + } return $actions; } diff --git a/user/amd/build/status_field.min.js b/user/amd/build/status_field.min.js index ea0b3656672..565c8dd00b8 100644 --- a/user/amd/build/status_field.min.js +++ b/user/amd/build/status_field.min.js @@ -1 +1 @@ -define(["core/templates","jquery","core/str","core/config","core/notification","core/modal_factory","core/modal_events","core/fragment","core/ajax"],function(a,b,c,d,e,f,g,h,i){var j={EDIT_ENROLMENT:'[data-action="editenrolment"]',SHOW_DETAILS:'[data-action="showdetails"]',UNENROL:'[data-action="unenrol"]'},k=function(a){this.contextid=a.contextid,this.courseid=a.courseid,this.bindEditEnrol(),this.bindUnenrol(),this.bindStatusDetails()};return k.prototype.courseid=0,k.prototype.bindEditEnrol=function(){var a=this;b(j.EDIT_ENROLMENT).click(function(d){d.preventDefault();var h=b(this),i=h.parent(),j=i.data("fullname"),k=h.attr("rel");b.when(c.get_string("edituserenrolment","enrol",j)).then(function(a){return f.create({large:!0,title:a,type:f.types.SAVE_CANCEL})}).done(function(b){b.getRoot().on(g.save,function(c){c.preventDefault(),a.submitEditFormAjax(b)}),b.getRoot().on(g.hidden,function(){b.destroy()}),b.setBody(a.getBody(k)),b.show()}).fail(e.exception)})},k.prototype.bindUnenrol=function(){b(j.UNENROL).click(function(a){a.preventDefault();var h=b(this),i=h.parent(),j=[{key:"unenrol",component:"enrol"},{key:"unenrolconfirm",component:"enrol",param:{user:i.data("fullname"),course:i.data("coursename")}}];b.when(c.get_strings(j)).then(function(a){var b=a[0],c=a[1];return f.create({body:c,large:!0,title:b,type:f.types.CONFIRM})}).done(function(a){a.getRoot().on(g.yes,function(){var a={confirm:1,sesskey:d.sesskey,ue:b(h).attr("rel")};window.location.href=d.wwwroot+"/enrol/unenroluser.php?"+b.param(a)}),a.getRoot().on(g.hidden,function(){a.destroy()}),a.show()}).fail(e.exception)})},k.prototype.bindStatusDetails=function(){b(j.SHOW_DETAILS).click(function(d){d.preventDefault();var h=b(this),i=h.parent(),j={fullname:i.data("fullname"),coursename:i.data("coursename"),enrolinstancename:i.data("enrolinstancename"),status:i.data("status"),statusclass:i.find("span").attr("class"),timestart:i.data("timestart"),timeend:i.data("timeend")},k=c.get_string("enroldetails","enrol"),l=f.create({large:!0,type:f.types.CANCEL});b.when(k,l).done(function(b,c){var d=a.render("core_user/status_details",j);c.setTitle(b),c.setBody(d),c.show(),c.getRoot().on(g.hidden,function(){c.destroy()})}).fail(e.exception)})},k.prototype.submitEditFormAjax=function(a){var c=this,d=a.getRoot().find("form"),f=b(d).find('[name="ue"]').val(),g=b(d).find('[name="status"]').val(),h={courseid:this.courseid,ueid:f,status:g},j=b(d).find('[name="timestart[enabled]"]');if(j.is(":checked")){var k=b(d).find('[name="timestart[year]"]').val(),l=b(d).find('[name="timestart[month]"]').val()-1,m=b(d).find('[name="timestart[day]"]').val(),n=b(d).find('[name="timestart[hour]"]').val(),o=b(d).find('[name="timestart[minute]"]').val(),p=new Date(k,l,m,n,o);h.timestart=p.getTime()/1e3}var q=b(d).find('[name="timeend[enabled]"]');if(q.is(":checked")){var r=b(d).find('[name="timeend[year]"]').val(),s=b(d).find('[name="timeend[month]"]').val()-1,t=b(d).find('[name="timeend[day]"]').val(),u=b(d).find('[name="timeend[hour]"]').val(),v=b(d).find('[name="timeend[minute]"]').val(),w=new Date(r,s,t,u,v);h.timeend=w.getTime()/1e3}var x={methodname:"core_enrol_edit_user_enrolment",args:h};i.call([x])[0].done(function(b){if(b.result)a.hide(),"undefined"!=typeof window.M.core_formchangechecker&&window.M.core_formchangechecker.reset_form_dirty_state(),window.location.reload();else{var e=JSON.stringify(d.serialize());a.setBody(c.getBody(f,e))}}).fail(e.exception)},k.prototype.getBody=function(a,b){var c={ueid:a};return"undefined"!=typeof b&&(c.formdata=b),h.loadFragment("enrol","user_enrolment_form",this.contextid,c).fail(e.exception)},{init:function(a){new k(a)}}}); \ No newline at end of file +define(["core/templates","jquery","core/str","core/config","core/notification","core/modal_factory","core/modal_events","core/fragment","core/ajax"],function(a,b,c,d,e,f,g,h,i){var j={EDIT_ENROLMENT:'[data-action="editenrolment"]',SHOW_DETAILS:'[data-action="showdetails"]',UNENROL:'[data-action="unenrol"]'},k=function(a){this.contextid=a.contextid,this.courseid=a.courseid,this.bindEditEnrol(),this.bindUnenrol(),this.bindStatusDetails()};return k.prototype.courseid=0,k.prototype.bindEditEnrol=function(){var a=this;b(j.EDIT_ENROLMENT).click(function(d){d.preventDefault();var h=b(this),i=h.parent(),j=i.data("fullname"),k=h.attr("rel");b.when(c.get_string("edituserenrolment","enrol",j)).then(function(a){return f.create({large:!0,title:a,type:f.types.SAVE_CANCEL})}).done(function(b){b.getRoot().on(g.save,function(c){c.preventDefault(),a.submitEditFormAjax(b)}),b.getRoot().on(g.hidden,function(){b.destroy()}),b.setBody(a.getBody(k)),b.show()}).fail(e.exception)})},k.prototype.bindUnenrol=function(){b(j.UNENROL).click(function(a){a.preventDefault();var h=b(this),i=h.parent(),j=[{key:"unenrol",component:"enrol"},{key:"unenrolconfirm",component:"enrol",param:{user:i.data("fullname"),course:i.data("coursename")}}];b.when(c.get_strings(j)).then(function(a){var b=a[0],c=a[1];return f.create({body:c,large:!0,title:b,type:f.types.CONFIRM})}).done(function(a){a.getRoot().on(g.yes,function(){var a={confirm:1,sesskey:d.sesskey,ue:b(h).attr("rel")};window.location.href=d.wwwroot+"/enrol/unenroluser.php?"+b.param(a)}),a.getRoot().on(g.hidden,function(){a.destroy()}),a.show()}).fail(e.exception)})},k.prototype.bindStatusDetails=function(){b(j.SHOW_DETAILS).click(function(d){d.preventDefault();var h=b(this),i=h.parent(),k={fullname:i.data("fullname"),coursename:i.data("coursename"),enrolinstancename:i.data("enrolinstancename"),status:i.data("status"),statusclass:i.find("span").attr("class"),timestart:i.data("timestart"),timeend:i.data("timeend")},l=[{key:"enroldetails",component:"enrol"}],m=h.next(j.EDIT_ENROLMENT);m.length&&(k.editenrollink=b("
").append(m.clone()).html());var n=c.get_strings(l),o=f.create({large:!0,type:f.types.CANCEL});b.when(n,o).done(function(c,d){var e=a.render("core_user/status_details",k);d.setTitle(c[0]),d.setBody(e),m.length&&d.getRoot().on("click",j.EDIT_ENROLMENT,function(a){a.preventDefault(),d.hide(),b(m).trigger("click")}),d.show(),d.getRoot().on(g.hidden,function(){d.destroy()})}).fail(e.exception)})},k.prototype.submitEditFormAjax=function(a){var c=this,d=a.getRoot().find("form"),f=b(d).find('[name="ue"]').val(),g=b(d).find('[name="status"]').val(),h={courseid:this.courseid,ueid:f,status:g},j=b(d).find('[name="timestart[enabled]"]');if(j.is(":checked")){var k=b(d).find('[name="timestart[year]"]').val(),l=b(d).find('[name="timestart[month]"]').val()-1,m=b(d).find('[name="timestart[day]"]').val(),n=b(d).find('[name="timestart[hour]"]').val(),o=b(d).find('[name="timestart[minute]"]').val(),p=new Date(k,l,m,n,o);h.timestart=p.getTime()/1e3}var q=b(d).find('[name="timeend[enabled]"]');if(q.is(":checked")){var r=b(d).find('[name="timeend[year]"]').val(),s=b(d).find('[name="timeend[month]"]').val()-1,t=b(d).find('[name="timeend[day]"]').val(),u=b(d).find('[name="timeend[hour]"]').val(),v=b(d).find('[name="timeend[minute]"]').val(),w=new Date(r,s,t,u,v);h.timeend=w.getTime()/1e3}var x={methodname:"core_enrol_edit_user_enrolment",args:h};i.call([x])[0].done(function(b){if(b.result)a.hide(),"undefined"!=typeof window.M.core_formchangechecker&&window.M.core_formchangechecker.reset_form_dirty_state(),window.location.reload();else{var e=JSON.stringify(d.serialize());a.setBody(c.getBody(f,e))}}).fail(e.exception)},k.prototype.getBody=function(a,b){var c={ueid:a};return"undefined"!=typeof b&&(c.formdata=b),h.loadFragment("enrol","user_enrolment_form",this.contextid,c).fail(e.exception)},{init:function(a){new k(a)}}}); \ No newline at end of file diff --git a/user/amd/src/status_field.js b/user/amd/src/status_field.js index e57b7e915b5..3e1303bbe86 100644 --- a/user/amd/src/status_field.js +++ b/user/amd/src/status_field.js @@ -201,12 +201,37 @@ define(['core/templates', "timeend": parentContainer.data('timeend') }; - var modalTitlePromise = Str.get_string('enroldetails', 'enrol'); + // Get default string for the modal and modal type. + var strings = [ + { + key: 'enroldetails', + component: 'enrol' + } + ]; + + // Find the edit enrolment link. + var editEnrolLink = detailsButton.next(SELECTORS.EDIT_ENROLMENT); + if (editEnrolLink.length) { + // If there's an edit enrolment link for this user, clone it into the context for the modal. + context.editenrollink = $('
').append(editEnrolLink.clone()).html(); + } + + var modalStringsPromise = Str.get_strings(strings); var modalPromise = ModalFactory.create({large: true, type: ModalFactory.types.CANCEL}); - $.when(modalTitlePromise, modalPromise).done(function(modalTitle, modal) { + $.when(modalStringsPromise, modalPromise).done(function(strings, modal) { var modalBodyPromise = Template.render('core_user/status_details', context); - modal.setTitle(modalTitle); + modal.setTitle(strings[0]); modal.setBody(modalBodyPromise); + + if (editEnrolLink.length) { + modal.getRoot().on('click', SELECTORS.EDIT_ENROLMENT, function(e) { + e.preventDefault(); + modal.hide(); + // Trigger click event for the edit enrolment link to show the edit enrolment modal. + $(editEnrolLink).trigger('click'); + }); + } + modal.show(); // Handle hidden event. @@ -320,4 +345,4 @@ define(['core/templates', (new StatusFieldActions(config)); } }; - }); \ No newline at end of file + }); diff --git a/user/templates/status_details.mustache b/user/templates/status_details.mustache index 079f1cbb3cf..120e44e9e56 100644 --- a/user/templates/status_details.mustache +++ b/user/templates/status_details.mustache @@ -61,7 +61,7 @@ {{#str}}enrolmentmethod, enrol{{/str}} - {{enrolinstancename}} + {{enrolinstancename}} {{{editenrollink}}} diff --git a/user/tests/behat/edit_user_enrolment.feature b/user/tests/behat/edit_user_enrolment.feature index eaeb4be5fea..1fe2b5257fa 100644 --- a/user/tests/behat/edit_user_enrolment.feature +++ b/user/tests/behat/edit_user_enrolment.feature @@ -24,11 +24,11 @@ Feature: Edit user enrolment Given I log in as "teacher1" And I am on "Course 1" course homepage And I navigate to course participants - When I click on "//a[@data-action='editenrolment']" "xpath_element" in the "student1" "table_row" + When I click on "Edit enrolment" "icon" in the "student1" "table_row" And I should see "Edit Student 1's enrolment" And I set the field "Status" to "Suspended" And I click on "Save changes" "button" - And I click on "//a[@data-action='editenrolment']" "xpath_element" in the "student2" "table_row" + And I click on "Edit enrolment" "icon" in the "student2" "table_row" And I should see "Edit Student 2's enrolment" And I set the field "timeend[enabled]" to "1" And I set the field "timeend[day]" to "1" @@ -44,7 +44,7 @@ Feature: Edit user enrolment Given I log in as "teacher1" And I am on "Course 1" course homepage And I navigate to course participants - When I click on "//a[@data-action='unenrol']" "xpath_element" in the "student1" "table_row" + When I click on "Unenrol" "icon" in the "student1" "table_row" And I click on "Yes" "button" Then I should not see "Student 1" in the "participants" "table" @@ -53,26 +53,72 @@ Feature: Edit user enrolment Given I log in as "teacher1" And I am on "Course 1" course homepage And I navigate to course participants - When I click on "//a[@data-action='showdetails']" "xpath_element" in the "student1" "table_row" + When I click on "Enrolment details" "icon" in the "student1" "table_row" Then I should see "Enrolment details" And I should see "Student 1" in the "Full name" "table_row" And I should see "Active" in the "//td[@class='user-enrol-status']" "xpath_element" + And I should see "Manual enrolments" in the "Enrolment method" "table_row" And I press "Cancel" - And I click on "//a[@data-action='showdetails']" "xpath_element" in the "student2" "table_row" + And I click on "Enrolment details" "icon" in the "student2" "table_row" And I should see "Enrolment details" And I should see "Student 2" in the "Full name" "table_row" And I should see "Suspended" in the "//td[@class='user-enrol-status']" "xpath_element" + And I should see "Manual enrolments" in the "Enrolment method" "table_row" + And "Edit enrolment" "icon" should exist in the "Enrolment method" "table_row" + + @javascript + Scenario: View a student's enrolment details for a student enrolled via course meta link where editing can't be done + Given the following "users" exist: + | username | firstname | lastname | email | + | student3 | Student | 3 | student3@example.com | + And the following "courses" exist: + | fullname | shortname | format | + | Course 2 | C2 | topics | + And the following "course enrolments" exist: + | user | course | role | status | + | student3 | C2 | student | 0 | + And I log in as "admin" + And I navigate to "Manage enrol plugins" node in "Site administration > Plugins > Enrolments" + And I click on "Enable" "link" in the "Course meta link" "table_row" + And I am on "Course 1" course homepage + And I add "Course meta link" enrolment method with: + | Link course | C2 | + And I log out + And I log in as "teacher1" + And I am on "Course 1" course homepage + When I navigate to course participants + Then I should see "Student 3" in the "participants" "table" + And "Edit enrolment" "icon" should not exist in the "student3" "table_row" + And "Unenrol" "icon" should not exist in the "student3" "table_row" + And I click on "Enrolment details" "icon" in the "student3" "table_row" + And I should see "Enrolment details" + And I should see "Student 3" in the "Full name" "table_row" + And I should see "Active" in the "//td[@class='user-enrol-status']" "xpath_element" + And I should see "Course meta link (Course 2)" in the "Enrolment method" "table_row" + And "Edit enrolment" "icon" should not exist in the "Enrolment method" "table_row" + + @javascript + Scenario: Edit a student's enrolment details from the status dialogue + Given I log in as "teacher1" + And I am on "Course 1" course homepage + And I navigate to course participants + When I click on "Enrolment details" "icon" in the "student2" "table_row" + And I click on "Edit enrolment" "icon" in the "Enrolment method" "table_row" + And I should see "Edit Student 2's enrolment" + And I set the field "Status" to "Active" + And I click on "Save changes" "button" + Then I should see "Active" in the "student2" "table_row" # Without JS, the user should be redirected to the original edit enrolment form. Scenario: Edit a user's enrolment without JavaScript Given I log in as "teacher1" And I am on "Course 1" course homepage And I navigate to course participants - When I click on "//a[@data-action='editenrolment']" "xpath_element" in the "student1" "table_row" + When I click on "Edit enrolment" "link" in the "student1" "table_row" And I should see "Student 1" And I set the field "Status" to "Suspended" And I click on "Save changes" "button" - And I click on "//a[@data-action='editenrolment']" "xpath_element" in the "student2" "table_row" + And I click on "Edit enrolment" "link" in the "student2" "table_row" And I should see "Student 2" And I set the field "timeend[enabled]" to "1" And I set the field "timeend[day]" to "1" @@ -88,6 +134,6 @@ Feature: Edit user enrolment Given I log in as "teacher1" And I am on "Course 1" course homepage And I navigate to course participants - When I click on "//a[@data-action='unenrol']" "xpath_element" in the "student1" "table_row" + When I click on "Unenrol" "link" in the "student1" "table_row" And I click on "Continue" "button" Then I should not see "Student 1" in the "participants" "table"