git-svn-id: http://xe-core.googlecode.com/svn/trunk@676 201d5d3c-b55e-5fd7-737f-ddc643e51545

This commit is contained in:
zero 2007-03-26 11:48:36 +00:00
parent 8fe469eb77
commit 9b6bb9e6dd
11 changed files with 476 additions and 0 deletions

View file

@ -3,6 +3,13 @@
<grants />
<actions>
<action name="dispAdminContent" type="view" admin_index="true" standalone="true" />
<action name="dispAdminModuleConfig" type="view" standalone="true" />
<action name="dispAdminBoardInfo" type="view" standalone="true" />
<action name="dispAdminInsertBoard" type="view" standalone="true" />
<action name="dispAdminDeleteBoard" type="view" standalone="true" />
<action name="procInsertBoard" type="controller" standalone="true" />
<action name="procDeleteBoard" type="controller" standalone="true" />
<action name="procInsertConfig" type="controller" standalone="true" />
<action name="procUploadFile" type="controller" standalone="true" />
<action name="procDeleteFile" type="controller" standalone="true" />
</actions>

View file

@ -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 첨부파일 업로드
**/

View file

@ -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');
}
}
?>

View file

@ -0,0 +1,10 @@
<filter name="delete_page" module="page" act="procDeletePage">
<form>
<node target="module_srl" required="true" />
</form>
<response callback_func="completeDeletePage">
<tag name="error" />
<tag name="message" />
<tag name="page" />
</response>
</filter>

View file

@ -0,0 +1,7 @@
<filter name="insert_config" module="page" act="procInsertConfig" confirm_msg_code="confirm_submit">
<form />
<response>
<tag name="error" />
<tag name="message" />
</response>
</filter>

View file

@ -0,0 +1,32 @@
<filter name="insert_page" module="page" act="procInsertPage" confirm_msg_code="confirm_submit">
<form>
<node target="mid" required="true" filter="alpha_number" />
<node target="browser_title" required="true" maxlength="250" />
<node target="list_count" required="true" filter="number" />
<node target="page_count" required="true" filter="number" />
</form>
<parameter>
<param name="page_name" target="mid" />
<param name="module_srl" target="module_srl" />
<param name="module_category_srl" target="module_category_srl" />
<param name="layout_srl" target="layout_srl" />
<param name="skin" target="skin" />
<param name="browser_title" target="browser_title" />
<param name="use_category" target="use_category" />
<param name="list_count" target="list_count" />
<param name="page_count" target="page_count" />
<param name="is_default" target="is_default" />
<param name="description" target="description" />
<param name="header_text" target="header_text" />
<param name="footer_text" target="footer_text" />
<param name="admin_id" target="admin_id" />
</parameter>
<response callback_func="completeInsertPage">
<tag name="error" />
<tag name="message" />
<tag name="module" />
<tag name="act" />
<tag name="page" />
<tag name="module_srl" />
</response>
</filter>

View file

@ -0,0 +1,41 @@
/**
* @file : modules/pagemaker/js/admin.js
* @author : zero <zero@nzeo.com>
* @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;
}

View file

@ -0,0 +1,18 @@
<!--%import("filter/insert_config.xml")-->
<form action="./" method="get" onsubmit="return procFilter(this, insert_config)">
<table border="1">
<tr>
<th rowspan="2">{$lang->test}</th>
<td><input type="text" name="test" value="{$config->test}" /></td>
</tr>
<tr>
<td>{$lang->about_test}</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="{$lang->cmd_registration}" accesskey="s" />
</td>
</tr>
</table>
</form>

View file

@ -0,0 +1,32 @@
<!--%import("filter/delete_page.xml")-->
<!--%import("js/admin.js")-->
<form action="./" method="get" onsubmit="return procFilter(this, delete_page)">
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="module_srl" value="{$module_info->module_srl}" />
<table>
<tr>
<th colspan="2">{$lang->confirm_delete}</th>
</tr>
<tr>
<th>{$lang->module_name}</th>
<td>{$module_info->mid}</td>
</tr>
<tr>
<th>{$lang->module}</th>
<td>{$module_info->module}</td>
</tr>
<tr>
<th>{$lang->document_count}</th>
<td>{$module_info->document_count}</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="{$lang->cmd_delete}" />
<input type="button" value="{$lang->cmd_back}" onclick="location.href='{getUrl('act','dispAdminContent')}'" />
</td>
</tr>
</table>
</form>

View file

@ -0,0 +1,63 @@
<table>
<tr>
<th>{$lang->category}</th>
<td>
<!--@if(!$module_info->module_category_srl)-->
{$lang->not_exists}
<!--@else-->
{$module_category[$module_info->module_category_srl]->title}
<!--@end-->
</td>
</tr>
<tr>
<th>{$lang->layout}</th>
<td>
<!--@if($module_info->layout_srl)-->
{$module_info->layout_title} ({$module_info->layout})
<!--@else-->
{$lang->not_exists}
<!--@end-->
</td>
</tr>
<tr>
<th>{$lang->skin}</th>
<td>{$module_info->skin}</td>
</tr>
<tr>
<th>{$lang->browser_title}</th>
<td>{$module_info->browser_title}</td>
</tr>
<tr>
<th>{$lang->use_category}</th>
<td><!--@if($module_info->use_category=='Y')-->{$lang->use}<!--@else-->{$lang->notuse}<!--@end--></td>
</tr>
<tr>
<th>{$lang->list_count}</th>
<td>{$module_info->list_count?$module_info->list_count:20}</td>
</tr>
<tr>
<th>{$lang->page_count}</th>
<td>{$module_info->page_count?$module_info->page_count:10}</td>
</tr>
<tr>
<th>{$lang->description}</th>
<td>{nl2br($module_info->description)}</td>
</tr>
<tr>
<th>{$lang->header_text}</th>
<td>{$module_info->header_text}</td>
</tr>
<tr>
<th>{$lang->footer_text}</th>
<td>{$module_info->footer_text}</td>
</tr>
<tr>
<th>{$lang->admin_id}</th>
<td>{implode(",",$module_info->admin_id)}</td>
</tr>
<tr>
<td colspan="2">
<input type="button" value="{$lang->cmd_modify}" onclick="location.href='{getUrl('act','dispAdminInsertBoard')}'" />
</td>
</tr>
</table>

View file

@ -0,0 +1,85 @@
<!--%import("filter/insert_page.xml")-->
<!--%import("js/admin.js")-->
<div>
<!--@if(!$module_srl)-->
{$lang->msg_new_module}
<!--@else-->
{$lang->msg_update_module}
<!--@end-->
</div>
<form action="./" method="post" onsubmit="return procFilter(this, insert_page)" enctype="multipart/form-data">
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="module_srl" value="{$module_srl}" />
<!--@if($module_info->is_default=='Y')-->
<input type="hidden" name="is_default" value="Y" />
<!--@end-->
<table>
<tr>
<th rowspan="2">{$lang->mid}</th>
<td><input type="text" name="mid" value="{$module_info->mid}" /></td>
</tr>
<tr>
<td>{$lang->about_mid}</td>
</tr>
<tr>
<th rowspan="2">{$lang->category}</th>
<td>
<select name="module_category_srl">
<option value="0">{$lang->notuse}</option>
<!--@foreach($module_category as $key => $val)-->
<option value="{$key}" <!--@if($module_info->module_category_srl==$key)-->selected="true"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</td>
</tr>
<tr>
<td>{$lang->about_category}</td>
</tr>
<tr>
<th rowspan="2">{$lang->browser_title}</th>
<td><input type="text" name="browser_title" value="{$module_info->browser_title}" /></td>
</tr>
<tr>
<td>{$lang->about_browser_title}</td>
</tr>
<tr>
<th rowspan="2">{$lang->layout}</th>
<td>
<select name="layout_srl">
<option value="0">{$lang->notuse}</option>
<!--@foreach($layout_list as $key => $val)-->
<option value="{$val->layout_srl}" <!--@if($module_info->layout_srl==$val->layout_srl)-->selected="true"<!--@end-->>{$val->title} ({$val->layout})</option>
<!--@end-->
</select>
</td>
</tr>
<tr>
<td>{$lang->about_layout}</td>
</tr>
<!--@if($module_info->is_default!='Y')-->
<tr>
<th rowspan="2">{$lang->is_default}</th>
<td><input type="checkbox" name="is_default" value="Y" <!--@if($module_info->is_default=='Y')-->checked="true"<!--@end-->/></td>
</tr>
<tr>
<td>{$lang->about_default}</td>
</tr>
<!--@end-->
<tr>
<th rowspan="2">{$lang->description}</th>
<td><textarea name="description">{htmlspecialchars($module_info->description)}</textarea></td>
</tr>
<tr>
<td>{$lang->about_description}</td>
</tr>
<tr>
<td colspan="2">
<input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('act','dispAdminContent')}'" />
<input type="submit" value="{$lang->cmd_registration}" accesskey="s" />
</td>
</tr>
</table>
</form>