diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 176ab2016..63cde26e3 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -104,7 +104,7 @@ $xml_info = $oModuleModel->getModuleActionXml($this->module); // 현재 요청된 act가 있으면 $xml_info에서 type을 찾음, 없다면 기본 action을 이용 - if(!$this->act || !$xml_info->action->{$this->act}) $this->act = $xml_info->default_index_act; + if(!$this->act) $this->act = $xml_info->default_index_act; // act값이 지정이 안되어 있으면 오류 표시 if(!$this->act) { diff --git a/classes/module/ModuleObject.class.php b/classes/module/ModuleObject.class.php index fc9c05a96..3b2905fa1 100644 --- a/classes/module/ModuleObject.class.php +++ b/classes/module/ModuleObject.class.php @@ -252,6 +252,28 @@ // act가 없으면 action_forward에서 해당하는 act가 있는지 찾아서 대신 실행 } else if(Context::isInstalled()) { + + $oModuleModel = &getModel('module'); + $forward = $oModuleModel->getActionForward($this->act); + if($forward->module && $forward->type && $forward->act) { + + $oModule = &getModule($forward->module, $forward->type); + $xml_info = $oModuleModel->getModuleActionXml($forward->module); + $oModule->setAct($forward->act); + $oModule->init(); + $oModule->setModuleInfo(null, $xml_info); + $output = call_user_method($forward->act, $oModule); + + $this->setTemplatePath($oModule->getTemplatePath()); + $this->setTemplateFile($oModule->getTemplateFile()); + + } else { + if($this->xml_info->default_index_act) { + $output = call_user_method($this->xml_info->default_index_act, $this); + } else { + return false; + } + } } else { return false; diff --git a/modules/file/file.view.php b/modules/file/file.view.php index f027507b2..10d38f5db 100644 --- a/modules/file/file.view.php +++ b/modules/file/file.view.php @@ -55,7 +55,7 @@ Context::set('module_list', $module_list); // 템플릿 지정 - $this->setTemplatePath($this->module_path.'tpl.admin'); + $this->setTemplatePath($this->module_path.'tpl'); $this->setTemplateFile('file_list'); } diff --git a/modules/module/module.model.php b/modules/module/module.model.php index dcd8976ea..0b6991f27 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -109,6 +109,15 @@ return $module_info; } + /** + * @brief act 값에 의한 forward 값을 구함 + **/ + function getActionForward($act) { + $args->act = $act; + $output = executeQuery('module.getActionForward',$args); + return $output->data; + } + /** * @brief DB에 생성된 mid목록을 구해옴 **/ diff --git a/modules/module/module.view.php b/modules/module/module.view.php index 34f9ba189..ba56adb70 100644 --- a/modules/module/module.view.php +++ b/modules/module/module.view.php @@ -12,14 +12,14 @@ **/ function init() { // template path 지정 - $this->setTemplatePath($this->module_path.'tpl.admin'); + $this->setTemplatePath($this->module_path.'tpl'); } /** * @brief 모듈 관리자 페이지 **/ function dispModuleAdminContent() { - $this->dispModuleList(); + $this->dispModuleAdminList(); } /** diff --git a/modules/module/queries/getActionForward.xml b/modules/module/queries/getActionForward.xml new file mode 100644 index 000000000..bce1ad86b --- /dev/null +++ b/modules/module/queries/getActionForward.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/modules/module/schemas/action_forward.xml b/modules/module/schemas/action_forward.xml index bac9cd998..c95040830 100644 --- a/modules/module/schemas/action_forward.xml +++ b/modules/module/schemas/action_forward.xml @@ -1,5 +1,5 @@
- - - + + +