From 720b474005e2ad8483c669b300d40e10a7ed1cda Mon Sep 17 00:00:00 2001 From: "GODZilla0480@gmail.com" <> Date: Sun, 28 Aug 2011 06:43:18 +0000 Subject: Modify TThemeManager to allow custom subclassing of TTheme --- framework/Web/UI/TThemeManager.php | 41 ++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) (limited to 'framework/Web') diff --git a/framework/Web/UI/TThemeManager.php b/framework/Web/UI/TThemeManager.php index ba4fa81d..ca6f5d91 100644 --- a/framework/Web/UI/TThemeManager.php +++ b/framework/Web/UI/TThemeManager.php @@ -80,8 +80,7 @@ class TThemeManager extends TModule { $themePath=$this->getBasePath().DIRECTORY_SEPARATOR.$name; $themeUrl=rtrim($this->getBaseUrl(),'/').'/'.$name; - return new TTheme($themePath,$themeUrl); - + return Prado::createComponent($this->getThemeClass(), $themePath, $themeUrl); } /** @@ -196,6 +195,17 @@ class TTheme extends TApplicationComponent implements ITheme * Extension name of skin files */ const SKIN_FILE_EXT='.skin'; + + /** + * default theme class + */ + const DEFAULT_THEMECLASS = 'TTheme'; + + /** + * @var string + */ + private $_themeClass=self::DEFAULT_THEMECLASS; + /** * @var string theme path */ @@ -328,7 +338,7 @@ class TTheme extends TApplicationComponent implements ITheme return $this->_name; } - /** + /** * @param string theme name */ protected function setName($value) @@ -344,7 +354,7 @@ class TTheme extends TApplicationComponent implements ITheme return $this->_themeUrl; } - /** + /** * @param string the URL to the theme folder */ protected function setBaseUrl($value) @@ -360,14 +370,29 @@ class TTheme extends TApplicationComponent implements ITheme return $this->_themePath; } - /** + /** * @param string tthe file path to the theme folder */ protected function setBasePath($value) { $this->_themePath=$value; } - + + /** + * @param string|null $class Theme class name in namespace format + */ + public function setThemeClass($class) { + $this->_themeClass = $class===null ? self::DEFAULT_THEMECLASS : (string)$class; + + } + + /** + * @return string Theme class name in namespace format. Defaults to {@link TThemeManager::DEFAULT_THEMECLASS DEFAULT_THEMECLASS}. + */ + public function getThemeClass() { + return $this->_themeClass; + } + /** * @return array list of skins for the theme */ @@ -376,7 +401,7 @@ class TTheme extends TApplicationComponent implements ITheme return $this->_skins; } - /** + /** * @param array list of skins for the theme */ protected function setSkins($value) @@ -465,7 +490,7 @@ class TTheme extends TApplicationComponent implements ITheme return $this->_cssFiles; } - /** + /** * @param array list of CSS files (URL) in the theme */ protected function setStyleSheetFiles($value) -- cgit v1.2.3