diff options
-rw-r--r-- | actions/urlsettings.php (renamed from actions/othersettings.php) | 17 | ||||
-rw-r--r-- | actions/userdesignsettings.php | 79 | ||||
-rw-r--r-- | lib/accountsettingsaction.php | 8 | ||||
-rw-r--r-- | lib/designform.php | 63 | ||||
-rw-r--r-- | lib/designsettings.php | 12 | ||||
-rw-r--r-- | lib/router.php | 2 |
6 files changed, 130 insertions, 51 deletions
diff --git a/actions/othersettings.php b/actions/urlsettings.php index 8d6e00404..ddf8daa2a 100644 --- a/actions/othersettings.php +++ b/actions/urlsettings.php @@ -47,7 +47,7 @@ require_once INSTALLDIR.'/lib/accountsettingsaction.php'; * @link http://status.net/ */ -class OthersettingsAction extends AccountSettingsAction +class UrlsettingsAction extends AccountSettingsAction { /** * Title of the page @@ -57,7 +57,7 @@ class OthersettingsAction extends AccountSettingsAction function title() { - return _('Other settings'); + return _('URL settings'); } /** @@ -93,7 +93,7 @@ class OthersettingsAction extends AccountSettingsAction 'id' => 'form_settings_other', 'class' => 'form_settings', 'action' => - common_local_url('othersettings'))); + common_local_url('urlsettings'))); $this->elementStart('fieldset'); $this->hidden('token', common_session_token()); $this->elementStart('ul', 'form_data'); @@ -125,18 +125,14 @@ class OthersettingsAction extends AccountSettingsAction _('URL longer than'), (!is_null($this->arg('maxurllength'))) ? $this->arg('maxurllength') : User_urlshortener_prefs::maxUrlLength($user), - _('URLs longer than this will be shortened.')); + _('URLs longer than this will be shortened, 0 means always shorten.')); $this->elementEnd('li'); $this->elementStart('li'); $this->input('maxnoticelength', _('Text longer than'), (!is_null($this->arg('maxnoticelength'))) ? $this->arg('maxnoticelength') : User_urlshortener_prefs::maxNoticeLength($user), - _('URLs in notices longer than this will be shortened.')); - $this->elementEnd('li'); - $this->elementStart('li'); - $this->checkbox('viewdesigns', _('View profile designs'), - - $user->viewdesigns, _('Show or hide profile designs.')); + _('URLs in notices longer than this will be shortened, 0 means always shorten.')); $this->elementEnd('li'); $this->elementEnd('ul'); $this->submit('save', _('Save')); @@ -170,8 +166,6 @@ class OthersettingsAction extends AccountSettingsAction return; } - $viewdesigns = $this->boolean('viewdesigns'); - $maxurllength = $this->trimmed('maxurllength'); if (!Validate::number($maxurllength, array('min' => 0))) { @@ -193,7 +187,6 @@ class OthersettingsAction extends AccountSettingsAction $original = clone($user); $user->urlshorteningservice = $urlshorteningservice; - $user->viewdesigns = $viewdesigns; $result = $user->update($original); diff --git a/actions/userdesignsettings.php b/actions/userdesignsettings.php index 1cf878000..e6caea3a1 100644 --- a/actions/userdesignsettings.php +++ b/actions/userdesignsettings.php @@ -121,6 +121,20 @@ class UserDesignSettingsAction extends DesignSettingsAction } /** + * Shows the design settings form + * + * @param Design $design a working design to show + * + * @return nothing + */ + + function showDesignForm($design) + { + $form = new UserDesignForm($this, $design, $this->submitaction); + $form->show(); + } + + /** * Save or update the user's design settings * * @return void @@ -128,6 +142,8 @@ class UserDesignSettingsAction extends DesignSettingsAction function saveDesign() { + $this->saveDesignPreferences(); + foreach ($this->args as $key => $val) { if (preg_match('/(#ho|ho)Td.*g/i', $val)) { $this->sethd(); @@ -164,7 +180,8 @@ class UserDesignSettingsAction extends DesignSettingsAction $tile = true; } - $user = common_current_user(); + $user = common_current_user(); + $design = $user->getDesign(); if (!empty($design)) { @@ -282,4 +299,64 @@ class UserDesignSettingsAction extends DesignSettingsAction $this->showForm(_('Enjoy your hotdog!'), true); } + function saveDesignPreferences() + { + $viewdesigns = $this->boolean('viewdesigns'); + + $user = common_current_user(); + + $original = clone($user); + + $user->viewdesigns = $viewdesigns; + + $result = $user->update($original); + + if ($result === false) { + common_log_db_error($user, 'UPDATE', __FILE__); + throw new ServerException(_('Couldn\'t update user.')); + } + } +} + +class UserDesignForm extends DesignForm +{ + function __construct($out, $design, $actionurl) + { + parent::__construct($out, $design, $actionurl); + } + + /** + * Legend of the Form + * + * @return void + */ + function formLegend() + { + $this->out->element('legend', null, _('Design settings')); + } + + /** + * Data elements of the form + * + * @return void + */ + + function formData() + { + $user = common_current_user(); + + $this->out->elementStart('ul', 'form_data'); + $this->out->elementStart('li'); + $this->out->checkbox('viewdesigns', _('View profile designs'), + - $user->viewdesigns, _('Show or hide profile designs.')); + $this->out->elementEnd('li'); + $this->out->elementEnd('ul'); + + $this->out->elementEnd('fieldset'); + + $this->out->elementStart('fieldset'); + $this->out->element('legend', null, _('Background file')); + + parent::formData(); + } } diff --git a/lib/accountsettingsaction.php b/lib/accountsettingsaction.php index 7991c9002..2c519e4ab 100644 --- a/lib/accountsettingsaction.php +++ b/lib/accountsettingsaction.php @@ -134,12 +134,12 @@ class AccountSettingsNav extends Widget $this->showMenuItem('userdesignsettings',_('Design'),$title); Event::handle('EndAccountSettingsDesignMenuItem', array($this, &$menu)); } - if(Event::handle('StartAccountSettingsOtherMenuItem', array($this, &$menu))){ + if(Event::handle('StartAccountSettingsUrlMenuItem', array($this, &$menu))){ // TRANS: Link title attribute in user account settings menu. - $title = _('Other options'); + $title = _('URL shortener settings'); // TRANS: Link description in user account settings menu. - $this->showMenuItem('othersettings',_('Other'),$title); - Event::handle('EndAccountSettingsOtherMenuItem', array($this, &$menu)); + $this->showMenuItem('urlsettings',_('URL'),$title); + Event::handle('EndAccountSettingsUrlMenuItem', array($this, &$menu)); } Event::handle('EndAccountSettingsNav', array(&$this->action)); diff --git a/lib/designform.php b/lib/designform.php index b22d77f31..4163cfc1a 100644 --- a/lib/designform.php +++ b/lib/designform.php @@ -122,6 +122,29 @@ class DesignForm extends Form function formData() { + $this->backgroundData(); + + $this->out->elementEnd('fieldset'); + + $this->out->elementStart('fieldset', array('id' => 'settings_design_color')); + $this->out->element('legend', null, _('Change colours')); + $this->colourData(); + $this->out->elementEnd('fieldset'); + + $this->out->elementStart('fieldset'); + + $this->out->submit('defaults', _('Use defaults'), 'submit form_action-default', + 'defaults', _('Restore default designs')); + + $this->out->element('input', array('id' => 'settings_design_reset', + 'type' => 'reset', + 'value' => 'Reset', + 'class' => 'submit form_action-primary', + 'title' => _('Reset back to default'))); + } + + function backgroundData() + { $this->out->elementStart('ul', 'form_data'); $this->out->elementStart('li'); $this->out->element('label', array('for' => 'design_background-image_file'), @@ -137,13 +160,13 @@ class DesignForm extends Form 'value' => ImageFile::maxFileSizeInt())); $this->out->elementEnd('li'); - if (!empty($design->backgroundimage)) { + if (!empty($this->design->backgroundimage)) { $this->out->elementStart('li', array('id' => 'design_background-image_onoff')); $this->out->element('img', array('src' => - Design::url($design->backgroundimage))); + Design::url($this->design->backgroundimage))); $attrs = array('name' => 'design_background-image_onoff', 'type' => 'radio', @@ -151,7 +174,7 @@ class DesignForm extends Form 'class' => 'radio', 'value' => 'on'); - if ($design->disposition & BACKGROUND_ON) { + if ($this->design->disposition & BACKGROUND_ON) { $attrs['checked'] = 'checked'; } @@ -167,7 +190,7 @@ class DesignForm extends Form 'class' => 'radio', 'value' => 'off'); - if ($design->disposition & BACKGROUND_OFF) { + if ($this->design->disposition & BACKGROUND_OFF) { $attrs['checked'] = 'checked'; } @@ -182,20 +205,20 @@ class DesignForm extends Form $this->out->elementStart('li'); $this->out->checkbox('design_background-image_repeat', _('Tile background image'), - ($design->disposition & BACKGROUND_TILE) ? true : false); + ($this->design->disposition & BACKGROUND_TILE) ? true : false); $this->out->elementEnd('li'); } $this->out->elementEnd('ul'); - $this->out->elementEnd('fieldset'); + } - $this->out->elementStart('fieldset', array('id' => 'settings_design_color')); - $this->out->element('legend', null, _('Change colours')); + function colourData() + { $this->out->elementStart('ul', 'form_data'); try { - $bgcolor = new WebColor($design->backgroundcolor); + $bgcolor = new WebColor($this->design->backgroundcolor); $this->out->elementStart('li'); $this->out->element('label', array('for' => 'swatch-1'), _('Background')); @@ -208,7 +231,7 @@ class DesignForm extends Form 'value' => '')); $this->out->elementEnd('li'); - $ccolor = new WebColor($design->contentcolor); + $ccolor = new WebColor($this->design->contentcolor); $this->out->elementStart('li'); $this->out->element('label', array('for' => 'swatch-2'), _('Content')); @@ -221,7 +244,7 @@ class DesignForm extends Form 'value' => '')); $this->out->elementEnd('li'); - $sbcolor = new WebColor($design->sidebarcolor); + $sbcolor = new WebColor($this->design->sidebarcolor); $this->out->elementStart('li'); $this->out->element('label', array('for' => 'swatch-3'), _('Sidebar')); @@ -234,7 +257,7 @@ class DesignForm extends Form 'value' => '')); $this->out->elementEnd('li'); - $tcolor = new WebColor($design->textcolor); + $tcolor = new WebColor($this->design->textcolor); $this->out->elementStart('li'); $this->out->element('label', array('for' => 'swatch-4'), _('Text')); @@ -247,7 +270,7 @@ class DesignForm extends Form 'value' => '')); $this->out->elementEnd('li'); - $lcolor = new WebColor($design->linkcolor); + $lcolor = new WebColor($this->design->linkcolor); $this->out->elementStart('li'); $this->out->element('label', array('for' => 'swatch-5'), _('Links')); @@ -261,22 +284,10 @@ class DesignForm extends Form $this->out->elementEnd('li'); } catch (WebColorException $e) { - common_log(LOG_ERR, 'Bad color values in design ID: ' .$design->id); + common_log(LOG_ERR, 'Bad color values in design ID: ' .$this->design->id); } $this->out->elementEnd('ul'); - $this->out->elementEnd('fieldset'); - - $this->out->elementStart('fieldset'); - - $this->out->submit('defaults', _('Use defaults'), 'submit form_action-default', - 'defaults', _('Restore default designs')); - - $this->out->element('input', array('id' => 'settings_design_reset', - 'type' => 'reset', - 'value' => 'Reset', - 'class' => 'submit form_action-primary', - 'title' => _('Reset back to default'))); } /** diff --git a/lib/designsettings.php b/lib/designsettings.php index 98ef8256c..58578f188 100644 --- a/lib/designsettings.php +++ b/lib/designsettings.php @@ -174,28 +174,26 @@ class DesignSettingsAction extends AccountSettingsAction function saveBackgroundImage($design) { - // Now that we have a Design ID we can add a file to the design. // XXX: This is an additional DB hit, but figured having the image // associated with the Design rather than the User was worth // it. -- Zach - if ($_FILES['design_background-image_file']['error'] == - UPLOAD_ERR_OK) { + if (array_key_exists('design_background-image_file', $_FILES) && + $_FILES['design_background-image_file']['error'] == UPLOAD_ERR_OK) { $filepath = null; try { - $imagefile = - ImageFile::fromUpload('design_background-image_file'); + $imagefile = ImageFile::fromUpload('design_background-image_file'); } catch (Exception $e) { $this->showForm($e->getMessage()); return; } $filename = Design::filename($design->id, - image_type_to_extension($imagefile->type), - common_timestamp()); + image_type_to_extension($imagefile->type), + common_timestamp()); $filepath = Design::path($filename); diff --git a/lib/router.php b/lib/router.php index 3bbb4a044..86f4fa02a 100644 --- a/lib/router.php +++ b/lib/router.php @@ -172,7 +172,7 @@ class Router // settings foreach (array('profile', 'avatar', 'password', 'im', 'oauthconnections', - 'oauthapps', 'email', 'sms', 'userdesign', 'other') as $s) { + 'oauthapps', 'email', 'sms', 'userdesign', 'url') as $s) { $m->connect('settings/'.$s, array('action' => $s.'settings')); } |