Bring othersettings up to date

This commit is contained in:
Evan Prodromou 2009-01-17 22:42:53 +00:00
parent 97c98cf59a
commit 99a4daa501

View File

@ -1,9 +1,12 @@
<?php <?php
/* /**
* Laconica - a distributed open-source microblogging tool * Laconica, the distributed open-source microblogging tool
* Copyright (C) 2008, Controlez-Vous, Inc.
* *
* This program is free software: you can redistribute it and/or modify * Miscellaneous settings
*
* 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 * 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 * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
@ -15,26 +18,71 @@
* *
* You should have received a copy of the GNU Affero General Public License * 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/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category Settings
* @package Laconica
* @author Robin Millette <millette@controlyourself.ca>
* @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); } if (!defined('LACONICA')) {
exit(1);
}
require_once(INSTALLDIR.'/lib/accountsettingsaction.php'); require_once INSTALLDIR.'/lib/accountsettingsaction.php';
/**
* Miscellaneous settings actions
*
* Currently this just manages URL shortening.
*
* @category Settings
* @package Laconica
* @author Robin Millette <millette@controlyourself.ca>
* @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/
*/
class OthersettingsAction extends AccountSettingsAction class OthersettingsAction extends AccountSettingsAction
{ {
/**
* Title of the page
*
* @return string Title of the page
*/
function get_instructions() function title()
{
return _('Other Settings');
}
/**
* Instructions for use
*
* @return instructions for use
*/
function getInstructions()
{ {
return _('Manage various other options.'); return _('Manage various other options.');
} }
function show_form($msg=null, $success=false) /**
* Content area of the page
*
* Shows a form for uploading an avatar.
*
* @return void
*/
function showContent()
{ {
$user = common_current_user(); $user = common_current_user();
$this->form_header(_('Other Settings'), $msg, $success);
$this->element('h2', null, _('URL Auto-shortening')); $this->element('h2', null, _('URL Auto-shortening'));
$this->elementStart('form', array('method' => 'post', $this->elementStart('form', array('method' => 'post',
'id' => 'othersettings', 'id' => 'othersettings',
@ -42,6 +90,8 @@ class OthersettingsAction extends AccountSettingsAction
common_local_url('othersettings'))); common_local_url('othersettings')));
$this->hidden('token', common_session_token()); $this->hidden('token', common_session_token());
// I18N
$services = array( $services = array(
'' => 'None', '' => 'None',
'ur1.ca' => 'ur1.ca (free service)', 'ur1.ca' => 'ur1.ca (free service)',
@ -54,118 +104,44 @@ class OthersettingsAction extends AccountSettingsAction
'metamark.net' => 'metamark.net' 'metamark.net' => 'metamark.net'
); );
$this->dropdown('urlshorteningservice', _('Service'), $services, _('Automatic shortening service to use.'), false, $user->urlshorteningservice); $this->dropdown('urlshorteningservice', _('Service'),
$services, _('Automatic shortening service to use.'),
false, $user->urlshorteningservice);
$this->submit('save', _('Save')); $this->submit('save', _('Save'));
$this->elementEnd('form'); $this->elementEnd('form');
// $this->element('h2', null, _('Delete my account'));
// $this->show_delete_form();
common_show_footer();
} }
function show_feeds_list($feeds) /**
* Handle a post
*
* Saves the changes to url-shortening prefs and shows a success or failure
* message.
*
* @return void
*/
function handlePost()
{ {
$this->elementStart('div', array('class' => 'feedsdel')); // CSRF protection
$this->element('p', null, 'Feeds:');
$this->elementStart('ul', array('class' => 'xoxo'));
foreach ($feeds as $key => $value) {
$this->common_feed_item($feeds[$key]);
}
$this->elementEnd('ul');
$this->elementEnd('div');
}
//TODO move to common.php (and retrace its origin)
function common_feed_item($feed)
{
$user = common_current_user();
$nickname = $user->nickname;
switch($feed['item']) {
case 'notices': default:
$feed_classname = $feed['type'];
$feed_mimetype = "application/".$feed['type']."+xml";
$feed_title = "$nickname's ".$feed['version']." notice feed";
$feed['textContent'] = "RSS";
break;
case 'foaf':
$feed_classname = "foaf";
$feed_mimetype = "application/".$feed['type']."+xml";
$feed_title = "$nickname's FOAF file";
$feed['textContent'] = "FOAF";
break;
}
$this->elementStart('li');
$this->element('a', array('href' => $feed['href'],
'class' => $feed_classname,
'type' => $feed_mimetype,
'title' => $feed_title),
$feed['textContent']);
$this->elementEnd('li');
}
// function show_delete_form() {
// $user = common_current_user();
// $notices = DB_DataObject::factory('notice');
// $notices->profile_id = $user->id;
// $notice_count = (int) $notices->count();
//
// $this->elementStart('form', array('method' => 'POST',
// 'id' => 'delete',
// 'action' =>
// common_local_url('deleteprofile')));
//
// $this->hidden('token', common_session_token());
// $this->element('p', null, "You can copy your notices and contacts by saving the two links below before deleting your account. Be careful, this operation cannot be undone.");
//
// $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('limit' => $notice_count, 'nickname' => $user->nickname)),
// 'type' => 'rss',
// 'version' => 'RSS 1.0',
// 'item' => 'notices'),
// 1=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)),
// 'type' => 'rdf',
// 'version' => 'FOAF',
// 'item' => 'foaf')));
//
// $this->submit('deleteaccount', _('Delete my account'));
// $this->elementEnd('form');
// }
function handle_post()
{
# CSRF protection
$token = $this->trimmed('token'); $token = $this->trimmed('token');
if (!$token || $token != common_session_token()) { if (!$token || $token != common_session_token()) {
$this->show_form(_('There was a problem with your session token. Try again, please.')); $this->showForm(_('There was a problem with your session token. '.
'Try again, please.'));
return; return;
} }
if ($this->arg('save')) {
$this->save_preferences();
}else {
$this->show_form(_('Unexpected form submission.'));
}
}
function save_preferences()
{
$urlshorteningservice = $this->trimmed('urlshorteningservice'); $urlshorteningservice = $this->trimmed('urlshorteningservice');
if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) { if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) {
$this->show_form(_('URL shortening service is too long (max 50 chars).')); $this->showForm(_('URL shortening service is too long (max 50 chars).'));
return; return;
} }
$user = common_current_user(); $user = common_current_user();
assert(!is_null($user)); # should already be checked assert(!is_null($user)); // should already be checked
$user->query('BEGIN'); $user->query('BEGIN');
@ -183,6 +159,6 @@ class OthersettingsAction extends AccountSettingsAction
$user->query('COMMIT'); $user->query('COMMIT');
$this->show_form(_('Preferences saved.'), true); $this->showForm(_('Preferences saved.'), true);
} }
} }