diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index eb7f14df7..4fbf8b953 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -50,7 +50,6 @@ if(!$document_srl) $this->document_srl = Context::get('document_srl'); else $this->document_srl = $document_srl; - } /** diff --git a/classes/module/ModuleObject.class.php b/classes/module/ModuleObject.class.php index dae8624e3..5e61c31dc 100644 --- a/classes/module/ModuleObject.class.php +++ b/classes/module/ModuleObject.class.php @@ -81,24 +81,37 @@ // 권한 설정 if($xml_info->grant) { + + // 이 모듈에 action.xml에서 선언된 권한 목록을 루프 foreach($xml_info->grant as $grant_name => $grant_item) { + + // 제목과 기타 설정 없을 경우의 기본 권한(guest, member, root)에 대한 변수 설정 $title = $grant_item->title; $default = $grant_item->default; - $grant->{$grant_name} = false; - + // 관리자이면 모든 권한에 대해 true 설정 if($grant->is_admin) { $grant->{$grant_name} = true; continue; } - if(count($user_group)) { - foreach($user_group as $group_srl) { - if(in_array($group_srl, $this->module_info->grants[$grant_name])) { - $grant->{$grant_name} = true; - break; + // 일단 현재 권한에 대해 false 지정 + $grant->{$grant_name} = false; + + // 모듈의 개별 설정에서 이 권한에 대한 그룹 지정이 있으면 체크 + if(count($this->module_info->grants[$grant_name])) { + $group_srls = $this->module_info->grants[$grang_name]; + + if(count($user_group)) { + foreach($user_group as $group_srl) { + if(in_array($group_srl, $group_srls)) { + $grant->{$grant_name} = true; + break; + } } - } + } + + // 별도의 지정이 없으면 default값으로 권한 체크 } else { switch($default) { case 'member' : @@ -111,6 +124,7 @@ $grant->{$grant_name} = true; break; } + } } } diff --git a/config/config.inc.php b/config/config.inc.php index b245bef4b..b3e18ff9e 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -18,7 +18,7 @@ /** * @brief debug mode = true 일때 files/_debug_message.php 에 디버그 내용이 쌓임 **/ - define('__DEBUG__', false); + define('__DEBUG__', true); if(__DEBUG__) { // php5이상이면 error handling을 handleError() 로 set diff --git a/modules/board/board.controller.php b/modules/board/board.controller.php index 8fc4db782..195d12d29 100644 --- a/modules/board/board.controller.php +++ b/modules/board/board.controller.php @@ -326,23 +326,19 @@ $module_srl = Context::get('module_srl'); // 현 모듈의 권한 목록을 가져옴 - $oBoardModel = &getModel('board'); - $grant_list = $oBoardModel->grant_list; + $grant_list = $this->xml_info->grant; if(count($grant_list)) { - foreach($grant_list as $grant) { - $group_srls = Context::get($grant); - if($group_srls) $arr_grant[$grant] = explode(',',Context::get($grant)); + foreach($grant_list as $key => $val) { + $group_srls = Context::get($key); + if($group_srls) $arr_grant[$key] = explode(',',$group_srls); } - $grant = serialize($arr_grant); + $grants = serialize($arr_grant); } $oModuleController = &getController('module'); - $oModuleController->updateModuleGrant($module_srl, $grant); + $oModuleController->updateModuleGrant($module_srl, $grants); - $this->add('module','board'); - $this->add('act','dispAdminGrantInfo'); - $this->add('page',Context::get('page')); $this->add('module_srl',Context::get('module_srl')); $this->setMessage('success_registed'); } @@ -436,8 +432,10 @@ **/ function procInsertBoard() { // 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 - $args = Context::gets('module_srl','mid','skin','use_category','browser_title','description','is_default','header_text','footer_text','admin_id'); + $args = Context::gets('module_srl','board_name','skin','use_category','browser_title','description','is_default','header_text','footer_text','admin_id'); $args->module = 'board'; + $args->mid = $args->board_name; + unset($args->board_name); if($args->is_default!='Y') $args->is_default = 'N'; if($args->use_category!='Y') $args->use_category = 'N'; @@ -447,12 +445,11 @@ unset($extra_var->act); unset($extra_var->page); - // module_srl이 있으면 원본을 구해온다 - $oModuleModel = &getModel('model'); - // module_srl이 넘어오면 원 모듈이 있는지 확인 if($args->module_srl) { + $oModuleModel = &getModel('module'); $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl); + // 만약 원래 모듈이 없으면 새로 입력하기 위한 처리 if($module_info->module_srl != $args->module_srl) unset($args->module_srl); } @@ -463,19 +460,19 @@ // is_default=='Y' 이면 if($args->is_default=='Y') $oModule->clearDefaultModule(); + $oModuleController = &getController('module'); + // module_srl의 값에 따라 insert/update if(!$args->module_srl) { - $output = $oModule->insertModule($args); + $output = $oModuleController->insertModule($args); $msg_code = 'success_registed'; } else { - $output = $oModule->updateModule($args); + $output = $oModuleController->updateModule($args); $msg_code = 'success_updated'; } if(!$output->toBool()) return $output; - $this->add('module','board'); - $this->add('act','dispAdminBoardInfo'); $this->add('page',Context::get('page')); $this->add('module_srl',$output->get('module_srl')); $this->setMessage($msg_code); @@ -493,7 +490,6 @@ if(!$output->toBool()) return $output; $this->add('module','board'); - $this->add('act','dispAdminContent'); $this->add('page',Context::get('page')); $this->setMessage('success_deleted'); } @@ -507,12 +503,10 @@ $category_title = Context::get('category_title'); // module_srl이 있으면 원본을 구해온다 - $oDocumentModel = &getModel('document'); - $output = $oDocumentModel->insertCategory($module_srl, $category_title); + $oDocumentController = &getController('document'); + $output = $oDocumentController->insertCategory($module_srl, $category_title); if(!$output->toBool()) return $output; - $this->add('module','board'); - $this->add('act','dispAdminCategoryInfo'); $this->add('page',Context::get('page')); $this->add('module_srl',$module_srl); $this->setMessage('success_registed'); @@ -522,6 +516,7 @@ * @brief 카테고리의 내용 수정 **/ function procUpdateCategory() { + $module_srl = Context::get('module_srl'); $category_srl = Context::get('category_srl'); $mode = Context::get('mode'); @@ -551,7 +546,8 @@ break; } if(!$output->toBool()) return $output; - $this->add('module_srl', $selected_category->module_srl); + + $this->add('module_srl', $module_srl); $this->setMessage($msg_code); } } diff --git a/modules/board/board.view.php b/modules/board/board.view.php index fb263e707..7fbdc80e3 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -30,7 +30,10 @@ if(!$module_info) { Context::set('module_srl',''); $this->act = 'list'; - } else Context::set('module_info',$module_info); + } else { + $this->module_info = $module_info; + Context::set('module_info',$module_info); + } } // 일반 action일 경우 @@ -391,13 +394,6 @@ // module_srl 값이 없다면 그냥 index 페이지를 보여줌 if(!Context::get('module_srl')) return $this->dispAdminContent(); - // 요청받은 모듈의 정보를 구함 - $oModuleModel = &getModel('module'); - $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); - - // template에서 사용하기 위해 설정 - Context::set('module_info',$module_info); - // 템플릿 파일 지정 $this->setTemplateFile('board_info'); } @@ -499,8 +495,6 @@ // module.xml에서 권한 관련 목록을 구해옴 $grant_list = $this->xml_info->grant; - - // 권한 목록 세팅 Context::set('grant_list', $grant_list); // 권한 그룹의 목록을 가져온다 diff --git a/modules/board/tpl.admin/board_info.html b/modules/board/tpl.admin/board_info.html index 0a1cd5323..02defa1b2 100644 --- a/modules/board/tpl.admin/board_info.html +++ b/modules/board/tpl.admin/board_info.html @@ -27,7 +27,7 @@