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 @@
| {$lang->category_name} |
- |
+ |
| {$lang->about_category_name} |
@@ -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 @@
+
+
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", "");
}