summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorZach Copley <zach@controlyourself.ca>2009-06-17 18:49:25 -0700
committerZach Copley <zach@controlyourself.ca>2009-06-17 18:49:25 -0700
commit6c7bdf9df67d02d26d3052e7fba5a80c482aacb8 (patch)
tree41bb18e5c8e3d873aefaf3a07bf9fd287f2aaeed /classes
parent85b4c24188502ce3f8cef32cfba37ab91c8a648f (diff)
parent00736bddd199b2a43820367c3476b9e9ec84c0db (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.php155
-rw-r--r--classes/User.php12
-rwxr-xr-x[-rw-r--r--]classes/laconica.ini15
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