summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsarven <csarven@plantard.controlezvous.ca>2009-01-23 01:20:48 +0000
committersarven <csarven@plantard.controlezvous.ca>2009-01-23 01:20:48 +0000
commit0711d45ef315e2349bb37f24b8a7cf85eafef96e (patch)
tree1e4d11b6ca70c0dbe4c04ab475bda194cc8fc064
parent135f00c51bfd71e1ecb112f6813ed12c84549621 (diff)
parentf54f0a179a0369e145f02c8caed44644a8be6167 (diff)
Merge branch 'master' of ../trunk
-rw-r--r--actions/peoplesearch.php50
-rw-r--r--actions/subedit.php7
-rw-r--r--lib/openid.php40
-rw-r--r--lib/searchaction.php131
4 files changed, 147 insertions, 81 deletions
diff --git a/actions/peoplesearch.php b/actions/peoplesearch.php
index 2b13b0812..3c672c940 100644
--- a/actions/peoplesearch.php
+++ b/actions/peoplesearch.php
@@ -1,5 +1,16 @@
<?php
-/*
+/**
+ * People 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.
*
@@ -17,26 +28,37 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-if (!defined('LACONICA')) { exit(1); }
+if (!defined('LACONICA')) {
+ exit(1);
+}
-require_once(INSTALLDIR.'/lib/searchaction.php');
-require_once(INSTALLDIR.'/lib/profilelist.php');
+require_once INSTALLDIR.'/lib/searchaction.php';
+require_once INSTALLDIR.'/lib/profilelist.php';
+/**
+ * People 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 PeoplesearchAction extends SearchAction
{
-
- function get_instructions()
+ function getInstructions()
{
return _('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 get_title()
+ function title()
{
return _('People search');
}
- function show_results($q, $page)
+ function showResults($q, $page)
{
$profile = new Profile();
@@ -57,28 +79,27 @@ class PeoplesearchAction extends SearchAction
}
if ($cnt > 0) {
$terms = preg_split('/[\s,]+/', $q);
- $results = new PeopleSearchResults($profile, $terms);
- $results->show_list();
+ $results = new PeopleSearchResults($profile, $terms, $this);
+ $results->show();
} else {
$this->element('p', 'error', _('No results'));
}
$profile->free();
- common_pagination($page > 1, $cnt > PROFILES_PER_PAGE,
+ $this->pagination($page > 1, $cnt > PROFILES_PER_PAGE,
$page, 'peoplesearch', array('q' => $q));
}
}
class PeopleSearchResults extends ProfileList
{
-
var $terms = null;
var $pattern = null;
- function __construct($profile, $terms)
+ function __construct($profile, $terms, $action)
{
- parent::__construct($profile);
+ parent::__construct($profile, $terms, $action);
$this->terms = array_map('preg_quote',
array_map('htmlspecialchars', $terms));
$this->pattern = '/('.implode('|',$terms).')/i';
@@ -89,3 +110,4 @@ class PeopleSearchResults extends ProfileList
return preg_replace($this->pattern, '<strong>\\1</strong>', htmlspecialchars($text));
}
}
+
diff --git a/actions/subedit.php b/actions/subedit.php
index e22384869..89081ffc7 100644
--- a/actions/subedit.php
+++ b/actions/subedit.php
@@ -21,12 +21,10 @@ if (!defined('LACONICA')) { exit(1); }
class SubeditAction extends Action
{
-
var $profile = null;
function prepare($args)
{
-
parent::prepare($args);
if (!common_logged_in()) {
@@ -37,8 +35,9 @@ class SubeditAction extends Action
$token = $this->trimmed('token');
if (!$token || $token != common_session_token()) {
- $this->clientError(_('There was a problem with your session token. Try again, please.'));
- return;
+ $this->clientError(_('There was a problem with your session token. '.
+ 'Try again, please.'));
+ return false;
}
$id = $this->trimmed('profile');
diff --git a/lib/openid.php b/lib/openid.php
index 1e7f318fb..860573702 100644
--- a/lib/openid.php
+++ b/lib/openid.php
@@ -184,15 +184,13 @@ function oid_authenticate($openid_url, $returnto, $immediate=false)
// Display an error if the form markup couldn't be generated;
// otherwise, render the HTML.
if (Auth_OpenID::isFailure($form_html)) {
- $this->show_form(sprintf(_('Could not create OpenID form: %s'), $form_html->message));
+ common_server_error(sprintf(_('Could not create OpenID form: %s'), $form_html->message));
} else {
- common_show_header(_('OpenID Auto-Submit'), null, null, '_oid_print_instructions');
- common_raw($form_html);
- common_element('script', null,
- '$(document).ready(function() { ' .
- ' $("#'. $form_id .'").submit(); '.
- '});');
- common_show_footer();
+ $action = new AutosubmitAction(); // see below
+ $action->form_html = $form_html;
+ $action->form_id = $form_id;
+ $action->prepare(array('action' => 'autosubmit'));
+ $action->handle(array('action' => 'autosubmit'));
}
}
}
@@ -251,3 +249,29 @@ function oid_update_user(&$user, &$sreg)
return true;
}
+
+class AutosubmitAction extends Action
+{
+ var $form_html = null;
+ var $form_id = null;
+
+ function handle($args)
+ {
+ parent::handle($args);
+ $this->showPage();
+ }
+
+ function title()
+ {
+ return _('OpenID Auto-Submit');
+ }
+
+ function showContent()
+ {
+ $this->raw($this->form_html);
+ $this->element('script', null,
+ '$(document).ready(function() { ' .
+ ' $(\'#'. $this->form_id .'\').submit(); '.
+ '});');
+ }
+}
diff --git a/lib/searchaction.php b/lib/searchaction.php
index bc90fac1a..71ab3a6ef 100644
--- a/lib/searchaction.php
+++ b/lib/searchaction.php
@@ -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.
*
@@ -17,12 +28,30 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-if (!defined('LACONICA')) { exit(1); }
+if (!defined('LACONICA')) {
+ exit(1);
+}
+
+require_once INSTALLDIR.'/lib/searchgroupnav.php';
+/**
+ * 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
{
-
- function is_readonly()
+ /**
+ * Return true if read only.
+ *
+ * @return boolean true
+ */
+ function isReadOnly()
{
return true;
}
@@ -30,27 +59,41 @@ class SearchAction extends Action
function handle($args)
{
parent::handle($args);
- $this->show_form();
+ $this->showPage();
}
- function show_top($arr=null)
+ /**
+ * Show tabset for this page
+ *
+ * Uses the SearchGroupNav widget
+ *
+ * @return void
+ * @see SearchGroupNav
+ */
+
+ function showLocalNav()
+ {
+ $nav = new SearchGroupNav($this);
+ $nav->show();
+ }
+
+ function showTop($arr=null)
{
if ($arr) {
$error = $arr[1];
}
if ($error) {
- common_element('p', 'error', $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()
+ function title()
{
return null;
}
@@ -60,59 +103,37 @@ class SearchAction extends Action
return;
}
- function show_form($error=null)
+ function showNoticeForm() {
+ // remote post notice form
+ }
+
+ function showContent() {
+ $this->showTop();
+ $this->showForm();
+ }
+
+ function showForm($error=null)
{
global $config;
$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',
+ $this->elementStart('form', array('method' => 'get',
'id' => 'login',
'action' => common_local_url($this->trimmed('action'))));
- common_element_start('p');
+ $this->elementStart('p');
if (!isset($config['site']['fancy']) || !$config['site']['fancy']) {
- common_element('input', array('name' => 'action',
- 'type' => 'hidden',
- 'value' => $this->trimmed('action')));
+ $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')));
+ $this->input('q', '', $q);
+ $this->text(' ');
+ $this->submit('search', 'Search');
- common_element_end('p');
- common_element_end('form');
+ $this->elementEnd('p');
+ $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);
}
}
+