From f3fd2da4aec787ad9fd75ce0219f67c1c1ca9bf1 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 27 Mar 2007 08:08:53 +0000 Subject: [PATCH] git-svn-id: http://xe-core.googlecode.com/svn/trunk@712 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/board.controller.php | 2 +- modules/board/board.view.php | 9 ++++- modules/board/tpl.admin/board_info.html | 2 +- modules/board/tpl.admin/board_insert.html | 2 +- modules/module/module.controller.php | 3 +- modules/module/module.model.php | 41 ++++++++++++++--------- 6 files changed, 39 insertions(+), 20 deletions(-) diff --git a/modules/board/board.controller.php b/modules/board/board.controller.php index b5df92a19..314523980 100644 --- a/modules/board/board.controller.php +++ b/modules/board/board.controller.php @@ -334,7 +334,7 @@ $skin = $module_info->skin; // 스킨의 정보르 구해옴 (extra_vars를 체크하기 위해서) - $skin_info = $oModuleModel->loadSkinInfo($this->module, $skin); + $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin); // 입력받은 변수들을 체크 (mo, act, module_srl, page등 기본적인 변수들 없앰) $obj = Context::getRequestVars(); diff --git a/modules/board/board.view.php b/modules/board/board.view.php index ede863e2a..13d9b29cf 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -531,6 +531,13 @@ $this->module_info->layout_title = $layout_info->layout_title; } + // 정해진 스킨이 있으면 해당 스킨의 정보를 구함 + if($this->module_info->skin) { + $oModuleModel = &getModel('module'); + $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $this->module_info->skin); + $this->module_info->skin_title = $skin_info->title; + } + // 템플릿 파일 지정 $this->setTemplateFile('board_info'); } @@ -589,7 +596,7 @@ $skin = $module_info->skin; $oModuleModel = &getModel('module'); - $skin_info = $oModuleModel->loadSkinInfo($this->module, $skin); + $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin); // skin_info에 extra_vars 값을 지정 if(count($skin_info->extra_vars)) { diff --git a/modules/board/tpl.admin/board_info.html b/modules/board/tpl.admin/board_info.html index 240df2da8..7ab506253 100644 --- a/modules/board/tpl.admin/board_info.html +++ b/modules/board/tpl.admin/board_info.html @@ -23,7 +23,7 @@ {$lang->skin} - {$module_info->skin} + {$module_info->skin_title} ({$module_info->skin}) {$lang->browser_title} diff --git a/modules/board/tpl.admin/board_insert.html b/modules/board/tpl.admin/board_insert.html index df7f876e2..95aeb35d3 100644 --- a/modules/board/tpl.admin/board_insert.html +++ b/modules/board/tpl.admin/board_insert.html @@ -67,7 +67,7 @@ diff --git a/modules/module/module.controller.php b/modules/module/module.controller.php index a84fc9e6b..78059b9be 100644 --- a/modules/module/module.controller.php +++ b/modules/module/module.controller.php @@ -64,7 +64,8 @@ $oModuleModel = &getModel('module'); // 선택된 스킨정보에서 colorset을 구함 - $skin_info = $oModuleModel->loadSkinInfo($args->module, $args->skin); + $module_path = ModuleHandler::getModulePath($args->module); + $skin_info = $oModuleModel->loadSkinInfo($module_path, $args->skin); $skin_vars->colorset = $skin_info->colorset[0]->name; // DB 객체 생성 diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 404ece84d..b6b4d7dd0 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -144,15 +144,35 @@ } /** - * @brief 특정 모듈의 스킨의 정보를 구해옴 + * @brief 주어진 곳의 스킨 목록을 구함 + * 스킨과 skin.xml 파일을 분석 정리한 결과를 return **/ - function loadSkinInfo($module, $skin) { + function getSkins($path) { + $skin_path = sprintf("%s/skins/", $path); + $list = FileHandler::readDir($skin_path); + if(!count($list)) return; - // 등록하려는 모듈의 path를 구함 - $module_path = ModuleHandler::getModulePath($module); + $oXmlParser = new XmlParser(); + + foreach($list as $skin_name) { + unset($skin_info); + $skin_info = $this->loadSkinInfo($path, $skin_name); + if(!$skin_info) $skin_info->title = $skin_name; + + $skin_list[$skin_name] = $skin_info; + } + + return $skin_list; + } + + + /** + * @brief 특정 위치의 특정 스킨의 정보를 구해옴 + **/ + function loadSkinInfo($path, $skin) { // 모듈의 스킨의 정보 xml 파일을 읽음 - $skin_xml_file = sprintf("%sskins/%s/skin.xml", $module_path, $skin); + $skin_xml_file = sprintf("%sskins/%s/skin.xml", $path, $skin); if(!file_exists($skin_xml_file)) return; // XmlParser 객체 생성 @@ -180,7 +200,7 @@ $name = $color->attrs->name; $title = $color->title->body; $screenshot = $color->attrs->src; - if($screenshot && file_exists($screenshot)) $screenshot = sprintf("%sskins/%s/%s",$module_path,$skin,$screenshot); + if($screenshot && file_exists($screenshot)) $screenshot = sprintf("%sskins/%s/%s", $path, $skin, $screenshot); else $screenshot = ""; unset($obj); @@ -402,15 +422,6 @@ return $module_info; } - /** - * @brief 모듈의 스킨 목록을 구함 - **/ - function getSkins($module_path) { - $skins_path = sprintf("%s/skins/", $module_path); - $list = FileHandler::readDir($skins_path); - return $list; - } - /** * @brief 모듈 카테고리의 목록을 구함 **/