]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/searchaction.php
isReadOnly() now takes arguments
[quix0rs-gnu-social.git] / lib / searchaction.php
index 8634bd99cfc8fe9f784679fff250fa85313ea77a..e74450e11f3e06dee57ce04754d81c7ac02a6bd6 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() {
+/**
+ * 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($args)
+    {
         return true;
     }
 
-    function handle($args) {
+    function handle($args)
+    {
         parent::handle($args);
-        $this->show_form();
+        $this->showPage();
+    }
+
+    /**
+     * Show tabset for this page
+     *
+     * Uses the SearchGroupNav widget
+     *
+     * @return void
+     * @see SearchGroupNav
+     */
+
+    function showLocalNav()
+    {
+        $nav = new SearchGroupNav($this, $this->trimmed('q'));
+        $nav->show();
     }
 
-    function show_top($arr=NULL) {
+    function showTop($arr=null)
+    {
+        $error = null;
         if ($arr) {
             $error = $arr[1];
         }
-        if ($error) {
-            common_element('p', 'error', $error);
+        if (!empty($error)) {
+            $this->element('p', 'error', $error);
         } else {
-            $instr = $this->get_instructions();
+            $instr = $this->getInstructions();
             $output = common_markup_to_html($instr);
-            common_element_start('div', 'instructions');
-            common_raw($output);
-            common_element_end('div');
+            $this->elementStart('div', 'instructions');
+            $this->raw($output);
+            $this->elementEnd('div');
         }
-        $this->search_menu();
     }
 
-    function get_title() {
-        return NULL;
+    function title()
+    {
+        return null;
     }
 
-    function show_header($arr) {
-        return;
+    function showNoticeForm() {
+        // remote post notice form
     }
 
-    function show_form($error=NULL) {
-        global $config;
+    function showContent() {
+        $this->showTop();
+        $this->showForm();
+    }
 
+    function showForm($error=null)
+    {
         $q = $this->trimmed('q');
         $page = $this->trimmed('page', 1);
-
-        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',
+        $this->elementStart('form', array('method' => 'get',
+                                           'id' => 'form_search',
+                                           'class' => 'form_settings',
                                            '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')));
+        $this->elementStart('fieldset');
+        $this->element('legend', null, _('Search site'));
+        $this->elementStart('ul', 'form_data');
+        $this->elementStart('li');
+        if (!common_config('site', 'fancy')) {
+            $this->hidden('action', $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')));
-
-        common_element_end('p');
-        common_element_end('form');
+        $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->show_results($q, $page);
+            $this->showResults($q, $page);
         }
-        common_show_footer();
     }
 
-    function search_menu() {
-        # action => array('prompt', 'title', $args)
-        $action = $this->trimmed('action');
-        $menu =
-          array('peoplesearch' =>
-                array(
-                      _('People'),
-                      _('Find people on this site'),
-                      ($action != 'peoplesearch' && $this->trimmed('q')) ? array('q' => $this->trimmed('q')) : NULL),
-                'noticesearch' =>
-                array( _('Text'),
-                       _('Find content of notices'),
-                       ($action != 'noticesearch' && $this->trimmed('q')) ? array('q' => $this->trimmed('q')) : NULL)
-                );
-        $this->nav_menu($menu);
+    function searchSuggestions($q) {
+        $qe = urlencode($q);
+        $message = sprintf(_(<<<E_O_T
+* Make sure all words are spelled correctly.
+* Try different keywords.
+* Try more general keywords.
+* Try fewer keywords.
+
+You can also try your search on other engines:
+
+* [Twingly](http://www.twingly.com/search?q=%s&content=microblog&site=identi.ca)
+* [Tweet scan](http://www.tweetscan.com/indexi.php?s=%s)
+* [Google](http://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)
+* [Yahoo](http://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)
+
+
+E_O_T
+), $qe, $qe, $qe, $qe);
+        $this->elementStart('dl', array('id' => 'help_search', 'class' => 'help'));
+        $this->element('dt', null, _('Search help'));
+        $this->elementStart('dd', 'instructions');
+        $this->raw(common_markup_to_html($message));
+        $this->elementEnd('dd');
+        $this->elementEnd('div');
     }
 }
+