diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index cb9f95532..43cc1e9e2 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -431,8 +431,15 @@ * @brief 요청받은 url에 args_list를 적용하여 return **/ function _getUrl($num_args, $args_list) { - if(!is_object($this->get_vars)) $get_vars = null; - else $get_vars = clone($this->get_vars); + if(!is_object($this->get_vars) || $args_list[0]=='') { + $get_vars = null; + if($args_list[0]=='') { + array_shift($args_list); + $num_args = count($args_list); + } + } else { + $get_vars = clone($this->get_vars); + } for($i=0;$i<$num_args;$i=$i+2) { $key = $args_list[$i]; diff --git a/modules/admin/tpl/layout.html b/modules/admin/tpl/layout.html index 3ee359200..4461adf8a 100644 --- a/modules/admin/tpl/layout.html +++ b/modules/admin/tpl/layout.html @@ -15,13 +15,13 @@
class="selected"> - {$lang->board_manager} + {$lang->board_manager} class="selected"> - {$lang->member_manager} + {$lang->member_manager} class="selected"> - {$lang->layout_manager} + {$lang->layout_manager}
@@ -29,7 +29,7 @@
act)-->class="selected"> - {$val->title} + {$val->title}
@@ -37,7 +37,7 @@
- {$selected_module_info->title} (ver {$selected_module_info->version}) + {$selected_module_info->title} (ver {$selected_module_info->version})
diff --git a/modules/board/board.controller.php b/modules/board/board.controller.php index 9d1eb35df..fc4577a25 100644 --- a/modules/board/board.controller.php +++ b/modules/board/board.controller.php @@ -432,7 +432,7 @@ **/ function procInsertBoard() { // 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 - $args = Context::gets('module_srl','layout_srl','board_name','skin','browser_title','description','is_default','header_text','footer_text','admin_id'); + $args = Context::gets('module_srl','layout_srl','module_category_srl','board_name','skin','browser_title','description','is_default','header_text','footer_text','admin_id'); $args->module = 'board'; $args->mid = $args->board_name; unset($args->board_name); diff --git a/modules/board/board.view.php b/modules/board/board.view.php index 306a0ee51..5c76b2c47 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -11,60 +11,74 @@ * @brief 초기화 * * board 모듈은 일반 사용과 관리자용으로 나누어진다.\n - * act값의 앞에 dispAdmin이 있으면 관리자용 action으로 취급해버림 **/ function init() { + } - // 관리자용 action일때 - if(substr($this->act,0,9)=='dispAdmin') { + /** + * @brief 관리자 기능 호출시에 관련 정보들 세팅해줌 + **/ + function initAdmin() { + // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅 + $module_srl = Context::get('module_srl'); - // 템플릿 경로 지정 (board의 경우 tpl.admin에 관리자용 템플릿 모아놓음) - $template_path = sprintf("%stpl.admin/",$this->module_path); - // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅 - $module_srl = Context::get('module_srl'); + // module model 객체 생성 + $oModuleModel = &getModel('module'); - if($module_srl) { - $oModuleModel = &getModel('module'); - $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); - if(!$module_info) { - Context::set('module_srl',''); - $this->act = 'list'; - } else { - $this->module_info = $module_info; - Context::set('module_info',$module_info); - } + // module_srl이 넘어오면 해당 모듈의 정보를 미리 구해 놓음 + if($module_srl) { + $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); + if(!$module_info) { + Context::set('module_srl',''); + $this->act = 'list'; + } else { + $this->module_info = $module_info; + Context::set('module_info',$module_info); } - - // 일반 action일 경우 - } else { - - // 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅 - if($this->module_info->use_category=='Y') { - $oDocumentModel = &getModel('document'); - $this->category_list = $oDocumentModel->getCategoryList($this->module_srl); - Context::set('category_list', $this->category_list); - } - - // 에디터 세팅 - Context::set('editor', $this->editor); - $editor_path = sprintf("./editor/%s/", $this->editor); - Context::set('editor_path', $editor_path); - Context::loadLang($editor_path); - - // 스킨 템플릿 경로 구함 - $template_path = sprintf("%sskins/%s/",$this->module_path, $this->skin); - - // 템플릿에서 사용할 변수를 Context::set() - if($this->module_srl) Context::set('module_srl',$this->module_srl); - - Context::set('module_info',$this->module_info); } + // 모듈 카테고리 목록을 구함 + $module_category = $oModuleModel->getModuleCategories(); + Context::set('module_category', $module_category); + + // 템플릿 경로 구함 (board의 경우 tpl.admin에 관리자용 템플릿 모아놓음) + $template_path = sprintf("%stpl.admin/",$this->module_path); + + // 템플릿 경로 지정 + $this->setTemplatePath($template_path); + } + + /** + * @brief 일반 게시판 호출시에 관련 정보를 세팅해줌 + **/ + function initNormal() { + + // 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅 + if($this->module_info->use_category=='Y') { + $oDocumentModel = &getModel('document'); + $this->category_list = $oDocumentModel->getCategoryList($this->module_srl); + Context::set('category_list', $this->category_list); + } + + // 에디터 세팅 + Context::set('editor', $this->editor); + $editor_path = sprintf("./editor/%s/", $this->editor); + Context::set('editor_path', $editor_path); + Context::loadLang($editor_path); + + // 템플릿에서 사용할 변수를 Context::set() + if($this->module_srl) Context::set('module_srl',$this->module_srl); + + Context::set('module_info',$this->module_info); + // 기본 모듈 정보들 설정 $this->list_count = $this->module_info->list_count?$this->module_info->list_count:20; $this->page_count = $this->module_info->page_count?$this->module_info->page_count:10; + // 스킨 템플릿 경로 구함 + $template_path = sprintf("%sskins/%s/",$this->module_path, $this->skin); + // 템플릿 경로 지정 $this->setTemplatePath($template_path); } @@ -73,6 +87,9 @@ * @brief 목록 및 선택된 글 출력 **/ function dispContent() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + // 권한 체크 if(!$this->grant->list) return $this->dispMessage('msg_not_permitted'); @@ -138,6 +155,9 @@ * @brief 글 작성 화면 출력 **/ function dispWrite() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + // 권한 체크 if(!$this->grant->write_document) return $this->dispMessage('msg_not_permitted'); @@ -175,6 +195,9 @@ * @brief 문서 삭제 화면 출력 **/ function dispDelete() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + // 권한 체크 if(!$this->grant->write_document) return $this->dispMessage('msg_not_permitted'); @@ -202,6 +225,9 @@ * @brief 댓글의 답글 화면 출력 **/ function dispReplyComment() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + // 권한 체크 if(!$this->grant->write_comment) return $this->dispMessage('msg_not_permitted'); @@ -232,6 +258,9 @@ * @brief 댓글 수정 폼 출력 **/ function dispModifyComment() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + // 권한 체크 if(!$this->grant->write_comment) return $this->dispMessage('msg_not_permitted'); @@ -264,6 +293,9 @@ * @brief 댓글 삭제 화면 출력 **/ function dispDeleteComment() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + // 권한 체크 if(!$this->grant->write_comment) return $this->dispMessage('msg_not_permitted'); @@ -291,6 +323,9 @@ * @brief 엮인글 삭제 화면 출력 **/ function dispDeleteTrackback() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + // 삭제할 댓글번호를 가져온다 $trackback_srl = Context::get('trackback_srl'); @@ -311,6 +346,9 @@ * @brief 회원가입폼 **/ function dispSignUpForm() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + // 이미 로그인되어 있으면 로그인 한 회원의 정보를 세팅하여 정보 수정을 시킴 if(Context::get('is_logged')) { Context::set('member_info', Context::get('logged_info')); @@ -328,6 +366,9 @@ * @brief 로그인 폼 출력 **/ function dispLogin() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + if(Context::get('is_logged')) return $this->dispContent(); $this->setTemplateFile('login_form'); } @@ -336,6 +377,9 @@ * @brief 로그아웃 화면 출력 **/ function dispLogout() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + if(!Context::get('is_logged')) return $this->dispContent(); $this->setTemplateFile('logout'); } @@ -345,6 +389,9 @@ * @brief 메세지 출력 **/ function dispMessage($msg_code) { + // 모듈 관련 정보 세팅 + $this->initNormal(); + $msg = Context::getLang($msg_code); if(!$msg) $msg = $msg_code; Context::set('message', $msg); @@ -355,6 +402,9 @@ * @brief RSS 출력 **/ function dispRss() { + // 모듈 관련 정보 세팅 + $this->initNormal(); + // 권한 체크 if(!$this->grant->list) return $this->dispMessage('msg_not_permitted'); @@ -395,12 +445,16 @@ * @brief 게시판 관리 목록 보여줌 **/ function dispAdminContent() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + // 등록된 board 모듈을 불러와 세팅 $oDB = &DB::getInstance(); $args->sort_index = "module_srl"; $args->page = Context::get('page'); $args->list_count = 40; $args->page_count = 10; + $args->s_module_category_srl = Context::get('module_category_srl'); $output = $oDB->executeQuery('board.getBoardList', $args); // 템플릿에 쓰기 위해서 context::set @@ -418,6 +472,9 @@ * @brief 게시판에 필요한 기본 설정들 **/ function dispAdminModuleConfig() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + // 설정 정보를 받아옴 (module model 객체를 이용) $oModuleModel = &getModel('module'); $config = $oModuleModel->getModuleConfig('board'); @@ -432,6 +489,9 @@ * @brief 선택된 게시판의 정보 출력 **/ function dispAdminBoardInfo() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + // module_srl 값이 없다면 그냥 index 페이지를 보여줌 if(!Context::get('module_srl')) return $this->dispAdminContent(); @@ -451,6 +511,9 @@ * @brief 게시판 추가 폼 출력 **/ function dispAdminInsertBoard() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + // 스킨 목록을 구해옴 $oModuleModel = &getModel('module'); $skin_list = $oModuleModel->getSkins($this->module_path); @@ -469,6 +532,9 @@ * @brief 게시판 삭제 화면 출력 **/ function dispAdminDeleteBoard() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + if(!Context::get('module_srl')) return $this->dispContent(); $module_info = Context::get('module_info'); @@ -487,6 +553,9 @@ * @brief 스킨 정보 보여줌 **/ function dispAdminSkinInfo() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + // 현재 선택된 모듈의 스킨의 정보 xml 파일을 읽음 $module_info = Context::get('module_info'); $skin = $module_info->skin; @@ -513,6 +582,9 @@ * @brief 카테고리의 정보 출력 **/ function dispAdminCategoryInfo() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + // module_srl을 구함 $module_srl = Context::get('module_srl'); @@ -544,6 +616,9 @@ * @brief 권한 목록 출력 **/ function dispAdminGrantInfo() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + // module_srl을 구함 $module_srl = Context::get('module_srl'); diff --git a/modules/board/lang/ko.lang.php b/modules/board/lang/ko.lang.php index 62f73a8a7..e5cbf145e 100644 --- a/modules/board/lang/ko.lang.php +++ b/modules/board/lang/ko.lang.php @@ -47,6 +47,7 @@ // 주절 주절.. $lang->about_mid = "모듈이름은 http://주소/?mid=모듈이름 처럼 직접 호출할 수 있는 값입니다. (영문+숫자만 가능)"; + $lang->about_category = "분류를 통한 관리를 할 수 있도록 합니다. 모듈 분류의 관리는 모듈관리 > 모듈카테고리에서 하실 수 있습니다."; $lang->about_browser_title = "브라우저의 제목에 나타나는 값입니다. RSS/Trackback에서도 사용됩니다."; $lang->about_description= "관리용으로 사용되는 설명입니다"; $lang->about_default = "선택하시면 사이트에 mid값 없이 접속하였을 경우 기본으로 보여줍니다"; diff --git a/modules/board/queries/getBoardList.xml b/modules/board/queries/getBoardList.xml index 2a8ad6131..17f3bc81a 100644 --- a/modules/board/queries/getBoardList.xml +++ b/modules/board/queries/getBoardList.xml @@ -10,6 +10,7 @@ + diff --git a/modules/board/tpl.admin/board_info.html b/modules/board/tpl.admin/board_info.html index d181360a6..240df2da8 100644 --- a/modules/board/tpl.admin/board_info.html +++ b/modules/board/tpl.admin/board_info.html @@ -1,6 +1,16 @@ + + + + + + + + + + + diff --git a/modules/board/tpl.admin/filter/insert_board.xml b/modules/board/tpl.admin/filter/insert_board.xml index c83ac87f0..5092f4ee4 100644 --- a/modules/board/tpl.admin/filter/insert_board.xml +++ b/modules/board/tpl.admin/filter/insert_board.xml @@ -8,6 +8,7 @@ + diff --git a/modules/board/tpl.admin/index.html b/modules/board/tpl.admin/index.html index 65eedcb6b..43034535b 100644 --- a/modules/board/tpl.admin/index.html +++ b/modules/board/tpl.admin/index.html @@ -14,6 +14,16 @@
{$lang->category} + + {$lang->not_exists} + + {$module_category[$module_info->module_category_srl]->title} + +
{$lang->layout} diff --git a/modules/board/tpl.admin/board_insert.html b/modules/board/tpl.admin/board_insert.html index c3f5d973c..df7f876e2 100644 --- a/modules/board/tpl.admin/board_insert.html +++ b/modules/board/tpl.admin/board_insert.html @@ -27,6 +27,20 @@
{$lang->about_mid}
{$lang->category} + +
{$lang->about_category}
{$lang->browser_title}
+ @@ -26,6 +36,13 @@ + diff --git a/modules/board/tpl.admin/js/admin.js b/modules/board/tpl.admin/js/admin.js index b1daae2e2..5df85b46c 100644 --- a/modules/board/tpl.admin/js/admin.js +++ b/modules/board/tpl.admin/js/admin.js @@ -91,3 +91,9 @@ function completeInsertGrant(ret_obj) { location.href = url; } +/* 카테고리 이동 */ +function doChangeCategory(sel_obj, url) { + var module_category_srl = sel_obj.options[sel_obj.selectedIndex].value; + if(!module_category_srl) location.href=url; + else location.href=url+'&module_category_srl='+module_category_srl; +} diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 7763f358d..126a36686 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -386,8 +386,13 @@ // 데이터를 DB에서 가져옴 $output = $oDB->executeQuery('module.getModuleCategories'); if(!$output->toBool()) return $output; - if($output->data && !is_array($output->data)) return array($output->data); - return $output->data; + if($output->data && !is_array($output->data)) $list = array($output->data); + else $list = $output->data; + + foreach($list as $val) { + $category_list[$val->module_category_srl] = $val; + } + return $category_list; } /**
{$lang->no} +
+ +
+
{$lang->mid} {$lang->browser_title} {$lang->is_default}
{$no} + + {$lang->not_exists} + + {$module_category[$val->module_category_srl]->title} + + {$val->mid} {$val->browser_title} {$val->is_default}