MDL-31989 block_globalsearch: Adding the block
authorDavid Monllao <davidm@moodle.com>
Fri, 19 Feb 2016 06:36:44 +0000 (14:36 +0800)
committerDan Poltawski <dan@moodle.com>
Tue, 23 Feb 2016 10:47:57 +0000 (10:47 +0000)
Just a basic block with a search box.

blocks/globalsearch/block_globalsearch.php [new file with mode: 0644]
blocks/globalsearch/db/access.php [new file with mode: 0644]
blocks/globalsearch/lang/en/block_globalsearch.php [new file with mode: 0644]
blocks/globalsearch/version.php [new file with mode: 0644]

diff --git a/blocks/globalsearch/block_globalsearch.php b/blocks/globalsearch/block_globalsearch.php
new file mode 100644 (file)
index 0000000..5761d4c
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+// 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/>.
+
+/**
+ * Global search block.
+ *
+ * @package    block_globalsearch
+ * @copyright  Prateek Sachan {@link http://prateeksachan.com}
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+/**
+ * Global search block.
+ *
+ * @package    block_globalsearch
+ * @copyright  Prateek Sachan {@link http://prateeksachan.com}
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class block_globalsearch extends block_base {
+
+    /**
+     * Initialises the block.
+     *
+     * @return void
+     */
+    public function init() {
+        $this->title = get_string('pluginname', 'block_globalsearch');
+    }
+
+    /**
+     * Gets the block contents.
+     *
+     * If we can avoid it better not check the server status here as connecting
+     * to the server will slow down the whole page load.
+     *
+     * @return string The block HTML.
+     */
+    public function get_content() {
+        global $OUTPUT;
+        if ($this->content !== null) {
+            return $this->content;
+        }
+
+        $this->content = new stdClass();
+        $this->content->footer = '';
+
+        if (\core_search\manager::is_global_search_enabled() === false) {
+            $this->content->text = get_string('globalsearchdisabled', 'search');
+            return $this->content;
+        }
+
+        $url = new moodle_url('/search/index.php');
+        $this->content->footer .= html_writer::link($url, get_string('advancedsearch', 'search'));
+
+        $this->content->text  = html_writer::start_tag('div', array('class' => 'searchform'));
+        $this->content->text .= html_writer::start_tag('form', array('action' => $url->out()));
+        $this->content->text .= html_writer::start_tag('fieldset', array('action' => 'invisiblefieldset'));
+
+        // Input.
+        $this->content->text .= html_writer::tag('label', get_string('search', 'search'),
+            array('for' => 'searchform_search', 'class' => 'accesshide'));
+        $inputoptions = array('id' => 'searchform_search', 'name' => 'q', 'type' => 'text', 'size' => '15');
+        $this->content->text .= html_writer::empty_tag('input', $inputoptions);
+
+        // Search button.
+        $this->content->text .= html_writer::tag('button', get_string('search', 'search'),
+            array('id' => 'searchform_button', 'type' => 'submit', 'title' => 'globalsearch'));
+        $this->content->text .= html_writer::end_tag('fieldset');
+        $this->content->text .= html_writer::end_tag('form');
+        $this->content->text .= html_writer::end_tag('div');
+
+        return $this->content;
+    }
+}
diff --git a/blocks/globalsearch/db/access.php b/blocks/globalsearch/db/access.php
new file mode 100644 (file)
index 0000000..ad9f49d
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+// 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/>.
+
+/**
+ * Global search Block caps.
+ *
+ * @package    block_globalsearch
+ * @copyright  Prateek Sachan {@link http://prateeksachan.com}
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$capabilities = array(
+
+    'block/globalsearch:myaddinstance' => array(
+        'captype' => 'write',
+        'contextlevel' => CONTEXT_SYSTEM,
+        'archetypes' => array(
+            'user' => CAP_ALLOW
+        ),
+
+        'clonepermissionsfrom' => 'moodle/my:manageblocks'
+    ),
+
+    'block/globalsearch:addinstance' => array(
+        'captype' => 'write',
+        'contextlevel' => CONTEXT_BLOCK,
+        'archetypes' => array(
+            'manager' => CAP_ALLOW
+        ),
+
+        'clonepermissionsfrom' => 'moodle/site:manageblocks'
+    ),
+);
diff --git a/blocks/globalsearch/lang/en/block_globalsearch.php b/blocks/globalsearch/lang/en/block_globalsearch.php
new file mode 100644 (file)
index 0000000..8a0635b
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+// 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/>.
+
+/**
+ * Strings for component 'block_globalsearch'.
+ *
+ * @package    block_globalsearch
+ * @copyright  Prateek Sachan {@link http://prateeksachan.com}
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+$string['globalsearch:addinstance'] = 'Add a new global search block';
+$string['globalsearch:myaddinstance'] = 'Add a new global search block to Dashboard';
+$string['pluginname'] = 'Global search';
diff --git a/blocks/globalsearch/version.php b/blocks/globalsearch/version.php
new file mode 100644 (file)
index 0000000..07a5fa4
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+// 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/>.
+
+/**
+ * Global Search version details.
+ *
+ * @package    block_globalsearch
+ * @copyright  Prateek Sachan {@link http://prateeksachan.com}
+ * @copyright  Daniel Neis
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die;
+
+$plugin->version = 2016012000;
+$plugin->requires  = 2015111000;
+$plugin->component = 'block_globalsearch';