Skip to content

Commit

Permalink
MDL-66269 mod_forum: AMD module to fetch and format users
Browse files Browse the repository at this point in the history
Part of MDL-66075.
  • Loading branch information
rezaies authored and lameze committed Sep 20, 2019
1 parent 0f308fc commit 32e4c58
Show file tree
Hide file tree
Showing 4 changed files with 134 additions and 0 deletions.
2 changes: 2 additions & 0 deletions mod/forum/amd/build/form-user-selector.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions mod/forum/amd/build/form-user-selector.min.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

79 changes: 79 additions & 0 deletions mod/forum/amd/src/form-user-selector.js
@@ -0,0 +1,79 @@
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Enrolled user selector module.
*
* @module mod_forum/form-user-selector
* @class form-user-selector
* @package mod_forum
* @copyright 2019 Shamim Rezaie
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

define(['jquery', 'core/ajax', 'core/templates'], function($, Ajax, Templates) {
return /** @alias module:mod_forum/form-user-selector */ {
processResults: function(selector, results) {
var users = [];
$.each(results, function(index, user) {
users.push({
value: user.id,
label: user._label
});
});
return users;
},

transport: function(selector, query, success, failure) {
var promise;
var courseid = $(selector).attr('courseid');

promise = Ajax.call([{
methodname: 'core_enrol_search_users',
args: {
courseid: courseid,
search: query,
searchanywhere: true,
page: 0,
perpage: 30
}
}]);

promise[0].then(function(results) {
var promises = [],
i = 0;

// Render the label.
$.each(results, function(index, user) {
promises.push(Templates.render('mod_forum/form-user-selector-suggestion', user));
});

// Apply the label to the results.
return $.when.apply($.when, promises).then(function() {
var args = arguments;
$.each(results, function(index, user) {
user._label = args[i];
i++;
});
success(results);
return;
});

}).fail(failure);
}

};

});
52 changes: 52 additions & 0 deletions mod/forum/templates/form-user-selector-suggestion.mustache
@@ -0,0 +1,52 @@
{{!
This file is part of Moodle - http://moodle.org/
Moodle is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Moodle is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Moodle. If not, see <http://www.gnu.org/licenses/>.
}}
{{!
@template mod_forum/form-user-selector-suggestion
Moodle template for the list of valid options in an autocomplate form element.
Classes required for JS:
* none
Data attributes required for JS:
* none
Context variables required for this template:
* fullname string Users full name
* email string user email field
Example context (json):
{
"fullname": "Admin User",
"extrafields": [
{
"name": "email",
"value": "admin@example.com"
},
{
"name": "phone1",
"value": "0123456789"
}
]
}
}}
<span>
<span>{{fullname}}</span>
{{#extrafields}}
<span><small>{{value}}</small></span>
{{/extrafields}}
</span>

0 comments on commit 32e4c58

Please sign in to comment.