You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
3.6 KiB
141 lines
3.6 KiB
<?php |
|
/** |
|
* CTheme class file. |
|
* |
|
* @author Qiang Xue <qiang.xue@gmail.com> |
|
* @link http://www.yiiframework.com/ |
|
* @copyright Copyright © 2008-2011 Yii Software LLC |
|
* @license http://www.yiiframework.com/license/ |
|
*/ |
|
|
|
/** |
|
* CTheme represents an application theme. |
|
* |
|
* @property string $name Theme name. |
|
* @property string $baseUrl The relative URL to the theme folder (without ending slash). |
|
* @property string $basePath The file path to the theme folder. |
|
* @property string $viewPath The path for controller views. Defaults to 'ThemeRoot/views'. |
|
* @property string $systemViewPath The path for system views. Defaults to 'ThemeRoot/views/system'. |
|
* @property string $skinPath The path for widget skins. Defaults to 'ThemeRoot/views/skins'. |
|
* |
|
* @author Qiang Xue <qiang.xue@gmail.com> |
|
* @version $Id$ |
|
* @package system.web |
|
* @since 1.0 |
|
*/ |
|
class CTheme extends CComponent |
|
{ |
|
private $_name; |
|
private $_basePath; |
|
private $_baseUrl; |
|
|
|
/** |
|
* Constructor. |
|
* @param string $name name of the theme |
|
* @param string $basePath base theme path |
|
* @param string $baseUrl base theme URL |
|
*/ |
|
public function __construct($name,$basePath,$baseUrl) |
|
{ |
|
$this->_name=$name; |
|
$this->_baseUrl=$baseUrl; |
|
$this->_basePath=$basePath; |
|
} |
|
|
|
/** |
|
* @return string theme name |
|
*/ |
|
public function getName() |
|
{ |
|
return $this->_name; |
|
} |
|
|
|
/** |
|
* @return string the relative URL to the theme folder (without ending slash) |
|
*/ |
|
public function getBaseUrl() |
|
{ |
|
return $this->_baseUrl; |
|
} |
|
|
|
/** |
|
* @return string the file path to the theme folder |
|
*/ |
|
public function getBasePath() |
|
{ |
|
return $this->_basePath; |
|
} |
|
|
|
/** |
|
* @return string the path for controller views. Defaults to 'ThemeRoot/views'. |
|
*/ |
|
public function getViewPath() |
|
{ |
|
return $this->_basePath.DIRECTORY_SEPARATOR.'views'; |
|
} |
|
|
|
/** |
|
* @return string the path for system views. Defaults to 'ThemeRoot/views/system'. |
|
*/ |
|
public function getSystemViewPath() |
|
{ |
|
return $this->getViewPath().DIRECTORY_SEPARATOR.'system'; |
|
} |
|
|
|
/** |
|
* @return string the path for widget skins. Defaults to 'ThemeRoot/views/skins'. |
|
* @since 1.1 |
|
*/ |
|
public function getSkinPath() |
|
{ |
|
return $this->getViewPath().DIRECTORY_SEPARATOR.'skins'; |
|
} |
|
|
|
/** |
|
* Finds the view file for the specified controller's view. |
|
* @param CController $controller the controller |
|
* @param string $viewName the view name |
|
* @return string the view file path. False if the file does not exist. |
|
*/ |
|
public function getViewFile($controller,$viewName) |
|
{ |
|
$moduleViewPath=$this->getViewPath(); |
|
if(($module=$controller->getModule())!==null) |
|
$moduleViewPath.='/'.$module->getId(); |
|
return $controller->resolveViewFile($viewName,$this->getViewPath().'/'.$controller->getUniqueId(),$this->getViewPath(),$moduleViewPath); |
|
} |
|
|
|
/** |
|
* Finds the layout file for the specified controller's layout. |
|
* @param CController $controller the controller |
|
* @param string $layoutName the layout name |
|
* @return string the layout file path. False if the file does not exist. |
|
*/ |
|
public function getLayoutFile($controller,$layoutName) |
|
{ |
|
$moduleViewPath=$basePath=$this->getViewPath(); |
|
$module=$controller->getModule(); |
|
if(empty($layoutName)) |
|
{ |
|
while($module!==null) |
|
{ |
|
if($module->layout===false) |
|
return false; |
|
if(!empty($module->layout)) |
|
break; |
|
$module=$module->getParentModule(); |
|
} |
|
if($module===null) |
|
$layoutName=\Yii::$application->layout; |
|
else |
|
{ |
|
$layoutName=$module->layout; |
|
$moduleViewPath.='/'.$module->getId(); |
|
} |
|
} |
|
else if($module!==null) |
|
$moduleViewPath.='/'.$module->getId(); |
|
|
|
return $controller->resolveViewFile($layoutName,$moduleViewPath.'/layouts',$basePath,$moduleViewPath); |
|
} |
|
}
|
|
|