diff --git a/modules/blog/blog.class.php b/modules/blog/blog.class.php index c5c9e6989..2addd1815 100644 --- a/modules/blog/blog.class.php +++ b/modules/blog/blog.class.php @@ -30,6 +30,9 @@ $oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminGrantInfo'); $oModuleController->insertActionForward('blog', 'controller', 'procBlogAdminUpdateSkinInfo'); + // 캐쉬로 사용할 디렉토리 생성 + FileHandler::makeDir('./files/cache/blog_category'); + return new Object(); } diff --git a/modules/blog/blog.model.php b/modules/blog/blog.model.php new file mode 100644 index 000000000..8ec02eea9 --- /dev/null +++ b/modules/blog/blog.model.php @@ -0,0 +1,95 @@ + +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; + } + + /** + * @brief 특정 카테고리의 정보를 return + * 이 정보중에 group_srls의 경우는 , 로 연결되어 들어가며 사용시에는 explode를 통해 array로 변환 시킴 + **/ + function getCategoryInfo($category_srl) { + // category_srl이 있으면 해당 메뉴의 정보를 가져온다 + $args->category_srl= $menu_item_srl; + $output = executeQuery('blog.getCategoryInfo', $args); + $node = $output->data; + if($node->group_srls) $node->group_srls = explode(',',$node->group_srls); + else $node->group_srls = array(); + return $node; + } + + /** + * @brief 특정 카테고리의 정보를 이용하여 템플릿을 구한후 return + * 관리자 페이지에서 특정 메뉴의 정보를 추가하기 위해 서버에서 tpl을 컴파일 한후 컴파일 된 html을 직접 return + **/ + function getCategoryAdminTplInfo() { + // 해당 메뉴의 정보를 가져오기 위한 변수 설정 + $category_srl = Context::get('category_srl'); + $parent_srl = Context::get('parent_srl'); + + // 회원 그룹의 목록을 가져옴 + $oMemberModel = &getModel('member'); + $group_list = $oMemberModel->getGroups(); + Context::set('group_list', $group_list); + + // parent_srl이 있고 category_srl 이 없으면 하부 메뉴 추가임 + if(!$category_srl && $parent_srl) { + // 상위 메뉴의 정보를 가져옴 + $parent_info = $this->getCategoryInfo($parent_srl); + + // 추가하려는 메뉴의 기본 변수 설정 + $category_info->category_srl = getNextSequence(); + $category_info->parent_srl = $parent_srl; + $category_info->parent_category_name = $parent_info->name; + + // root에 메뉴 추가하거나 기존 메뉴의 수정일 경우 + } else { + // category_srl 이 있으면 해당 메뉴의 정보를 가져온다 + if($category_srl) $category_info = $this->getCategoryInfo($category_srl); + + // 찾아진 값이 없다면 신규 메뉴 추가로 보고 category_srl값만 구해줌 + if(!$category_info->category_srl) { + $category_info->category_srl = getNextSequence(); + } + } + + Context::set('category_info', $category_info); + + // template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다. + require_once("./classes/template/TemplateHandler.class.php"); + $oTemplate = new TemplateHandler(); + $tpl = $oTemplate->compile($this->module_path.'tpl', 'category_info'); + + // return 할 변수 설정 + $this->add('tpl', $tpl); + } + + } +?> diff --git a/modules/blog/blog.view.php b/modules/blog/blog.view.php index 3d48335a7..e08e5792b 100644 --- a/modules/blog/blog.view.php +++ b/modules/blog/blog.view.php @@ -530,10 +530,15 @@ * @brief 카테고리의 정보 출력 **/ function dispBlogAdminCategoryInfo() { - // module_srl을 구함 $module_srl = Context::get('module_srl'); + // 메뉴의 정보를 가져옴 + $oMenuModel = &getModel('blog'); + $category_info = $oMenuModel->getCategory($module_srl); + + Context::set('category_info', $category_info); + $this->setTemplateFile('category_list'); } diff --git a/modules/blog/lang/ko.lang.php b/modules/blog/lang/ko.lang.php index ca58d4ca8..d4d44ed17 100644 --- a/modules/blog/lang/ko.lang.php +++ b/modules/blog/lang/ko.lang.php @@ -13,12 +13,17 @@ $lang->cmd_manage_grant = '권한관리'; $lang->cmd_manage_skin = '스킨관리'; $lang->cmd_manage_document = '게시글 관리'; + $lang->cmd_make_child = '하위 카테고리 추가'; // 항목 $lang->header_text = '상단 내용'; $lang->footer_text = '하단 내용'; $lang->use_category = '분류 사용'; $lang->category_title = '분류명'; + $lang->parent_category_name = '상위 카테고리명'; + $lang->category_name = '카테고리명'; + $lang->expand = '펼침'; + $lang->category_group_srls = '그룹제한'; $lang->checked_count = '선택된 글 수'; $lang->skin_default_info = '스킨 기본정보'; @@ -44,6 +49,10 @@ $lang->about_admin_id = '해당 모듈에 대해 최고 권한을 가지는 관리자를 지정할 수 있습니다.
,(콤마)로 다수 아이디 지정이 가능합니다. (관리자페이지 접근은 불가능)'; $lang->about_grant = '특정 권한의 대상을 모두 해제하시면 로그인하지 않은 회원까지 권한을 가질 수 있습니다'; + $lang->about_category_name = '카테고리 이름을 입력해주세요'; + $lang->about_expand = '선택하시면 늘 펼쳐진 상태로 있게 합니다'; + $lang->category_group_srls = '선택하신 그룹만 현재 카테고리가 보이게 됩니다. (xml파일을 직접 열람하면 노출이 됩니다)'; + $lang->msg_new_module = '모듈 생성'; $lang->msg_update_module = '모듈 수정'; $lang->msg_category_is_null = '등록된 분류가 없습니다'; diff --git a/modules/blog/queries/getCategory.xml b/modules/blog/queries/getCategory.xml new file mode 100644 index 000000000..ac2827142 --- /dev/null +++ b/modules/blog/queries/getCategory.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/modules/blog/queries/getCategoryInfo.xml b/modules/blog/queries/getCategoryInfo.xml new file mode 100644 index 000000000..3ebe79059 --- /dev/null +++ b/modules/blog/queries/getCategoryInfo.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/blog/tpl/category_info.html b/modules/blog/tpl/category_info.html new file mode 100644 index 000000000..9f8382174 --- /dev/null +++ b/modules/blog/tpl/category_info.html @@ -0,0 +1,50 @@ + + + +
+++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->parent_category_name}{$category_info->parent_category_name}
{$lang->category_name}
{$lang->about_category_name}
{$lang->expand}expand=="Y")-->checked="true" />
{$lang->about_expand}
{$lang->category_group_srls} + + group_srls)&&in_array($key, $category_info->group_srls))-->checked="true"/> + + +
{$lang->about_category_group_srls}
+ + + + + + + +