]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
refactor common code between searches and between search and settings
authorEvan Prodromou <evan@prodromou.name>
Wed, 9 Jul 2008 23:10:31 +0000 (19:10 -0400)
committerEvan Prodromou <evan@prodromou.name>
Wed, 9 Jul 2008 23:10:31 +0000 (19:10 -0400)
darcs-hash:20080709231031-84dde-929095ca3844ed6fe7ebd535fc9696678a5fcb0f.gz

actions/noticesearch.php
actions/peoplesearch.php
lib/action.php
lib/searchaction.php [new file with mode: 0644]
lib/settingsaction.php

index 7f645dbc237694bccec7c7899c3b41d24fce31e9..870a195e0732892796f31fe5f71c0b96d7e01a5d 100644 (file)
@@ -23,57 +23,15 @@ define(NOTICES_PER_PAGE, 20);
 
 # XXX common parent for people and content search?
 
-class NoticesearchAction extends Action {
+class NoticesearchAction extends SearchAction {
        
-       function handle($args) {
-               parent::handle($args);
-               $this->show_form();
-       }
-
        function get_instructions() {
                return _t('Search for notices on %%site.name%% by their contents. ' . 
                                  'Separate search terms by spaces; they must be 3 characters or more.');
        }
        
-       function show_top($error=NULL) {
-               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');
-               }
-       }
-       
-       function show_form($error=NULL) {
-               $q = $this->trimmed('q');
-               $page = $this->trimmed('page', 1);
-               
-               common_show_header(_t('Find notices'), NULL, $error, array($this, 'show_top'));
-               common_element_start('form', array('method' => 'post',
-                                                                                  'id' => 'login',
-                                                                                  'action' => common_local_url('noticesearch')));
-               common_element_start('p');
-               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' => _t('Search')));
-                                          
-               common_element_end('p');
-               common_element_end('form');
-               if ($q) {
-                       $this->show_results($q, $page);
-               }
-               common_show_footer();
+       function get_title() {
+               return _t('Text search');
        }
        
        function show_results($q, $page) {
index 5d10140173d1397046e3071f8287964957fa587a..30d737b2854b6593ad6633621c566c16a0dd3e0e 100644 (file)
@@ -21,59 +21,15 @@ if (!defined('LACONICA')) { exit(1); }
 
 define(PROFILES_PER_PAGE, 10);
 
-# XXX common parent for people and content search?
-
-class PeoplesearchAction extends Action {
+class PeoplesearchAction extends SearchAction {
        
-       function handle($args) {
-               parent::handle($args);
-               $this->show_form();
-       }
-
        function get_instructions() {
                return _t('Search for people on %%site.name%% by their name, location, or interests. ' . 
                                  'Separate the terms by spaces; they must be 3 characters or more.');
        }
-       
-       function show_top($error=NULL) {
-               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');
-               }
-       }
-       
-       function show_form($error=NULL) {
-               $q = $this->trimmed('q');
-               $page = $this->trimmed('page', 1);
-               
-               common_show_header(_t('Find people'), NULL, $error, array($this, 'show_top'));
-               common_element_start('form', array('method' => 'post',
-                                                                                  'id' => 'login',
-                                                                                  'action' => common_local_url('peoplesearch')));
-               common_element_start('p');
-               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' => _t('Search')));
-                                          
-               common_element_end('p');
-               common_element_end('form');
-               if ($q) {
-                       $this->show_results($q, $page);
-               }
-               common_show_footer();
+
+       function get_title() {
+               return _t('People search');
        }
        
        function show_results($q, $page) {
index 45d696442874f8602e55a5f654c69e57212916cc..79c924b5ea98abd4208e61c1e1c1788c0a8e0e6d 100644 (file)
@@ -75,4 +75,16 @@ class Action { // lawsuit
                unset($args['action']);
                return common_local_url($action, $args);
        }
+       
+       function nav_menu($menu) {
+        $action = $this->trimmed('action');
+        common_element_start('ul', array('id' => 'nav_views'));
+        foreach ($menu as $menuaction => $menudesc) {
+            common_menu_item(common_local_url($menuaction),
+                                                        _t($menudesc[0]),
+                                                        _t($menudesc[1]),
+                                                        $action == $menuaction);
+        }
+        common_element_end('ul');
+       }
 }
diff --git a/lib/searchaction.php b/lib/searchaction.php
new file mode 100644 (file)
index 0000000..bf598ea
--- /dev/null
@@ -0,0 +1,86 @@
+<?php
+/*
+ * Laconica - a distributed open-source microblogging tool
+ * Copyright (C) 2008, Controlez-Vous, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('LACONICA')) { exit(1); }
+
+class SearchAction extends Action {
+
+       function handle($args) {
+               parent::handle($args);
+               $this->show_form();
+       }
+
+       function show_top($error=NULL) {
+               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();
+       }
+
+       function get_title() {
+               return NULL;
+       }
+       
+       function show_form($error=NULL) {
+               $q = $this->trimmed('q');
+               $page = $this->trimmed('page', 1);
+               
+               common_show_header($this->get_title(), NULL, $error, array($this, 'show_top'));
+               common_element_start('form', array('method' => 'post',
+                                                                                  'id' => 'login',
+                                                                                  'action' => common_local_url($this->trimmed('action'))));
+               common_element_start('p');
+               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' => _t('Search')));
+                                          
+               common_element_end('p');
+               common_element_end('form');
+               if ($q) {
+                       $this->show_results($q, $page);
+               }
+               common_show_footer();
+       }
+       
+       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);
+       }
+}
index 0cdbbbeb21b68700247654f526248278b8f331e2..1fbf88ecb8e2252363764347bacfca721974c61e 100644 (file)
@@ -80,30 +80,21 @@ class SettingsAction extends Action {
     function settings_menu() {
         # action => array('prompt', 'title')
         static $menu =
-        array('profilesettings' =>
-              array('Profile',
-                       'Change your profile settings'),
-            'avatar' =>
-            array('Avatar',
-                  'Upload a new profile image'),
-            'password' =>
-            array('Password',
-                  'Change your password'),
-            'openidsettings' =>
-            array('OpenID',
-                  'Add or remove OpenIDs'),
-            'imsettings' =>
-            array('IM',
-                  'Updates by instant messenger (IM)'));
-
-        $action = $this->trimmed('action');
-        common_element_start('ul', array('id' => 'nav_views'));
-        foreach ($menu as $menuaction => $menudesc) {
-            common_menu_item(common_local_url($menuaction),
-                    _t($menudesc[0]),
-                    _t($menudesc[1]),
-                    $action == $menuaction);
-        }
-        common_element_end('ul');
+                 array('profilesettings' =>
+                               array('Profile',
+                                         'Change your profile settings'),
+                               'avatar' =>
+                               array('Avatar',
+                                         'Upload a new profile image'),
+                               'password' =>
+                               array('Password',
+                                         'Change your password'),
+                               'openidsettings' =>
+                               array('OpenID',
+                                         'Add or remove OpenIDs'),
+                               'imsettings' =>
+                               array('IM',
+                                         'Updates by instant messenger (IM)'));
+               $this->nav_menu($menu);
     }
 }