diff --git a/modules/pagemaker/conf/module.xml b/modules/pagemaker/conf/module.xml index eb34852b4..268fc2f3b 100644 --- a/modules/pagemaker/conf/module.xml +++ b/modules/pagemaker/conf/module.xml @@ -3,6 +3,13 @@ + + + + + + + diff --git a/modules/pagemaker/pagemaker.controller.php b/modules/pagemaker/pagemaker.controller.php index f0ee6909f..a2b18c38b 100644 --- a/modules/pagemaker/pagemaker.controller.php +++ b/modules/pagemaker/pagemaker.controller.php @@ -13,6 +13,88 @@ function init() { } + /** + * @brief 페이지 추가 + **/ + function procInsertBoard() { + // 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 + $args = Context::gets('module_srl','layout_srl','module_category_srl','page_name','skin','browser_title','description','is_default','header_text','footer_text','admin_id'); + $args->module = 'page'; + $args->mid = $args->page_name; + unset($args->page_name); + if($args->is_default!='Y') $args->is_default = 'N'; + + // 기본 값외의 것들을 정리 + $extra_var = delObjectVars(Context::getRequestVars(), $args); + if($extra_var->use_category!='Y') $extra_var->use_category = 'N'; + unset($extra_var->mo); + unset($extra_var->act); + unset($extra_var->page); + unset($extra_var->page_name); + + // 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); + } + + // $extra_var를 serialize + $args->extra_vars = serialize($extra_var); + + // module 모듈의 controller 객체 생성 + $oModuleController = &getController('module'); + + // is_default=='Y' 이면 + if($args->is_default=='Y') $oModuleController->clearDefaultModule(); + + // module_srl의 값에 따라 insert/update + if(!$args->module_srl) { + $output = $oModuleController->insertModule($args); + $msg_code = 'success_registed'; + } else { + $output = $oModuleController->updateModule($args); + $msg_code = 'success_updated'; + } + + if(!$output->toBool()) return $output; + + $this->add('page',Context::get('page')); + $this->add('module_srl',$output->get('module_srl')); + $this->setMessage($msg_code); + } + + /** + * @brief 페이지 삭제 + **/ + function procDeleteBoard() { + $module_srl = Context::get('module_srl'); + + // 원본을 구해온다 + $oModuleController = &getController('module'); + $output = $oModuleController->deleteModule($module_srl); + if(!$output->toBool()) return $output; + + $this->add('module','page'); + $this->add('page',Context::get('page')); + $this->setMessage('success_deleted'); + } + + /** + * @brief 페이지 기본 정보의 추가 + **/ + function procInsertConfig() { + // 기본 정보를 받음 + $args = Context::gets('test'); + + // module Controller 객체 생성하여 입력 + $oModuleController = &getController('module'); + $output = $oModuleController->insertModuleConfig('page',$args); + return $output; + } + /** * @brief 첨부파일 업로드 **/ diff --git a/modules/pagemaker/pagemaker.view.php b/modules/pagemaker/pagemaker.view.php index b2c5e0c59..53c5928c1 100644 --- a/modules/pagemaker/pagemaker.view.php +++ b/modules/pagemaker/pagemaker.view.php @@ -19,10 +19,47 @@ $this->setTemplatePath($this->module_path.'tpl.admin'); } + /** + * @brief 관리자 기능 호출시에 관련 정보들 세팅해줌 + **/ + function initAdmin() { + // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅 + $module_srl = Context::get('module_srl'); + + // module model 객체 생성 + $oModuleModel = &getModel('module'); + + // 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); + } + } + + // 모듈 카테고리 목록을 구함 + $module_category = $oModuleModel->getModuleCategories(); + Context::set('module_category', $module_category); + + // 템플릿 경로 구함 (page의 경우 tpl.admin에 관리자용 템플릿 모아놓음) + $template_path = sprintf("%stpl.admin/",$this->module_path); + + // 템플릿 경로 지정 + $this->setTemplatePath($template_path); + } + + /** * @brief 페이지 관리 목록 보여줌 **/ function dispAdminContent() { + // 모듈 관련 정보 세팅 + $this->initAdmin(); + // 등록된 page 모듈을 불러와 세팅 $oDB = &DB::getInstance(); $args->sort_index = "module_srl"; @@ -59,7 +96,69 @@ $this->setTemplateFile('page_config'); } + /** + * @brief 선택된 페이지의 정보 출력 + **/ + function dispAdminBoardInfo() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + // module_srl 값이 없다면 그냥 index 페이지를 보여줌 + if(!Context::get('module_srl')) return $this->dispAdminContent(); + + // 레이아웃이 정해져 있다면 레이아웃 정보를 추가해줌(layout_title, layout) + if($this->module_info->layout_srl) { + $oLayoutModel = &getModel('layout'); + $layout_info = $oLayoutModel->getLayout($this->module_info->layout_srl); + $this->module_info->layout = $layout_info->layout; + $this->module_info->layout_title = $layout_info->layout_title; + } + + // 템플릿 파일 지정 + $this->setTemplateFile('page_info'); + } + + /** + * @brief 페이지 추가 폼 출력 + **/ + function dispAdminInsertBoard() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + + // 스킨 목록을 구해옴 + $oModuleModel = &getModel('module'); + $skin_list = $oModuleModel->getSkins($this->module_path); + Context::set('skin_list',$skin_list); + + // 레이아웃 목록을 구해옴 + $oLayoutMode = &getModel('layout'); + $layout_list = $oLayoutMode->getLayoutList(); + Context::set('layout_list', $layout_list); + + // 템플릿 파일 지정 + $this->setTemplateFile('page_insert'); + } + + /** + * @brief 페이지 삭제 화면 출력 + **/ + function dispAdminDeleteBoard() { + // 관리자 관련 정보 세팅 + $this->initAdmin(); + + if(!Context::get('module_srl')) return $this->dispContent(); + + $module_info = Context::get('module_info'); + + $oDocumentModel = &getModel('document'); + $document_count = $oDocumentModel->getDocumentCount($module_info->module_srl); + $module_info->document_count = $document_count; + + Context::set('module_info',$module_info); + + // 템플릿 파일 지정 + $this->setTemplateFile('page_delete'); + } } ?> diff --git a/modules/pagemaker/tpl.admin/filter/delete_page.xml b/modules/pagemaker/tpl.admin/filter/delete_page.xml new file mode 100644 index 000000000..f67032d67 --- /dev/null +++ b/modules/pagemaker/tpl.admin/filter/delete_page.xml @@ -0,0 +1,10 @@ + +
+ + + + + + + +
diff --git a/modules/pagemaker/tpl.admin/filter/insert_config.xml b/modules/pagemaker/tpl.admin/filter/insert_config.xml new file mode 100644 index 000000000..b97a3e897 --- /dev/null +++ b/modules/pagemaker/tpl.admin/filter/insert_config.xml @@ -0,0 +1,7 @@ + +
+ + + + + diff --git a/modules/pagemaker/tpl.admin/filter/insert_page.xml b/modules/pagemaker/tpl.admin/filter/insert_page.xml new file mode 100644 index 000000000..40368c27e --- /dev/null +++ b/modules/pagemaker/tpl.admin/filter/insert_page.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/modules/pagemaker/tpl.admin/js/admin.js b/modules/pagemaker/tpl.admin/js/admin.js new file mode 100644 index 000000000..f41590eb5 --- /dev/null +++ b/modules/pagemaker/tpl.admin/js/admin.js @@ -0,0 +1,41 @@ +/** + * @file : modules/pagemaker/js/admin.js + * @author : zero + * @desc : pagemaker 모듈의 관리자용 javascript + **/ + +/* 모듈 생성 후 */ +function completeInsertPage(ret_obj) { + var error = ret_obj['error']; + var message = ret_obj['message']; + + var page = ret_obj['page']; + var module_srl = ret_obj['module_srl']; + + alert(message); + + var url = "./?module=admin&mo=pagemaker&module_srl="+module_srl+"&act=dispAdminPageInfo"; + if(page) url += "&page="+page; + + location.href = url; +} + +/* 모듈 삭제 후 */ +function completeDeletePage(ret_obj) { + var error = ret_obj['error']; + var message = ret_obj['message']; + var page = ret_obj['page']; + alert(message); + + var url = "./?module=admin&mo=pagemaker&act=dispAdminContent"; + if(page) url += "&page="+page; + + 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/pagemaker/tpl.admin/page_config.html b/modules/pagemaker/tpl.admin/page_config.html new file mode 100644 index 000000000..2f9b350ee --- /dev/null +++ b/modules/pagemaker/tpl.admin/page_config.html @@ -0,0 +1,18 @@ + + +
+ + + + + + + + + + + +
{$lang->test}
{$lang->about_test}
+ +
+
diff --git a/modules/pagemaker/tpl.admin/page_delete.html b/modules/pagemaker/tpl.admin/page_delete.html new file mode 100644 index 000000000..5f62bd9d4 --- /dev/null +++ b/modules/pagemaker/tpl.admin/page_delete.html @@ -0,0 +1,32 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{$lang->confirm_delete}
{$lang->module_name}{$module_info->mid}
{$lang->module}{$module_info->module}
{$lang->document_count}{$module_info->document_count}
+ + +
+ +
+ diff --git a/modules/pagemaker/tpl.admin/page_info.html b/modules/pagemaker/tpl.admin/page_info.html new file mode 100644 index 000000000..e220f183f --- /dev/null +++ b/modules/pagemaker/tpl.admin/page_info.html @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->category} + + {$lang->not_exists} + + {$module_category[$module_info->module_category_srl]->title} + +
{$lang->layout} + + {$module_info->layout_title} ({$module_info->layout}) + + {$lang->not_exists} + +
{$lang->skin}{$module_info->skin}
{$lang->browser_title}{$module_info->browser_title}
{$lang->use_category}{$lang->use}{$lang->notuse}
{$lang->list_count}{$module_info->list_count?$module_info->list_count:20}
{$lang->page_count}{$module_info->page_count?$module_info->page_count:10}
{$lang->description}{nl2br($module_info->description)}
{$lang->header_text}{$module_info->header_text}
{$lang->footer_text}{$module_info->footer_text}
{$lang->admin_id}{implode(",",$module_info->admin_id)}
+ +
diff --git a/modules/pagemaker/tpl.admin/page_insert.html b/modules/pagemaker/tpl.admin/page_insert.html new file mode 100644 index 000000000..65ba2be09 --- /dev/null +++ b/modules/pagemaker/tpl.admin/page_insert.html @@ -0,0 +1,85 @@ + + + +
+ + {$lang->msg_new_module} + + {$lang->msg_update_module} + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->mid}
{$lang->about_mid}
{$lang->category} + +
{$lang->about_category}
{$lang->browser_title}
{$lang->about_browser_title}
{$lang->layout} + +
{$lang->about_layout}
{$lang->is_default}is_default=='Y')-->checked="true"/>
{$lang->about_default}
{$lang->description}
{$lang->about_description}
+ + +
+