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 @@ {$lang->admin_id} - {$module_info->admin_id} + {implode(",",$module_info->admin_id)} diff --git a/modules/board/tpl.admin/board_insert.html b/modules/board/tpl.admin/board_insert.html index dd02acb69..0a988284f 100644 --- a/modules/board/tpl.admin/board_insert.html +++ b/modules/board/tpl.admin/board_insert.html @@ -86,7 +86,7 @@ {$lang->admin_id} - + {$lang->about_admin_id} diff --git a/modules/board/tpl.admin/category_list.html b/modules/board/tpl.admin/category_list.html index 164160698..9672843d2 100644 --- a/modules/board/tpl.admin/category_list.html +++ b/modules/board/tpl.admin/category_list.html @@ -5,6 +5,7 @@
+ @@ -40,7 +41,7 @@ - + diff --git a/modules/board/tpl.admin/category_update_form.html b/modules/board/tpl.admin/category_update_form.html index 5170c0118..ab144a931 100644 --- a/modules/board/tpl.admin/category_update_form.html +++ b/modules/board/tpl.admin/category_update_form.html @@ -5,6 +5,7 @@ + diff --git a/modules/board/tpl.admin/filter/delete_board.xml b/modules/board/tpl.admin/filter/delete_board.xml index 8dc934dea..9be4addf8 100644 --- a/modules/board/tpl.admin/filter/delete_board.xml +++ b/modules/board/tpl.admin/filter/delete_board.xml @@ -3,7 +3,7 @@ - + diff --git a/modules/board/tpl.admin/filter/insert_board.xml b/modules/board/tpl.admin/filter/insert_board.xml index 7208cecbc..4c0da1308 100644 --- a/modules/board/tpl.admin/filter/insert_board.xml +++ b/modules/board/tpl.admin/filter/insert_board.xml @@ -1,9 +1,21 @@ - +
- + + + + + + + + + + + + + diff --git a/modules/board/tpl.admin/filter/insert_category.xml b/modules/board/tpl.admin/filter/insert_category.xml index ea7e7c2bb..c7ed4b4d6 100644 --- a/modules/board/tpl.admin/filter/insert_category.xml +++ b/modules/board/tpl.admin/filter/insert_category.xml @@ -1,15 +1,12 @@
- - - - - - - - + + + + +
diff --git a/modules/board/tpl.admin/filter/insert_grant.xml b/modules/board/tpl.admin/filter/insert_grant.xml index 7b1abcf77..83d79107c 100644 --- a/modules/board/tpl.admin/filter/insert_grant.xml +++ b/modules/board/tpl.admin/filter/insert_grant.xml @@ -1,15 +1,11 @@ - - - - - - - - - - - - - + +
+ + + + + + +
diff --git a/modules/board/tpl.admin/filter/update_category.xml b/modules/board/tpl.admin/filter/update_category.xml index ed18f9b9d..2271be58a 100644 --- a/modules/board/tpl.admin/filter/update_category.xml +++ b/modules/board/tpl.admin/filter/update_category.xml @@ -1,13 +1,11 @@ - - - - - - - - - - - + +
+ + + + + + +
diff --git a/modules/board/tpl.admin/grant_list.html b/modules/board/tpl.admin/grant_list.html index b67984047..9d43b7286 100644 --- a/modules/board/tpl.admin/grant_list.html +++ b/modules/board/tpl.admin/grant_list.html @@ -21,7 +21,7 @@
- grant)&&in_array($v->group_srl,$module_info->grant[$key]))-->checked="true"/> + grants)&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="true"/> diff --git a/modules/board/tpl.admin/js/admin.js b/modules/board/tpl.admin/js/admin.js index d8d35ad33..b1daae2e2 100644 --- a/modules/board/tpl.admin/js/admin.js +++ b/modules/board/tpl.admin/js/admin.js @@ -5,31 +5,31 @@ **/ /* 모듈 생성 후 */ -function completeBoardInsert(ret_obj) { +function completeInsertBoard(ret_obj) { var error = ret_obj['error']; var message = ret_obj['message']; - var module = ret_obj['module']; - var act = ret_obj['act']; var page = ret_obj['page']; var module_srl = ret_obj['module_srl']; alert(message); - var url = "./?module=admin&mo="+module+"&module_srl="+module_srl+"&page="+page+"&act="+act; + var url = "./?module=admin&mo=board&module_srl="+module_srl+"&act=dispAdminBoardInfo"; + if(page) url += "&page="+page; + location.href = url; } /* 모듈 삭제 후 */ -function completeBoardDelet(ret_obj) { +function completeDeleteBoard(ret_obj) { var error = ret_obj['error']; var message = ret_obj['message']; - var mo = ret_obj['mo']; - var act = ret_obj['act']; var page = ret_obj['page']; alert(message); - var url = "./?module=admin&mo="+mo+"&page="+page+"&act="+act; + var url = "./?module=admin&mo=board&act=dispAdminContent"; + if(page) url += "&page="+page; + location.href = url; } @@ -45,14 +45,16 @@ function doUpdateCategory(category_srl, mode, message) { } /* 카테고리 정보 수정 후 */ -function completCategoryUpdate(ret_obj) { +function completeUpdateCategory(ret_obj) { var error = ret_obj['error']; var message = ret_obj['message']; var module_srl = ret_obj['module_srl']; - + var page = ret_obj['page']; alert(message); var url = "./?module=admin&mo=board&module_srl="+module_srl+"&act=dispAdminCategoryInfo"; + if(page) url += "&page="+page; + location.href = url; } @@ -75,17 +77,17 @@ function doUnSelectAll(obj, key) { } } -function completedInsertGrant(ret_obj) { +function completeInsertGrant(ret_obj) { var error = ret_obj['error']; var message = ret_obj['message']; - var mo = ret_obj['mo']; - var act = ret_obj['act']; var page = ret_obj['page']; var module_srl = ret_obj['module_srl']; alert(message); - var url = "./?module=admin&mo="+mo+"&module_srl="+module_srl+"&page="+page+"&act="+act; + var url = "./?module=admin&mo=board&module_srl="+module_srl+"&act=dispAdminGrantInfo"; + if(page) url += "&page="+page; + location.href = url; } diff --git a/modules/module/module.controller.php b/modules/module/module.controller.php index 295788dd3..a8674574e 100644 --- a/modules/module/module.controller.php +++ b/modules/module/module.controller.php @@ -86,11 +86,11 @@ /** * @brief 모듈의 권한 정보 변경 **/ - function updateModuleGrant($module_srl, $grant) { + function updateModuleGrant($module_srl, $grants) { $oDB = &DB::getInstance(); $args->module_srl = $module_srl; - $args->grant = $grant; + $args->grants = $grants; $output = $oDB->executeQuery('module.updateModuleGrant', $args); return $output; } diff --git a/modules/module/module.model.php b/modules/module/module.model.php index f46214638..74b0d4fa4 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -52,7 +52,7 @@ /** * @brief module_srl에 해당하는 모듈의 정보를 구함 **/ - function getModuleInfoByModuleSrl($module_srl='') { + function getModuleInfoByModuleSrl($module_srl) { // db객체 생성 $oDB = &DB::getInstance(); @@ -60,7 +60,7 @@ $args->module_srl = $module_srl; $output = $oDB->executeQuery('module.getMidInfo', $args); if(!$output->data) return; - + return $this->arrangeModuleInfo($output->data); } @@ -68,7 +68,7 @@ * @brief DB에서 가져온 원 모듈 정보에서 grant, extraVar등의 정리 **/ function arrangeModuleInfo($source_module_info) { - if(!$source_module_info) return; + if(!$source_module_info || !is_object($source_module_info) ) return; // serialize되어 있는 변수들 추출 $extra_vars = $source_module_info->extra_vars; @@ -91,9 +91,7 @@ if($grants) $module_info->grants = unserialize($grants); // 관리자 아이디의 정리 - if($module_info->admin_id) { - $module_info->admin_id = explode(',',$module_info->admin_id); - } + if($admin_id) $module_info->admin_id = explode(',',$admin_id); return $module_info; }