diff options
author | Evan Prodromou <evan@prodromou.name> | 2008-06-30 13:03:42 -0400 |
---|---|---|
committer | Evan Prodromou <evan@prodromou.name> | 2008-06-30 13:03:42 -0400 |
commit | c64f137497cb2963445b34e17ed45a3044135bab (patch) | |
tree | 88e9784ab3a4ffec3ba3670843eb79ec44752571 | |
parent | 8336a7755e0576c1e60c1ab7336d006fd3025615 (diff) |
refactor common behaviour in settings pages
darcs-hash:20080630170342-84dde-5d7feb88a0a707b24c8070802a7ec99dd1f35687.gz
-rw-r--r-- | actions/avatar.php | 29 | ||||
-rw-r--r-- | actions/doc.php | 7 | ||||
-rw-r--r-- | actions/imsettings.php | 20 | ||||
-rw-r--r-- | actions/openidsettings.php | 59 | ||||
-rw-r--r-- | actions/password.php | 19 | ||||
-rw-r--r-- | actions/profilesettings.php | 57 | ||||
-rw-r--r-- | lib/settingsaction.php | 22 | ||||
-rw-r--r-- | lib/util.php | 9 |
8 files changed, 103 insertions, 119 deletions
diff --git a/actions/avatar.php b/actions/avatar.php index a22512750..ac28d8170 100644 --- a/actions/avatar.php +++ b/actions/avatar.php @@ -23,25 +23,18 @@ require_once(INSTALLDIR.'/lib/settingsaction.php'); class AvatarAction extends SettingsAction { - function show_top($arr) { - $msg = $arr[0]; - $success = $arr[1]; - if ($msg) { - $this->message($msg, $success); - } else { - common_element('div', 'instructions', - _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 get_instructions() { + return _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.'); } - + 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(); $profile = $user->getProfile(); @@ -120,7 +113,7 @@ class AvatarAction extends SettingsAction { $user = common_current_user(); $profile = $user->getProfile(); - + if ($profile->setOriginal($_FILES['avatarfile']['tmp_name'])) { $this->show_form(_t('Avatar updated.'), true); } else { diff --git a/actions/doc.php b/actions/doc.php index edb2cab62..6c88c4200 100644 --- a/actions/doc.php +++ b/actions/doc.php @@ -32,12 +32,9 @@ class DocAction extends Action { return; } $c = file_get_contents($filename); - $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); - $output = Markdown($c); + $output = common_markup_to_html($c); common_show_header(_t(ucfirst($title))); common_raw($output); common_show_footer(); } -}
\ No newline at end of file +} diff --git a/actions/imsettings.php b/actions/imsettings.php index 11dd9ee3b..eb33d4e06 100644 --- a/actions/imsettings.php +++ b/actions/imsettings.php @@ -24,25 +24,15 @@ require_once(INSTALLDIR.'/lib/jabber.php'); class ImsettingsAction extends SettingsAction { - function show_top($arr) { - $msg = $arr[0]; - $success = $arr[1]; - if ($msg) { - $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 get_instructions() { + _t('You can send and receive notices through '. + 'Jabber/GTalk [instant messages](%%doc.im%%). Configure '. + 'your address and settings below.'); } function show_form($msg=NULL, $success=false) { $user = common_current_user(); - common_show_header(_t('IM settings'), NULL, array($msg, $success), - array($this, 'show_top')); - + $this->form_header(_t('IM Settings'), $msg, $success); common_element_start('form', array('method' => 'POST', 'id' => 'imsettings', 'action' => diff --git a/actions/openidsettings.php b/actions/openidsettings.php index a915542a6..c7cceebf9 100644 --- a/actions/openidsettings.php +++ b/actions/openidsettings.php @@ -23,28 +23,19 @@ require_once(INSTALLDIR.'/lib/settingsaction.php'); require_once(INSTALLDIR.'/lib/openid.php'); class OpenidsettingsAction extends SettingsAction { - - function show_top($arr) { - $msg = $arr[0]; - $success = $arr[1]; - - if ($msg) { - $this->message($msg, $success); - } else { - common_element('div', 'instructions', - _t('Manage your associated OpenIDs from here.')); - } - - $this->settings_menu(); + + function get_instructions() { + return _t('[OpenID](%%doc.openid%%) lets you log into many sites ' . + ' with the same user account. '. + ' Manage your associated OpenIDs from here.'); } - + function show_form($msg=NULL, $success=false) { - + $user = common_current_user(); - - common_show_header(_t('OpenID settings'), NULL, array($msg, $success), - array($this, 'show_top')); - + + $this->form_header(_t('OpenID settings'), $msg, $success); + common_element_start('form', array('method' => 'POST', 'id' => 'openidadd', 'action' => @@ -66,36 +57,36 @@ class OpenidsettingsAction extends SettingsAction { 'value' => _t('Add'))); common_element_end('p'); common_element_end('form'); - + $oid = new User_openid(); $oid->user_id = $user->id; - + $cnt = $oid->find(); - + if ($cnt > 0) { - + common_element('h2', NULL, _t('Remove OpenID')); - + if ($cnt == 1 && !$user->password) { - + common_element('p', NULL, _t('Removing your only OpenID would make it impossible to log in! ' . 'If you need to remove it, add another OpenID first.')); - + if ($oid->fetch()) { common_element_start('p'); common_element('a', array('href' => $oid->canonical), $oid->display); common_element_end('p'); } - + } else { - + common_element('p', NULL, _t('You can remove an OpenID from your account '. 'by clicking the button marked "Remove".')); $idx = 0; - + while ($oid->fetch()) { common_element_start('form', array('method' => 'POST', 'id' => 'openiddelete' . $idx, @@ -119,10 +110,10 @@ class OpenidsettingsAction extends SettingsAction { } } } - + common_show_footer(); } - + function handle_post() { if ($this->arg('add')) { $result = oid_authenticate($this->trimmed('openid_url'), 'finishaddopenid'); @@ -135,9 +126,9 @@ class OpenidsettingsAction extends SettingsAction { $this->show_form(_t('Something weird happened.')); } } - + function remove_openid() { - + $openid_url = $this->trimmed('openid_url'); $oid = User_openid::staticGet('canonical', $openid_url); if (!$oid) { @@ -153,4 +144,4 @@ class OpenidsettingsAction extends SettingsAction { $this->show_form(_t('OpenID removed.'), true); return; } -}
\ No newline at end of file +} diff --git a/actions/password.php b/actions/password.php index 3481ad33b..628bfb5c0 100644 --- a/actions/password.php +++ b/actions/password.php @@ -23,21 +23,12 @@ require_once(INSTALLDIR.'/lib/settingsaction.php'); class PasswordAction extends SettingsAction { - function show_top($arr) { - $msg = $arr[0]; - $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 get_instructions() { + return _t('You can change your password here. Choose a good one!'); } - + function show_form($msg=NULL, $success=false) { - common_show_header(_t('Change password'), NULL, - array($msg, $success), array($this, 'show_top')); + $this->form_header(_t('Change password'), $msg, $success); common_element_start('form', array('method' => 'POST', 'id' => 'password', 'action' => @@ -90,4 +81,4 @@ class PasswordAction extends SettingsAction { $this->show_form(_t('Password saved'), true); } -}
\ No newline at end of file +} diff --git a/actions/profilesettings.php b/actions/profilesettings.php index 44243f310..49e248748 100644 --- a/actions/profilesettings.php +++ b/actions/profilesettings.php @@ -23,24 +23,15 @@ require_once(INSTALLDIR.'/lib/settingsaction.php'); class ProfilesettingsAction extends SettingsAction { - function show_top($arr) { - $msg = $arr[0]; - $success = $arr[1]; - 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 get_instructions() { + return _t('You can update your personal profile info here '. + 'so people know more about you.'); } - + function show_form($msg=NULL, $success=false) { $user = common_current_user(); $profile = $user->getProfile(); - common_show_header(_t('Profile settings'), NULL, array($msg, $success), - array($this, 'show_top')); + $this->form_header(_t('Profile settings'), $msg, $success); common_element_start('form', array('method' => 'POST', 'id' => 'profilesettings', @@ -70,7 +61,7 @@ class ProfilesettingsAction extends SettingsAction { } function handle_post() { - + $nickname = $this->trimmed('nickname'); $fullname = $this->trimmed('fullname'); $email = $this->trimmed('email'); @@ -79,7 +70,7 @@ class ProfilesettingsAction extends SettingsAction { $location = $this->trimmed('location'); # Some validation - + if ($email && !Validate::email($email, true)) { $this->show_form(_t('Not a valid email address.')); return; @@ -111,22 +102,22 @@ class ProfilesettingsAction extends SettingsAction { $this->show_form(_t('Email address already exists.')); return; } - + $user = common_current_user(); $user->query('BEGIN'); if ($user->nickname != $nickname) { - + common_debug('Updating user nickname from ' . $user->nickname . ' to ' . $nickname, __FILE__); - + $original = clone($user); - + $user->nickname = $nickname; $result = $user->updateKeys($original); - + if ($result === FALSE) { common_log_db_error($user, 'UPDATE', __FILE__); common_server_error(_t('Couldnt update user.')); @@ -135,34 +126,34 @@ class ProfilesettingsAction extends SettingsAction { } if ($user->email != $email) { - + common_debug('Updating user email from ' . $user->email . ' to ' . $email, __FILE__); - + # We don't update email directly; it gets done by confirmemail $confirm = new Confirm_address(); - + $confirm->code = common_confirmation_code(128); $confirm->user_id = $user->id; $confirm->address = $email; $confirm->address_type = 'email'; - + $result = $confirm->insert(); - + if (!$result) { common_log_db_error($confirm, 'INSERT', __FILE__); common_server_error(_t('Couldnt confirm email.')); return FALSE; } - + # XXX: try not to do this in the middle of a transaction - + mail_confirm_address($confirm->code, $profile->nickname, $email); } - + $profile = $user->getProfile(); $orig_profile = clone($profile); @@ -176,9 +167,9 @@ class ProfilesettingsAction extends SettingsAction { common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__); common_debug('New profile: ' . common_log_objstring($profile), __FILE__); - + $result = $profile->update($orig_profile); - + if (!$result) { common_log_db_error($profile, 'UPDATE', __FILE__); common_server_error(_t('Couldnt save profile.')); @@ -191,7 +182,7 @@ class ProfilesettingsAction extends SettingsAction { $this->show_form(_t('Settings saved.'), TRUE); } - + function nickname_exists($nickname) { $user = common_current_user(); $other = User::staticGet('nickname', $nickname); @@ -201,7 +192,7 @@ class ProfilesettingsAction extends SettingsAction { return $other->id != $user->id; } } - + function email_exists($email) { $user = common_current_user(); $other = User::staticGet('email', $email); diff --git a/lib/settingsaction.php b/lib/settingsaction.php index 2a80c0e31..eca5e9352 100644 --- a/lib/settingsaction.php +++ b/lib/settingsaction.php @@ -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() { # action => array('prompt', 'title') static $menu = diff --git a/lib/util.php b/lib/util.php index f3ab42ea9..9e1b1a8c9 100644 --- a/lib/util.php +++ b/lib/util.php @@ -1106,3 +1106,12 @@ function common_confirmation_code($bits) { } 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); +} |