Clean up help service script
authorMichael M Slusarz <slusarz@curecanti.org>
Fri, 5 Mar 2010 17:58:57 +0000 (10:58 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Fri, 5 Mar 2010 19:09:22 +0000 (12:09 -0700)
horde/services/help/index.php
horde/templates/help/menu.inc
horde/templates/help/sidebar.inc

index b8bf1c5..8a93a4b 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 /**
+ * Help display script.
+ *
  * Copyright 1999-2010 The Horde Project (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you
 require_once dirname(__FILE__) . '/../../lib/Application.php';
 Horde_Registry::appInit('horde', array('authentication' => 'none'));
 
+$vars = Horde_Variables::getDefaultVariables();
+
 $rtl = isset(Horde_Nls::$config['rtl'][$language]);
 $title = _("Help");
-$show = Horde_String::lower(Horde_Util::getFormData('show', 'index'));
-$module = Horde_String::lower(preg_replace('/\W/', '', Horde_Util::getFormData('module', 'horde')));
-$topic = Horde_Util::getFormData('topic', 'overview');
+$show = isset($vars->show)
+    ? Horde_String::lower($vars->show)
+    : 'index';
+$module = isset($vars->module)
+    ? Horde_String::lower(preg_replace('/\W/', '', $vars->module))
+    : 'horde';
+$topic = isset($vars->topic) ? $vars->topic : 'overview';
 
-$base_url = $registry->get('webroot', 'horde') . '/services/help/';
+$base_url = Horde::getServiceLink('help', $module);
 
-$sidebar_url = Horde::url($base_url);
-$sidebar_url = Horde_Util::addParameter($sidebar_url, array('show' => 'sidebar',
-                                                      'module' => $module,
-                                                      'topic' => $topic));
+$sidebar_url = Horde::url($base_url->copy()->add(array(
+    'show' => 'sidebar',
+    'topic' => $topic
+)));
+
+if ($show == 'index') {
+    $main_url = Horde::url($base_url->copy()->add(array(
+        'show' => 'entry',
+        'topic' => $topic
+    )));
+    $menu_url = Horde::url($base_url->copy()->add('show', 'menu'));
+
+    require HORDE_TEMPLATES . '/help/index.inc';
+    exit;
+}
 
 if ($module == 'admin') {
     $help_app = $registry->get('name', 'horde');
-    $fileroot = $registry->get('fileroot');
-    $help_file = $fileroot . "/admin/locale/$language/help.xml";
-    $help_file_fallback = $fileroot . '/admin/locale/en_US/help.xml';
+    $fileroot = $registry->get('fileroot') . '/admin';
 } else {
     $help_app = $registry->get('name', $module);
     $fileroot = $registry->get('fileroot', $module);
-    $help_file = $fileroot . "/locale/$language/help.xml";
-    $help_file_fallback = $fileroot . '/locale/en_US/help.xml';
 }
 
-if ($show == 'index') {
-    $main_url = Horde::url($base_url);
-    $main_url = Horde_Util::addParameter($main_url, array('show' => 'entry',
-                                                    'module' => $module,
-                                                    'topic' => $topic));
-    $menu_url = Horde::url($base_url);
-    $menu_url = Horde_Util::addParameter($menu_url, array('module' => $module,
-                                                    'show' => 'menu'));
-
-    require HORDE_TEMPLATES . '/help/index.inc';
-    exit;
-}
+$help = new Horde_Help(Horde_Help::SOURCE_FILE, array($fileroot . '/locale/' . $language . '/help.xml', $fileroot . '/locale/en_US/help.xml'));
 
 $bodyClass = 'help help_' . urlencode($show);
 require HORDE_TEMPLATES . '/common-header.inc';
-if ($show == 'menu') {
+
+switch ($show) {
+case 'menu':
     $version = Horde_String::ucfirst($module) . ' ' . $registry->getVersion($module);
     require HORDE_TEMPLATES . '/help/menu.inc';
-} elseif ($show == 'sidebar') {
-    $vars = Horde_Variables::getDefaultVariables();
+    break;
 
-    /* Get current page and if empty, load the default */
-    $side_show = Horde_Util::getFormData('side_show', 'index');
-    $vars->set('side_show', $side_show);
+case 'sidebar':
+    if (!isset($vars->side_show)) {
+        $vars->set('side_show', 'index');
+    }
 
     /* Generate Tabs */
     $tabs = new Horde_Ui_Tabs('side_show', $vars);
@@ -69,28 +75,24 @@ if ($show == 'menu') {
     $tree->setOption(array('target' => 'help_main'));
 
     $contents = '';
-    switch ($side_show) {
+    switch ($vars->side_show) {
     case 'index':
-        $help = new Horde_Help(Horde_Help::SOURCE_FILE, array($help_file, $help_file_fallback));
         $topics = $help->topics();
         $added_nodes = array();
+        $node_params_master = array(
+            'target' => 'help_main',
+            'icon' => 'help.png',
+            'icondir' => $registry->getImageDir('horde')
+        );
 
         foreach ($topics as $id => $title) {
             if (!$title) {
                 continue;
             }
 
+            $node_params = $node_params_master;
             $parent = null;
 
-            $url = Horde::url($registry->get('webroot', 'horde') . '/services/help/');
-            $url = Horde_Util::addParameter($url, array('show' => 'entry', 'module' => $module, 'topic' => $id));
-            $node_params = array(
-                'url' => $url,
-                'target' => 'help_main',
-                'icon' => 'help.png',
-                'icondir' => $registry->getImageDir('horde'),
-            );
-
             /* If the title doesn't begin with :: then replace all
              * double colons with single colons. */
             if (substr($title, 0, 2) != '::') {
@@ -109,10 +111,11 @@ if ($show == 'menu') {
                     $idx .= '|' . $name;
                     if (empty($added_nodes[$idx])) {
                         $added_nodes[$idx] = true;
-                        if (count($levels)) {
-                            unset($node_params['url']);
-                        } else {
-                            $node_params['url'] = $url;
+                        if (!count($levels)) {
+                            $node_params['url'] = $base_url->copy()->add(array(
+                                'show' => 'entry',
+                                'topic' => $id
+                            ));
                         }
                         $tree->addNode($idx, $parent, $name, 0, false, $node_params);
                     }
@@ -131,25 +134,21 @@ if ($show == 'menu') {
 
         $searchForm->addHidden('', 'module', 'text', false);
         $searchForm->addHidden('', 'side_show', 'text', false);
-        $vars->set('side_show', $side_show);
         $searchForm->addVariable(_("Keyword"), 'keyword', 'text', false, false, null, array(null, 20));
 
         $renderer = new Horde_Form_Renderer();
         $renderer->setAttrColumnWidth('50%');
-        $contents = Horde_Util::bufferOutput(array($searchForm, 'renderActive'), $renderer, $vars, $sidebar_url, 'post') .
+        $contents = Horde_Util::bufferOutput(array($searchForm, 'renderActive'), $renderer, $vars, $sidebar_url->copy()->setRaw(true), 'post') .
             '<br />';
 
         $keywords = $vars->get('keyword');
         if (!empty($keywords)) {
-            $help = new Horde_Help(Horde_Help::SOURCE_FILE, array($help_file, $help_file_fallback));
             $results = $help->search($keywords);
             foreach ($results as $id => $title) {
                 if (empty($title)) {
                     continue;
                 }
-                $link = Horde::url($registry->get('webroot', 'horde') . '/services/help/');
-                $link = Horde_Util::addParameter($link, array('show' => 'entry', 'module' => $module, 'topic' => $id));
-                $contents .= Horde::link($link, null, null, 'help_main') .
+                $contents .= Horde::link($base_url->copy()->add(array('show' => 'entry', 'topic' => $id)), null, null, 'help_main') .
                     htmlspecialchars($title) . "</a><br />\n";
             }
         }
@@ -157,12 +156,14 @@ if ($show == 'menu') {
     }
 
     require HORDE_TEMPLATES . '/help/sidebar.inc';
-} else {
-    $help = new Horde_Help(Horde_Help::SOURCE_FILE, array($help_file, $help_file_fallback));
-    if (($show == 'entry') && $topic) {
+    break;
+
+case 'entry':
+    if ($topic) {
         $help->lookup($topic);
         $help->display();
     }
+    break;
 }
 
 require HORDE_TEMPLATES . '/common-footer.inc';
index 8e4365a..fbc1ad4 100644 (file)
@@ -1,4 +1,3 @@
 <div class="header rightAlign">
- &nbsp;
  <span class="smallheader"><?php echo $version ?></span>
 </div>
index ba33e8e..13990df 100644 (file)
@@ -3,7 +3,7 @@
 </div>
 <br />
 <div>
- <?php echo $tabs->render($side_show) ?>
+ <?php echo $tabs->render($vars->side_show) ?>
  <div id="sidebarPanel">
   <?php echo $contents ?>
   <?php $tree->renderTree() ?>