From a11432db93dbfdb0dbc78e1dd384663439799559 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 23 May 2011 06:53:31 +0200
Subject: [PATCH 01/13] first try to implement theming support, which currently
does not work at all
---
data/config.default.php | 9 ++++++++
data/templates/{ => default}/about.tpl.php | 0
data/templates/{ => default}/admin.tpl.php | 0
.../bookmarkcommondescriptionedit.tpl.php | 0
.../{ => default}/bookmarklet.inc.php | 0
.../bookmarks-thumbnail.inc.tpl.php | 0
.../bookmarks-vote-horizontal.inc.tpl.php | 0
.../{ => default}/bookmarks-vote.inc.tpl.php | 0
.../templates/{ => default}/bookmarks.tpl.php | 0
data/templates/{ => default}/bottom.inc.php | 0
data/templates/{ => default}/dojo.inc.php | 0
.../{ => default}/dynamictags.inc.php | 0
.../{ => default}/editbookmark.tpl.php | 0
.../editprofile-sslclientcerts.tpl.php | 0
.../{ => default}/editprofile.tpl.php | 0
.../templates/{ => default}/error.404.tpl.php | 0
.../templates/{ => default}/error.500.tpl.php | 0
.../{ => default}/importDelicious.tpl.php | 0
.../{ => default}/importNetscape.tpl.php | 0
.../{ => default}/importStructure.tpl.php | 0
data/templates/{ => default}/login.tpl.php | 0
data/templates/{ => default}/password.tpl.php | 0
data/templates/{ => default}/profile.tpl.php | 0
data/templates/{ => default}/register.tpl.php | 0
data/templates/{ => default}/rss.tpl.php | 0
data/templates/{ => default}/search.menu.php | 0
.../{ => default}/sidebar.block.common.php | 0
.../{ => default}/sidebar.block.linked.php | 0
.../{ => default}/sidebar.block.menu.php | 0
.../{ => default}/sidebar.block.menu2.php | 0
.../{ => default}/sidebar.block.popular.php | 0
.../{ => default}/sidebar.block.recent.php | 0
.../{ => default}/sidebar.block.related.php | 0
.../{ => default}/sidebar.block.search.php | 0
.../sidebar.block.tagactions.php | 0
.../{ => default}/sidebar.block.users.php | 0
.../{ => default}/sidebar.block.watchlist.php | 0
.../sidebar.block.watchstatus.php | 0
.../{ => default}/sidebar.linkedtags.inc.php | 0
data/templates/{ => default}/sidebar.tpl.php | 0
.../{ => default}/tag2tagadd.tpl.php | 0
.../{ => default}/tag2tagdelete.tpl.php | 0
.../{ => default}/tag2tagedit.tpl.php | 0
.../tagcommondescriptionedit.tpl.php | 0
.../templates/{ => default}/tagdelete.tpl.php | 0
data/templates/{ => default}/tagedit.tpl.php | 0
.../templates/{ => default}/tagrename.tpl.php | 0
data/templates/{ => default}/tags.tpl.php | 0
data/templates/{ => default}/toolbar.inc.php | 0
data/templates/{ => default}/top.inc.php | 0
data/templates/{ => default}/users.tpl.php | 0
src/SemanticScuttle/Model/Template.php | 3 +++
src/SemanticScuttle/Service/Template.php | 23 +++++++++++++++++--
53 files changed, 33 insertions(+), 2 deletions(-)
rename data/templates/{ => default}/about.tpl.php (100%)
rename data/templates/{ => default}/admin.tpl.php (100%)
rename data/templates/{ => default}/bookmarkcommondescriptionedit.tpl.php (100%)
rename data/templates/{ => default}/bookmarklet.inc.php (100%)
rename data/templates/{ => default}/bookmarks-thumbnail.inc.tpl.php (100%)
rename data/templates/{ => default}/bookmarks-vote-horizontal.inc.tpl.php (100%)
rename data/templates/{ => default}/bookmarks-vote.inc.tpl.php (100%)
rename data/templates/{ => default}/bookmarks.tpl.php (100%)
rename data/templates/{ => default}/bottom.inc.php (100%)
rename data/templates/{ => default}/dojo.inc.php (100%)
rename data/templates/{ => default}/dynamictags.inc.php (100%)
rename data/templates/{ => default}/editbookmark.tpl.php (100%)
rename data/templates/{ => default}/editprofile-sslclientcerts.tpl.php (100%)
rename data/templates/{ => default}/editprofile.tpl.php (100%)
rename data/templates/{ => default}/error.404.tpl.php (100%)
rename data/templates/{ => default}/error.500.tpl.php (100%)
rename data/templates/{ => default}/importDelicious.tpl.php (100%)
rename data/templates/{ => default}/importNetscape.tpl.php (100%)
rename data/templates/{ => default}/importStructure.tpl.php (100%)
rename data/templates/{ => default}/login.tpl.php (100%)
rename data/templates/{ => default}/password.tpl.php (100%)
rename data/templates/{ => default}/profile.tpl.php (100%)
rename data/templates/{ => default}/register.tpl.php (100%)
rename data/templates/{ => default}/rss.tpl.php (100%)
rename data/templates/{ => default}/search.menu.php (100%)
rename data/templates/{ => default}/sidebar.block.common.php (100%)
rename data/templates/{ => default}/sidebar.block.linked.php (100%)
rename data/templates/{ => default}/sidebar.block.menu.php (100%)
rename data/templates/{ => default}/sidebar.block.menu2.php (100%)
rename data/templates/{ => default}/sidebar.block.popular.php (100%)
rename data/templates/{ => default}/sidebar.block.recent.php (100%)
rename data/templates/{ => default}/sidebar.block.related.php (100%)
rename data/templates/{ => default}/sidebar.block.search.php (100%)
rename data/templates/{ => default}/sidebar.block.tagactions.php (100%)
rename data/templates/{ => default}/sidebar.block.users.php (100%)
rename data/templates/{ => default}/sidebar.block.watchlist.php (100%)
rename data/templates/{ => default}/sidebar.block.watchstatus.php (100%)
rename data/templates/{ => default}/sidebar.linkedtags.inc.php (100%)
rename data/templates/{ => default}/sidebar.tpl.php (100%)
rename data/templates/{ => default}/tag2tagadd.tpl.php (100%)
rename data/templates/{ => default}/tag2tagdelete.tpl.php (100%)
rename data/templates/{ => default}/tag2tagedit.tpl.php (100%)
rename data/templates/{ => default}/tagcommondescriptionedit.tpl.php (100%)
rename data/templates/{ => default}/tagdelete.tpl.php (100%)
rename data/templates/{ => default}/tagedit.tpl.php (100%)
rename data/templates/{ => default}/tagrename.tpl.php (100%)
rename data/templates/{ => default}/tags.tpl.php (100%)
rename data/templates/{ => default}/toolbar.inc.php (100%)
rename data/templates/{ => default}/top.inc.php (100%)
rename data/templates/{ => default}/users.tpl.php (100%)
diff --git a/data/config.default.php b/data/config.default.php
index 8c47e0b..c850521 100644
--- a/data/config.default.php
+++ b/data/config.default.php
@@ -63,6 +63,15 @@ $sidebarTopMessage = '';
*/
$sidebarBottomMessage = '';
+/**
+ * The HTML theme to use. With themes, you can give your semanticscuttle
+ * installation a new look.
+ *
+ * Themes are the folders in data/templates/
+ *
+ * @var string
+ */
+$theme = 'default';
/***************************************************
diff --git a/data/templates/about.tpl.php b/data/templates/default/about.tpl.php
similarity index 100%
rename from data/templates/about.tpl.php
rename to data/templates/default/about.tpl.php
diff --git a/data/templates/admin.tpl.php b/data/templates/default/admin.tpl.php
similarity index 100%
rename from data/templates/admin.tpl.php
rename to data/templates/default/admin.tpl.php
diff --git a/data/templates/bookmarkcommondescriptionedit.tpl.php b/data/templates/default/bookmarkcommondescriptionedit.tpl.php
similarity index 100%
rename from data/templates/bookmarkcommondescriptionedit.tpl.php
rename to data/templates/default/bookmarkcommondescriptionedit.tpl.php
diff --git a/data/templates/bookmarklet.inc.php b/data/templates/default/bookmarklet.inc.php
similarity index 100%
rename from data/templates/bookmarklet.inc.php
rename to data/templates/default/bookmarklet.inc.php
diff --git a/data/templates/bookmarks-thumbnail.inc.tpl.php b/data/templates/default/bookmarks-thumbnail.inc.tpl.php
similarity index 100%
rename from data/templates/bookmarks-thumbnail.inc.tpl.php
rename to data/templates/default/bookmarks-thumbnail.inc.tpl.php
diff --git a/data/templates/bookmarks-vote-horizontal.inc.tpl.php b/data/templates/default/bookmarks-vote-horizontal.inc.tpl.php
similarity index 100%
rename from data/templates/bookmarks-vote-horizontal.inc.tpl.php
rename to data/templates/default/bookmarks-vote-horizontal.inc.tpl.php
diff --git a/data/templates/bookmarks-vote.inc.tpl.php b/data/templates/default/bookmarks-vote.inc.tpl.php
similarity index 100%
rename from data/templates/bookmarks-vote.inc.tpl.php
rename to data/templates/default/bookmarks-vote.inc.tpl.php
diff --git a/data/templates/bookmarks.tpl.php b/data/templates/default/bookmarks.tpl.php
similarity index 100%
rename from data/templates/bookmarks.tpl.php
rename to data/templates/default/bookmarks.tpl.php
diff --git a/data/templates/bottom.inc.php b/data/templates/default/bottom.inc.php
similarity index 100%
rename from data/templates/bottom.inc.php
rename to data/templates/default/bottom.inc.php
diff --git a/data/templates/dojo.inc.php b/data/templates/default/dojo.inc.php
similarity index 100%
rename from data/templates/dojo.inc.php
rename to data/templates/default/dojo.inc.php
diff --git a/data/templates/dynamictags.inc.php b/data/templates/default/dynamictags.inc.php
similarity index 100%
rename from data/templates/dynamictags.inc.php
rename to data/templates/default/dynamictags.inc.php
diff --git a/data/templates/editbookmark.tpl.php b/data/templates/default/editbookmark.tpl.php
similarity index 100%
rename from data/templates/editbookmark.tpl.php
rename to data/templates/default/editbookmark.tpl.php
diff --git a/data/templates/editprofile-sslclientcerts.tpl.php b/data/templates/default/editprofile-sslclientcerts.tpl.php
similarity index 100%
rename from data/templates/editprofile-sslclientcerts.tpl.php
rename to data/templates/default/editprofile-sslclientcerts.tpl.php
diff --git a/data/templates/editprofile.tpl.php b/data/templates/default/editprofile.tpl.php
similarity index 100%
rename from data/templates/editprofile.tpl.php
rename to data/templates/default/editprofile.tpl.php
diff --git a/data/templates/error.404.tpl.php b/data/templates/default/error.404.tpl.php
similarity index 100%
rename from data/templates/error.404.tpl.php
rename to data/templates/default/error.404.tpl.php
diff --git a/data/templates/error.500.tpl.php b/data/templates/default/error.500.tpl.php
similarity index 100%
rename from data/templates/error.500.tpl.php
rename to data/templates/default/error.500.tpl.php
diff --git a/data/templates/importDelicious.tpl.php b/data/templates/default/importDelicious.tpl.php
similarity index 100%
rename from data/templates/importDelicious.tpl.php
rename to data/templates/default/importDelicious.tpl.php
diff --git a/data/templates/importNetscape.tpl.php b/data/templates/default/importNetscape.tpl.php
similarity index 100%
rename from data/templates/importNetscape.tpl.php
rename to data/templates/default/importNetscape.tpl.php
diff --git a/data/templates/importStructure.tpl.php b/data/templates/default/importStructure.tpl.php
similarity index 100%
rename from data/templates/importStructure.tpl.php
rename to data/templates/default/importStructure.tpl.php
diff --git a/data/templates/login.tpl.php b/data/templates/default/login.tpl.php
similarity index 100%
rename from data/templates/login.tpl.php
rename to data/templates/default/login.tpl.php
diff --git a/data/templates/password.tpl.php b/data/templates/default/password.tpl.php
similarity index 100%
rename from data/templates/password.tpl.php
rename to data/templates/default/password.tpl.php
diff --git a/data/templates/profile.tpl.php b/data/templates/default/profile.tpl.php
similarity index 100%
rename from data/templates/profile.tpl.php
rename to data/templates/default/profile.tpl.php
diff --git a/data/templates/register.tpl.php b/data/templates/default/register.tpl.php
similarity index 100%
rename from data/templates/register.tpl.php
rename to data/templates/default/register.tpl.php
diff --git a/data/templates/rss.tpl.php b/data/templates/default/rss.tpl.php
similarity index 100%
rename from data/templates/rss.tpl.php
rename to data/templates/default/rss.tpl.php
diff --git a/data/templates/search.menu.php b/data/templates/default/search.menu.php
similarity index 100%
rename from data/templates/search.menu.php
rename to data/templates/default/search.menu.php
diff --git a/data/templates/sidebar.block.common.php b/data/templates/default/sidebar.block.common.php
similarity index 100%
rename from data/templates/sidebar.block.common.php
rename to data/templates/default/sidebar.block.common.php
diff --git a/data/templates/sidebar.block.linked.php b/data/templates/default/sidebar.block.linked.php
similarity index 100%
rename from data/templates/sidebar.block.linked.php
rename to data/templates/default/sidebar.block.linked.php
diff --git a/data/templates/sidebar.block.menu.php b/data/templates/default/sidebar.block.menu.php
similarity index 100%
rename from data/templates/sidebar.block.menu.php
rename to data/templates/default/sidebar.block.menu.php
diff --git a/data/templates/sidebar.block.menu2.php b/data/templates/default/sidebar.block.menu2.php
similarity index 100%
rename from data/templates/sidebar.block.menu2.php
rename to data/templates/default/sidebar.block.menu2.php
diff --git a/data/templates/sidebar.block.popular.php b/data/templates/default/sidebar.block.popular.php
similarity index 100%
rename from data/templates/sidebar.block.popular.php
rename to data/templates/default/sidebar.block.popular.php
diff --git a/data/templates/sidebar.block.recent.php b/data/templates/default/sidebar.block.recent.php
similarity index 100%
rename from data/templates/sidebar.block.recent.php
rename to data/templates/default/sidebar.block.recent.php
diff --git a/data/templates/sidebar.block.related.php b/data/templates/default/sidebar.block.related.php
similarity index 100%
rename from data/templates/sidebar.block.related.php
rename to data/templates/default/sidebar.block.related.php
diff --git a/data/templates/sidebar.block.search.php b/data/templates/default/sidebar.block.search.php
similarity index 100%
rename from data/templates/sidebar.block.search.php
rename to data/templates/default/sidebar.block.search.php
diff --git a/data/templates/sidebar.block.tagactions.php b/data/templates/default/sidebar.block.tagactions.php
similarity index 100%
rename from data/templates/sidebar.block.tagactions.php
rename to data/templates/default/sidebar.block.tagactions.php
diff --git a/data/templates/sidebar.block.users.php b/data/templates/default/sidebar.block.users.php
similarity index 100%
rename from data/templates/sidebar.block.users.php
rename to data/templates/default/sidebar.block.users.php
diff --git a/data/templates/sidebar.block.watchlist.php b/data/templates/default/sidebar.block.watchlist.php
similarity index 100%
rename from data/templates/sidebar.block.watchlist.php
rename to data/templates/default/sidebar.block.watchlist.php
diff --git a/data/templates/sidebar.block.watchstatus.php b/data/templates/default/sidebar.block.watchstatus.php
similarity index 100%
rename from data/templates/sidebar.block.watchstatus.php
rename to data/templates/default/sidebar.block.watchstatus.php
diff --git a/data/templates/sidebar.linkedtags.inc.php b/data/templates/default/sidebar.linkedtags.inc.php
similarity index 100%
rename from data/templates/sidebar.linkedtags.inc.php
rename to data/templates/default/sidebar.linkedtags.inc.php
diff --git a/data/templates/sidebar.tpl.php b/data/templates/default/sidebar.tpl.php
similarity index 100%
rename from data/templates/sidebar.tpl.php
rename to data/templates/default/sidebar.tpl.php
diff --git a/data/templates/tag2tagadd.tpl.php b/data/templates/default/tag2tagadd.tpl.php
similarity index 100%
rename from data/templates/tag2tagadd.tpl.php
rename to data/templates/default/tag2tagadd.tpl.php
diff --git a/data/templates/tag2tagdelete.tpl.php b/data/templates/default/tag2tagdelete.tpl.php
similarity index 100%
rename from data/templates/tag2tagdelete.tpl.php
rename to data/templates/default/tag2tagdelete.tpl.php
diff --git a/data/templates/tag2tagedit.tpl.php b/data/templates/default/tag2tagedit.tpl.php
similarity index 100%
rename from data/templates/tag2tagedit.tpl.php
rename to data/templates/default/tag2tagedit.tpl.php
diff --git a/data/templates/tagcommondescriptionedit.tpl.php b/data/templates/default/tagcommondescriptionedit.tpl.php
similarity index 100%
rename from data/templates/tagcommondescriptionedit.tpl.php
rename to data/templates/default/tagcommondescriptionedit.tpl.php
diff --git a/data/templates/tagdelete.tpl.php b/data/templates/default/tagdelete.tpl.php
similarity index 100%
rename from data/templates/tagdelete.tpl.php
rename to data/templates/default/tagdelete.tpl.php
diff --git a/data/templates/tagedit.tpl.php b/data/templates/default/tagedit.tpl.php
similarity index 100%
rename from data/templates/tagedit.tpl.php
rename to data/templates/default/tagedit.tpl.php
diff --git a/data/templates/tagrename.tpl.php b/data/templates/default/tagrename.tpl.php
similarity index 100%
rename from data/templates/tagrename.tpl.php
rename to data/templates/default/tagrename.tpl.php
diff --git a/data/templates/tags.tpl.php b/data/templates/default/tags.tpl.php
similarity index 100%
rename from data/templates/tags.tpl.php
rename to data/templates/default/tags.tpl.php
diff --git a/data/templates/toolbar.inc.php b/data/templates/default/toolbar.inc.php
similarity index 100%
rename from data/templates/toolbar.inc.php
rename to data/templates/default/toolbar.inc.php
diff --git a/data/templates/top.inc.php b/data/templates/default/top.inc.php
similarity index 100%
rename from data/templates/top.inc.php
rename to data/templates/default/top.inc.php
diff --git a/data/templates/users.tpl.php b/data/templates/default/users.tpl.php
similarity index 100%
rename from data/templates/users.tpl.php
rename to data/templates/default/users.tpl.php
diff --git a/src/SemanticScuttle/Model/Template.php b/src/SemanticScuttle/Model/Template.php
index ff5fbbe..234e23f 100644
--- a/src/SemanticScuttle/Model/Template.php
+++ b/src/SemanticScuttle/Model/Template.php
@@ -76,6 +76,9 @@ class SemanticScuttle_Model_Template
* Sets variables and includes the template file,
* causing it to be rendered.
*
+ * Does not take care of themes and so.
+ * The include path must be set so the correct theme is used.
+ *
* @return void
*/
public function parse()
diff --git a/src/SemanticScuttle/Service/Template.php b/src/SemanticScuttle/Service/Template.php
index efa8d28..df96344 100644
--- a/src/SemanticScuttle/Service/Template.php
+++ b/src/SemanticScuttle/Service/Template.php
@@ -38,6 +38,14 @@ class SemanticScuttle_Service_Template extends SemanticScuttle_Service
*/
protected $basedir;
+ /**
+ * The template theme to use.
+ * Set in constructor from $GLOBALS['theme']
+ *
+ * @var string
+ */
+ protected $theme;
+
/**
@@ -64,6 +72,8 @@ class SemanticScuttle_Service_Template extends SemanticScuttle_Service
protected function __construct()
{
$this->basedir = $GLOBALS['TEMPLATES_DIR'];
+ $this->theme = $GLOBALS['theme'];
+ //FIXME: verify the theme exists
}
@@ -77,16 +87,25 @@ class SemanticScuttle_Service_Template extends SemanticScuttle_Service
*
* @return SemanticScuttle_Model_Template Template object
*/
- function loadTemplate($template, $vars = null)
+ public function loadTemplate($template, $vars = null)
{
if (substr($template, -4) != '.php') {
$template .= '.php';
}
+
+ $oldIncPath = get_include_path();
+ set_include_path(
+ $this->basedir . $this->theme
+ . PATH_SEPARATOR . $this->basedir . 'default'
+ );
+
$tpl = new SemanticScuttle_Model_Template(
- $this->basedir .'/'. $template, $vars, $this
+ $template, $vars, $this
);
$tpl->parse();
+ set_include_path($oldIncPath);
+
return $tpl;
}
}
From 581eca06d61d3cf9213f80b7540072cf2098f0f6 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 23 May 2011 06:56:46 +0200
Subject: [PATCH 02/13] make themes work
---
src/SemanticScuttle/Service/Template.php | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/SemanticScuttle/Service/Template.php b/src/SemanticScuttle/Service/Template.php
index df96344..2a683d6 100644
--- a/src/SemanticScuttle/Service/Template.php
+++ b/src/SemanticScuttle/Service/Template.php
@@ -97,6 +97,8 @@ class SemanticScuttle_Service_Template extends SemanticScuttle_Service
set_include_path(
$this->basedir . $this->theme
. PATH_SEPARATOR . $this->basedir . 'default'
+ //needed since services are instantiated in templates
+ . PATH_SEPARATOR . $oldIncPath
);
$tpl = new SemanticScuttle_Model_Template(
From 2d2e7f97e43ec97884a032213952aed2deb6616d Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 23 May 2011 07:35:36 +0200
Subject: [PATCH 03/13] first themes docs
---
doc/themes.rst | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
create mode 100644 doc/themes.rst
diff --git a/doc/themes.rst b/doc/themes.rst
new file mode 100644
index 0000000..72a4c8d
--- /dev/null
+++ b/doc/themes.rst
@@ -0,0 +1,32 @@
+======================
+SemanticScuttle Themes
+======================
+SemanticScuttle may be changed visually by supplying custom "themes" that
+modify the visual appearance.
+
+
+Changing the current theme
+==========================
+In ``data/config.php``, set your theme like this:
+
+ $theme = 'darkmood';
+
+
+Changeable files
+================
+
+CSS file
+--------
+FIXME, missing at the moment
+
+
+Template files
+--------------
+The templates of the default file are located in
+
+ data/templates/default/
+
+You may put your theme template files into
+
+ data/templates/$themename/
+
From 3e3c070b31df956daf7dbe47a510733b22d2ceef Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 23 May 2011 18:10:51 +0200
Subject: [PATCH 04/13] move image and css files to theme folder
---
data/templates/default/bookmarks.tpl.php | 10 +++++-----
data/templates/default/top.inc.php | 4 ++--
www/jsScuttle.php | 4 ++--
www/{ => themes/default}/icon.png | Bin
www/{ => themes/default}/images/b_edit.png | Bin
www/{ => themes/default}/images/bg_admin.png | Bin
www/{ => themes/default}/images/bg_bar.png | Bin
www/{ => themes/default}/images/bg_header.png | Bin
www/{ => themes/default}/images/bg_sidebar.png | Bin
www/{ => themes/default}/images/loading.gif | Bin
www/{ => themes/default}/images/logo.png | Bin
www/{ => themes/default}/images/logo_24.gif | Bin
www/{ => themes/default}/images/rss.gif | Bin
www/{ => themes/default}/images/thumbs_up.orig.png | Bin
.../default}/images/vote-against-voted.png | Bin
www/{ => themes/default}/images/vote-against.png | Bin
www/{ => themes/default}/images/vote-for-voted.png | Bin
www/{ => themes/default}/images/vote-for.png | Bin
www/{ => themes/default}/scuttle.css | 0
19 files changed, 9 insertions(+), 9 deletions(-)
rename www/{ => themes/default}/icon.png (100%)
rename www/{ => themes/default}/images/b_edit.png (100%)
rename www/{ => themes/default}/images/bg_admin.png (100%)
rename www/{ => themes/default}/images/bg_bar.png (100%)
rename www/{ => themes/default}/images/bg_header.png (100%)
rename www/{ => themes/default}/images/bg_sidebar.png (100%)
rename www/{ => themes/default}/images/loading.gif (100%)
rename www/{ => themes/default}/images/logo.png (100%)
rename www/{ => themes/default}/images/logo_24.gif (100%)
rename www/{ => themes/default}/images/rss.gif (100%)
rename www/{ => themes/default}/images/thumbs_up.orig.png (100%)
rename www/{ => themes/default}/images/vote-against-voted.png (100%)
rename www/{ => themes/default}/images/vote-against.png (100%)
rename www/{ => themes/default}/images/vote-for-voted.png (100%)
rename www/{ => themes/default}/images/vote-for.png (100%)
rename www/{ => themes/default}/scuttle.css (100%)
diff --git a/data/templates/default/bookmarks.tpl.php b/data/templates/default/bookmarks.tpl.php
index 55d6a0f..93bcf53 100644
--- a/data/templates/default/bookmarks.tpl.php
+++ b/data/templates/default/bookmarks.tpl.php
@@ -39,7 +39,7 @@ include('search.menu.php');
isAdmin($userid) && $pageName != PAGE_WATCHLIST) : ?>
@@ -70,7 +70,7 @@ if ($userservice->isLoggedOn()) {
) {
echo ' ';
echo !is_array($cDescription) || strlen($cDescription['cdDescription'])==0?T_('Edit the common description of this tag'):'';
- echo ' ';
+ echo ' ';
} else if (isset($hash)) {
echo ' (';
echo T_('Edit the common description of this bookmark').' )';
@@ -95,7 +95,7 @@ if($userservice->isLoggedOn()) {
if($currenttag!= '') {
echo ' ';
echo strlen($pDescription['tDescription'])==0?T_('Edit your personal description of this tag'):'';
- echo ' ';
+ echo ' ';
}
}
?>
@@ -221,7 +221,7 @@ if ($currenttag!= '') {
for ($i = 0; $i < $size; $i++) {
$brss = ''
- . ' '
+ . ' '
. ' ';
}
@@ -363,7 +363,7 @@ if ($currenttag!= '') {
// Admin specific design
if ($userservice->isAdmin($row['username']) && $GLOBALS['enableAdminColors']) {
$adminBgClass = ' class="adminBackground"';
- $adminStar = ' ';
+ $adminStar = ' ';
} else {
$adminBgClass = '';
$adminStar = '';
diff --git a/data/templates/default/top.inc.php b/data/templates/default/top.inc.php
index bdd4b1a..6ad2df2 100644
--- a/data/templates/default/top.inc.php
+++ b/data/templates/default/top.inc.php
@@ -4,8 +4,8 @@
-
-
+
+
images/loading.gif)';
+ usernameField.style.backgroundImage = 'url(/images/loading.gif)';
if (response != '') {
usernameField.style.backgroundImage = 'none';
if (response == 'true') {
@@ -92,7 +92,7 @@ function useAddress(ele) {
function getTitle(input, response){
var title = document.getElementById('titleField');
if (title.value == '') {
- title.style.backgroundImage = 'url(images/loading.gif)';
+ title.style.backgroundImage = 'url(/images/loading.gif)';
if (response != null) {
title.style.backgroundImage = 'none';
title.value = response;
diff --git a/www/icon.png b/www/themes/default/icon.png
similarity index 100%
rename from www/icon.png
rename to www/themes/default/icon.png
diff --git a/www/images/b_edit.png b/www/themes/default/images/b_edit.png
similarity index 100%
rename from www/images/b_edit.png
rename to www/themes/default/images/b_edit.png
diff --git a/www/images/bg_admin.png b/www/themes/default/images/bg_admin.png
similarity index 100%
rename from www/images/bg_admin.png
rename to www/themes/default/images/bg_admin.png
diff --git a/www/images/bg_bar.png b/www/themes/default/images/bg_bar.png
similarity index 100%
rename from www/images/bg_bar.png
rename to www/themes/default/images/bg_bar.png
diff --git a/www/images/bg_header.png b/www/themes/default/images/bg_header.png
similarity index 100%
rename from www/images/bg_header.png
rename to www/themes/default/images/bg_header.png
diff --git a/www/images/bg_sidebar.png b/www/themes/default/images/bg_sidebar.png
similarity index 100%
rename from www/images/bg_sidebar.png
rename to www/themes/default/images/bg_sidebar.png
diff --git a/www/images/loading.gif b/www/themes/default/images/loading.gif
similarity index 100%
rename from www/images/loading.gif
rename to www/themes/default/images/loading.gif
diff --git a/www/images/logo.png b/www/themes/default/images/logo.png
similarity index 100%
rename from www/images/logo.png
rename to www/themes/default/images/logo.png
diff --git a/www/images/logo_24.gif b/www/themes/default/images/logo_24.gif
similarity index 100%
rename from www/images/logo_24.gif
rename to www/themes/default/images/logo_24.gif
diff --git a/www/images/rss.gif b/www/themes/default/images/rss.gif
similarity index 100%
rename from www/images/rss.gif
rename to www/themes/default/images/rss.gif
diff --git a/www/images/thumbs_up.orig.png b/www/themes/default/images/thumbs_up.orig.png
similarity index 100%
rename from www/images/thumbs_up.orig.png
rename to www/themes/default/images/thumbs_up.orig.png
diff --git a/www/images/vote-against-voted.png b/www/themes/default/images/vote-against-voted.png
similarity index 100%
rename from www/images/vote-against-voted.png
rename to www/themes/default/images/vote-against-voted.png
diff --git a/www/images/vote-against.png b/www/themes/default/images/vote-against.png
similarity index 100%
rename from www/images/vote-against.png
rename to www/themes/default/images/vote-against.png
diff --git a/www/images/vote-for-voted.png b/www/themes/default/images/vote-for-voted.png
similarity index 100%
rename from www/images/vote-for-voted.png
rename to www/themes/default/images/vote-for-voted.png
diff --git a/www/images/vote-for.png b/www/themes/default/images/vote-for.png
similarity index 100%
rename from www/images/vote-for.png
rename to www/themes/default/images/vote-for.png
diff --git a/www/scuttle.css b/www/themes/default/scuttle.css
similarity index 100%
rename from www/scuttle.css
rename to www/themes/default/scuttle.css
From 554a358539e2705d4394701778de9dffa8b6a815 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 23 May 2011 18:13:40 +0200
Subject: [PATCH 05/13] updates theme documentation
---
doc/themes.rst | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/doc/themes.rst b/doc/themes.rst
index 72a4c8d..7c40ef2 100644
--- a/doc/themes.rst
+++ b/doc/themes.rst
@@ -7,26 +7,33 @@ modify the visual appearance.
Changing the current theme
==========================
-In ``data/config.php``, set your theme like this:
+In ``data/config.php``, set your theme like this: ::
$theme = 'darkmood';
-Changeable files
-================
+Creating your own theme
+=======================
-CSS file
---------
-FIXME, missing at the moment
+CSS and image files
+-------------------
+Since both file types need to be accessible via the web server directly,
+they are located in the ``www/`` folder: ::
+
+ www/themes/$themename/
+
+The main CSS file that automatically gets included is ::
+
+ www/themes/$themename/scuttle.css
Template files
--------------
-The templates of the default file are located in
+The templates of the default file are located in ::
data/templates/default/
-You may put your theme template files into
+You may put your theme template files into ::
data/templates/$themename/
From e01c813101f2811879acfe808c4573b924f7b666 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Tue, 24 May 2011 18:21:54 +0200
Subject: [PATCH 06/13] introduce theme model and use it in jsscuttle. rest
will follow
---
build.xml | 13 ++--
src/SemanticScuttle/Model/Theme.php | 97 ++++++++++++++++++++++++
src/SemanticScuttle/Service/Template.php | 12 ++-
src/SemanticScuttle/header.php | 3 +
www/jsScuttle.php | 5 +-
5 files changed, 118 insertions(+), 12 deletions(-)
create mode 100644 src/SemanticScuttle/Model/Theme.php
diff --git a/build.xml b/build.xml
index 9773a63..7b3896b 100644
--- a/build.xml
+++ b/build.xml
@@ -121,18 +121,19 @@
+
diff --git a/src/SemanticScuttle/Model/Theme.php b/src/SemanticScuttle/Model/Theme.php
new file mode 100644
index 0000000..a2f4973
--- /dev/null
+++ b/src/SemanticScuttle/Model/Theme.php
@@ -0,0 +1,97 @@
+
+ * @license AGPL v3 or later http://www.gnu.org/licenses/agpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+
+/**
+ * A theme, the visual representation of SemanticScuttle.
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @author Christian Weiske
+ * @license AGPL v3 or later http://www.gnu.org/licenses/agpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+class SemanticScuttle_Model_Theme
+{
+ /**
+ * Theme name. Also the path part of template and resource files
+ *
+ * @var string
+ */
+ protected $name = null;
+
+ /**
+ * Local path to the www themes directory.
+ * Needs to have a trailing slash.
+ *
+ * @var string
+ */
+ protected $wwwThemeDir = null;
+
+
+
+ /**
+ * Create a new theme instance.
+ *
+ * @param string $name Theme name "data/templates/(*)/"
+ */
+ public function __construct($name = 'default')
+ {
+ $this->name = $name;
+ $this->wwwThemeDir = $GLOBALS['wwwdir'] . '/themes/';
+ //TODO: implement theme hierarchies with parent fallback
+ }
+
+
+
+ /**
+ * Returns the URL path to a resource file (www/themes/$name/$file).
+ * Automatically falls back to the parent theme if the file does not exist
+ * in the theme.
+ *
+ * Must always be used when adding i.e. images to the output.
+ *
+ * @param string $file File name to find the path for
+ *
+ * @return string Full path
+ */
+ public function resource($file)
+ {
+ $themeFile = $this->wwwThemeDir . $this->name . '/' . $file;
+ if (file_exists($themeFile)) {
+ return ROOT . 'themes/' . $this->name . '/' . $file;
+ }
+
+ $defaultFile = $this->wwwThemeDir . 'default/' . $file;
+ if (file_exists($defaultFile)) {
+ return ROOT . 'themes/default/' . $file;
+ }
+
+ //file does not exist. fall back to the theme file
+ // to guide the theme author a bit.
+ // TODO: logging. in admin mode, there should be a message
+ return ROOT . 'themes/' . $this->name . '/' . $file;
+ }
+
+
+
+ /**
+ * Returns the theme name.
+ *
+ * @return string Theme name
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+?>
\ No newline at end of file
diff --git a/src/SemanticScuttle/Service/Template.php b/src/SemanticScuttle/Service/Template.php
index 2a683d6..b5d4cfa 100644
--- a/src/SemanticScuttle/Service/Template.php
+++ b/src/SemanticScuttle/Service/Template.php
@@ -14,6 +14,7 @@
*/
require_once 'SemanticScuttle/Model/Template.php';
+require_once 'SemanticScuttle/Model/Theme.php';
/**
* SemanticScuttle template service.
@@ -40,9 +41,9 @@ class SemanticScuttle_Service_Template extends SemanticScuttle_Service
/**
* The template theme to use.
- * Set in constructor from $GLOBALS['theme']
+ * Set in constructor based on $GLOBALS['theme']
*
- * @var string
+ * @var SemanticScuttle_Model_Theme
*/
protected $theme;
@@ -72,7 +73,7 @@ class SemanticScuttle_Service_Template extends SemanticScuttle_Service
protected function __construct()
{
$this->basedir = $GLOBALS['TEMPLATES_DIR'];
- $this->theme = $GLOBALS['theme'];
+ $this->theme = new SemanticScuttle_Model_Theme($GLOBALS['theme']);
//FIXME: verify the theme exists
}
@@ -84,6 +85,8 @@ class SemanticScuttle_Service_Template extends SemanticScuttle_Service
* @param string $template Template filename relative
* to template dir
* @param array $vars Array of template variables.
+ * The current theme object will be added
+ * automatically with name "theme".
*
* @return SemanticScuttle_Model_Template Template object
*/
@@ -95,12 +98,13 @@ class SemanticScuttle_Service_Template extends SemanticScuttle_Service
$oldIncPath = get_include_path();
set_include_path(
- $this->basedir . $this->theme
+ $this->basedir . $this->theme->getName()
. PATH_SEPARATOR . $this->basedir . 'default'
//needed since services are instantiated in templates
. PATH_SEPARATOR . $oldIncPath
);
+ $vars['theme'] = $this->theme;
$tpl = new SemanticScuttle_Model_Template(
$template, $vars, $this
);
diff --git a/src/SemanticScuttle/header.php b/src/SemanticScuttle/header.php
index 098e5c3..6c0d4df 100644
--- a/src/SemanticScuttle/header.php
+++ b/src/SemanticScuttle/header.php
@@ -18,9 +18,12 @@
if ('@data_dir@' == '@' . 'data_dir@') {
//non pear-install
$datadir = dirname(__FILE__) . '/../../data/';
+ $wwwdir = dirname(__FILE__) . '/../../www/';
} else {
//pear installation; files are in include path
$datadir = '@data_dir@/SemanticScuttle/';
+ //FIXME: when you have multiple installations, the www_dir will be wrong
+ $wwwdir = '@www_dir@/SemanticScuttle/';
}
if (!file_exists($datadir . '/config.php')) {
diff --git a/www/jsScuttle.php b/www/jsScuttle.php
index 4f9d3b7..5e5f31b 100644
--- a/www/jsScuttle.php
+++ b/www/jsScuttle.php
@@ -3,6 +3,7 @@ $GLOBALS['saveInLastUrl'] = false;
$httpContentType = 'text/javascript';
require_once 'www-header.php';
require_once 'SemanticScuttle/functions.php';
+$theme = new SemanticScuttle_Model_Theme($GLOBALS['theme']);
$player_root = ROOT .'includes/player/';
?>
@@ -62,7 +63,7 @@ function isAvailable(input, response){
username = username.trim();
var availability = document.getElementById("availability");
if (username != '') {
- usernameField.style.backgroundImage = 'url(/images/loading.gif)';
+ usernameField.style.backgroundImage = 'url(resource('images/loading.gif'); ?>)';
if (response != '') {
usernameField.style.backgroundImage = 'none';
if (response == 'true') {
@@ -92,7 +93,7 @@ function useAddress(ele) {
function getTitle(input, response){
var title = document.getElementById('titleField');
if (title.value == '') {
- title.style.backgroundImage = 'url(/images/loading.gif)';
+ title.style.backgroundImage = 'url(resource('images/loading.gif');?>)';
if (response != null) {
title.style.backgroundImage = 'none';
title.value = response;
From 1c180e28ffe223c8cdff7e9bb7ec237cded48ef4 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Wed, 25 May 2011 06:55:16 +0200
Subject: [PATCH 07/13] use theme->resource() method to get paths to themable
filse
---
data/templates/default/bookmarks.tpl.php | 25 +++++++++++++++++-------
data/templates/default/top.inc.php | 4 ++--
src/SemanticScuttle/Model/Theme.php | 2 +-
3 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/data/templates/default/bookmarks.tpl.php b/data/templates/default/bookmarks.tpl.php
index 93bcf53..91d50bf 100644
--- a/data/templates/default/bookmarks.tpl.php
+++ b/data/templates/default/bookmarks.tpl.php
@@ -39,7 +39,9 @@ include('search.menu.php');
isAdmin($userid) && $pageName != PAGE_WATCHLIST) : ?>
@@ -70,7 +72,7 @@ if ($userservice->isLoggedOn()) {
) {
echo ' ';
echo !is_array($cDescription) || strlen($cDescription['cdDescription'])==0?T_('Edit the common description of this tag'):'';
- echo ' ';
+ echo ' ';
} else if (isset($hash)) {
echo ' (';
echo T_('Edit the common description of this bookmark').' )';
@@ -95,7 +97,7 @@ if($userservice->isLoggedOn()) {
if($currenttag!= '') {
echo ' ';
echo strlen($pDescription['tDescription'])==0?T_('Edit your personal description of this tag'):'';
- echo ' ';
+ echo ' ';
}
}
?>
@@ -219,9 +221,12 @@ if ($currenttag!= '') {
$brss = '';
$size = count($rsschannels);
for ($i = 0; $i < $size; $i++) {
- $brss = ''
- . ' '
+ . ' '
. ' ';
}
@@ -361,9 +366,15 @@ if ($currenttag!= '') {
}
// Admin specific design
- if ($userservice->isAdmin($row['username']) && $GLOBALS['enableAdminColors']) {
+ if ($userservice->isAdmin($row['username'])
+ && $GLOBALS['enableAdminColors']
+ ) {
$adminBgClass = ' class="adminBackground"';
- $adminStar = ' ';
+ $adminStar = ' ';
} else {
$adminBgClass = '';
$adminStar = '';
diff --git a/data/templates/default/top.inc.php b/data/templates/default/top.inc.php
index 6ad2df2..9eed6ff 100644
--- a/data/templates/default/top.inc.php
+++ b/data/templates/default/top.inc.php
@@ -4,8 +4,8 @@
-
-
+
+
Date: Wed, 25 May 2011 17:00:30 +0200
Subject: [PATCH 08/13] sample theme for demonstration purposes
---
www/themes/testdummy/images/logo.png | Bin 0 -> 2890 bytes
www/themes/testdummy/scuttle.css | 12 ++++++++++++
2 files changed, 12 insertions(+)
create mode 100644 www/themes/testdummy/images/logo.png
create mode 100644 www/themes/testdummy/scuttle.css
diff --git a/www/themes/testdummy/images/logo.png b/www/themes/testdummy/images/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a8f8bae36399e501555dbaa2fa55e379ca778d0
GIT binary patch
literal 2890
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
literal 0
HcmV?d00001
diff --git a/www/themes/testdummy/scuttle.css b/www/themes/testdummy/scuttle.css
new file mode 100644
index 0000000..c62cd19
--- /dev/null
+++ b/www/themes/testdummy/scuttle.css
@@ -0,0 +1,12 @@
+@import url(../default/scuttle.css);
+
+body {
+ background-color: #FEA;
+}
+
+html > body h1 {
+ background: url('images/logo.png') no-repeat 10px;
+}
+div#header {
+ background: #FEA;
+}
From a96c038b0940f3df66f4d1772e963642c9908722 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Wed, 25 May 2011 17:07:18 +0200
Subject: [PATCH 09/13] update changelog
---
doc/ChangeLog | 3 +++
1 file changed, 3 insertions(+)
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 8fa208c..3a2bb41 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,6 +1,9 @@
ChangeLog for SemantiScuttle
============================
+- Implement request #FIXME: Theming support
+
+
0.98.0 - 2011-XX-XX
-------------------
- Switch to jQuery and drop dojo
From 49fa996cd7be1b0f7e3b43dc7c622c2f6a901e76 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Wed, 25 May 2011 17:12:59 +0200
Subject: [PATCH 10/13] more information on custom theme creation
---
doc/themes.rst | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/doc/themes.rst b/doc/themes.rst
index 7c40ef2..007388f 100644
--- a/doc/themes.rst
+++ b/doc/themes.rst
@@ -11,9 +11,14 @@ In ``data/config.php``, set your theme like this: ::
$theme = 'darkmood';
+The available themes are the folders in ``www/themes/``.
+By default, SemanticScuttle ships only one usable theme ("default") and one
+to demonstrate how to create your own theme ("testdummy").
+
Creating your own theme
=======================
+Have a look at the "testdummy" theme in ``www/themes/testdummy/``.
CSS and image files
-------------------
@@ -26,6 +31,10 @@ The main CSS file that automatically gets included is ::
www/themes/$themename/scuttle.css
+Several template files in SemanticScuttle include image files. If they do not
+exist in your theme, the default ones are used automatically.
+Note that this is not true for images that are specified in the CSS files.
+
Template files
--------------
From 42632fff234b2a9f4f70983874d1c37a2d939c43 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Wed, 25 May 2011 17:15:41 +0200
Subject: [PATCH 11/13] show how to modify a template
---
data/templates/testdummy/top.inc.php | 66 ++++++++++++++++++++++++++++
1 file changed, 66 insertions(+)
create mode 100644 data/templates/testdummy/top.inc.php
diff --git a/data/templates/testdummy/top.inc.php b/data/templates/testdummy/top.inc.php
new file mode 100644
index 0000000..7b0874c
--- /dev/null
+++ b/data/templates/testdummy/top.inc.php
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+';
+ }
+}
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'. $subtitle ."\n";
+}
+if(DEBUG_MODE) {
+ echo ''. T_('Admins, your installation is in "Debug Mode" ($debugMode = true). To go in "Normal Mode" and hide debugging messages, change $debugMode to false into config.php.') ."
\n";
+}
+if (isset($error) && $error!='') {
+ echo ''. $error ."
\n";
+}
+if (isset($msg) && $msg!='') {
+ echo ''. $msg ."
\n";
+}
+if (isset($tipMsg) && $tipMsg!='') {
+ echo ''. $tipMsg ."
\n";
+}
+?>
From 11341abac95478b6fbfce645dbc1e6ecf1220a6a Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Wed, 25 May 2011 19:24:03 +0200
Subject: [PATCH 12/13] name proper feature request for theming
---
doc/ChangeLog | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 3a2bb41..ade19af 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,7 +1,7 @@
ChangeLog for SemantiScuttle
============================
-- Implement request #FIXME: Theming support
+- Implement request #1989987: Theming support
0.98.0 - 2011-XX-XX
From 3e7808a8fda15fa04b696bb4b3ff7fb4854b8d7c Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Wed, 25 May 2011 19:24:21 +0200
Subject: [PATCH 13/13] mention skins
---
doc/themes.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/doc/themes.rst b/doc/themes.rst
index 007388f..6f34a36 100644
--- a/doc/themes.rst
+++ b/doc/themes.rst
@@ -1,8 +1,8 @@
======================
SemanticScuttle Themes
======================
-SemanticScuttle may be changed visually by supplying custom "themes" that
-modify the visual appearance.
+SemanticScuttle may be changed visually by supplying custom "themes" (skins)
+that modify the visual appearance.
Changing the current theme