summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY1
-rw-r--r--framework/Web/UI/TThemeManager.php38
2 files changed, 32 insertions, 7 deletions
diff --git a/HISTORY b/HISTORY
index 857dbbbf..1d9707de 100644
--- a/HISTORY
+++ b/HISTORY
@@ -13,6 +13,7 @@ CHG: Modifiy TTemplate::parseAttributes to allow definition of "HTML5 Custom Dat
EHN: Modify TActiveRecordConfig & TActiveRecordManager to allow custom subclassing of System.Data.ActiveRecord.TActiveRecordManager & System.Data.ActiveRecord.TActiveRecordGateway (Yves)
EHN: Add methods quoteTableName, quoteColumnName, quoteColumnAlias to TDbMetaData & TDbConnection and add TDbConnection:getDbMetaData [TODO: customize TOracleMetaData] (Yves)
EHN: Add method getHeaders to THttpRequest & THttpResponse (Yves)
+EHN: Modify TThemeManager to allow custom subclassing of TTheme (Yves)
Version 3.1.9 June 3, 2011
BUG: Issue#280 - Documentation has been updated
diff --git a/framework/Web/UI/TThemeManager.php b/framework/Web/UI/TThemeManager.php
index ba4fa81d..9fb138bb 100644
--- a/framework/Web/UI/TThemeManager.php
+++ b/framework/Web/UI/TThemeManager.php
@@ -44,6 +44,17 @@ class TThemeManager extends TModule
* default themes base path
*/
const DEFAULT_BASEPATH='themes';
+
+ /**
+ * default theme class
+ */
+ const DEFAULT_THEMECLASS = 'TTheme';
+
+ /**
+ * @var string
+ */
+ private $_themeClass=self::DEFAULT_THEMECLASS;
+
/**
* @var boolean whether this module has been initialized
*/
@@ -80,8 +91,21 @@ 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);
+ }
+
+ /**
+ * @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;
}
/**
@@ -328,7 +352,7 @@ class TTheme extends TApplicationComponent implements ITheme
return $this->_name;
}
- /**
+ /**
* @param string theme name
*/
protected function setName($value)
@@ -344,7 +368,7 @@ class TTheme extends TApplicationComponent implements ITheme
return $this->_themeUrl;
}
- /**
+ /**
* @param string the URL to the theme folder
*/
protected function setBaseUrl($value)
@@ -360,14 +384,14 @@ 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;
}
-
+
/**
* @return array list of skins for the theme
*/
@@ -376,7 +400,7 @@ class TTheme extends TApplicationComponent implements ITheme
return $this->_skins;
}
- /**
+ /**
* @param array list of skins for the theme
*/
protected function setSkins($value)
@@ -465,7 +489,7 @@ class TTheme extends TApplicationComponent implements ITheme
return $this->_cssFiles;
}
- /**
+ /**
* @param array list of CSS files (URL) in the theme
*/
protected function setStyleSheetFiles($value)