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::$app->layout; | 
						|
			else | 
						|
			{ | 
						|
				$layoutName=$module->layout; | 
						|
				$moduleViewPath.='/'.$module->getId(); | 
						|
			} | 
						|
		} | 
						|
		else if($module!==null) | 
						|
			$moduleViewPath.='/'.$module->getId(); | 
						|
 | 
						|
		return $controller->resolveViewFile($layoutName,$moduleViewPath.'/layouts',$basePath,$moduleViewPath); | 
						|
	} | 
						|
}
 | 
						|
 |