diff options
author | Zach Copley <zach@controlyourself.ca> | 2009-06-17 18:49:25 -0700 |
---|---|---|
committer | Zach Copley <zach@controlyourself.ca> | 2009-06-17 18:49:25 -0700 |
commit | 6c7bdf9df67d02d26d3052e7fba5a80c482aacb8 (patch) | |
tree | 41bb18e5c8e3d873aefaf3a07bf9fd287f2aaeed /classes | |
parent | 85b4c24188502ce3f8cef32cfba37ab91c8a648f (diff) | |
parent | 00736bddd199b2a43820367c3476b9e9ec84c0db (diff) |
Merge branch 'userdesign' into 0.8.x
* userdesign: (56 commits)
Fix for background image repetition for various page heights
Removed height:100% for better background image repetition
A little more specific selector for notice reply
Have user favorites page show user's design
Placed a check to make sure there is a reply button in a notice before
Make MailboxAction read only
Remove stale reference to deprecated personal.php
Uppercase hex color values
Default to image being on, no tile after upload
Fix sidebar color bug default design
Update background image settings to use bitflags
It was accidently removed
Dynamically tile background image and turn background image on or off
Show a background img in settings form
IE7/8 CSS update for user design
Enable tiling of background imgs for Designs
Added background image tile flag to Design
Init styles for tile and image use on/off for user design settings
Added form option to tile background image and to turn it on and off
Add background dir
...
Diffstat (limited to 'classes')
-rw-r--r-- | classes/Design.php | 155 | ||||
-rw-r--r-- | classes/User.php | 12 | ||||
-rwxr-xr-x[-rw-r--r--] | classes/laconica.ini | 15 |
3 files changed, 178 insertions, 4 deletions
diff --git a/classes/Design.php b/classes/Design.php new file mode 100644 index 000000000..da4b670be --- /dev/null +++ b/classes/Design.php @@ -0,0 +1,155 @@ +<?php +/* + * Laconica - the distributed open-source microblogging tool + * Copyright (C) 2009, Control Yourself, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('LACONICA')) { + exit(1); +} + +define('BACKGROUND_ON', 1); +define('BACKGROUND_OFF', 2); +define('BACKGROUND_TILE', 4); + +/** + * Table Definition for design + */ + +require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; +require_once INSTALLDIR . '/lib/webcolor.php'; + +class Design extends Memcached_DataObject +{ + ###START_AUTOCODE + /* the code below is auto generated do not remove the above tag */ + + public $__table = 'design'; // table name + public $id; // int(4) primary_key not_null + public $backgroundcolor; // int(4) + public $contentcolor; // int(4) + public $sidebarcolor; // int(4) + public $textcolor; // int(4) + public $linkcolor; // int(4) + public $backgroundimage; // varchar(255) + public $disposition; // tinyint(1) default_1 + + /* Static get */ + function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Design',$k,$v); } + + /* the code above is auto generated do not remove the tag below */ + ###END_AUTOCODE + + function showCSS($out) + { + try { + + $bgcolor = new WebColor($this->backgroundcolor); + $ccolor = new WebColor($this->contentcolor); + $sbcolor = new WebColor($this->sidebarcolor); + $tcolor = new WebColor($this->textcolor); + $lcolor = new WebColor($this->linkcolor); + + } catch (WebColorException $e) { + // This shouldn't happen + common_log(LOG_ERR, "Unable to create color for design $id.", + __FILE__); + } + + $css = 'body { background-color: #' . $bgcolor->hexValue() . ' }' . "\n"; + $css .= '#content, #site_nav_local_views .current a { background-color: #'; + $css .= $ccolor->hexValue() . '} '."\n"; + $css .= '#aside_primary { background-color: #'. $sbcolor->hexValue() . ' }' . "\n"; + $css .= 'html body { color: #'. $tcolor->hexValue() . ' }'. "\n"; + $css .= 'a { color: #' . $lcolor->hexValue() . ' }' . "\n"; + + if (!empty($this->backgroundimage) && + $this->disposition & BACKGROUND_ON) { + + $repeat = ($this->disposition & BACKGROUND_TILE) ? + 'background-repeat:repeat;' : + 'background-repeat:no-repeat;'; + + $css .= 'body { background-image:url(' . + Design::url($this->backgroundimage) . + '); ' . $repeat . ' }' . "\n"; + } + + $out->element('style', array('type' => 'text/css'), $css); + + } + + static function filename($id, $extension, $extra=null) + { + return $id . (($extra) ? ('-' . $extra) : '') . $extension; + } + + static function path($filename) + { + $dir = common_config('background', 'dir'); + + if ($dir[strlen($dir)-1] != '/') { + $dir .= '/'; + } + + return $dir . $filename; + } + + static function url($filename) + { + $path = common_config('background', 'path'); + + if ($path[strlen($path)-1] != '/') { + $path .= '/'; + } + + if ($path[0] != '/') { + $path = '/'.$path; + } + + $server = common_config('background', 'server'); + + if (empty($server)) { + $server = common_config('site', 'server'); + } + + // XXX: protocol + + 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; + } + } + +} diff --git a/classes/User.php b/classes/User.php index 08a166d5a..c7eede94e 100644 --- a/classes/User.php +++ b/classes/User.php @@ -62,14 +62,13 @@ class User extends Memcached_DataObject public $autosubscribe; // tinyint(1) public $urlshorteningservice; // varchar(50) default_ur1.ca public $inboxed; // tinyint(1) + public $design_id; // int(4) + public $viewdesigns; // tinyint(1) default_1 public $created; // datetime() not_null public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) - { - return Memcached_DataObject::staticGet('User',$k,$v); - } + function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -684,4 +683,9 @@ class User extends Memcached_DataObject return ($cnt > 0); } + + function getDesign() + { + return Design::staticGet('id', $this->design_id); + } } diff --git a/classes/laconica.ini b/classes/laconica.ini index df292bbff..1a650aba5 100644..100755 --- a/classes/laconica.ini +++ b/classes/laconica.ini @@ -38,6 +38,19 @@ modified = 384 [consumer__keys] consumer_key = K +[design] +id = 129 +backgroundcolor = 1 +contentcolor = 1 +sidebarcolor = 1 +textcolor = 1 +linkcolor = 1 +backgroundimage = 2 +disposition = 17 + +[design__keys] +id = N + [fave] notice_id = 129 user_id = 129 @@ -430,6 +443,8 @@ uri = 2 autosubscribe = 17 urlshorteningservice = 2 inboxed = 17 +design_id = 1 +viewdesigns = 17 created = 142 modified = 384 |