[icinga-checkins] icinga.org: icingaweb2/feature/doc-search-6630: doc/lib: Add SearchController

git at icinga.org git at icinga.org
Tue Feb 10 17:15:31 CET 2015


Module: icingaweb2
Branch: feature/doc-search-6630
Commit: e2b34023cd4736327a04c74e341e49493e08dacc
URL:    https://git.icinga.org/?p=icingaweb2.git;a=commit;h=e2b34023cd4736327a04c74e341e49493e08dacc

Author: Eric Lippmann <eric.lippmann at netways.de>
Date:   Tue Feb 10 17:14:16 2015 +0100

doc/lib: Add SearchController

At the moment only Icinga Web 2's documentation is available for searching.

refs #6630

---

 .../application/controllers/SearchController.php   |   49 ++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/modules/doc/application/controllers/SearchController.php b/modules/doc/application/controllers/SearchController.php
new file mode 100644
index 0000000..5ba223d
--- /dev/null
+++ b/modules/doc/application/controllers/SearchController.php
@@ -0,0 +1,49 @@
+<?php
+/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
+
+use \Zend_Controller_Action_Exception;
+use Icinga\Application\Icinga;
+use Icinga\Module\Doc\DocController;
+use Icinga\Module\Doc\DocParser;
+use Icinga\Module\Doc\Search\DocSearch;
+use Icinga\Module\Doc\Search\DocSearchIterator;
+use Icinga\Module\Doc\Search\DocSearchRenderer;
+
+class Doc_SearchController extends DocController
+{
+    public function indexAction()
+    {
+        $parser = new DocParser($this->getPath());
+        $search = new DocSearchRenderer(
+            new DocSearchIterator(
+                $parser->getDocTree()->getIterator(),
+                new DocSearch($this->params->get('q'))
+            )
+        );
+        $this->view->search = $search->setUrl('doc/icingaweb/chapter');
+    }
+
+    /**
+     * Get the path to Icinga Web 2's documentation
+     *
+     * @return  string
+     *
+     * @throws  Zend_Controller_Action_Exception    If Icinga Web 2's documentation is not available
+     */
+    protected function getPath()
+    {
+        $path = Icinga::app()->getBaseDir('doc');
+        if (is_dir($path)) {
+            return $path;
+        }
+        if (($path = $this->Config()->get('documentation', 'icingaweb2')) !== null) {
+            if (is_dir($path)) {
+                return $path;
+            }
+        }
+        throw new Zend_Controller_Action_Exception(
+            $this->translate('Documentation for Icinga Web 2 is not available'),
+            404
+        );
+    }
+}



More information about the icinga-checkins mailing list