diff --git a/mod/forum/classes/output/big_search_form.php b/mod/forum/classes/output/big_search_form.php new file mode 100644 index 00000000000..6a983d6e2cf --- /dev/null +++ b/mod/forum/classes/output/big_search_form.php @@ -0,0 +1,192 @@ +. + +/** + * Big search form. + * + * @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 html_writer; +use moodle_url; +use renderable; +use renderer_base; +use stdClass; +use templatable; + +/** + * Big search form 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 big_search_form implements renderable, templatable { + + public $course; + public $datefrom; + public $dateto; + public $forumoptions; + public $fullwords; + public $notwords; + public $phrase; + public $scripturl; + public $showfullwords; + public $subject; + public $user; + public $words; + + /** + * Constructor. + * + * @param object $course The course. + * @param object $user The user. + */ + public function __construct($course) { + global $DB; + $this->course = $course; + $this->scripturl = new moodle_url('/mod/forum/forum.js'); + $this->showfullwords = $DB->get_dbfamily() == 'mysql' || $DB->get_dbfamily() == 'postgres'; + + $forumoptions = ['' => get_string('allforums', 'forum')] + forum_menu_list($course); + $this->forumoptions = array_map(function($option) use ($forumoptions) { + return [ + 'value' => $option, + 'name' => $forumoptions[$option] + ]; + }, array_keys($forumoptions)); + } + + /** + * Set date from. + * + * @param mixed $value Date from. + */ + public function set_datefrom($value) { + $this->datefrom = $value; + } + + /** + * Set date to. + * + * @param mixed $value Date to. + */ + public function set_dateto($value) { + $this->dateto = $value; + } + + /** + * Set full words. + * + * @param mixed $value Full words. + */ + public function set_fullwords($value) { + $this->fullwords = $value; + } + + /** + * Set not words. + * + * @param mixed $value Not words. + */ + public function set_notwords($value) { + $this->notwords = $value; + } + + /** + * Set phrase. + * + * @param mixed $value Phrase. + */ + public function set_phrase($value) { + $this->phrase = $value; + } + + /** + * Set subject. + * + * @param mixed $value Subject. + */ + public function set_subject($value) { + $this->subject = $value; + } + + /** + * Set user. + * + * @param mixed $value User. + */ + public function set_user($value) { + $this->user = $value; + } + + /** + * Set words. + * + * @param mixed $value Words. + */ + public function set_words($value) { + $this->words = $value; + } + + public function export_for_template(renderer_base $output) { + $data = new stdClass(); + + $data->scripturl = $this->scripturl->out(false); + $data->courseid = $this->course->id; + $data->words = $this->words; + $data->phrase = $this->phrase; + $data->notwords = $this->notwords; + $data->fullwords = $this->fullwords; + $data->datefromchecked = !empty($this->datefrom); + $data->datetochecked = !empty($this->dateto); + $data->subject = $this->subject; + $data->user = $this->user; + $data->showfullwords = $this->showfullwords; + + $datefrom = $this->datefrom; + if (empty($datefrom)) { + $datefrom = make_timestamp(2000, 1, 1, 0, 0, 0); + } + + $dateto = $this->dateto; + if (empty($dateto)) { + $dateto = time() + HOURSECS; + } + + $data->datefromfields = html_writer::select_time('days', 'fromday', $datefrom) + . html_writer::select_time('months', 'frommonth', $datefrom) + . html_writer::select_time('years', 'fromyear', $datefrom) + . html_writer::select_time('hours', 'fromhour', $datefrom) + . html_writer::select_time('minutes', 'fromminute', $datefrom); + + $data->datetofields = html_writer::select_time('days', 'today', $dateto) + . html_writer::select_time('months', 'tomonth', $dateto) + . html_writer::select_time('years', 'toyear', $dateto) + . html_writer::select_time('hours', 'tohour', $dateto) + . html_writer::select_time('minutes', 'tominute', $dateto); + + $data->forumoptions = $this->forumoptions; + + return $data; + } + +} diff --git a/mod/forum/renderer.php b/mod/forum/renderer.php index 6765635d82a..74c2d017aca 100644 --- a/mod/forum/renderer.php +++ b/mod/forum/renderer.php @@ -236,4 +236,14 @@ class mod_forum_renderer extends plugin_renderer_base { 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)); } + + /** + * Render big search form. + * + * @param \mod_forum\output\big_search_form $form The renderable. + * @return string + */ + public function render_big_search_form(\mod_forum\output\big_search_form $form) { + return $this->render_from_template('mod_forum/big_search_form', $form->export_for_template($this)); + } } diff --git a/mod/forum/search.php b/mod/forum/search.php index 8dd39d9c2ec..931d04526d5 100644 --- a/mod/forum/search.php +++ b/mod/forum/search.php @@ -318,122 +318,20 @@ echo $OUTPUT->footer(); * @return void The function prints the form. */ function forum_print_big_search_form($course) { - global $CFG, $DB, $words, $subject, $phrase, $user, $userid, $fullwords, $notwords, $datefrom, $dateto, $PAGE, $OUTPUT; + global $PAGE, $words, $subject, $phrase, $user, $userid, $fullwords, $notwords, $datefrom, $dateto, $OUTPUT; - echo $OUTPUT->box(get_string('searchforumintro', 'forum'), 'searchbox boxaligncenter', 'intro'); + $renderable = new \mod_forum\output\big_search_form($course, $user); + $renderable->set_words($words); + $renderable->set_phrase($phrase); + $renderable->set_notwords($notwords); + $renderable->set_fullwords($fullwords); + $renderable->set_datefrom($datefrom); + $renderable->set_dateto($dateto); + $renderable->set_subject($subject); + $renderable->set_user($user); - echo $OUTPUT->box_start('generalbox boxaligncenter'); - - echo html_writer::script('', $CFG->wwwroot.'/mod/forum/forum.js'); - - echo '
'; - echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - - if ($DB->get_dbfamily() == 'mysql' || $DB->get_dbfamily() == 'postgres') { - echo ''; - echo ''; - echo ''; - echo ''; - } - - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - - echo ''; - echo '
'; - - echo html_writer::script(js_writer::function_call('lockoptions_timetoitems')); - echo html_writer::script(js_writer::function_call('lockoptions_timefromitems')); - - echo $OUTPUT->box_end(); + $output = $PAGE->get_renderer('mod_forum'); + echo $output->render($renderable); } /** diff --git a/mod/forum/templates/big_search_form.mustache b/mod/forum/templates/big_search_form.mustache new file mode 100644 index 00000000000..373694edc79 --- /dev/null +++ b/mod/forum/templates/big_search_form.mustache @@ -0,0 +1,129 @@ +{{! + 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 . +}} +{{! + Big search form. +}} + +
+ +
+ + + + + + + + + + + + + + {{#showfullwords}} + + + + + {{/showfullwords}} + + + + + + + + + + + + + + + + + + + + + + + + +
+ {{#js}} + lockoptions_timetoitems(); + lockoptions_timefromitems(); + {{/js}} +
diff --git a/theme/noname/scss/moodle/expendable.scss b/theme/noname/scss/moodle/expendable.scss index d93cad97e9c..8d91e564799 100644 --- a/theme/noname/scss/moodle/expendable.scss +++ b/theme/noname/scss/moodle/expendable.scss @@ -4,7 +4,6 @@ table.grading-report, table#listdirectories, table.rolecaps, table.userenrolment, -table#form, form#movecourses table, #page-admin-course-index .editcourse, .forumheaderlist, diff --git a/theme/noname/scss/moodle/forms.scss b/theme/noname/scss/moodle/forms.scss index 80c83b6622b..1f57e25eddc 100644 --- a/theme/noname/scss/moodle/forms.scss +++ b/theme/noname/scss/moodle/forms.scss @@ -63,10 +63,6 @@ input#id_externalurl { display: block; } -#page-mod-forum-search .c1 .form-horizontal { - @extend .controls; -} - .form-item .form-inline { display: inline; } @@ -88,7 +84,6 @@ input#id_externalurl { } // Pale grey container for submit buttons. -table#form td.submit, .form-buttons, .path-admin .buttons, #fitem_id_submitbutton, diff --git a/theme/noname/scss/moodle/responsive.scss b/theme/noname/scss/moodle/responsive.scss index c14ae838d22..c82d30acce7 100644 --- a/theme/noname/scss/moodle/responsive.scss +++ b/theme/noname/scss/moodle/responsive.scss @@ -28,7 +28,6 @@ .form-item .form-setting, .form-item .form-description, .mform .fitem .felement, - #page-mod-forum-search .c1, .mform .fdescription.required, .userprofile dl.list dd, .form-horizontal .controls { @@ -92,7 +91,6 @@ .form-item .form-setting, .form-item .form-description, .mform .fitem .felement, - #page-mod-forum-search .c1, .mform .fdescription.required, .userprofile dl.list dd, .form-horizontal .controls { @@ -285,7 +283,6 @@ .form-item .form-description { margin-left: 0; } - table#form td.submit, .form-buttons, #fitem_id_submitbutton, .fp-content-center form + div, diff --git a/theme/noname/templates/mod_forum/big_search_form.mustache b/theme/noname/templates/mod_forum/big_search_form.mustache new file mode 100644 index 00000000000..18ddbc6e28a --- /dev/null +++ b/theme/noname/templates/mod_forum/big_search_form.mustache @@ -0,0 +1,130 @@ +{{! + 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 . +}} +{{! + Big search form. +}} + +
+ +
+ + + + + + + + + + + + + + {{#showfullwords}} + + + + + {{/showfullwords}} + + + + + + + + + + + + + + + + + + + + + + + + + +
+ {{#js}} + lockoptions_timetoitems(); + lockoptions_timefromitems(); + {{/js}} +