]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/searchaction.php
Merge branch 'master' of git://gitorious.org/laconica/mainline into 0.7.x
[quix0rs-gnu-social.git] / lib / searchaction.php
index 46779bf7acdc63e69484b77e6acda63bf5d5c103..fdfb8dc5adac4cc57378b9665c9d0744907a8d5a 100644 (file)
@@ -1,5 +1,16 @@
 <?php
-/*
+/**
+ * Base search action class.
+ *
+ * PHP version 5
+ *
+ * @category Action
+ * @package  Laconica
+ * @author   Evan Prodromou <evan@controlyourself.ca>
+ * @author   Robin Millette <millette@controlyourself.ca>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://laconi.ca/
+ *
  * Laconica - a distributed open-source microblogging tool
  * Copyright (C) 2008, Controlez-Vous, Inc.
  *
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-if (!defined('LACONICA')) { exit(1); }
+if (!defined('LACONICA')) {
+    exit(1);
+}
 
-class SearchAction extends Action {
+require_once INSTALLDIR.'/lib/searchgroupnav.php';
 
-       function is_readonly() {
-               return true;
-       }
+/**
+ * Base search action class.
+ *
+ * @category Action
+ * @package  Laconica
+ * @author   Evan Prodromou <evan@controlyourself.ca>
+ * @author   Robin Millette <millette@controlyourself.ca>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://laconi.ca/
+ */
+class SearchAction extends Action
+{
+    /**
+     * Return true if read only.
+     *
+     * @return boolean true
+     */
+    function isReadOnly()
+    {
+        return true;
+    }
 
-       function handle($args) {
-               parent::handle($args);
-               $this->show_form();
-       }
+    function handle($args)
+    {
+        parent::handle($args);
+        $this->showPage();
+    }
 
-       function show_top($arr=NULL) {
-               if ($arr) {
-                       $error = $arr[1];
-               }
-               if ($error) {
-                       common_element('p', 'error', $error);
-               } else {
-                       $instr = $this->get_instructions();
-                       $output = common_markup_to_html($instr);
-                       common_element_start('div', 'instructions');
-                       common_raw($output);
-                       common_element_end('div');
-               }
-               $this->search_menu();
-       }
+    /**
+     * Show tabset for this page
+     *
+     * Uses the SearchGroupNav widget
+     *
+     * @return void
+     * @see SearchGroupNav
+     */
 
-       function get_title() {
-               return NULL;
-       }
+    function showLocalNav()
+    {
+        $nav = new SearchGroupNav($this, $this->trimmed('q'));
+        $nav->show();
+    }
 
-       function show_header($arr) {
-               return;
-       }
+    function showTop($arr=null)
+    {
+        if ($arr) {
+            $error = $arr[1];
+        }
+        if ($error) {
+            $this->element('p', 'error', $error);
+        } else {
+            $instr = $this->getInstructions();
+            $output = common_markup_to_html($instr);
+            $this->elementStart('div', 'instructions');
+            $this->raw($output);
+            $this->elementEnd('div');
+        }
+    }
 
-       function show_form($error=NULL) {
-               global $config;
+    function title()
+    {
+        return null;
+    }
 
-               $q = $this->trimmed('q');
-               $page = $this->trimmed('page', 1);
+    function showNoticeForm() {
+        // remote post notice form
+    }
 
-               common_show_header($this->get_title(), array($this, 'show_header'), array($q, $error),
-                                                  array($this, 'show_top'));
-               common_element_start('form', array('method' => 'get',
-                                                                                  'id' => 'login',
-                                                                                  'action' => common_local_url($this->trimmed('action'))));
-               common_element_start('p');
-               if (!isset($config['site']['fancy']) || !$config['site']['fancy']) {
-                       common_element('input', array('name' => 'action',
-                                                                                 'type' => 'hidden',
-                                                                                 'value' => $this->trimmed('action')));
-               }
-               common_element('input', array('name' => 'q',
-                                                                         'id' => 'q',
-                                                                         'type' => 'text',
-                                                                         'class' => 'input_text',
-                                                                         'value' => ($q) ? $q : ''));
-               common_text(' ');
-               common_element('input', array('type' => 'submit',
-                                                                         'id' => 'search',
-                                                                         'name' => 'search',
-                                                                         'class' => 'submit',
-                                                                         'value' => _('Search')));
+    function showContent() {
+        $this->showTop();
+        $this->showForm();
+    }
 
-               common_element_end('p');
-               common_element_end('form');
-               if ($q) {
-                       $this->show_results($q, $page);
-               }
-               common_show_footer();
-       }
+    function showForm($error=null)
+    {
+        global $config;
 
-       function search_menu() {
-        # action => array('prompt', 'title')
-        static $menu =
-        array('peoplesearch' =>
-              array('People',
-                       'Find people on this site'),
-                         'noticesearch' =>
-                         array('Text',
-                                       'Find content of notices'));
-               $this->nav_menu($menu);
-       }
+        $q = $this->trimmed('q');
+        $page = $this->trimmed('page', 1);
+        $this->elementStart('form', array('method' => 'get',
+                                           'id' => 'form_search',
+                                           'class' => 'form_settings',
+                                           'action' => common_local_url($this->trimmed('action'))));
+        $this->elementStart('fieldset');
+        $this->element('legend', null, _('Search site'));
+        $this->elementStart('ul', 'form_data');
+        $this->elementStart('li');
+        if (!isset($config['site']['fancy']) || !$config['site']['fancy']) {
+            $this->hidden('action', $this->trimmed('action'));
+        }
+        $this->input('q', 'Keyword(s)', $q);
+        $this->submit('search', 'Search');
+        $this->elementEnd('li');
+        $this->elementEnd('ul');
+        $this->elementEnd('fieldset');
+        $this->elementEnd('form');
+        if ($q) {
+            $this->showResults($q, $page);
+        }
+    }
 }
+