diff options
author | Evan Prodromou <evan@controlyourself.ca> | 2009-01-17 22:30:44 +0000 |
---|---|---|
committer | Evan Prodromou <evan@controlyourself.ca> | 2009-01-17 22:30:44 +0000 |
commit | 97c98cf59ace088e487e130182ff4dc99d2d408b (patch) | |
tree | 2e18088b883c2fd6940d16cad0239043bf097570 /lib | |
parent | 3ce45acfa8488a050cf7d68c8e980166f56c5d43 (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.php | 134 | ||||
-rw-r--r-- | lib/action.php | 82 | ||||
-rw-r--r-- | lib/connectsettingsaction.php (renamed from lib/settingsgroupnav.php) | 67 | ||||
-rw-r--r-- | lib/rssaction.php | 97 | ||||
-rw-r--r-- | lib/settingsaction.php | 15 | ||||
-rw-r--r-- | lib/util.php | 4 |
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': |