summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlyourself.ca>2009-01-17 22:30:44 +0000
committerEvan Prodromou <evan@controlyourself.ca>2009-01-17 22:30:44 +0000
commit97c98cf59ace088e487e130182ff4dc99d2d408b (patch)
tree2e18088b883c2fd6940d16cad0239043bf097570 /lib
parent3ce45acfa8488a050cf7d68c8e980166f56c5d43 (diff)
Break up settings into two tabset
Made two tabsets: account and connect. Removed "Invite" from the global nav to make room.
Diffstat (limited to 'lib')
-rw-r--r--lib/accountsettingsaction.php134
-rw-r--r--lib/action.php82
-rw-r--r--lib/connectsettingsaction.php (renamed from lib/settingsgroupnav.php)67
-rw-r--r--lib/rssaction.php97
-rw-r--r--lib/settingsaction.php15
-rw-r--r--lib/util.php4
6 files changed, 297 insertions, 102 deletions
diff --git a/lib/accountsettingsaction.php b/lib/accountsettingsaction.php
new file mode 100644
index 000000000..46090b8c1
--- /dev/null
+++ b/lib/accountsettingsaction.php
@@ -0,0 +1,134 @@
+<?php
+/**
+ * Laconica, the distributed open-source microblogging tool
+ *
+ * Base class for account settings actions
+ *
+ * PHP version 5
+ *
+ * LICENCE: 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/>.
+ *
+ * @category Settings
+ * @package Laconica
+ * @author Evan Prodromou <evan@controlyourself.ca>
+ * @copyright 2008-2009 Control Yourself, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://laconi.ca/
+ */
+
+if (!defined('LACONICA')) {
+ exit(1);
+}
+
+require_once INSTALLDIR.'/lib/settingsaction.php';
+
+/**
+ * Base class for account settings actions
+ *
+ * @category Settings
+ * @package Laconica
+ * @author Evan Prodromou <evan@controlyourself.ca>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://laconi.ca/
+ *
+ * @see Widget
+ */
+
+class AccountSettingsAction extends SettingsAction
+{
+ /**
+ * Show the local navigation menu
+ *
+ * This is the same for all settings, so we show it here.
+ *
+ * @return void
+ */
+
+ function showLocalNav()
+ {
+ $menu = new AccountSettingsNav($this);
+ $menu->show();
+ }
+}
+
+/**
+ * A widget for showing the settings group local nav menu
+ *
+ * @category Widget
+ * @package Laconica
+ * @author Evan Prodromou <evan@controlyourself.ca>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://laconi.ca/
+ *
+ * @see HTMLOutputter
+ */
+
+class AccountSettingsNav extends Widget
+{
+ var $action = null;
+
+ /**
+ * Construction
+ *
+ * @param Action $action current action, used for output
+ */
+
+ function __construct($action=null)
+ {
+ parent::__construct($action);
+ $this->action = $action;
+ }
+
+ /**
+ * Show the menu
+ *
+ * @return void
+ */
+
+ function show()
+ {
+ # action => array('prompt', 'title')
+ $menu =
+ array('profilesettings' =>
+ array(_('Profile'),
+ _('Change your profile settings')),
+ 'avatarsettings' =>
+ array(_('Avatar'),
+ _('Upload an avatar')),
+ 'passwordsettings' =>
+ array(_('Password'),
+ _('Change your password')),
+ 'emailsettings' =>
+ array(_('Email'),
+ _('Change email handling')),
+ 'openidsettings' =>
+ array(_('OpenID'),
+ _('Add or remove OpenIDs')),
+ 'othersettings' =>
+ array(_('Other'),
+ _('Other options')));
+
+ $action_name = $this->action->trimmed('action');
+ $this->action->elementStart('ul', array('class' => 'nav'));
+
+ foreach ($menu as $menuaction => $menudesc) {
+ $this->action->menuItem(common_local_url($menuaction),
+ $menudesc[0],
+ $menudesc[1],
+ $action_name === $menuaction);
+ }
+
+ $this->action->elementEnd('ul');
+ }
+}
diff --git a/lib/action.php b/lib/action.php
index 71520b84e..e62a032b6 100644
--- a/lib/action.php
+++ b/lib/action.php
@@ -208,20 +208,20 @@ class Action extends HTMLOutputter // lawsuit
$this->showLogo();
$this->showPrimaryNav();
$this->showSiteNotice();
- if (common_logged_in()) {
- $this->showNoticeForm();
- } else {
- $this->showAnonymousMessage();
- }
+ if (common_logged_in()) {
+ $this->showNoticeForm();
+ } else {
+ $this->showAnonymousMessage();
+ }
$this->elementEnd('div');
}
function showLogo()
{
$this->elementStart('address', array('id' => 'site_contact',
- 'class' => 'vcard'));
+ 'class' => 'vcard'));
$this->elementStart('a', array('class' => 'url home bookmark',
- 'href' => common_local_url('public')));
+ 'href' => common_local_url('public')));
if (common_config('site', 'logo') || file_exists(theme_file('logo.png')))
{
$this->element('img', array('class' => 'logo photo',
@@ -237,21 +237,21 @@ class Action extends HTMLOutputter // lawsuit
{
$this->elementStart('dl', array('id' => 'site_nav_global_primary'));
$this->element('dt', null, _('Primary site navigation'));
- $this->elementStart('dd');
+ $this->elementStart('dd');
$user = common_current_user();
$this->elementStart('ul', array('class' => 'nav'));
if ($user) {
$this->menuItem(common_local_url('all', array('nickname' => $user->nickname)),
- _('Home'));
+ _('Home'));
}
$this->menuItem(common_local_url('peoplesearch'), _('Search'));
if ($user) {
$this->menuItem(common_local_url('profilesettings'),
- _('Settings'));
- $this->menuItem(common_local_url('invite'),
- _('Invite'));
+ _('Account'));
+ $this->menuItem(common_local_url('imsettings'),
+ _('Connect'));
$this->menuItem(common_local_url('logout'),
- _('Logout'));
+ _('Logout'));
} else {
$this->menuItem(common_local_url('login'), _('Login'));
if (!common_config('site', 'closed')) {
@@ -260,25 +260,25 @@ class Action extends HTMLOutputter // lawsuit
$this->menuItem(common_local_url('openidlogin'), _('OpenID'));
}
$this->menuItem(common_local_url('doc', array('title' => 'help')),
- _('Help'));
+ _('Help'));
$this->elementEnd('ul');
- $this->elementEnd('dd');
+ $this->elementEnd('dd');
$this->elementEnd('dl');
}
// Revist. Should probably do an hAtom pattern here
function showSiteNotice()
{
- $text = common_config('site', 'notice');
- if ($text) {
- $this->elementStart('dl', array('id' => 'site_notice',
- 'class' => 'system_notice'));
- $this->element('dt', null, _('Site notice'));
- $this->element('dd', null, $text);
- $this->elementEnd('dl');
- }
+ $text = common_config('site', 'notice');
+ if ($text) {
+ $this->elementStart('dl', array('id' => 'site_notice',
+ 'class' => 'system_notice'));
+ $this->element('dt', null, _('Site notice'));
+ $this->element('dd', null, $text);
+ $this->elementEnd('dl');
+ }
}
-
+
// MAY overload if no notice form needed... or direct message box????
function showNoticeForm()
@@ -289,9 +289,9 @@ class Action extends HTMLOutputter // lawsuit
function showAnonymousMessage()
{
- // needs to be defined by the class
+ // needs to be defined by the class
}
-
+
function showCore()
{
$this->elementStart('div', array('id' => 'core'));
@@ -331,13 +331,13 @@ class Action extends HTMLOutputter // lawsuit
function showPageNoticeBlock()
{
- $this->elementStart('dl', array('id' => 'page_notice',
- 'class' => 'system_notice'));
- $this->element('dt', null, _('Page notice'));
- $this->elementStart('dd');
- $this->showPageNotice();
- $this->elementEnd('dd');
- $this->elementEnd('dl');
+ $this->elementStart('dl', array('id' => 'page_notice',
+ 'class' => 'system_notice'));
+ $this->element('dt', null, _('Page notice'));
+ $this->elementStart('dd');
+ $this->showPageNotice();
+ $this->elementEnd('dd');
+ $this->elementEnd('dl');
}
// SHOULD overload (unless there's not a notice)
@@ -345,7 +345,7 @@ class Action extends HTMLOutputter // lawsuit
function showPageNotice()
{
}
-
+
// MUST overload
function showContent()
@@ -391,17 +391,17 @@ class Action extends HTMLOutputter // lawsuit
$this->elementStart('dd', null);
$this->elementStart('ul', array('class' => 'nav'));
$this->menuItem(common_local_url('doc', array('title' => 'help')),
- _('Help'));
+ _('Help'));
$this->menuItem(common_local_url('doc', array('title' => 'about')),
- _('About'));
+ _('About'));
$this->menuItem(common_local_url('doc', array('title' => 'faq')),
- _('FAQ'));
+ _('FAQ'));
$this->menuItem(common_local_url('doc', array('title' => 'privacy')),
- _('Privacy'));
+ _('Privacy'));
$this->menuItem(common_local_url('doc', array('title' => 'source')),
- _('Source'));
+ _('Source'));
$this->menuItem(common_local_url('doc', array('title' => 'contact')),
- _('Contact'));
+ _('Contact'));
$this->elementEnd('ul');
$this->elementEnd('dd');
$this->elementEnd('dl');
@@ -567,7 +567,7 @@ class Action extends HTMLOutputter // lawsuit
}
(is_null($id)) ? $lattrs : $lattrs['id'] = $id;
-
+
$this->elementStart('li', $lattrs);
$attrs['href'] = $url;
if ($title) {
diff --git a/lib/settingsgroupnav.php b/lib/connectsettingsaction.php
index bd66c65a6..30629680e 100644
--- a/lib/settingsgroupnav.php
+++ b/lib/connectsettingsaction.php
@@ -2,7 +2,7 @@
/**
* Laconica, the distributed open-source microblogging tool
*
- * Navigation widget for the settings group
+ * Base class for connection settings actions
*
* PHP version 5
*
@@ -19,10 +19,10 @@
* 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/>.
*
- * @category Widget
+ * @category Settings
* @package Laconica
* @author Evan Prodromou <evan@controlyourself.ca>
- * @copyright 2009 Control Yourself, Inc.
+ * @copyright 2008-2009 Control Yourself, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://laconi.ca/
*/
@@ -31,10 +31,39 @@ if (!defined('LACONICA')) {
exit(1);
}
-require_once INSTALLDIR.'/lib/widget.php';
+require_once INSTALLDIR.'/lib/settingsaction.php';
/**
- * A widget for showing the settings group local nav menu
+ * Base class for connection settings actions
+ *
+ * @category Settings
+ * @package Laconica
+ * @author Evan Prodromou <evan@controlyourself.ca>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://laconi.ca/
+ *
+ * @see Widget
+ */
+
+class ConnectSettingsAction extends SettingsAction
+{
+ /**
+ * Show the local navigation menu
+ *
+ * This is the same for all settings, so we show it here.
+ *
+ * @return void
+ */
+
+ function showLocalNav()
+ {
+ $menu = new ConnectSettingsNav($this);
+ $menu->show();
+ }
+}
+
+/**
+ * A widget for showing the connect group local nav menu
*
* @category Widget
* @package Laconica
@@ -45,7 +74,7 @@ require_once INSTALLDIR.'/lib/widget.php';
* @see HTMLOutputter
*/
-class SettingsGroupNav extends Widget
+class ConnectSettingsNav extends Widget
{
var $action = null;
@@ -71,31 +100,19 @@ class SettingsGroupNav extends Widget
{
# action => array('prompt', 'title')
$menu =
- array('profilesettings' =>
- array(_('Profile'),
- _('Change your profile settings')),
- 'emailsettings' =>
- array(_('Email'),
- _('Change email handling')),
- 'openidsettings' =>
- array(_('OpenID'),
- _('Add or remove OpenIDs')),
+ array('imsettings' =>
+ array(_('IM'),
+ _('Updates by instant messenger (IM)')),
'smssettings' =>
array(_('SMS'),
_('Updates by SMS')),
- 'imsettings' =>
- array(_('IM'),
- _('Updates by instant messenger (IM)')),
'twittersettings' =>
array(_('Twitter'),
- _('Twitter integration options')),
- 'othersettings' =>
- array(_('Other'),
- _('Other options')));
-
+ _('Twitter integration options')));
+
$action_name = $this->action->trimmed('action');
$this->action->elementStart('ul', array('class' => 'nav'));
-
+
foreach ($menu as $menuaction => $menudesc) {
if ($menuaction == 'imsettings' &&
!common_config('xmpp', 'enabled')) {
@@ -106,7 +123,7 @@ class SettingsGroupNav extends Widget
$menudesc[1],
$action_name === $menuaction);
}
-
+
$this->action->elementEnd('ul');
}
}
diff --git a/lib/rssaction.php b/lib/rssaction.php
index 9564cfb46..2c532912b 100644
--- a/lib/rssaction.php
+++ b/lib/rssaction.php
@@ -1,9 +1,12 @@
<?php
-/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
+/**
+ * Laconica, the distributed open-source microblogging tool
*
- * This program is free software: you can redistribute it and/or modify
+ * Base class for RSS 1.0 feed actions
+ *
+ * PHP version 5
+ *
+ * LICENCE: 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.
@@ -15,6 +18,14 @@
*
* 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/>.
+ *
+ * @category Mail
+ * @package Laconica
+ * @author Evan Prodromou <evan@controlyourself.ca>
+ * @author Earle Martin <earle@downlode.org>
+ * @copyright 2008-9 Control Yourself, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://laconi.ca/
*/
if (!defined('LACONICA')) { exit(1); }
@@ -23,35 +34,84 @@ define('DEFAULT_RSS_LIMIT', 48);
class Rss10Action extends Action
{
-
# This will contain the details of each feed item's author and be used to generate SIOC data.
+
var $creators = array();
+ var $limit = DEFAULT_RSS_LIMIT;
+
+ /**
+ * Constructor
+ *
+ * Just wraps the Action constructor.
+ *
+ * @param string $output URI to output to, default = stdout
+ * @param boolean $indent Whether to indent output, default true
+ *
+ * @see Action::__construct
+ */
- function is_readonly()
+ function __construct($output='php://output', $indent=true)
+ {
+ parent::__construct($output, $indent);
+ }
+
+ /**
+ * Do we need to write to the database?
+ *
+ * @return boolean true
+ */
+
+ function isReadonly()
{
return true;
}
+ /**
+ * Read arguments and initialize members
+ *
+ * @param array $args Arguments from $_REQUEST
+ * @return boolean success
+ */
+
+ function prepare($args)
+ {
+ $this->limit = (int) $this->trimmed('limit');
+ if ($this->limit == 0) {
+ $this->limit = DEFAULT_RSS_LIMIT;
+ }
+ return true;
+ }
+
+ /**
+ * Handle a request
+ *
+ * @param array $args Arguments from $_REQUEST
+ *
+ * @return void
+ */
+
function handle($args)
{
parent::handle($args);
- $limit = (int) $this->trimmed('limit');
- if ($limit == 0) {
- $limit = DEFAULT_RSS_LIMIT;
- }
$this->show_rss($limit);
}
- function init()
- {
- return true;
- }
-
- function get_notices()
+ /**
+ * Get the notices to output in this stream
+ *
+ * @return array an array of Notice objects sorted in reverse chron
+ */
+
+ function getNotices()
{
return array();
}
+ /**
+ * Get a description of the channel
+ *
+ * Returns an array with the following
+ * @return array
function get_channel()
{
return array('url' => '',
@@ -67,11 +127,6 @@ class Rss10Action extends Action
function show_rss($limit=0)
{
-
- if (!$this->init()) {
- return;
- }
-
$notices = $this->get_notices($limit);
$this->init_rss();
diff --git a/lib/settingsaction.php b/lib/settingsaction.php
index 8624803ac..dfe1f114b 100644
--- a/lib/settingsaction.php
+++ b/lib/settingsaction.php
@@ -31,8 +31,6 @@ if (!defined('LACONICA')) {
exit(1);
}
-require_once INSTALLDIR.'/lib/settingsgroupnav.php';
-
/**
* Base class for settings group of actions
*
@@ -149,17 +147,4 @@ class SettingsAction extends Action
return '';
}
- /**
- * Show the local navigation menu
- *
- * This is the same for all settings, so we show it here.
- *
- * @return void
- */
-
- function showLocalNav()
- {
- $menu = new SettingsGroupNav($this);
- $menu->show();
- }
}
diff --git a/lib/util.php b/lib/util.php
index 9ca817eab..d67c64972 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -770,6 +770,8 @@ function common_fancy_url($action, $args=null)
return common_path('main/openid');
case 'profilesettings':
return common_path('settings/profile');
+ case 'passwordsettings':
+ return common_path('settings/password');
case 'emailsettings':
return common_path('settings/email');
case 'openidsettings':
@@ -852,6 +854,8 @@ function common_fancy_url($action, $args=null)
return common_path($path);
case 'imsettings':
return common_path('settings/im');
+ case 'avatarsettings':
+ return common_path('settings/avatar');
case 'peoplesearch':
return common_path('search/people' . (($args) ? ('?' . http_build_query($args)) : ''));
case 'noticesearch':