Commit c64f1374 authored by Evan Prodromou's avatar Evan Prodromou

refactor common behaviour in settings pages

darcs-hash:20080630170342-84dde-5d7feb88a0a707b24c8070802a7ec99dd1f35687.gz
parent 8336a775
...@@ -23,25 +23,18 @@ require_once(INSTALLDIR.'/lib/settingsaction.php'); ...@@ -23,25 +23,18 @@ require_once(INSTALLDIR.'/lib/settingsaction.php');
class AvatarAction extends SettingsAction { class AvatarAction extends SettingsAction {
function show_top($arr) { function get_instructions() {
$msg = $arr[0]; return _t('Upload a new "avatar" (user image) here. ' .
$success = $arr[1]; 'You can\'t edit the picture after you upload it, so ' .
if ($msg) { 'make sure it\'s more or less square. ' .
$this->message($msg, $success); 'It must be under the site license, also. ' .
} else { 'Use a picture that belongs to you and that you ' .
common_element('div', 'instructions', 'want to share.');
_t('Upload a new "avatar" (user image) here. ' .
'You can\'t edit the picture after you upload it, so ' .
'make sure it\'s more or less square. ' .
'It must be under the site license, also. ' .
'Use a picture that belongs to you and that you ' .
'want to share.'));
}
$this->settings_menu();
} }
function show_form($msg=NULL, $success=false) { function show_form($msg=NULL, $success=false) {
common_show_header(_t('Avatar'), NULL, array($msg, $success), array($this, 'show_top'));
$this->form_header(_t('Avatar'), $msg, $success);
$user = common_current_user(); $user = common_current_user();
$profile = $user->getProfile(); $profile = $user->getProfile();
...@@ -120,7 +113,7 @@ class AvatarAction extends SettingsAction { ...@@ -120,7 +113,7 @@ class AvatarAction extends SettingsAction {
$user = common_current_user(); $user = common_current_user();
$profile = $user->getProfile(); $profile = $user->getProfile();
if ($profile->setOriginal($_FILES['avatarfile']['tmp_name'])) { if ($profile->setOriginal($_FILES['avatarfile']['tmp_name'])) {
$this->show_form(_t('Avatar updated.'), true); $this->show_form(_t('Avatar updated.'), true);
} else { } else {
......
...@@ -32,12 +32,9 @@ class DocAction extends Action { ...@@ -32,12 +32,9 @@ class DocAction extends Action {
return; return;
} }
$c = file_get_contents($filename); $c = file_get_contents($filename);
$c = preg_replace('/%%action.(\w+)%%/e', "common_local_url('\\1')", $c); $output = common_markup_to_html($c);
$c = preg_replace('/%%doc.(\w+)%%/e', "common_local_url('doc', array('title'=>'\\1'))", $c);
$c = preg_replace('/%%(\w+).(\w+)%%/e', 'common_config(\'\\1\', \'\\2\')', $c);
$output = Markdown($c);
common_show_header(_t(ucfirst($title))); common_show_header(_t(ucfirst($title)));
common_raw($output); common_raw($output);
common_show_footer(); common_show_footer();
} }
} }
\ No newline at end of file
...@@ -24,25 +24,15 @@ require_once(INSTALLDIR.'/lib/jabber.php'); ...@@ -24,25 +24,15 @@ require_once(INSTALLDIR.'/lib/jabber.php');
class ImsettingsAction extends SettingsAction { class ImsettingsAction extends SettingsAction {
function show_top($arr) { function get_instructions() {
$msg = $arr[0]; _t('You can send and receive notices through '.
$success = $arr[1]; 'Jabber/GTalk [instant messages](%%doc.im%%). Configure '.
if ($msg) { 'your address and settings below.');
$this->message($msg, $success);
} else {
common_element('div', 'instructions',
_t('You can send and receive notices through '.
'Jabber/GTalk instant messages. Configure '.
'your address and settings below.'));
}
$this->settings_menu();
} }
function show_form($msg=NULL, $success=false) { function show_form($msg=NULL, $success=false) {
$user = common_current_user(); $user = common_current_user();
common_show_header(_t('IM settings'), NULL, array($msg, $success), $this->form_header(_t('IM Settings'), $msg, $success);
array($this, 'show_top'));
common_element_start('form', array('method' => 'POST', common_element_start('form', array('method' => 'POST',
'id' => 'imsettings', 'id' => 'imsettings',
'action' => 'action' =>
......
...@@ -23,28 +23,19 @@ require_once(INSTALLDIR.'/lib/settingsaction.php'); ...@@ -23,28 +23,19 @@ require_once(INSTALLDIR.'/lib/settingsaction.php');
require_once(INSTALLDIR.'/lib/openid.php'); require_once(INSTALLDIR.'/lib/openid.php');
class OpenidsettingsAction extends SettingsAction { class OpenidsettingsAction extends SettingsAction {
function show_top($arr) { function get_instructions() {
$msg = $arr[0]; return _t('[OpenID](%%doc.openid%%) lets you log into many sites ' .
$success = $arr[1]; ' with the same user account. '.
' Manage your associated OpenIDs from here.');
if ($msg) {
$this->message($msg, $success);
} else {
common_element('div', 'instructions',
_t('Manage your associated OpenIDs from here.'));
}
$this->settings_menu();
} }
function show_form($msg=NULL, $success=false) { function show_form($msg=NULL, $success=false) {
$user = common_current_user(); $user = common_current_user();
common_show_header(_t('OpenID settings'), NULL, array($msg, $success), $this->form_header(_t('OpenID settings'), $msg, $success);
array($this, 'show_top'));
common_element_start('form', array('method' => 'POST', common_element_start('form', array('method' => 'POST',
'id' => 'openidadd', 'id' => 'openidadd',
'action' => 'action' =>
...@@ -66,36 +57,36 @@ class OpenidsettingsAction extends SettingsAction { ...@@ -66,36 +57,36 @@ class OpenidsettingsAction extends SettingsAction {
'value' => _t('Add'))); 'value' => _t('Add')));
common_element_end('p'); common_element_end('p');
common_element_end('form'); common_element_end('form');
$oid = new User_openid(); $oid = new User_openid();
$oid->user_id = $user->id; $oid->user_id = $user->id;
$cnt = $oid->find(); $cnt = $oid->find();
if ($cnt > 0) { if ($cnt > 0) {
common_element('h2', NULL, _t('Remove OpenID')); common_element('h2', NULL, _t('Remove OpenID'));
if ($cnt == 1 && !$user->password) { if ($cnt == 1 && !$user->password) {
common_element('p', NULL, common_element('p', NULL,
_t('Removing your only OpenID would make it impossible to log in! ' . _t('Removing your only OpenID would make it impossible to log in! ' .
'If you need to remove it, add another OpenID first.')); 'If you need to remove it, add another OpenID first.'));
if ($oid->fetch()) { if ($oid->fetch()) {
common_element_start('p'); common_element_start('p');
common_element('a', array('href' => $oid->canonical), common_element('a', array('href' => $oid->canonical),
$oid->display); $oid->display);
common_element_end('p'); common_element_end('p');
} }
} else { } else {
common_element('p', NULL, common_element('p', NULL,
_t('You can remove an OpenID from your account '. _t('You can remove an OpenID from your account '.
'by clicking the button marked "Remove".')); 'by clicking the button marked "Remove".'));
$idx = 0; $idx = 0;
while ($oid->fetch()) { while ($oid->fetch()) {
common_element_start('form', array('method' => 'POST', common_element_start('form', array('method' => 'POST',
'id' => 'openiddelete' . $idx, 'id' => 'openiddelete' . $idx,
...@@ -119,10 +110,10 @@ class OpenidsettingsAction extends SettingsAction { ...@@ -119,10 +110,10 @@ class OpenidsettingsAction extends SettingsAction {
} }
} }
} }
common_show_footer(); common_show_footer();
} }
function handle_post() { function handle_post() {
if ($this->arg('add')) { if ($this->arg('add')) {
$result = oid_authenticate($this->trimmed('openid_url'), 'finishaddopenid'); $result = oid_authenticate($this->trimmed('openid_url'), 'finishaddopenid');
...@@ -135,9 +126,9 @@ class OpenidsettingsAction extends SettingsAction { ...@@ -135,9 +126,9 @@ class OpenidsettingsAction extends SettingsAction {
$this->show_form(_t('Something weird happened.')); $this->show_form(_t('Something weird happened.'));
} }
} }
function remove_openid() { function remove_openid() {
$openid_url = $this->trimmed('openid_url'); $openid_url = $this->trimmed('openid_url');
$oid = User_openid::staticGet('canonical', $openid_url); $oid = User_openid::staticGet('canonical', $openid_url);
if (!$oid) { if (!$oid) {
...@@ -153,4 +144,4 @@ class OpenidsettingsAction extends SettingsAction { ...@@ -153,4 +144,4 @@ class OpenidsettingsAction extends SettingsAction {
$this->show_form(_t('OpenID removed.'), true); $this->show_form(_t('OpenID removed.'), true);
return; return;
} }
} }
\ No newline at end of file
...@@ -23,21 +23,12 @@ require_once(INSTALLDIR.'/lib/settingsaction.php'); ...@@ -23,21 +23,12 @@ require_once(INSTALLDIR.'/lib/settingsaction.php');
class PasswordAction extends SettingsAction { class PasswordAction extends SettingsAction {
function show_top($arr) { function get_instructions() {
$msg = $arr[0]; return _t('You can change your password here. Choose a good one!');
$success = $arr[1];
if ($msg) {
$this->message($msg, $success);
} else {
common_element('div', 'instructions',
_t('You can change your password here. Choose a good one!'));
}
$this->settings_menu();
} }
function show_form($msg=NULL, $success=false) { function show_form($msg=NULL, $success=false) {
common_show_header(_t('Change password'), NULL, $this->form_header(_t('Change password'), $msg, $success);
array($msg, $success), array($this, 'show_top'));
common_element_start('form', array('method' => 'POST', common_element_start('form', array('method' => 'POST',
'id' => 'password', 'id' => 'password',
'action' => 'action' =>
...@@ -90,4 +81,4 @@ class PasswordAction extends SettingsAction { ...@@ -90,4 +81,4 @@ class PasswordAction extends SettingsAction {
$this->show_form(_t('Password saved'), true); $this->show_form(_t('Password saved'), true);
} }
} }
\ No newline at end of file
...@@ -23,24 +23,15 @@ require_once(INSTALLDIR.'/lib/settingsaction.php'); ...@@ -23,24 +23,15 @@ require_once(INSTALLDIR.'/lib/settingsaction.php');
class ProfilesettingsAction extends SettingsAction { class ProfilesettingsAction extends SettingsAction {
function show_top($arr) { function get_instructions() {
$msg = $arr[0]; return _t('You can update your personal profile info here '.
$success = $arr[1]; 'so people know more about you.');
if ($msg) {
$this->message($msg, $success);
} else {
common_element('div', 'instructions',
_t('You can update your personal profile info here '.
'so people know more about you.'));
}
$this->settings_menu();
} }
function show_form($msg=NULL, $success=false) { function show_form($msg=NULL, $success=false) {
$user = common_current_user(); $user = common_current_user();
$profile = $user->getProfile(); $profile = $user->getProfile();
common_show_header(_t('Profile settings'), NULL, array($msg, $success), $this->form_header(_t('Profile settings'), $msg, $success);
array($this, 'show_top'));
common_element_start('form', array('method' => 'POST', common_element_start('form', array('method' => 'POST',
'id' => 'profilesettings', 'id' => 'profilesettings',
...@@ -70,7 +61,7 @@ class ProfilesettingsAction extends SettingsAction { ...@@ -70,7 +61,7 @@ class ProfilesettingsAction extends SettingsAction {
} }
function handle_post() { function handle_post() {
$nickname = $this->trimmed('nickname'); $nickname = $this->trimmed('nickname');
$fullname = $this->trimmed('fullname'); $fullname = $this->trimmed('fullname');
$email = $this->trimmed('email'); $email = $this->trimmed('email');
...@@ -79,7 +70,7 @@ class ProfilesettingsAction extends SettingsAction { ...@@ -79,7 +70,7 @@ class ProfilesettingsAction extends SettingsAction {
$location = $this->trimmed('location'); $location = $this->trimmed('location');
# Some validation # Some validation
if ($email && !Validate::email($email, true)) { if ($email && !Validate::email($email, true)) {
$this->show_form(_t('Not a valid email address.')); $this->show_form(_t('Not a valid email address.'));
return; return;
...@@ -111,22 +102,22 @@ class ProfilesettingsAction extends SettingsAction { ...@@ -111,22 +102,22 @@ class ProfilesettingsAction extends SettingsAction {
$this->show_form(_t('Email address already exists.')); $this->show_form(_t('Email address already exists.'));
return; return;
} }
$user = common_current_user(); $user = common_current_user();
$user->query('BEGIN'); $user->query('BEGIN');
if ($user->nickname != $nickname) { if ($user->nickname != $nickname) {
common_debug('Updating user nickname from ' . $user->nickname . ' to ' . $nickname, common_debug('Updating user nickname from ' . $user->nickname . ' to ' . $nickname,
__FILE__); __FILE__);
$original = clone($user); $original = clone($user);
$user->nickname = $nickname; $user->nickname = $nickname;
$result = $user->updateKeys($original); $result = $user->updateKeys($original);
if ($result === FALSE) { if ($result === FALSE) {
common_log_db_error($user, 'UPDATE', __FILE__); common_log_db_error($user, 'UPDATE', __FILE__);
common_server_error(_t('Couldnt update user.')); common_server_error(_t('Couldnt update user.'));
...@@ -135,34 +126,34 @@ class ProfilesettingsAction extends SettingsAction { ...@@ -135,34 +126,34 @@ class ProfilesettingsAction extends SettingsAction {
} }
if ($user->email != $email) { if ($user->email != $email) {
common_debug('Updating user email from ' . $user->email . ' to ' . $email, common_debug('Updating user email from ' . $user->email . ' to ' . $email,
__FILE__); __FILE__);
# We don't update email directly; it gets done by confirmemail # We don't update email directly; it gets done by confirmemail
$confirm = new Confirm_address(); $confirm = new Confirm_address();
$confirm->code = common_confirmation_code(128); $confirm->code = common_confirmation_code(128);
$confirm->user_id = $user->id; $confirm->user_id = $user->id;
$confirm->address = $email; $confirm->address = $email;
$confirm->address_type = 'email'; $confirm->address_type = 'email';
$result = $confirm->insert(); $result = $confirm->insert();
if (!$result) { if (!$result) {
common_log_db_error($confirm, 'INSERT', __FILE__); common_log_db_error($confirm, 'INSERT', __FILE__);
common_server_error(_t('Couldnt confirm email.')); common_server_error(_t('Couldnt confirm email.'));
return FALSE; return FALSE;
} }
# XXX: try not to do this in the middle of a transaction # XXX: try not to do this in the middle of a transaction
mail_confirm_address($confirm->code, mail_confirm_address($confirm->code,
$profile->nickname, $profile->nickname,
$email); $email);
} }
$profile = $user->getProfile(); $profile = $user->getProfile();
$orig_profile = clone($profile); $orig_profile = clone($profile);
...@@ -176,9 +167,9 @@ class ProfilesettingsAction extends SettingsAction { ...@@ -176,9 +167,9 @@ class ProfilesettingsAction extends SettingsAction {
common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__); common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__);
common_debug('New profile: ' . common_log_objstring($profile), __FILE__); common_debug('New profile: ' . common_log_objstring($profile), __FILE__);
$result = $profile->update($orig_profile); $result = $profile->update($orig_profile);
if (!$result) { if (!$result) {
common_log_db_error($profile, 'UPDATE', __FILE__); common_log_db_error($profile, 'UPDATE', __FILE__);
common_server_error(_t('Couldnt save profile.')); common_server_error(_t('Couldnt save profile.'));
...@@ -191,7 +182,7 @@ class ProfilesettingsAction extends SettingsAction { ...@@ -191,7 +182,7 @@ class ProfilesettingsAction extends SettingsAction {
$this->show_form(_t('Settings saved.'), TRUE); $this->show_form(_t('Settings saved.'), TRUE);
} }
function nickname_exists($nickname) { function nickname_exists($nickname) {
$user = common_current_user(); $user = common_current_user();
$other = User::staticGet('nickname', $nickname); $other = User::staticGet('nickname', $nickname);
...@@ -201,7 +192,7 @@ class ProfilesettingsAction extends SettingsAction { ...@@ -201,7 +192,7 @@ class ProfilesettingsAction extends SettingsAction {
return $other->id != $user->id; return $other->id != $user->id;
} }
} }
function email_exists($email) { function email_exists($email) {
$user = common_current_user(); $user = common_current_user();
$other = User::staticGet('email', $email); $other = User::staticGet('email', $email);
......
...@@ -55,6 +55,28 @@ class SettingsAction extends Action { ...@@ -55,6 +55,28 @@ class SettingsAction extends Action {
} }
} }
function form_header($title, $msg=NULL, $success=false) {
common_show_header($title,
NULL,
array($msg, $success),
array($this, 'show_top'));
}
function show_top($arr) {
$msg = $arr[0];
$success = $arr[1];
if ($msg) {
$this->message($msg, $success);
} else {
$inst = $this->get_instructions();
$output = common_markup_to_html($inst);
common_element_start('div', 'instructions');
common_raw($output);
common_element_end('div');
}
$this->settings_menu();
}
function settings_menu() { function settings_menu() {
# action => array('prompt', 'title') # action => array('prompt', 'title')
static $menu = static $menu =
......
...@@ -1106,3 +1106,12 @@ function common_confirmation_code($bits) { ...@@ -1106,3 +1106,12 @@ function common_confirmation_code($bits) {
} }
return $code; return $code;
} }
# convert markup to HTML
function common_markup_to_html($c) {
$c = preg_replace('/%%action.(\w+)%%/e', "common_local_url('\\1')", $c);
$c = preg_replace('/%%doc.(\w+)%%/e', "common_local_url('doc', array('title'=>'\\1'))", $c);
$c = preg_replace('/%%(\w+).(\w+)%%/e', 'common_config(\'\\1\', \'\\2\')', $c);
return Markdown($c);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment