123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
- /**
- * CTheme class file.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @link http://www.yiiframework.com/
- * @copyright 2008-2013 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>
- * @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::app()->layout;
- else
- {
- $layoutName=$module->layout;
- $moduleViewPath.='/'.$module->getId();
- }
- }
- elseif($module!==null)
- $moduleViewPath.='/'.$module->getId();
- return $controller->resolveViewFile($layoutName,$moduleViewPath.'/layouts',$basePath,$moduleViewPath);
- }
- }
|