From e4bb1b0d753f9c2bcd8ef293d761ad733fecd67d Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Thu, 28 Mar 2019 12:58:43 +0000 Subject: [PATCH] MDL-63293 enrol_manual: observe user paging config in enrol dialog. --- .../amd/build/form-potential-user-selector.min.js | 2 +- .../manual/amd/src/form-potential-user-selector.js | 13 +++++++------ enrol/manual/classes/enrol_users_form.php | 1 + enrol/manual/tests/behat/quickenrolment.feature | 10 ++++++++++ 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/enrol/manual/amd/build/form-potential-user-selector.min.js b/enrol/manual/amd/build/form-potential-user-selector.min.js index bf66147628b..4ef8cf9a30b 100644 --- a/enrol/manual/amd/build/form-potential-user-selector.min.js +++ b/enrol/manual/amd/build/form-potential-user-selector.min.js @@ -1 +1 @@ -define(["jquery","core/ajax","core/templates","core/str"],function(a,b,c,d){var e=100;return{processResults:function(b,c){var d=[];return a.isArray(c)?(a.each(c,function(a,b){d.push({value:b.id,label:b._label})}),d):c},transport:function(f,g,h,i){var j,k=a(f).attr("courseid"),l=a(f).attr("userfields").split(",");"undefined"==typeof k&&(k="1");var m=a(f).attr("enrolid");"undefined"==typeof m&&(m=""),j=b.call([{methodname:"core_enrol_get_potential_users",args:{courseid:k,enrolid:m,search:g,searchanywhere:!0,page:0,perpage:e+1}}]),j[0].then(function(b){var f=[],g=0;return b.length<=e?(a.each(b,function(b,d){var e=d,g=[];a.each(l,function(a,b){"undefined"!=typeof d[b]&&""!==d[b]&&(e.hasidentity=!0,g.push(d[b]))}),e.identity=g.join(", "),f.push(c.render("enrol_manual/form-user-selector-suggestion",e))}),a.when.apply(a.when,f).then(function(){var c=arguments;a.each(b,function(a,b){b._label=c[g],g++}),h(b)})):d.get_string("toomanyuserstoshow","core",">"+e).then(function(a){h(a)})}).fail(i)}}}); \ No newline at end of file +define(["jquery","core/ajax","core/templates","core/str"],function(a,b,c,d){return{processResults:function(b,c){var d=[];return a.isArray(c)?(a.each(c,function(a,b){d.push({value:b.id,label:b._label})}),d):c},transport:function(e,f,g,h){var i,j=a(e).attr("courseid"),k=a(e).attr("userfields").split(",");"undefined"==typeof j&&(j="1");var l=a(e).attr("enrolid");"undefined"==typeof l&&(l="");var m=a(e).attr("perpage");"undefined"==typeof m&&(m=100),i=b.call([{methodname:"core_enrol_get_potential_users",args:{courseid:j,enrolid:l,search:f,searchanywhere:!0,page:0,perpage:m+1}}]),i[0].then(function(b){var e=[],f=0;return b.length<=m?(a.each(b,function(b,d){var f=d,g=[];a.each(k,function(a,b){"undefined"!=typeof d[b]&&""!==d[b]&&(f.hasidentity=!0,g.push(d[b]))}),f.identity=g.join(", "),e.push(c.render("enrol_manual/form-user-selector-suggestion",f))}),a.when.apply(a.when,e).then(function(){var c=arguments;a.each(b,function(a,b){b._label=c[f],f++}),g(b)})):d.get_string("toomanyuserstoshow","core",">"+m).then(function(a){g(a)})}).fail(h)}}}); \ No newline at end of file diff --git a/enrol/manual/amd/src/form-potential-user-selector.js b/enrol/manual/amd/src/form-potential-user-selector.js index 7fac602a91a..ab38b1ebb28 100644 --- a/enrol/manual/amd/src/form-potential-user-selector.js +++ b/enrol/manual/amd/src/form-potential-user-selector.js @@ -25,9 +25,6 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], function($, Ajax, Templates, Str) { - /** @var {Number} Maximum number of users to show. */ - var MAXUSERS = 100; - return /** @alias module:enrol_manual/form-potential-user-selector */ { processResults: function(selector, results) { @@ -57,6 +54,10 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], function($, Ajax, if (typeof enrolid === "undefined") { enrolid = ''; } + var perpage = $(selector).attr('perpage'); + if (typeof perpage === "undefined") { + perpage = 100; + } promise = Ajax.call([{ methodname: 'core_enrol_get_potential_users', @@ -66,7 +67,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], function($, Ajax, search: query, searchanywhere: true, page: 0, - perpage: MAXUSERS + 1 + perpage: perpage + 1 } }]); @@ -74,7 +75,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], function($, Ajax, var promises = [], i = 0; - if (results.length <= MAXUSERS) { + if (results.length <= perpage) { // Render the label. $.each(results, function(index, user) { var ctx = user, @@ -101,7 +102,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], function($, Ajax, }); } else { - return Str.get_string('toomanyuserstoshow', 'core', '>' + MAXUSERS).then(function(toomanyuserstoshow) { + return Str.get_string('toomanyuserstoshow', 'core', '>' + perpage).then(function(toomanyuserstoshow) { success(toomanyuserstoshow); return; }); diff --git a/enrol/manual/classes/enrol_users_form.php b/enrol/manual/classes/enrol_users_form.php index 165a6e996de..5a4e50f54f1 100644 --- a/enrol/manual/classes/enrol_users_form.php +++ b/enrol/manual/classes/enrol_users_form.php @@ -99,6 +99,7 @@ class enrol_manual_enrol_users_form extends moodleform { 'multiple' => true, 'courseid' => $course->id, 'enrolid' => $instance->id, + 'perpage' => $CFG->maxusersperpage, 'userfields' => implode(',', get_extra_user_fields($context)) ); $mform->addElement('autocomplete', 'userlist', get_string('selectusers', 'enrol_manual'), array(), $options); diff --git a/enrol/manual/tests/behat/quickenrolment.feature b/enrol/manual/tests/behat/quickenrolment.feature index 2afa506adc3..72bb05926b6 100644 --- a/enrol/manual/tests/behat/quickenrolment.feature +++ b/enrol/manual/tests/behat/quickenrolment.feature @@ -154,6 +154,16 @@ Feature: Teacher can search and enrol users one by one into the course And I click on ".form-autocomplete-downarrow" "css_element" in the "Select users" "form_row" Then I should see "Too many users (>100) to show" + @javascript + Scenario: Changing the Maximum users per page setting affects the enrolment pop-up. + Given the following config values are set as admin: + | maxusersperpage | 5 | + And I navigate to course participants + And I press "Enrol users" + When I set the field "Select users" to "student00" + And I click on ".form-autocomplete-downarrow" "css_element" in the "Select users" "form_row" + Then I should see "Too many users (>5) to show" + @javascript Scenario: Change the Show user identity setting affects the enrolment pop-up. Given I log out