mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-08 03:01:43 +09:00
git-svn-id: http://xe-core.googlecode.com/svn/trunk@305 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
a97f265837
commit
25ef6566f4
13 changed files with 276 additions and 104 deletions
|
|
@ -7,7 +7,8 @@
|
|||
<action name="dispLayoutInfo" type="view" standalone="true" />
|
||||
<action name="dispList" type="controller" standalone="true" />
|
||||
<action name="getLayoutMenuSrl" type="model" standalone="true" />
|
||||
<action name="getMenuInfo" type="model" standalone="true" />
|
||||
<action name="getMenuTplInfo" type="model" standalone="true" />
|
||||
<action name="procInsertLayout" type="controller" standalone="true" />
|
||||
<action name="procInsertLayoutMenu" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@
|
|||
$lang->menu_management = '메뉴 관리';
|
||||
$lang->depth = '단계';
|
||||
$lang->menu_name = '메뉴명';
|
||||
$lang->menu_srl = '메뉴의 고유 번호';
|
||||
$lang->menu_id = '메뉴의 이름';
|
||||
$lang->menu_url = '연결 url';
|
||||
$lang->menu_open_window = '새창 열기';
|
||||
$lang->menu_img_btn = '이미지 버튼';
|
||||
|
|
|
|||
|
|
@ -28,5 +28,85 @@
|
|||
|
||||
$this->add('layout_srl', $args->layout_srl);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 레이아웃 메뉴 추가
|
||||
**/
|
||||
function procInsertLayoutMenu() {
|
||||
// 입력할 변수 정리
|
||||
$source_args = Context::getRequestVars();
|
||||
unset($source_args->module);
|
||||
unset($source_args->act);
|
||||
if($source_args->menu_open_window!="Y") $source_args->menu_open_window = "N";
|
||||
$source_args->group_srls = str_replace('|@|',',',$source_args->group_srls);
|
||||
|
||||
// 변수를 다시 정리 (form문의 column과 DB column이 달라서)
|
||||
$args->menu_srl = $source_args->menu_srl;
|
||||
$args->layout_srl = $source_args->layout_srl;
|
||||
$args->menu_id = $source_args->menu_id;
|
||||
$args->name = $source_args->menu_name;
|
||||
$args->url = $source_args->menu_url;
|
||||
$args->open_window = $source_args->menu_open_window;
|
||||
$args->normal_btn = $source_args->menu_normal_btn;
|
||||
$args->hover_btn = $source_args->menu_hover_btn;
|
||||
$args->active_btn = $source_args->menu_active_btn;
|
||||
$args->group_srls = $source_args->group_srls;
|
||||
|
||||
// 이미 존재하는지를 확인
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$menu_info = $oLayoutModel->getLayoutMenuInfo($args->menu_srl);
|
||||
|
||||
$oDB = &DB::getInstance();
|
||||
|
||||
// 존재하게 되면 update를 해준다
|
||||
if($menu_info->menu_srl == $args->menu_srl) {
|
||||
$output = $oDB->executeQuery('layout.updateLayoutMenu', $args);
|
||||
|
||||
// 존재하지 않으면 insert를 해준다
|
||||
} else {
|
||||
$args->listorder = -1*$args->menu_srl;
|
||||
$output = $oDB->executeQuery('layout.insertLayoutMenu', $args);
|
||||
}
|
||||
|
||||
$xml_file = $this->makeXmlFile($args->layout_srl);
|
||||
|
||||
$this->add('xml_file', $xml_file[$args->menu_id]);
|
||||
$this->add('menu_id', $args->menu_id);
|
||||
$this->add('name', $args->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴의 xml 파일을 만들고 위치를 return
|
||||
**/
|
||||
function makeXmlFile($layout_srl) {
|
||||
$oDB = &DB::getInstance();
|
||||
$args->layout_srl = $layout_srl;
|
||||
$output = $oDB->executeQuery("layout.getLayoutMenuList", $args);
|
||||
if(!$output->toBool()) return;
|
||||
|
||||
$list = $output->data;
|
||||
$list_count = count($list);
|
||||
for($i=0;$i<$list_count;$i++){
|
||||
$node = $list[$i];
|
||||
$menu_id = $node->menu_id;
|
||||
$menu_list[$menu_id][] = $node;
|
||||
$menu_id_list[] = $menu_id;
|
||||
}
|
||||
if(!count($menu_id_list)) return;
|
||||
|
||||
foreach($menu_id_list as $menu_id) {
|
||||
unset($node_list);
|
||||
$node_list = $menu_list[$menu_id];
|
||||
$buff = "";
|
||||
foreach($node_list as $node) {
|
||||
$buff .= sprintf('<node node_srl="%s" text="%s" />', $node->menu_srl, $node->name);
|
||||
}
|
||||
$buff = "<root>".$buff."</root>";
|
||||
|
||||
$xml_file[$menu_id] = sprintf("./files/cache/layout/%s_%s.xml", $layout_srl, $menu_id);
|
||||
FileHandler::writeFile($xml_file[$menu_id], $buff);
|
||||
}
|
||||
return $xml_file;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -145,22 +145,25 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴 구성을 하기 위해 메뉴 srl을 return
|
||||
* @brief 특정 menu_srl의 정보를 return
|
||||
**/
|
||||
function getLayoutMenuSrl() {
|
||||
$menu_id = Context::get('menu_id');
|
||||
|
||||
function getLayoutMenuInfo($menu_srl) {
|
||||
$oDB = &DB::getInstance();
|
||||
$menu_srl = $oDB->getNextSequence();
|
||||
|
||||
$this->add('menu_id', $menu_id);
|
||||
$this->add('menu_srl', $menu_srl);
|
||||
// menu_srl 이 있으면 해당 메뉴의 정보를 가져온다
|
||||
$args->menu_srl = $menu_srl;
|
||||
$output = $oDB->executeQuery('layout.getLayoutMenu', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$node = $output->data;
|
||||
if($node->group_srls) $node->group_srls = explode(',',$node->group_srls);
|
||||
return $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 menu_srl의 정보를 이용하여 템플릿을 구한후 return
|
||||
**/
|
||||
function getMenuInfo() {
|
||||
function getMenuTplInfo() {
|
||||
// 해당 메뉴의 정보를 가져오기 위한 변수 설정
|
||||
$menu_id = Context::get('menu_id');
|
||||
$menu_srl = Context::get('menu_srl');
|
||||
|
|
@ -171,11 +174,22 @@
|
|||
$group_list = $oMemberModel->getGroups();
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
// menu_srl 이 있으면 해당 메뉴의 정보를 가져온다
|
||||
if($menu_srl) $menu_info = $this->getLayoutMenuInfo($menu_srl);
|
||||
|
||||
if(!$menu_info->menu_srl) {
|
||||
$oDB = &DB::getInstance();
|
||||
$menu_info->menu_srl = $oDB->getNextSequence();
|
||||
}
|
||||
|
||||
Context::set('menu_info', $menu_info);
|
||||
|
||||
// template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다.
|
||||
require_once("./classes/template/TemplateHandler.class.php");
|
||||
$oTemplate = new TemplateHandler();
|
||||
$tpl = $oTemplate->compile($this->module_path.'tpl.admin', 'layout_menu_info');
|
||||
|
||||
// return 할 변수 설정
|
||||
$this->add('menu_id', $menu_id);
|
||||
$this->add('tpl', $tpl);
|
||||
}
|
||||
|
|
|
|||
11
modules/layout/queries/getLayoutMenu.xml
Normal file
11
modules/layout/queries/getLayoutMenu.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getLayoutMenu" action="select">
|
||||
<tables>
|
||||
<table name="layout_menu" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="menu_srl" var="menu_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
14
modules/layout/queries/getLayoutMenuList.xml
Normal file
14
modules/layout/queries/getLayoutMenuList.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<query id="getLayoutMenuList" action="select">
|
||||
<tables>
|
||||
<table name="layout_menu" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="layout_srl" var="layout_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="listorder" order="desc" />
|
||||
</navigation>
|
||||
</query>
|
||||
19
modules/layout/queries/insertLayoutMenu.xml
Normal file
19
modules/layout/queries/insertLayoutMenu.xml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<query id="insertLayoutMenu" action="insert">
|
||||
<tables>
|
||||
<table name="layout_menu" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="menu_srl" var="menu_srl" filter="number" notnull="notnull" />
|
||||
<column name="layout_srl" var="layout_srl" filter="number" notnull="notnull" />
|
||||
<column name="menu_id" var="menu_id" filter="number" notnull="notnull" />
|
||||
<column name="name" var="name" notnull="notnull" />
|
||||
<column name="url" var="url" />
|
||||
<column name="open_window" var="open_window" />
|
||||
<column name="normal_btn" var="normal_btn" />
|
||||
<column name="hover_btn" var="hover_btn" />
|
||||
<column name="active_btn" var="active_btn" />
|
||||
<column name="group_srls" var="group_srls" />
|
||||
<column name="listorder" var="listorder" notnull="notnull" />
|
||||
<column name="regdate" var="regdate" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
17
modules/layout/queries/updateLayoutMenu.xml
Normal file
17
modules/layout/queries/updateLayoutMenu.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<query id="updateLayoutMenu" action="update">
|
||||
<tables>
|
||||
<table name="layout_menu" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="name" var="name" notnull="notnull" />
|
||||
<column name="url" var="url" />
|
||||
<column name="open_window" var="open_window" />
|
||||
<column name="normal_btn" var="normal_btn" />
|
||||
<column name="hover_btn" var="hover_btn" />
|
||||
<column name="active_btn" var="active_btn" />
|
||||
<column name="group_srls" var="group_srls" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="menu_srl" var="menu_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
<table name="layout_menu">
|
||||
<column name="layout_srl" type="number" size="12" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="menu_srl" type="number" size="12" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="layout_srl" type="number" size="12" notnull="notnull" index="idx_layout_menu" />
|
||||
<column name="menu_id" type="varchar" size="250" notnull="notnull" index="idx_layout_menu" />
|
||||
<column name="name" type="varchar" size="250" />
|
||||
<column name="url" type="varchar" size="250" />
|
||||
<column name="open_window" type="char" size="1" default="N" />
|
||||
|
|
|
|||
|
|
@ -1,14 +1,16 @@
|
|||
<filter name="insert_layout" module="layout" act="procInsertLayout" confirm_msg_code="confirm_submit">
|
||||
<filter name="insert_layout_menu" module="layout" act="procInsertLayoutMenu" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="title" required="true" />
|
||||
<node target="layout_srl" required="true" />
|
||||
<node target="layout" required="true" />
|
||||
<node target="menu_srl" required="true" />
|
||||
<node target="menu_id" required="true" />
|
||||
<node target="menu_name" required="true" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="layout" target="layout" />
|
||||
<param name="title" target="title" />
|
||||
</parameter>
|
||||
<response callback_func="completeInsertLayout">
|
||||
<response callback_func="completeInsertLayoutMenu">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="layout_srl" />
|
||||
<tag name="xml_file" />
|
||||
<tag name="menu_id" />
|
||||
<tag name="name" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,14 @@ function completeInsertLayout(ret_obj) {
|
|||
location.href="./?module=admin&mo=layout&act=dispLayoutInfo&layout_srl="+layout_srl;
|
||||
}
|
||||
|
||||
/* 레이아웃메뉴 입력후 */
|
||||
function completeInsertLayoutMenu(ret_obj) {
|
||||
var menu_id = ret_obj['menu_id'];
|
||||
var xml_file = ret_obj['xml_file'];
|
||||
var name = ret_obj['name'];
|
||||
loadTreeMenu(xml_file, menu_id, "menu_zone_"+menu_id, name, doGetMenuInfo);
|
||||
}
|
||||
|
||||
/* 레이아웃 메뉴에를 클릭시 적용할 함수 */
|
||||
function doGetMenuInfo(menu_id, obj) {
|
||||
// layout, menu_id, node_srl을 추출
|
||||
|
|
@ -23,7 +31,7 @@ function doGetMenuInfo(menu_id, obj) {
|
|||
|
||||
// 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다.
|
||||
var response_tags = new Array('error','message','menu_id', 'tpl');
|
||||
exec_xml('layout', 'getMenuInfo', params, completeGetMenuInfo, response_tags, params);
|
||||
exec_xml('layout', 'getMenuTplInfo', params, completeGetMenuInfo, response_tags, params);
|
||||
}
|
||||
|
||||
/* 빈 메뉴 추가시 사용 */
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<form id="fo_layout" action="./" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="layout_srl" value="{$layout_srl}" />
|
||||
<input type="hidden" name="layout" value="{$layout}" />
|
||||
<input type="hidden" name="layout" value="{$layout_info->layout}" />
|
||||
|
||||
<div style="margin-bottom:10px;">
|
||||
<table border="1" width="100%">
|
||||
|
|
@ -35,21 +35,25 @@
|
|||
</div>
|
||||
</form>
|
||||
|
||||
<div style="margin-bottom:10px;">
|
||||
<table border="1" width="100%">
|
||||
<col width="140" />
|
||||
<col width="*" />
|
||||
<tr>
|
||||
<th>{$lang->menu_management}</th>
|
||||
<td>{nl2br($lang->about_menu_management)}</td>
|
||||
</tr>
|
||||
<!--@foreach($layout_info->navigations as $key => $val)-->
|
||||
<tr>
|
||||
<th>
|
||||
{$val->name} <br />
|
||||
({$val->maxdepth} {$lang->depth})
|
||||
</th>
|
||||
<td>
|
||||
<div style="margin-bottom:10px;">
|
||||
<table border="1" width="100%">
|
||||
<col width="140" />
|
||||
<col width="*" />
|
||||
<tr>
|
||||
<th>{$lang->menu_management}</th>
|
||||
<td>{nl2br($lang->about_menu_management)}</td>
|
||||
</tr>
|
||||
<!--@foreach($layout_info->navigations as $key => $val)-->
|
||||
<tr>
|
||||
<th>
|
||||
{$val->name} <br />
|
||||
({$val->maxdepth} {$lang->depth})
|
||||
</th>
|
||||
<td>
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, insert_layout_menu)">
|
||||
<input type="hidden" name="layout_srl" value="{$layout_srl}" />
|
||||
<input type="hidden" name="layout" value="{$layout_info->layout}" />
|
||||
<input type="hidden" name="menu_id" value="{$val->id}" />
|
||||
<table border="0">
|
||||
<tr valign="top">
|
||||
<td width="300">
|
||||
|
|
@ -66,11 +70,12 @@
|
|||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<script type="text/javascript">
|
||||
xAddEventListener(window,'load', function() { loadTreeMenu("{$val->xml_file}", "{$val->id}", "menu_zone_{$val->id}", "{$val->name}", doGetMenuInfo); });
|
||||
</script>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<script type="text/javascript">
|
||||
xAddEventListener(window,'load', function() { loadTreeMenu("{$val->xml_file}", "{$val->id}", "menu_zone_{$val->id}", "{$val->name}", doGetMenuInfo); });
|
||||
</script>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,63 +1,60 @@
|
|||
<form action="./" method="get" onsubmit="procFilter(this, insert_layout_menu)">
|
||||
<input type="hidden" name="layout_srl" value="{$layout_srl}" />
|
||||
<input type="hidden" name="layout" value="{$layout}" />
|
||||
<input type="hidden" name="menu_srl" value="{$menu_info->menu_srl}" />
|
||||
<table border="1" width="100%">
|
||||
<col width="100" />
|
||||
<col width="*" />
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_name}</th>
|
||||
<td><input type="text" name="menu_name" value="{$layout_info->name}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_url}</th>
|
||||
<td><input type="text" name="menu_url" value="{$layout_info->url}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_url}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_open_window}</th>
|
||||
<td><input type="checkbox" name="menu_open_window" <!--@if($layout_info->open_window=="Y")-->checked="true"<!--@end--> /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_open_window}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->menu_img_btn}</th>
|
||||
<td>{$lang->about_menu_img_btn}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->menu_normal_btn}</td>
|
||||
<td>http://<input type="text" name="menu_normal_btn" value="{$layout_info->normal_btn}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->menu_hover_btn}</td>
|
||||
<td>http://<input type="text" name="menu_hover_btn" value="{$layout_info->hover_btn}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->menu_active_btn}</td>
|
||||
<td>http://<input type="text" name="menu_active_btn" value="{$layout_info->active_btn}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_group_srls}</th>
|
||||
<td>
|
||||
<!--@foreach($group_list as $key=>$val)-->
|
||||
<input type="checkbox" name="group_srls" value="{$key}" id="group_{$key}" <!--@if($member_info->group_srls[$key])-->checked="true"<!--@end-->/>
|
||||
<label for="group_{$key}">{$val->title}</label>
|
||||
<!--@end-->
|
||||
<col width="100" />
|
||||
<col width="*" />
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_name}</th>
|
||||
<td><input type="text" name="menu_name" value="{$menu_info->name}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_url}</th>
|
||||
<td><input type="text" name="menu_url" value="{$menu_info->url}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_url}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_open_window}</th>
|
||||
<td><input type="checkbox" name="menu_open_window" value="Y" <!--@if($menu_info->open_window=="Y")-->checked="true"<!--@end--> /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_open_window}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->menu_img_btn}</th>
|
||||
<td>{$lang->about_menu_img_btn}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->menu_normal_btn}</td>
|
||||
<td><input type="text" name="menu_normal_btn" value="{$menu_info->normal_btn}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->menu_hover_btn}</td>
|
||||
<td><input type="text" name="menu_hover_btn" value="{$menu_info->hover_btn}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->menu_active_btn}</td>
|
||||
<td><input type="text" name="menu_active_btn" value="{$menu_info->active_btn}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_group_srls}</th>
|
||||
<td>
|
||||
<!--@foreach($group_list as $key=>$val)-->
|
||||
<input type="checkbox" name="group_srls" value="{$key}" id="group_{$key}" <!--@if(in_array($key, $menu_info->group_srls))-->checked="true"<!--@end-->/>
|
||||
<label for="group_{$key}">{$val->title}</label>
|
||||
<!--@end-->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_group_srls}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{$lang->cmd_submit}" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_group_srls}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{$lang->cmd_submit}" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue