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.
		
		
		
		
		
			
		
			
				
					
					
						
							112 lines
						
					
					
						
							2.9 KiB
						
					
					
				
			
		
		
	
	
							112 lines
						
					
					
						
							2.9 KiB
						
					
					
				| <?php | |
| /** | |
|  * Theme class file. | |
|  * | |
|  * @link http://www.yiiframework.com/ | |
|  * @copyright Copyright © 2008-2012 Yii Software LLC | |
|  * @license http://www.yiiframework.com/license/ | |
|  */ | |
|  | |
| namespace yii\base; | |
|  | |
| /** | |
|  * Theme represents an application theme. | |
|  * | |
|  * @author Qiang Xue <qiang.xue@gmail.com> | |
|  * @since 2.0 | |
|  */ | |
| class Theme extends ApplicationComponent | |
| { | |
| 	public $basePath; | |
| 	public $baseUrl; | |
|  | |
| 	public function init() | |
| 	{ | |
| 		if ($this->basePath !== null) { | |
| 			$this->basePath = \Yii::getAlias($this->basePath); | |
| 		} else { | |
| 			throw new Exception("Theme.basePath must be set."); | |
| 		} | |
| 		if ($this->baseUrl !== null) { | |
| 			$this->baseUrl = \Yii::getAlias($this->baseUrl); | |
| 		} else { | |
| 			throw new Exception("Theme.baseUrl must be set."); | |
| 		} | |
| 	} | |
|  | |
| 	/** | |
| 	 * @param Controller $controller | |
| 	 * @return string | |
| 	 */ | |
| 	public function getViewPath($controller = null) | |
| 	{ | |
| 		$path = $this->basePath . DIRECTORY_SEPARATOR . 'views'; | |
| 		return $controller === null ? $path : $path . DIRECTORY_SEPARATOR . $controller->id; | |
| 	} | |
|  | |
| 	public function getLayoutPath($module = null) | |
| 	{ | |
| 		$path = $this->getViewPath($module); | |
| 		return $controller === null ? $path : $path . DIRECTORY_SEPARATOR . $controller->id; | |
| 	} | |
|  | |
| 	public function getWidgetViewPath($widget) | |
| 	{ | |
|  | |
| 	} | |
|  | |
| 	/** | |
| 	 * @return string the path for controller views. Defaults to 'ThemeRoot/views'. | |
| 	 */ | |
| 	public function getViewPath() | |
| 	{ | |
| 		return $this->_basePath . DIRECTORY_SEPARATOR . 'views'; | |
| 	} | |
|  | |
| 	/** | |
| 	 * 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); | |
| 	} | |
| }
 | |
| 
 |