From f65015b24a8448ecbb12b3897992cdaf6b563212 Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Sat, 27 Jun 2009 03:21:18 +0000 Subject: Added input submit to let the user to go back to site's default design settings --- lib/designsettings.php | 17 +++++++++-------- theme/base/css/display.css | 5 ++++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/designsettings.php b/lib/designsettings.php index 9650679ac..5def5053f 100644 --- a/lib/designsettings.php +++ b/lib/designsettings.php @@ -212,18 +212,19 @@ class DesignSettingsAction extends AccountSettingsAction 'maxlength' => '7', 'size' => '7', 'value' => '#' . $lcolor->hexValue())); + $this->elementEnd('li'); - $this->elementEnd('li'); + } catch (WebColorException $e) { + common_log(LOG_ERR, 'Bad color values in design ID: ' .$design->id); + } - } catch (WebColorException $e) { - common_log(LOG_ERR, 'Bad color values in design ID: ' . - $design->id); - } + $this->elementEnd('ul'); + $this->elementEnd('fieldset'); - $this->elementEnd('ul'); - $this->elementEnd('fieldset'); + $this->submit('defaults', _('Use defaults'), 'submit form_action-default', + 'defaults', _('Restore default designs')); - $this->element('input', array('id' => 'settings_design_reset', + $this->element('input', array('id' => 'settings_design_reset', 'type' => 'reset', 'value' => 'Reset', 'class' => 'submit form_action-primary', diff --git a/theme/base/css/display.css b/theme/base/css/display.css index 78fcd7ece..85b42cdd1 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -206,7 +206,10 @@ border-radius:4px; padding:0 7px; } - +.form_settings input.form_action-default { +margin-right:11px; +} +.form_settings input.form_action-default, .form_settings input.form_action-primary { padding:0; } -- cgit v1.2.3-54-g00ecf From 135927e42a36e2accce557419f8c7d9cb8b999c0 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Mon, 29 Jun 2009 14:52:38 -0700 Subject: Allow users and groups to reset their design to system default colors --- actions/userdesignsettings.php | 74 +++++++++++++++++++++++++++++++++++++----- lib/designsettings.php | 41 +++++++++++++++++++++-- 2 files changed, 104 insertions(+), 11 deletions(-) diff --git a/actions/userdesignsettings.php b/actions/userdesignsettings.php index 6e745e96f..ec688d36d 100644 --- a/actions/userdesignsettings.php +++ b/actions/userdesignsettings.php @@ -36,14 +36,14 @@ require_once INSTALLDIR . '/lib/designsettings.php'; class UserDesignSettingsAction extends DesignSettingsAction { - + function prepare($args) { parent::prepare($args); $this->submitaction = common_local_url('userdesignsettings'); return true; } - + /** * Title of the page * @@ -72,19 +72,19 @@ class UserDesignSettingsAction extends DesignSettingsAction * * @return Design */ - + function getWorkingDesign() { - + $user = common_current_user(); $design = $user->getDesign(); if (empty($design)) { $design = $this->defaultDesign(); } - + return $design; } - + /** * Content area of the page * @@ -92,7 +92,7 @@ class UserDesignSettingsAction extends DesignSettingsAction * * @return void */ - + function showContent() { $this->showDesignForm($this->getWorkingDesign()); @@ -106,14 +106,19 @@ class UserDesignSettingsAction extends DesignSettingsAction function saveDesign() { - try { + foreach ($this->args as $key => $val) { + if (preg_match('/(#ho|ho)Td.*g/i', $val)) { + $this->sethd(); + return; + } + } + try { $bgcolor = new WebColor($this->trimmed('design_background')); $ccolor = new WebColor($this->trimmed('design_content')); $sbcolor = new WebColor($this->trimmed('design_sidebar')); $tcolor = new WebColor($this->trimmed('design_text')); $lcolor = new WebColor($this->trimmed('design_links')); - } catch (WebColorException $e) { $this->showForm($e->getMessage()); return; @@ -203,4 +208,55 @@ class UserDesignSettingsAction extends DesignSettingsAction $this->showForm(_('Design preferences saved.'), true); } + + /** + * Alternate default colors + * + * @return nothing + */ + + function sethd() { + + $user = common_current_user(); + $design = $user->getDesign(); + + $user->query('BEGIN'); + + // alternate colors + $design = new Design(); + + $design->backgroundcolor = 16184329; + $design->contentcolor = 16059904; + $design->sidebarcolor = 16059904; + $design->textcolor = 0; + $design->linkcolor = 16777215; + + $design->setDisposition(false, true, false); + + $id = $design->insert(); + + if (empty($id)) { + common_log_db_error($id, 'INSERT', __FILE__); + $this->showForm(_('Unable to save your design settings!')); + return; + } + + $original = clone($user); + $user->design_id = $id; + $result = $user->update($original); + + if (empty($result)) { + common_log_db_error($original, 'UPDATE', __FILE__); + $this->showForm(_('Unable to save your design settings!')); + $user->query('ROLLBACK'); + return; + } + + $user->query('COMMIT'); + + $this->saveBackgroundImage($design); + + $this->showForm(_('Enjoy your hotdog!'), true); + } + } diff --git a/lib/designsettings.php b/lib/designsettings.php index 5def5053f..0b5a76b91 100644 --- a/lib/designsettings.php +++ b/lib/designsettings.php @@ -272,8 +272,8 @@ class DesignSettingsAction extends AccountSettingsAction if ($this->arg('save')) { $this->saveDesign(); - } else if ($this->arg('reset')) { - $this->resetDesign(); + } else if ($this->arg('defaults')) { + $this->restoreDefaults(); } else { $this->showForm(_('Unexpected form submission.')); } @@ -359,6 +359,12 @@ class DesignSettingsAction extends AccountSettingsAction return $design; } + /** + * Save the background image, if any, and set its disposition + * + * @return nothing + */ + function saveBackgroundImage($design) { // Now that we have a Design ID we can add a file to the design. @@ -404,4 +410,35 @@ class DesignSettingsAction extends AccountSettingsAction } } + /** + * Restore the user or group design to system defaults + * + * @return nothing + */ + + function restoreDefaults() + { + $design = $this->getWorkingDesign(); + $default = $this->defaultDesign(); + $original = clone($design); + + $design->backgroundcolor = $default->backgroundcolor; + $design->contentcolor = $default->contentcolor; + $design->sidebarcolor = $default->sidebarcolor; + $design->textcolor = $default->textcolor; + $design->linkcolor = $default->linkcolor; + + $design->setDisposition(false, true, false); + + $result = $design->update($original); + + if ($result === false) { + common_log_db_error($design, 'UPDATE', __FILE__); + $this->showForm(_('Couldn\'t update your design.')); + return; + } + + $this->showForm(_('Design defaults restored.'), true); + } + } -- cgit v1.2.3-54-g00ecf From a23b612ae976258a7bbbb61c7cef12f1b3c64076 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Mon, 29 Jun 2009 15:37:13 -0700 Subject: Small comment change (default is for both users an groups) --- lib/designsettings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/designsettings.php b/lib/designsettings.php index 0b5a76b91..476621c07 100644 --- a/lib/designsettings.php +++ b/lib/designsettings.php @@ -317,7 +317,7 @@ class DesignSettingsAction extends AccountSettingsAction } /** - * Get a default user design + * Get a default design * * @return Design design */ -- cgit v1.2.3-54-g00ecf From 4321e02c7b6dcc2ceeff301916a0f901a5554b10 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Mon, 29 Jun 2009 16:55:42 -0700 Subject: Delete orphaned background imgs. Design settings code now passes phpcs. --- actions/groupdesignsettings.php | 31 ++++++++++++++++++++----- actions/userdesignsettings.php | 41 +++++++++++++++++++++++++-------- lib/designsettings.php | 51 +++++++++++++++++++++++++++++++++-------- 3 files changed, 99 insertions(+), 24 deletions(-) diff --git a/actions/groupdesignsettings.php b/actions/groupdesignsettings.php index 79c192ac4..df34ecb42 100644 --- a/actions/groupdesignsettings.php +++ b/actions/groupdesignsettings.php @@ -34,19 +34,37 @@ if (!defined('LACONICA')) { require_once INSTALLDIR . '/lib/designsettings.php'; +/** + * Setting a groups's design + * + * Saves a design for a given group + * + * @category Settings + * @package Laconica + * @author Zach Copley + * @author Sarven Capadisli + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + class GroupDesignSettingsAction extends DesignSettingsAction { var $group = null; /** - * Prepare to run + * Sets the right action for the form, and passes request args into + * the base action + * + * @param array $args misc. arguments + * + * @return boolean true */ function prepare($args) { parent::prepare($args); - if (!common_config('inboxes','enabled')) { + if (!common_config('inboxes', 'enabled')) { $this->serverError(_('Inboxes must be enabled for groups to work')); return false; } @@ -57,7 +75,7 @@ class GroupDesignSettingsAction extends DesignSettingsAction } $nickname_arg = $this->trimmed('nickname'); - $nickname = common_canonical_nickname($nickname_arg); + $nickname = common_canonical_nickname($nickname_arg); // Permanent redirect on non-canonical nickname @@ -158,7 +176,8 @@ class GroupDesignSettingsAction extends DesignSettingsAction * @return Design */ - function getWorkingDesign() { + function getWorkingDesign() + { $design = null; @@ -273,9 +292,9 @@ class GroupDesignSettingsAction extends DesignSettingsAction return; } - $original = clone($this->group); + $original = clone($this->group); $this->group->design_id = $id; - $result = $this->group->update($original); + $result = $this->group->update($original); if (empty($result)) { common_log_db_error($original, 'UPDATE', __FILE__); diff --git a/actions/userdesignsettings.php b/actions/userdesignsettings.php index ec688d36d..4386d55f8 100644 --- a/actions/userdesignsettings.php +++ b/actions/userdesignsettings.php @@ -34,8 +34,29 @@ if (!defined('LACONICA')) { require_once INSTALLDIR . '/lib/designsettings.php'; +/** + * Setting a user's design + * + * Saves a design for a given user + * + * @category Settings + * @package Laconica + * @author Zach Copley + * @author Sarven Capadisli + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + class UserDesignSettingsAction extends DesignSettingsAction { + /** + * Sets the right action for the form, and passes request args into + * the base action + * + * @param array $args misc. arguments + * + * @return boolean true + */ function prepare($args) { @@ -73,9 +94,10 @@ class UserDesignSettingsAction extends DesignSettingsAction * @return Design */ - function getWorkingDesign() { + function getWorkingDesign() + { - $user = common_current_user(); + $user = common_current_user(); $design = $user->getDesign(); if (empty($design)) { @@ -142,7 +164,7 @@ class UserDesignSettingsAction extends DesignSettingsAction $tile = true; } - $user = common_current_user(); + $user = common_current_user(); $design = $user->getDesign(); if (!empty($design)) { @@ -189,9 +211,9 @@ class UserDesignSettingsAction extends DesignSettingsAction return; } - $original = clone($user); + $original = clone($user); $user->design_id = $id; - $result = $user->update($original); + $result = $user->update($original); if (empty($result)) { common_log_db_error($original, 'UPDATE', __FILE__); @@ -215,9 +237,10 @@ class UserDesignSettingsAction extends DesignSettingsAction * @return nothing */ - function sethd() { + function sethd() + { - $user = common_current_user(); + $user = common_current_user(); $design = $user->getDesign(); $user->query('BEGIN'); @@ -241,9 +264,9 @@ class UserDesignSettingsAction extends DesignSettingsAction return; } - $original = clone($user); + $original = clone($user); $user->design_id = $id; - $result = $user->update($original); + $result = $user->update($original); if (empty($result)) { common_log_db_error($original, 'UPDATE', __FILE__); diff --git a/lib/designsettings.php b/lib/designsettings.php index 476621c07..fbffdb208 100644 --- a/lib/designsettings.php +++ b/lib/designsettings.php @@ -35,6 +35,20 @@ if (!defined('LACONICA')) { require_once INSTALLDIR . '/lib/accountsettingsaction.php'; require_once INSTALLDIR . '/lib/webcolor.php'; +/** + * Base class for setting a user or group design + * + * Shows the design setting form and also handles some things like saving + * background images, and fetching a default design + * + * @category Settings + * @package Laconica + * @author Zach Copley + * @author Sarven Capadisli + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + class DesignSettingsAction extends AccountSettingsAction { @@ -63,6 +77,14 @@ class DesignSettingsAction extends AccountSettingsAction 'with a background image and a colour palette of your choice.'); } + /** + * Shows the design settings form + * + * @param Design $design a working design to show + * + * @return nothing + */ + function showDesignForm($design) { @@ -94,7 +116,8 @@ class DesignSettingsAction extends AccountSettingsAction if (!empty($design->backgroundimage)) { - $this->elementStart('li', array('id' => 'design_background-image_onoff')); + $this->elementStart('li', array('id' => + 'design_background-image_onoff')); $this->element('img', array('src' => Design::url($design->backgroundimage))); @@ -136,7 +159,7 @@ class DesignSettingsAction extends AccountSettingsAction $this->elementStart('li'); $this->checkbox('design_background-image_repeat', _('Tile background image'), - ($design->disposition & BACKGROUND_TILE) ? true : false ); + ($design->disposition & BACKGROUND_TILE) ? true : false); $this->elementEnd('li'); } @@ -362,10 +385,13 @@ class DesignSettingsAction extends AccountSettingsAction /** * Save the background image, if any, and set its disposition * + * @param Design $design a working design to attach the img to + * * @return nothing */ - function saveBackgroundImage($design) { + 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 @@ -378,12 +404,12 @@ class DesignSettingsAction extends AccountSettingsAction $filepath = null; try { - $imagefile = - ImageFile::fromUpload('design_background-image_file'); - } catch (Exception $e) { - $this->showForm($e->getMessage()); - return; - } + $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), @@ -393,7 +419,14 @@ class DesignSettingsAction extends AccountSettingsAction move_uploaded_file($imagefile->filepath, $filepath); + // delete any old backround img laying around + + if (isset($design->backgroundimage)) { + @unlink(Design::path($design->backgroundimage)); + } + $original = clone($design); + $design->backgroundimage = $filename; // default to on, no tile -- cgit v1.2.3-54-g00ecf From c01e8c0bd1179b36feabefffb1226bd984c61a53 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Mon, 29 Jun 2009 17:04:09 -0700 Subject: Fixed grammar in class comment blocks --- actions/groupdesignsettings.php | 2 +- actions/userdesignsettings.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/actions/groupdesignsettings.php b/actions/groupdesignsettings.php index df34ecb42..6c1c052cb 100644 --- a/actions/groupdesignsettings.php +++ b/actions/groupdesignsettings.php @@ -35,7 +35,7 @@ if (!defined('LACONICA')) { require_once INSTALLDIR . '/lib/designsettings.php'; /** - * Setting a groups's design + * Set a group's design * * Saves a design for a given group * diff --git a/actions/userdesignsettings.php b/actions/userdesignsettings.php index 4386d55f8..d7949951a 100644 --- a/actions/userdesignsettings.php +++ b/actions/userdesignsettings.php @@ -35,7 +35,7 @@ if (!defined('LACONICA')) { require_once INSTALLDIR . '/lib/designsettings.php'; /** - * Setting a user's design + * Set a user's design * * Saves a design for a given user * -- cgit v1.2.3-54-g00ecf