diff --git a/mod/forum/classes/output/quick_search_form.php b/mod/forum/classes/output/quick_search_form.php new file mode 100644 index 0000000000000..dc024b51ae844 --- /dev/null +++ b/mod/forum/classes/output/quick_search_form.php @@ -0,0 +1,75 @@ +. + +/** + * Quick search form renderable. + * + * @package mod_forum + * @copyright 2016 Frédéric Massart - FMCorz.net + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace mod_forum\output; +defined('MOODLE_INTERNAL') || die(); + +use help_icon; +use moodle_url; +use renderable; +use renderer_base; +use templatable; + +/** + * Quick search form renderable class. + * + * @package mod_forum + * @copyright 2016 Frédéric Massart - FMCorz.net + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class quick_search_form implements renderable, templatable { + + /** @var int The course ID. */ + protected $courseid; + /** @var string Current query. */ + protected $query; + /** @var moodle_url The form action URL. */ + protected $actionurl; + /** @var help_icon The help icon. */ + protected $helpicon; + + /** + * Constructor. + * + * @param int $courseid The course ID. + * @param string $query The current query. + */ + public function __construct($courseid, $query = '') { + $this->courseid = $courseid; + $this->query = $query; + $this->actionurl = new moodle_url('/mod/forum/search.php'); + $this->helpicon = new help_icon('search', 'core'); + } + + public function export_for_template(renderer_base $output) { + $data = [ + 'actionurl' => $this->actionurl->out(false), + 'courseid' => $this->courseid, + 'query' => $this->query, + 'helpicon' => $this->helpicon->export_for_template($output), + ]; + return $data; + } + +} diff --git a/mod/forum/lib.php b/mod/forum/lib.php index c0d2279f96562..ec3dc6b3df38d 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -3928,22 +3928,10 @@ function forum_print_mode_form($id, $mode, $forumtype='') { * @return string */ function forum_search_form($course, $search='') { - global $CFG, $OUTPUT; - - $output = '
'; - $output .= '
'; - $output .= '
'; - $output .= $OUTPUT->help_icon('search'); - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= '
'; - $output .= '
'; - $output .= '
'; - - return $output; + global $CFG, $PAGE; + $forumsearch = new \mod_forum\output\quick_search_form($course->id, $search); + $output = $PAGE->get_renderer('mod_forum'); + return $output->render($forumsearch); } diff --git a/mod/forum/renderer.php b/mod/forum/renderer.php index 67589f930a9a7..6765635d82a59 100644 --- a/mod/forum/renderer.php +++ b/mod/forum/renderer.php @@ -226,4 +226,14 @@ public function render_digest_options($forum, $value) { return $editable; } + + /** + * Render quick search form. + * + * @param \mod_forum\output\quick_search_form $form The renderable. + * @return string + */ + public function render_quick_search_form(\mod_forum\output\quick_search_form $form) { + return $this->render_from_template('mod_forum/quick_search_form', $form->export_for_template($this)); + } } diff --git a/mod/forum/templates/quick_search_form.mustache b/mod/forum/templates/quick_search_form.mustache new file mode 100644 index 0000000000000..63aa3480a27c0 --- /dev/null +++ b/mod/forum/templates/quick_search_form.mustache @@ -0,0 +1,14 @@ +
+
+
+ {{#helpicon}} + {{>core/help_icon}} + {{/helpicon}} + + + + + +
+
+
diff --git a/theme/noname/templates/mod_forum/quick_search_form.mustache b/theme/noname/templates/mod_forum/quick_search_form.mustache new file mode 100644 index 0000000000000..a5c8767050083 --- /dev/null +++ b/theme/noname/templates/mod_forum/quick_search_form.mustache @@ -0,0 +1,13 @@ +
+
+ +
+ {{#helpicon}} + {{>core/help_icon}} + {{/helpicon}} + + +
+ +
+