Pluginized Twitter settings stuff

This commit is contained in:
Zach Copley 2009-08-25 14:52:25 -07:00
parent 209486d3be
commit 9b9d80cd97
6 changed files with 128 additions and 33 deletions

View File

@ -98,34 +98,37 @@ class ConnectSettingsNav extends Widget
function show() function show()
{ {
# action => array('prompt', 'title')
$menu = array();
if (common_config('xmpp', 'enabled')) {
$menu['imsettings'] =
array(_('IM'),
_('Updates by instant messenger (IM)'));
}
if (common_config('sms', 'enabled')) {
$menu['smssettings'] =
array(_('SMS'),
_('Updates by SMS'));
}
if (common_config('twitter', 'enabled')) {
$menu['twittersettings'] =
array(_('Twitter'),
_('Twitter integration options'));
}
$action_name = $this->action->trimmed('action'); $action_name = $this->action->trimmed('action');
$this->action->elementStart('ul', array('class' => 'nav')); $this->action->elementStart('ul', array('class' => 'nav'));
foreach ($menu as $menuaction => $menudesc) { if (Event::handle('StartConnectSettingsNav', array(&$this->action))) {
$this->action->menuItem(common_local_url($menuaction),
$menudesc[0], # action => array('prompt', 'title')
$menudesc[1], $menu = array();
$action_name === $menuaction); if (common_config('xmpp', 'enabled')) {
$menu['imsettings'] =
array(_('IM'),
_('Updates by instant messenger (IM)'));
}
if (common_config('sms', 'enabled')) {
$menu['smssettings'] =
array(_('SMS'),
_('Updates by SMS'));
}
foreach ($menu as $menuaction => $menudesc) {
$this->action->menuItem(common_local_url($menuaction),
$menudesc[0],
$menudesc[1],
$action_name === $menuaction);
}
Event::handle('EndConnectSettingsNav', array(&$this->action));
} }
$this->action->elementEnd('ul'); $this->action->elementEnd('ul');
} }
} }

View File

@ -86,10 +86,6 @@ class Router
$m->connect('doc/:title', array('action' => 'doc')); $m->connect('doc/:title', array('action' => 'doc'));
// Twitter
$m->connect('twitter/authorization', array('action' => 'twitterauthorization'));
// facebook // facebook
$m->connect('facebook', array('action' => 'facebookhome')); $m->connect('facebook', array('action' => 'facebookhome'));
@ -136,7 +132,7 @@ class Router
// settings // settings
foreach (array('profile', 'avatar', 'password', 'im', foreach (array('profile', 'avatar', 'password', 'im',
'email', 'sms', 'twitter', 'userdesign', 'other') as $s) { 'email', 'sms', 'userdesign', 'other') as $s) {
$m->connect('settings/'.$s, array('action' => $s.'settings')); $m->connect('settings/'.$s, array('action' => $s.'settings'));
} }

View File

@ -0,0 +1,101 @@
<?php
/**
* Laconica, the distributed open-source microblogging tool
*
* 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 Plugin
* @package Laconica
* @author Zach Copley <zach@controlyourself.ca>
* @copyright 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);
}
/**
* Plugin for sending and importing Twitter statuses
*
* This class allows users to link their Twitter accounts
*
* @category Plugin
* @package Laconica
* @author Zach Copley <zach@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/
* @link http://twitter.com/
*/
class TwitterBridgePlugin extends Plugin
{
/**
* Initializer for the plugin.
*/
function __construct()
{
parent::__construct();
}
/**
* Add Twitter-related paths to the router table
*
* Hook for RouterInitialized event.
*
* @return boolean hook return
*/
function onRouterInitialized(&$m)
{
$m->connect('twitter/authorization', array('action' => 'twitterauthorization'));
$m->connect('settings/twitter', array('action' => 'twittersettings'));
return true;
}
function onEndConnectSettingsNav(&$action)
{
$action_name = $action->trimmed('action');
$action->menuItem(common_local_url('twittersettings'),
_('Twitter'),
_('Twitter integration options'),
$action_name === 'twittersettings');
return true;
}
function onAutoload($cls)
{
switch ($cls)
{
case 'TwittersettingsAction':
case 'TwitterauthorizationAction':
require_once(INSTALLDIR.'/plugins/TwitterBridge/' . strtolower(mb_substr($cls, 0, -6)) . '.php');
return false;
case 'TwitterOAuthClient':
require_once(INSTALLDIR.'/plugins/TwitterBridge/twitteroAuthclient.php');
return false;
default:
return true;
}
}
}

View File

@ -82,11 +82,6 @@ class TwittersettingsAction extends ConnectSettingsAction
function showContent() function showContent()
{ {
if (!common_config('twitter', 'enabled')) {
$this->element('div', array('class' => 'error'),
_('Twitter is not available.'));
return;
}
$user = common_current_user(); $user = common_current_user();