Update background image settings to use bitflags

This commit is contained in:
Zach Copley 2009-06-17 02:35:51 -07:00
parent ea5d46a94d
commit 76cbeff33c
5 changed files with 93 additions and 46 deletions

View File

@ -104,37 +104,52 @@ class DesignsettingsAction extends AccountSettingsAction
'value' => ImageFile::maxFileSizeInt())); 'value' => ImageFile::maxFileSizeInt()));
$this->elementEnd('li'); $this->elementEnd('li');
$this->elementStart('li', array('id' => 'design_background-image_onoff'));
if (!empty($design->backgroundimage)) { if (!empty($design->backgroundimage)) {
$this->elementStart('li', array('id' => 'design_background-image_onoff'));
$this->element('img', array('src' => $this->element('img', array('src' =>
Design::url($design->backgroundimage))); Design::url($design->backgroundimage)));
}
$this->element('input', array('name' => 'design_background-image_onoff', $attrs = array('name' => 'design_background-image_onoff',
'type' => 'radio', 'type' => 'radio',
'id' => 'design_background-image_on', 'id' => 'design_background-image_on',
'class' => 'radio', 'class' => 'radio',
'value' => 'true', 'value' => 'on');
'checked'=> 'checked'));
$this->element('label', array('for' => 'design_background-image_on', if ($design->disposition & BACKGROUND_ON) {
'class' => 'radio'), $attrs['checked'] = 'checked';
_('On')); }
$this->element('input', array('name' => 'design_background-image_onoff',
'type' => 'radio', $this->element('input', $attrs);
'id' => 'design_background-image_off',
'class' => 'radio', $this->element('label', array('for' => 'design_background-image_on',
'value' => 'false')); 'class' => 'radio'),
$this->element('label', array('for' => 'design_background-image_off', _('On'));
'class' => 'radio'),
_('Off')); $attrs = array('name' => 'design_background-image_onoff',
$this->element('p', 'form_guide', _('Turn background image on or off.')); 'type' => 'radio',
$this->elementEnd('li'); 'id' => 'design_background-image_off',
'class' => 'radio',
'value' => 'off');
if ($design->disposition & BACKGROUND_OFF) {
$attrs['checked'] = 'checked';
}
$this->element('input', $attrs);
$this->element('label', array('for' => 'design_background-image_off',
'class' => 'radio'),
_('Off'));
$this->element('p', 'form_guide', _('Turn background image on or off.'));
$this->elementEnd('li');
}
$this->elementStart('li'); $this->elementStart('li');
$this->checkbox('design_background-image_repeat', $this->checkbox('design_background-image_repeat',
_('Tile background image'), _('Tile background image'),
$design->tile); ($design->disposition & BACKGROUND_TILE) ? true : false );
$this->elementEnd('li'); $this->elementEnd('li');
$this->elementEnd('ul'); $this->elementEnd('ul');
@ -159,7 +174,6 @@ class DesignsettingsAction extends AccountSettingsAction
'value' => '#' . $bgcolor->hexValue())); 'value' => '#' . $bgcolor->hexValue()));
$this->elementEnd('li'); $this->elementEnd('li');
$ccolor = new WebColor($design->contentcolor); $ccolor = new WebColor($design->contentcolor);
$this->elementStart('li'); $this->elementStart('li');
@ -346,7 +360,7 @@ class DesignsettingsAction extends AccountSettingsAction
$design->backgroundimage = $defaults['backgroundimage']; $design->backgroundimage = $defaults['backgroundimage'];
$deisng->tile = $defaults['tile']; $deisng->disposition = $defaults['disposition'];
} catch (WebColorException $e) { } catch (WebColorException $e) {
common_log(LOG_ERR, _('Bad default color settings: ' . common_log(LOG_ERR, _('Bad default color settings: ' .
@ -377,7 +391,23 @@ class DesignsettingsAction extends AccountSettingsAction
return; return;
} }
$tile = $this->boolean('design_background-image_repeat'); $onoff = $this->arg('design_background-image_onoff');
$on = false;
$off = false;
$tile = false;
if ($onoff == 'on') {
$on = true;
} else {
$off = true;
}
$repeat = $this->boolean('design_background-image_repeat');
if ($repeat) {
$tile = true;
}
$user = common_current_user(); $user = common_current_user();
$design = $user->getDesign(); $design = $user->getDesign();
@ -392,7 +422,8 @@ class DesignsettingsAction extends AccountSettingsAction
$design->textcolor = $tcolor->intValue(); $design->textcolor = $tcolor->intValue();
$design->linkcolor = $lcolor->intValue(); $design->linkcolor = $lcolor->intValue();
$design->backgroundimage = $filepath; $design->backgroundimage = $filepath;
$design->tile = $tile;
$design->setDisposition($on, $off, $tile);
$result = $design->update($original); $result = $design->update($original);
@ -416,7 +447,8 @@ class DesignsettingsAction extends AccountSettingsAction
$design->textcolor = $tcolor->intValue(); $design->textcolor = $tcolor->intValue();
$design->linkcolor = $lcolor->intValue(); $design->linkcolor = $lcolor->intValue();
$design->backgroundimage = $filepath; $design->backgroundimage = $filepath;
$design->tile = $tile;
$design->setDisposition($on, $off, $tile);
$id = $design->insert(); $id = $design->insert();
@ -481,16 +513,4 @@ class DesignsettingsAction extends AccountSettingsAction
$this->showForm(_('Design preferences saved.'), true); $this->showForm(_('Design preferences saved.'), true);
} }
/**
* Reset design settings to previous saved value if any, or
* the defaults
*
* @return void
*/
function resetDesign()
{
$this->showForm(_('Design preferences reset.'), true);
}
} }

View File

@ -21,6 +21,10 @@ if (!defined('LACONICA')) {
exit(1); exit(1);
} }
define('BACKGROUND_ON', 1);
define('BACKGROUND_OFF', 2);
define('BACKGROUND_TILE', 4);
/** /**
* Table Definition for design * Table Definition for design
*/ */
@ -41,7 +45,7 @@ class Design extends Memcached_DataObject
public $textcolor; // int(4) public $textcolor; // int(4)
public $linkcolor; // int(4) public $linkcolor; // int(4)
public $backgroundimage; // varchar(255) public $backgroundimage; // varchar(255)
public $tile; // tinyint(1) public $disposition; // tinyint(1) default_1
/* Static get */ /* Static get */
function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Design',$k,$v); } function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Design',$k,$v); }
@ -72,9 +76,11 @@ class Design extends Memcached_DataObject
$css .= 'html body { color: #'. $tcolor->hexValue() . '} '. "\n"; $css .= 'html body { color: #'. $tcolor->hexValue() . '} '. "\n";
$css .= 'a { color: #' . $lcolor->hexValue() . '} ' . "\n"; $css .= 'a { color: #' . $lcolor->hexValue() . '} ' . "\n";
if (!empty($this->backgroundimage)) { if (!empty($this->backgroundimage) &&
$this->disposition & BACKGROUND_ON) {
$repeat = ($this->tile) ? 'background-repeat:repeat;' : $repeat = ($this->disposition & BACKGROUND_TILE) ?
'background-repeat:repeat;' :
'background-repeat:no-repeat;'; 'background-repeat:no-repeat;';
$css .= 'body { background-image:url(' . $css .= 'body { background-image:url(' .
@ -125,4 +131,25 @@ class Design extends Memcached_DataObject
return 'http://'.$server.$path.$filename; return 'http://'.$server.$path.$filename;
} }
function setDisposition($on, $off, $tile)
{
if ($on) {
$this->disposition |= BACKGROUND_ON;
} else {
$this->disposition &= ~BACKGROUND_ON;
}
if ($off) {
$this->disposition |= BACKGROUND_OFF;
} else {
$this->disposition &= ~BACKGROUND_OFF;
}
if ($tile) {
$this->disposition |= BACKGROUND_TILE;
} else {
$this->disposition &= ~BACKGROUND_TILE;
}
}
} }

View File

@ -46,7 +46,7 @@ sidebarcolor = 1
textcolor = 1 textcolor = 1
linkcolor = 1 linkcolor = 1
backgroundimage = 2 backgroundimage = 2
tile = 17 disposition = 17
[design__keys] [design__keys]
id = N id = N

View File

@ -496,7 +496,7 @@ create table design (
textcolor integer comment 'text color', textcolor integer comment 'text color',
linkcolor integer comment 'link color', linkcolor integer comment 'link color',
backgroundimage varchar(255) comment 'background image, if any', backgroundimage varchar(255) comment 'background image, if any',
tile tinyint default 0 comment 'tile background image' disposition tinyint default 1 comment 'bit 1 = hide background image, bit 2 = display background image, bit 4 = tile background image'
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
create table group_block ( create table group_block (

View File

@ -79,7 +79,7 @@ $config =
'textcolor' => '#000000', 'textcolor' => '#000000',
'linkcolor' => '#002E6E', 'linkcolor' => '#002E6E',
'backgroundimage' => null, 'backgroundimage' => null,
'tile' => true), 'disposition' => 1),
'path' => $_path, 'path' => $_path,
'logfile' => null, 'logfile' => null,
'logo' => null, 'logo' => null,