Merge branch 'MDL-29774-master-by-sam-wilson' of git://github.com/junpataleta/moodle

This commit is contained in:
Eloy Lafuente (stronk7) 2016-10-18 17:34:36 +02:00
commit 3fdbba0e27
3 changed files with 35 additions and 7 deletions

View file

@ -799,12 +799,26 @@ class group_non_members_selector extends groups_user_selector_base {
* *
* Used by /group/clientlib.js * Used by /group/clientlib.js
* *
* @global moodle_database $DB
* @global moodle_page $PAGE * @global moodle_page $PAGE
* @param int $courseid * @param int $courseid
*/ */
public function print_user_summaries($courseid) { public function print_user_summaries($courseid) {
global $DB, $PAGE; global $PAGE;
$usersummaries = $this->get_user_summaries($courseid);
$PAGE->requires->data_for_js('userSummaries', $usersummaries);
}
/**
* Construct HTML lists of group-memberships of the current set of users.
*
* Used in user/selector/search.php to repopulate the userSummaries JS global
* that is created in self::print_user_summaries() above.
*
* @param int $courseid The course
* @return string[] Array of HTML lists of groups.
*/
public function get_user_summaries($courseid) {
global $DB;
$usersummaries = array(); $usersummaries = array();
@ -838,8 +852,7 @@ class group_non_members_selector extends groups_user_selector_base {
$usersummaries[] = $usergrouplist; $usersummaries[] = $usergrouplist;
} }
} }
return $usersummaries;
$PAGE->requires->data_for_js('userSummaries', $usersummaries);
} }
/** /**

View file

@ -179,6 +179,14 @@ M.core_user.init_user_selector = function (Y, name, hash, extrafields, lastsearc
return new M.core.ajaxException(data); return new M.core.ajaxException(data);
} }
this.output_options(data); this.output_options(data);
// If updated userSummaries are present, overwrite the global variable
// that's output by group_non_members_selector::print_user_summaries() in user/selector/lib.php
if (typeof data.userSummaries !== "undefined") {
/* global userSummaries:true */
/* exported userSummaries */
userSummaries = data.userSummaries;
}
} catch (e) { } catch (e) {
this.listbox.setStyle('background',''); this.listbox.setStyle('background','');
this.searchfield.addClass('error'); this.searchfield.addClass('error');

View file

@ -61,7 +61,7 @@ $userselector = new $classname($name, $options);
// Do the search and output the results. // Do the search and output the results.
$results = $userselector->find_users($search); $results = $userselector->find_users($search);
$json = array(); $jsonresults = array();
foreach ($results as $groupname => $users) { foreach ($results as $groupname => $users) {
$groupdata = array('name' => $groupname, 'users' => array()); $groupdata = array('name' => $groupname, 'users' => array());
foreach ($users as $user) { foreach ($users as $user) {
@ -76,7 +76,14 @@ foreach ($results as $groupname => $users) {
} }
$groupdata['users'][] = $output; $groupdata['users'][] = $output;
} }
$json[] = $groupdata; $jsonresults[] = $groupdata;
} }
echo json_encode(array('results' => $json)); $json = array('results' => $jsonresults);
// Also add users' group membership summaries, if possible.
if (is_callable(array($userselector, 'get_user_summaries')) && isset($options['courseid'])) {
$json['userSummaries'] = $userselector->get_user_summaries($options['courseid']);
}
echo json_encode($json);