From 2db1dd972e79a5b8e5871e71ec27b90f5cb7e36f Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Thu, 22 Dec 2016 14:24:12 -0500
Subject: [PATCH] DevTools improvements - Added router configuration - Added
 home page - Refactored deminifyAction for readability

---
 .../VuFindDevTools/config/module.config.php   | 34 +++++++++++++++
 .../Controller/DevtoolsController.php         | 41 +++++++++++++++----
 .../bootstrap3/templates/devtools/home.phtml  | 10 +++++
 3 files changed, 76 insertions(+), 9 deletions(-)
 create mode 100644 themes/bootstrap3/templates/devtools/home.phtml

diff --git a/module/VuFindDevTools/config/module.config.php b/module/VuFindDevTools/config/module.config.php
index a5c2b285d05..1a02dce2c45 100644
--- a/module/VuFindDevTools/config/module.config.php
+++ b/module/VuFindDevTools/config/module.config.php
@@ -7,6 +7,40 @@ $config = [
             'devtools' => 'VuFindDevTools\Controller\DevtoolsController',
         ],
     ],
+    'router' => [
+        'routes' => [
+            'devtools-deminify' => [
+                'type' => 'Zend\Mvc\Router\Http\Literal',
+                'options' => [
+                    'route'    => '/devtools/deminify',
+                    'defaults' => [
+                        'controller' => 'DevTools',
+                        'action'     => 'Deminify',
+                    ]
+                ]
+            ],
+            'devtools-home' => [
+                'type' => 'Zend\Mvc\Router\Http\Literal',
+                'options' => [
+                    'route'    => '/devtools/home',
+                    'defaults' => [
+                        'controller' => 'DevTools',
+                        'action'     => 'Home',
+                    ]
+                ]
+            ],
+            'devtools-language' => [
+                'type' => 'Zend\Mvc\Router\Http\Literal',
+                'options' => [
+                    'route'    => '/devtools/language',
+                    'defaults' => [
+                        'controller' => 'DevTools',
+                        'action'     => 'Language',
+                    ]
+                ]
+            ],
+        ],
+    ],
 ];
 
 return $config;
diff --git a/module/VuFindDevTools/src/VuFindDevTools/Controller/DevtoolsController.php b/module/VuFindDevTools/src/VuFindDevTools/Controller/DevtoolsController.php
index 752bb3eb3a1..6d257abe122 100644
--- a/module/VuFindDevTools/src/VuFindDevTools/Controller/DevtoolsController.php
+++ b/module/VuFindDevTools/src/VuFindDevTools/Controller/DevtoolsController.php
@@ -42,6 +42,27 @@ use VuFindDevTools\LanguageHelper;
  */
 class DevtoolsController extends \VuFind\Controller\AbstractBase
 {
+    /**
+     * Fetch the query builder for the specified search backend. Return null if
+     * unavailable.
+     *
+     * @param string $id Backend ID
+     *
+     * @return object
+     */
+    protected function getQueryBuilder($id)
+    {
+        try {
+            $backend = $this->getServiceLocator()
+                ->get('VuFind\Search\BackendManager')
+                ->get($id);
+        } catch (\Exception $e) {
+            return null;
+        }
+        return is_callable([$backend, 'getQueryBuilder'])
+            ? $backend->getQueryBuilder() : null;
+    }
+
     /**
      * Deminify action
      *
@@ -66,21 +87,23 @@ class DevtoolsController extends \VuFind\Controller\AbstractBase
                 $view->backendParams = $params->getBackendParameters()
                     ->getArrayCopy();
             }
-            try {
-                $backend = $this->getServiceLocator()
-                    ->get('VuFind\Search\BackendManager')
-                    ->get($params->getSearchClassId());
-            } catch (\Exception $e) {
-                $backend = false;
-            }
-            if ($backend && is_callable([$backend, 'getQueryBuilder'])) {
-                $builder = $backend->getQueryBuilder();
+            if ($builder = $this->getQueryBuilder($params->getSearchClassId())) {
                 $view->queryParams = $builder->build($view->query)->getArrayCopy();
             }
         }
         return $view;
     }
 
+    /**
+     * Home action
+     *
+     * @return \Zend\View\Model\ViewModel
+     */
+    public function homeAction()
+    {
+        return $this->createViewModel();
+    }
+
     /**
      * Language action
      *
diff --git a/themes/bootstrap3/templates/devtools/home.phtml b/themes/bootstrap3/templates/devtools/home.phtml
new file mode 100644
index 00000000000..c30e9909eb1
--- /dev/null
+++ b/themes/bootstrap3/templates/devtools/home.phtml
@@ -0,0 +1,10 @@
+<?
+    $this->headTitle('Development Tools');
+?>
+
+<h2>Development Tools</h2>
+
+<ul>
+  <li><a href="<?=$this->url('devtools-deminify')?>">Deminifier</a> - Examine minified search data copied from the search database table.</li>
+  <li><a href="<?=$this->url('devtools-language')?>">Language Details</a> - Summarize status of translations in language files.</li>
+</ul>
\ No newline at end of file
-- 
GitLab