diff options
author | Christian Weiske <cweiske@cweiske.de> | 2011-05-25 19:43:36 +0200 |
---|---|---|
committer | Christian Weiske <cweiske@cweiske.de> | 2011-05-25 19:43:36 +0200 |
commit | 5ba53394fcda4ae9cfa9af52b37fb67517deeb5a (patch) | |
tree | 4416be7903a2b339382e9f933284f50797edc239 /src/SemanticScuttle/Model/Theme.php | |
parent | 63b0a4b8cb38a8a7c41410900b9dfcc84e6a33a9 (diff) | |
download | semanticscuttle-5ba53394fcda4ae9cfa9af52b37fb67517deeb5a.tar.gz semanticscuttle-5ba53394fcda4ae9cfa9af52b37fb67517deeb5a.tar.bz2 |
implement request #1989987: theme support. merge themes branch with --squash
Diffstat (limited to 'src/SemanticScuttle/Model/Theme.php')
-rw-r--r-- | src/SemanticScuttle/Model/Theme.php | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/SemanticScuttle/Model/Theme.php b/src/SemanticScuttle/Model/Theme.php new file mode 100644 index 0000000..65861b8 --- /dev/null +++ b/src/SemanticScuttle/Model/Theme.php @@ -0,0 +1,97 @@ +<?php +/** + * SemanticScuttle - your social bookmark manager. + * + * PHP version 5. + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske <cweiske@cweiske.de> + * @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 <cweiske@cweiske.de> + * @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, i.e. "scuttle.css". + * + * @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 |