diff options
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 | 
