weekly release 4.0dev
[moodle.git] / mod / forum / amd / src / form-user-selector.js
CommitLineData
32e4c582
SR
1// This file is part of Moodle - http://moodle.org/
2//
3// Moodle is free software: you can redistribute it and/or modify
4// it under the terms of the GNU General Public License as published by
5// the Free Software Foundation, either version 3 of the License, or
6// (at your option) any later version.
7//
8// Moodle is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11// GNU General Public License for more details.
12//
13// You should have received a copy of the GNU General Public License
14// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
15
16/**
17 * Enrolled user selector module.
18 *
19 * @module mod_forum/form-user-selector
32e4c582
SR
20 * @copyright 2019 Shamim Rezaie
21 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22 */
23
24define(['jquery', 'core/ajax', 'core/templates'], function($, Ajax, Templates) {
25 return /** @alias module:mod_forum/form-user-selector */ {
26 processResults: function(selector, results) {
27 var users = [];
28 $.each(results, function(index, user) {
29 users.push({
30 value: user.id,
31 label: user._label
32 });
33 });
34 return users;
35 },
36
37 transport: function(selector, query, success, failure) {
38 var promise;
39 var courseid = $(selector).attr('courseid');
40
41 promise = Ajax.call([{
42 methodname: 'core_enrol_search_users',
43 args: {
44 courseid: courseid,
45 search: query,
46 searchanywhere: true,
47 page: 0,
48 perpage: 30
49 }
50 }]);
51
52 promise[0].then(function(results) {
53 var promises = [],
54 i = 0;
55
56 // Render the label.
57 $.each(results, function(index, user) {
58 promises.push(Templates.render('mod_forum/form-user-selector-suggestion', user));
59 });
60
61 // Apply the label to the results.
62 return $.when.apply($.when, promises).then(function() {
63 var args = arguments;
64 $.each(results, function(index, user) {
65 user._label = args[i];
66 i++;
67 });
68 success(results);
69 return;
70 });
71
72 }).fail(failure);
73 }
74
75 };
76
77});