From 44a46de7ffd6a6a45689ecf423a4baa179248388 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 25 Aug 2011 17:59:27 -0400 Subject: [PATCH] use a form for search --- lib/action.php | 8 +++ lib/primarynav.php | 10 ---- lib/searchform.php | 118 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+), 10 deletions(-) create mode 100644 lib/searchform.php diff --git a/lib/action.php b/lib/action.php index d63569cba3..8ba2abc9f9 100644 --- a/lib/action.php +++ b/lib/action.php @@ -575,6 +575,14 @@ class Action extends HTMLOutputter // lawsuit $this->elementStart('div', array('id' => 'site_nav_global_primary')); $pn = new PrimaryNav($this); $pn->show(); + + $user = common_current_user(); + + if (!empty($user) || !common_config('site', 'private')) { + $form = new SearchForm($this); + $form->show(); + } + $this->elementEnd('div'); } diff --git a/lib/primarynav.php b/lib/primarynav.php index 7a9815af7b..f765938903 100644 --- a/lib/primarynav.php +++ b/lib/primarynav.php @@ -86,16 +86,6 @@ class PrimaryNav extends Menu 'nav_login'); } - if (!empty($user) || !common_config('site', 'private')) { - $this->action->menuItem(common_local_url('noticesearch'), - // TRANS: Menu item in primary navigation panel. - _m('MENU','Search'), - // TRANS: Menu item title in primary navigation panel. - _('Search the site.'), - false, - 'nav_search'); - } - Event::handle('EndPrimaryNav', array($this->action)); } diff --git a/lib/searchform.php b/lib/searchform.php new file mode 100644 index 0000000000..b58d7af809 --- /dev/null +++ b/lib/searchform.php @@ -0,0 +1,118 @@ +. + * + * @category Widget + * @package StatusNet + * @author Evan Prodromou + * @copyright 2011 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} + +/** + * Form for searching a StatusNet site + * + * @category General + * @package StatusNet + * @author Evan Prodromou + * @copyright 2011 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class SearchForm extends Form +{ + /** + * Visible or invisible data elements + * + * Display the form fields that make up the data of the form. + * Sub-classes should overload this to show their data. + * + * @return void + */ + + function formData() + { + $this->out->element('input', array('name' => 'q', + 'size' => 20, + 'id' => 'search-q')); + } + + /** + * Buttons for form actions + * + * Submit and cancel buttons (or whatever) + * Sub-classes should overload this to show their own buttons. + * + * @return void + */ + + function formActions() + { + $this->out->element('input', array('type' => 'submit', + 'value' => _('Search'))); + } + + /** + * ID of the form + * + * Should be unique on the page. Sub-classes should overload this + * to show their own IDs. + * + * @return int ID of the form + */ + + function id() + { + return 'search'; + } + + /** + * Action of the form. + * + * URL to post to. Should be overloaded by subclasses to give + * somewhere to post to. + * + * @return string URL to post to + */ + + function action() + { + return common_local_url('noticesearch'); + } + + function method() + { + return 'get'; + } + + function sessionToken() + { + return; + } +}