From 0e8c0866538f9a82cd8349227256de4a3644f12e Mon Sep 17 00:00:00 2001 From: Ilya Tregubov Date: Wed, 12 Jun 2024 10:57:57 +0800 Subject: [PATCH 1/5] MDL-80744 core_course: user selector renderer for actionbar in course --- course/classes/output/actionbar/renderer.php | 11 +++ .../output/actionbar/user_selector.php | 96 +++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 course/classes/output/actionbar/user_selector.php diff --git a/course/classes/output/actionbar/renderer.php b/course/classes/output/actionbar/renderer.php index 26f0f1b243f..adc5b7e89a2 100644 --- a/course/classes/output/actionbar/renderer.php +++ b/course/classes/output/actionbar/renderer.php @@ -25,6 +25,17 @@ namespace core_course\output\actionbar; */ class renderer extends \plugin_renderer_base { + /** + * Renders the user selector trigger element in the action bar. + * + * @param user_selector $userselector The user selector object. + * @return string The HTML output. + */ + public function render_user_selector(user_selector $userselector): string { + $data = $userselector->export_for_template($this); + return parent::render_from_template($userselector->get_template(), $data); + } + /** * Renders the group selector trigger element in the action bar. * diff --git a/course/classes/output/actionbar/user_selector.php b/course/classes/output/actionbar/user_selector.php new file mode 100644 index 00000000000..6afba7196c2 --- /dev/null +++ b/course/classes/output/actionbar/user_selector.php @@ -0,0 +1,96 @@ +. + +namespace core_course\output\actionbar; + +use core\output\comboboxsearch; +use moodle_url; +use stdClass; + +/** + * Renderable class for the user selector element in the action bar. + * + * @package core_course + * @copyright 2024 Ilya Tregubov + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class user_selector extends comboboxsearch { + + /** + * The class constructor. + * + * @param stdClass $course The course object. + * @param moodle_url $resetlink The reset link. + * @param int|null $userid The user ID. + * @param int|null $groupid The group ID. + * @param string $usersearch The user search query. + * @param int|null $instanceid The instance ID. + */ + public function __construct( + stdClass $course, + moodle_url $resetlink, + ?int $userid = null, + ?int $groupid = null, + string $usersearch = '', + ?int $instanceid = null + ) { + + $userselectorontent = $this->user_selector_output($course, $resetlink, $userid, $groupid, $usersearch, $instanceid); + parent::__construct(true, $userselectorontent, null, 'user-search d-flex', + null, 'usersearchdropdown overflow-auto', null, false); + } + + /** + * Method that generates the output for the user selector. + * + * @param stdClass $course The course object. + * @param moodle_url|null $resetlink The reset link. + * @param int|null $userid The user ID. + * @param int|null $groupid The group ID. + * @param string $usersearch The user search query. + * @param int|null $instanceid The instance ID. + * @return string The HTML output. + */ + private function user_selector_output( + stdClass $course, + ?moodle_url $resetlink = null, + ?int $userid = null, + ?int $groupid = null, + string $usersearch = '', + ?int $instanceid = null + ): string { + global $OUTPUT; + + // If the user ID is set, it indicates that a user has been selected. In this case, override the user search + // string with the full name of the selected user. + if ($userid) { + $usersearch = fullname(\core_user::get_user($userid)); + } + + return $OUTPUT->render_from_template('core_user/comboboxsearch/user_selector', [ + 'currentvalue' => $usersearch, + 'courseid' => $course->id, + 'instance' => $instanceid ?? rand(), + 'resetlink' => $resetlink->out(false), + 'group' => $groupid ?? 0, + 'name' => 'usersearch', + 'value' => json_encode([ + 'userid' => $userid, + 'search' => $usersearch, + ]), + ]); + } +} From 63e341d4d5307a451114806653399f9faab49e21 Mon Sep 17 00:00:00 2001 From: Mihail Geshoski Date: Mon, 24 Jun 2024 12:29:32 +0800 Subject: [PATCH 2/5] MDL-80744 behat: Create steps for the search combo box component --- lib/templates/comboboxsearch.mustache | 2 +- lib/tests/behat/behat_general.php | 89 +++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) diff --git a/lib/templates/comboboxsearch.mustache b/lib/templates/comboboxsearch.mustache index 1bd27ed686c..7cce39369c9 100644 --- a/lib/templates/comboboxsearch.mustache +++ b/lib/templates/comboboxsearch.mustache @@ -49,7 +49,7 @@ {{#buttonheader}} {{.}} {{/buttonheader}} -