diff --git a/modules/blog/blog.controller.php b/modules/blog/blog.controller.php index 331d1cb28..784d61ca3 100644 --- a/modules/blog/blog.controller.php +++ b/modules/blog/blog.controller.php @@ -397,25 +397,15 @@ **/ function procBlogAdminInsertCategory() { // 입력할 변수 정리 - $source_args = Context::getRequestVars(); - unset($source_args->module); - unset($source_args->act); + $args = Context::gets('module_srl','category_srl','parent_srl','name','expand','group_srls'); - if($source_args->expand !="Y") $source_args->expand = "N"; - $source_args->group_srls = str_replace('|@|',',',$source_args->group_srls); - $source_args->parent_srl = (int)$source_args->parent_srl; - - // 변수를 다시 정리 (form문의 column과 DB column이 달라서) - $args->module_srl = $source_args->module_srl; - $args->category_srl = $source_args->category_srl; - $args->parent_srl = $source_args->parent_srl; - $args->name = $source_args->menu_name; - $args->expand = $source_args->menu_expand; - $args->group_srls = $source_args->group_srls; + if($args->expand !="Y") $args->expand = "N"; + $args->group_srls = str_replace('|@|',',',$args->group_srls); + $args->parent_srl = (int)$args->parent_srl; // 이미 존재하는지를 확인 $oBlogModel = &getModel('blog'); - $category_info = $oMenuModel->getCategoryInfo($args->category_srl); + $category_info = $oBlogModel->getCategoryInfo($args->category_srl); // 존재하게 되면 update를 해준다 if($category_info->category_srl == $args->category_srl) { @@ -433,12 +423,58 @@ $xml_file = $this->makeXmlFile($args->module_srl); $this->add('xml_file', $xml_file); - $this->add('module_srl', $args->menu_srl); - $this->add('category_srl', $args->menu_item_srl); - $this->add('category_title', $category_title); + $this->add('module_srl', $args->module_srl); + $this->add('category_srl', $args->category_srl); $this->add('parent_srl', $args->parent_srl); } + /** + * @brief 카테고리 삭제 + **/ + function procBlogAdminDeleteCategory() { + // 변수 정리 + $args = Context::gets('module_srl','category_srl'); + + $oBlogModel = &getModel('blog'); + + // 원정보를 가져옴 + $category_info = $oBlogModel->getCategoryInfo($args->category_srl); + if($category_info->parent_srl) $parent_srl = $category_info->parent_srl; + + // 자식 노드가 있는지 체크하여 있으면 삭제 못한다는 에러 출력 + $output = executeQuery('blog.getChildCategoryCount', $args); + if(!$output->toBool()) return $output; + if($output->data->count>0) return new Object(-1, 'msg_cannot_delete_for_child'); + + // DB에서 삭제 + $output = executeQuery("blog.deleteCategory", $args); + if(!$output->toBool()) return $output; + + // XML 파일을 갱신하고 위치을 넘겨 받음 + $xml_file = $this->makeXmlFile($args->module_srl); + + $this->add('xml_file', $xml_file); + $this->add('category_srl', $parent_srl); + $this->setMessage('success_deleted'); + } + + /** + * @brief xml 파일을 갱신 + * 관리자페이지에서 메뉴 구성 후 간혹 xml파일이 재생성 안되는 경우가 있는데\n + * 이럴 경우 관리자의 수동 갱신 기능을 구현해줌\n + * 개발 중간의 문제인 것 같고 현재는 문제가 생기지 않으나 굳이 없앨 필요 없는 기능 + **/ + function procBlogAdminMakeXmlFile() { + // 입력값을 체크 + $module_srl = Context::get('module_srl'); + + // xml파일 재생성 + $xml_file = $this->makeXmlFile($module_srl); + + // return 값 설정 + $this->add('xml_file',$xml_file); + } + /** * @brief 블로그 카테고리를 xml파일로 저장 **/ diff --git a/modules/blog/blog.model.php b/modules/blog/blog.model.php index e36742fe9..76f45ce9c 100644 --- a/modules/blog/blog.model.php +++ b/modules/blog/blog.model.php @@ -20,14 +20,7 @@ * 생성된 메뉴의 DB정보+XML정보를 return **/ function getCategory($module_srl) { - // 일단 DB에서 정보를 가져옴 - $args->module_srl = $module_srl; - $output = executeQuery('blog.getCategory', $args); - if(!$output->data) return; - - $category_info = $output->data; $category_info->xml_file = sprintf('./files/cache/blog_category/%s.xml.php',$module_srl); - $category_info->php_file = sprintf('./files/cache/blog_category/%s.php',$module_srl); return $category_info; } @@ -37,7 +30,7 @@ **/ function getCategoryInfo($category_srl) { // category_srl이 있으면 해당 메뉴의 정보를 가져온다 - $args->category_srl= $menu_item_srl; + $args->category_srl= $category_srl; $output = executeQuery('blog.getCategoryInfo', $args); $node = $output->data; if($node->group_srls) $node->group_srls = explode(',',$node->group_srls); diff --git a/modules/blog/blog.view.php b/modules/blog/blog.view.php index e08e5792b..a19a3837b 100644 --- a/modules/blog/blog.view.php +++ b/modules/blog/blog.view.php @@ -531,11 +531,11 @@ **/ function dispBlogAdminCategoryInfo() { // module_srl을 구함 - $module_srl = Context::get('module_srl'); + $module_srl = $this->module_info->module_srl; - // 메뉴의 정보를 가져옴 - $oMenuModel = &getModel('blog'); - $category_info = $oMenuModel->getCategory($module_srl); + // 카테고리 정보를 가져옴 + $oBlogModel = &getModel('blog'); + $category_info = $oBlogModel->getCategory($module_srl); Context::set('category_info', $category_info); diff --git a/modules/blog/conf/module.xml b/modules/blog/conf/module.xml index 20fd4ff22..2a5548f83 100644 --- a/modules/blog/conf/module.xml +++ b/modules/blog/conf/module.xml @@ -62,5 +62,7 @@ + + diff --git a/modules/blog/lang/ko.lang.php b/modules/blog/lang/ko.lang.php index 36f564d80..d7f6ea162 100644 --- a/modules/blog/lang/ko.lang.php +++ b/modules/blog/lang/ko.lang.php @@ -59,4 +59,5 @@ $lang->msg_grant_is_null = '등록된 권한 대상이 없습니다'; $lang->msg_no_checked_document = '선택된 게시물이 없습니다'; $lang->msg_move_failed = '이동 실패하였습니다'; + $lang->msg_cannot_delete_for_child = '하부 카테고리가 있는 카테고리는 삭제하실 수 없습니다'; ?> diff --git a/modules/blog/queries/deleteCategory.xml b/modules/blog/queries/deleteCategory.xml new file mode 100644 index 000000000..79b75d5c2 --- /dev/null +++ b/modules/blog/queries/deleteCategory.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/modules/blog/queries/getBlogCategories.xml b/modules/blog/queries/getBlogCategories.xml new file mode 100644 index 000000000..d732b5ca9 --- /dev/null +++ b/modules/blog/queries/getBlogCategories.xml @@ -0,0 +1,14 @@ + + +
+ + + + + + + + + + + diff --git a/modules/blog/queries/getChildCategoryCount.xml b/modules/blog/queries/getChildCategoryCount.xml new file mode 100644 index 000000000..b82d7c15a --- /dev/null +++ b/modules/blog/queries/getChildCategoryCount.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/blog/queries/insertCategory.xml b/modules/blog/queries/insertCategory.xml new file mode 100644 index 000000000..9205cdad8 --- /dev/null +++ b/modules/blog/queries/insertCategory.xml @@ -0,0 +1,15 @@ + + +
+ + + + + + + + + + + + diff --git a/modules/blog/queries/updateCategory.xml b/modules/blog/queries/updateCategory.xml new file mode 100644 index 000000000..f8ea145f2 --- /dev/null +++ b/modules/blog/queries/updateCategory.xml @@ -0,0 +1,13 @@ + + +
+ + + + + + + + + + diff --git a/modules/blog/schemas/blog_category.xml b/modules/blog/schemas/blog_category.xml index 9caec9ee8..ca3165dc4 100644 --- a/modules/blog/schemas/blog_category.xml +++ b/modules/blog/schemas/blog_category.xml @@ -1,7 +1,7 @@
- + - + diff --git a/modules/blog/tpl/category_info.html b/modules/blog/tpl/category_info.html index 9f8382174..5a0bdf0e6 100644 --- a/modules/blog/tpl/category_info.html +++ b/modules/blog/tpl/category_info.html @@ -12,7 +12,7 @@ - + @@ -41,7 +41,7 @@ - + diff --git a/modules/blog/tpl/category_list.html b/modules/blog/tpl/category_list.html index 4b3674b80..18e7352f2 100644 --- a/modules/blog/tpl/category_list.html +++ b/modules/blog/tpl/category_list.html @@ -3,38 +3,39 @@ + + -
- - + -
{$lang->category_name}
{$lang->about_category_name}
-
+
- +
- +
-
+
@@ -42,6 +43,6 @@ diff --git a/modules/blog/tpl/filter/delete_category.xml b/modules/blog/tpl/filter/delete_category.xml index cfdadde97..05093325a 100644 --- a/modules/blog/tpl/filter/delete_category.xml +++ b/modules/blog/tpl/filter/delete_category.xml @@ -2,12 +2,10 @@
- + - - diff --git a/modules/blog/tpl/filter/insert_category.xml b/modules/blog/tpl/filter/insert_category.xml index 25aaa98b5..2f65b59aa 100644 --- a/modules/blog/tpl/filter/insert_category.xml +++ b/modules/blog/tpl/filter/insert_category.xml @@ -1,14 +1,23 @@
+ + + + + + + + + + - - +
diff --git a/modules/blog/tpl/filter/move_category.xml b/modules/blog/tpl/filter/move_category.xml index c6e1e3731..fd2424b9e 100644 --- a/modules/blog/tpl/filter/move_category.xml +++ b/modules/blog/tpl/filter/move_category.xml @@ -1,7 +1,7 @@ - +
- + diff --git a/modules/blog/tpl/js/blog_admin.js b/modules/blog/tpl/js/blog_admin.js index 1e3e35433..1e418a135 100644 --- a/modules/blog/tpl/js/blog_admin.js +++ b/modules/blog/tpl/js/blog_admin.js @@ -123,7 +123,7 @@ function completeManageDocument(ret_obj) { function doInsertCategory(parent_srl) { if(typeof(parent_srl)=='undefined') parent_srl = 0; var params = {node_srl:0, parent_srl:parent_srl} - doGetCategoryInfo('category', params); + doGetCategoryInfo(null, params); deSelectNode(); } @@ -155,28 +155,26 @@ function doGetCategoryInfo(category_id, obj) { /* 서버로부터 받아온 카테고리 정보를 출력 */ function completeGetCategoryTplInfo(ret_obj, response_tags) { var tpl = ret_obj['tpl']; - xInnerHtml("category_zone_info", tpl); + xInnerHtml("category_info", tpl); var fo_obj = xGetElementById("fo_category"); - fo_obj.name.focus(); + fo_obj.category_name.focus(); } /* 카테고리 아이템 입력후 */ function completeInsertCategory(ret_obj) { - var category_id = ret_obj['category_id']; var xml_file = ret_obj['xml_file']; - var category_title = ret_obj['category_title']; var category_srl = ret_obj['category_srl']; - var category_category_srl = ret_obj['category_category_srl']; + var module_srl = ret_obj['module_srl']; var parent_srl = ret_obj['parent_srl']; if(!xml_file) return; - loadTreeMenu(xml_file, 'category', 'category_zone_category', category_title, doGetCategoryInfo, category_category_srl, doMoveTree); + loadTreeMenu(xml_file, 'category', 'zone_category', category_title, doGetCategoryInfo, category_srl, doMoveTree); - if(!category_srl) xInnerHtml("category_zone_info", ""); + if(!category_srl) xInnerHtml("category_info", ""); else { - var params = {node_srl:category_zone_info, parent_srl:parent_srl} - doGetCategoryInfo('category', params) + var params = {node_srl:category_srl, parent_srl:parent_srl} + doGetCategoryInfo(null, params) } } @@ -209,17 +207,17 @@ function completeMoveCategory(ret_obj) { } /* 카테고리 목록 갱신 */ -function doReloadTreeMenu(module_srl) { +function doReloadTreeCategory(module_srl) { var params = new Array(); params["module_srl"] = module_srl; // 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다. - var response_tags = new Array('error','message', 'xml_file', 'category_title'); + var response_tags = new Array('error','message', 'xml_file'); exec_xml('blog', 'procBlogAdminMakeXmlFile', params, completeInsertCategory, response_tags, params); } /* 카테고리 삭제 */ -function doDeleteCategoryItem(category_srl) { +function doDeleteCategory(category_srl) { var fo_obj = xGetElementById("fo_category"); if(!fo_obj) return; @@ -228,13 +226,12 @@ function doDeleteCategoryItem(category_srl) { /* 카테고리 아이템 삭제 후 */ function completeDeleteCategory(ret_obj) { - var category_title = ret_obj['category_title']; var module_srl = ret_obj['module_srl']; var category_srl = ret_obj['category_srl']; var xml_file = ret_obj['xml_file']; alert(ret_obj['message']); - loadTreeMenu(xml_file, 'category', 'category_zone_category', category_title, doGetCategoryInfo, category_srl, doMoveTree); - xInnerHtml("category_zone_info", ""); + loadTreeMenu(xml_file, 'category', 'zone_category', category_title, doGetCategoryInfo, category_srl, doMoveTree); + xInnerHtml("category_info", ""); }