mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-14 00:39:57 +09:00
git-svn-id: http://xe-core.googlecode.com/svn/trunk@307 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
f777c37e3d
commit
ea6d03386e
9 changed files with 95 additions and 6 deletions
|
|
@ -38,7 +38,7 @@ function moveTreeMenu(menu_id, node) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 트리메뉴의 정보를 담고 있는 xml파일을 읽고 drawTreeMenu()를 호출하는 함수
|
// 트리메뉴의 정보를 담고 있는 xml파일을 읽고 drawTreeMenu()를 호출하는 함수
|
||||||
function loadTreeMenu(url, menu_id, zone_id, title, callback_func) {
|
function loadTreeMenu(url, menu_id, zone_id, title, callback_func, manual_select_node_srl) {
|
||||||
// 일단 그릴 곳을 찾아서 사전 작업을 함 (그릴 곳이 없다면 아예 시도를 안함)
|
// 일단 그릴 곳을 찾아서 사전 작업을 함 (그릴 곳이 없다면 아예 시도를 안함)
|
||||||
var zone = xGetElementById(zone_id);
|
var zone = xGetElementById(zone_id);
|
||||||
if(typeof(zone)=="undefined") return;
|
if(typeof(zone)=="undefined") return;
|
||||||
|
|
@ -57,8 +57,10 @@ function loadTreeMenu(url, menu_id, zone_id, title, callback_func) {
|
||||||
|
|
||||||
node_callback_func[menu_id] = callback_func;
|
node_callback_func[menu_id] = callback_func;
|
||||||
|
|
||||||
|
if(typeof(manual_select_node_srl)=='undefined') manual_select_node_srl = '';
|
||||||
|
|
||||||
// menu_id, zone_id는 계속 달고 다녀야함
|
// menu_id, zone_id는 계속 달고 다녀야함
|
||||||
var param = {menu_id:menu_id, zone_id:zone_id, title:title}
|
var param = {menu_id:menu_id, zone_id:zone_id, title:title, manual_select_node_srl:manual_select_node_srl}
|
||||||
|
|
||||||
// 요청후 drawTreeMenu()함수를 호출
|
// 요청후 drawTreeMenu()함수를 호출
|
||||||
oXml.request(drawTreeMenu, oXml, null, null, param);
|
oXml.request(drawTreeMenu, oXml, null, null, param);
|
||||||
|
|
@ -70,6 +72,7 @@ function drawTreeMenu(oXml, callback_func, resopnse_tags, param) {
|
||||||
var menu_id = param.menu_id;
|
var menu_id = param.menu_id;
|
||||||
var zone_id = param.zone_id;
|
var zone_id = param.zone_id;
|
||||||
var title = param.title;
|
var title = param.title;
|
||||||
|
var manual_select_node_srl = param.manual_select_node_srl;
|
||||||
var zone = xGetElementById(zone_id);
|
var zone = xGetElementById(zone_id);
|
||||||
var html = "";
|
var html = "";
|
||||||
html = '<div style="height:20px;"><img src="./common/tpl/images/folder.gif" alt="root" align="top" />'+title+'</div>';
|
html = '<div style="height:20px;"><img src="./common/tpl/images/folder.gif" alt="root" align="top" />'+title+'</div>';
|
||||||
|
|
@ -89,6 +92,8 @@ function drawTreeMenu(oXml, callback_func, resopnse_tags, param) {
|
||||||
}
|
}
|
||||||
|
|
||||||
xInnerHtml(zone, html);
|
xInnerHtml(zone, html);
|
||||||
|
|
||||||
|
if(manual_select_node_srl) manualSelectNode(menu_id, manual_select_node_srl);
|
||||||
}
|
}
|
||||||
|
|
||||||
// root부터 시작해서 recursive하게 노트를 표혐
|
// root부터 시작해서 recursive하게 노트를 표혐
|
||||||
|
|
@ -174,6 +179,12 @@ function drawNode(parent_node, menu_id) {
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 수동으로 메뉴를 선택하도록 함
|
||||||
|
function manualSelectNode(menu_id, node_srl) {
|
||||||
|
var zone_id = "menu_"+menu_id+"_"+node_srl;
|
||||||
|
selectNode(menu_id,node_srl,zone_id);
|
||||||
|
}
|
||||||
|
|
||||||
// 노드의 폴더 아이콘 클릭시
|
// 노드의 폴더 아이콘 클릭시
|
||||||
function toggleFolder(zone_id) {
|
function toggleFolder(zone_id) {
|
||||||
// 아이콘을 클릭한 대상을 찾아봄
|
// 아이콘을 클릭한 대상을 찾아봄
|
||||||
|
|
@ -214,7 +225,7 @@ function selectNode(menu_id, node_srl, zone_id) {
|
||||||
if(!node_zone) return;
|
if(!node_zone) return;
|
||||||
|
|
||||||
// 선택된 노드의 글자를 변경
|
// 선택된 노드의 글자를 변경
|
||||||
node_zone.style.backgroundColor = "#000000";
|
node_zone.style.backgroundColor = "#0e078f";
|
||||||
node_zone.style.fontWeight = "bold";
|
node_zone.style.fontWeight = "bold";
|
||||||
node_zone.style.color = "#FFFFFF";
|
node_zone.style.color = "#FFFFFF";
|
||||||
prev_selected_node = node_zone;
|
prev_selected_node = node_zone;
|
||||||
|
|
@ -224,6 +235,16 @@ function selectNode(menu_id, node_srl, zone_id) {
|
||||||
func(menu_id, node_info_list[node_srl]);
|
func(menu_id, node_info_list[node_srl]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 선택된 노드의 표시를 없앰
|
||||||
|
function deSelectNode() {
|
||||||
|
// 이전에 선택된 노드가 있었다면 원래데로 돌림
|
||||||
|
if(!prev_selected_node) return;
|
||||||
|
prev_selected_node.style.backgroundColor = "#ffffff";
|
||||||
|
prev_selected_node.style.fontWeight = "normal";
|
||||||
|
prev_selected_node.style.color = "#000000";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 모두 닫기
|
// 모두 닫기
|
||||||
function closeAllTreeMenu(menu_id) {
|
function closeAllTreeMenu(menu_id) {
|
||||||
for(var i in tree_menu_folder_list[menu_id]) {
|
for(var i in tree_menu_folder_list[menu_id]) {
|
||||||
|
|
|
||||||
|
|
@ -10,5 +10,6 @@
|
||||||
<action name="getMenuTplInfo" type="model" standalone="true" />
|
<action name="getMenuTplInfo" type="model" standalone="true" />
|
||||||
<action name="procInsertLayout" type="controller" standalone="true" />
|
<action name="procInsertLayout" type="controller" standalone="true" />
|
||||||
<action name="procInsertLayoutMenu" type="controller" standalone="true" />
|
<action name="procInsertLayoutMenu" type="controller" standalone="true" />
|
||||||
|
<action name="procDeleteLayoutMenu" type="controller" standalone="true" />
|
||||||
</actions>
|
</actions>
|
||||||
</module>
|
</module>
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,37 @@
|
||||||
$this->add('menu_title', $menu_title);
|
$this->add('menu_title', $menu_title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 레이아웃 메뉴 삭제
|
||||||
|
**/
|
||||||
|
function procDeleteLayoutMenu() {
|
||||||
|
// 변수 정리
|
||||||
|
$args = Context::gets('layout_srl','layout','menu_srl','menu_id');
|
||||||
|
|
||||||
|
// DB에서 삭제
|
||||||
|
$oDB = &DB::getInstance();
|
||||||
|
$output = $oDB->executeQuery("layout.deleteLayoutMenu", $args);
|
||||||
|
if(!$output->toBool()) return $output;
|
||||||
|
|
||||||
|
// 해당 메뉴의 정보를 구함
|
||||||
|
$layout_info = $oLayoutModel->getLayoutInfoXml($args->layout);
|
||||||
|
$navigations = $layout_info->navigations;
|
||||||
|
if(count($navigations)) {
|
||||||
|
foreach($navigations as $key => $val) {
|
||||||
|
if($args->menu_id == $val->id) {
|
||||||
|
$menu_title = $val->name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// XML 파일을 갱신하고 위치을 넘겨 받음
|
||||||
|
$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('menu_title', $menu_title);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 메뉴의 xml 파일을 만들고 위치를 return
|
* @brief 메뉴의 xml 파일을 만들고 위치를 return
|
||||||
**/
|
**/
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,6 @@
|
||||||
$oDB = &DB::getInstance();
|
$oDB = &DB::getInstance();
|
||||||
$menu_info->menu_srl = $oDB->getNextSequence();
|
$menu_info->menu_srl = $oDB->getNextSequence();
|
||||||
}
|
}
|
||||||
|
|
||||||
Context::set('menu_info', $menu_info);
|
Context::set('menu_info', $menu_info);
|
||||||
|
|
||||||
// template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다.
|
// template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다.
|
||||||
|
|
|
||||||
8
modules/layout/queries/deleteLayoutMenu.xml
Normal file
8
modules/layout/queries/deleteLayoutMenu.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
<query id="deleteLayoutMenu" action="delete">
|
||||||
|
<tables>
|
||||||
|
<table name="layout_menu" />
|
||||||
|
</tables>
|
||||||
|
<conditions>
|
||||||
|
<condition operation="equal" column="menu_srl" var="menu_srl" filter="number" notnull="notnull" />
|
||||||
|
</conditions>
|
||||||
|
</query>
|
||||||
16
modules/layout/tpl.admin/filter/delete_layout_menu.xml
Normal file
16
modules/layout/tpl.admin/filter/delete_layout_menu.xml
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
<filter name="delete_layout_menu" module="layout" act="procDeleteLayoutMenu" confirm_msg_code="confirm_delete">
|
||||||
|
<form>
|
||||||
|
<node target="layout_srl" required="true" />
|
||||||
|
<node target="layout" required="true" />
|
||||||
|
<node target="menu_srl" required="true" />
|
||||||
|
<node target="menu_id" required="true" />
|
||||||
|
</form>
|
||||||
|
<response callback_func="completeInsertLayoutMenu">
|
||||||
|
<tag name="error" />
|
||||||
|
<tag name="message" />
|
||||||
|
<tag name="menu_srl" />
|
||||||
|
<tag name="xml_file" />
|
||||||
|
<tag name="menu_id" />
|
||||||
|
<tag name="menu_title" />
|
||||||
|
</response>
|
||||||
|
</filter>
|
||||||
|
|
@ -10,9 +10,17 @@ function completeInsertLayoutMenu(ret_obj) {
|
||||||
var xml_file = ret_obj['xml_file'];
|
var xml_file = ret_obj['xml_file'];
|
||||||
var menu_title = ret_obj['menu_title'];
|
var menu_title = ret_obj['menu_title'];
|
||||||
var menu_srl = ret_obj['menu_srl'];
|
var menu_srl = ret_obj['menu_srl'];
|
||||||
loadTreeMenu(xml_file, menu_id, "menu_zone_"+menu_id, menu_title, doGetMenuInfo);
|
loadTreeMenu(xml_file, menu_id, "menu_zone_"+menu_id, menu_title, doGetMenuInfo, menu_srl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 레이아웃 멘뉴 삭제 */
|
||||||
|
function doDeleteLayoutMenu(menu_srl, menu_id) {
|
||||||
|
var fo_obj = xGetElementById("fo_"+menu_id);
|
||||||
|
if(!fo_obj) return;
|
||||||
|
|
||||||
|
procFilter(fo_obj, delete_layout_menu);
|
||||||
|
}
|
||||||
|
|
||||||
/* 레이아웃 메뉴에를 클릭시 적용할 함수 */
|
/* 레이아웃 메뉴에를 클릭시 적용할 함수 */
|
||||||
function doGetMenuInfo(menu_id, obj) {
|
function doGetMenuInfo(menu_id, obj) {
|
||||||
// layout, menu_id, node_srl을 추출
|
// layout, menu_id, node_srl을 추출
|
||||||
|
|
@ -39,6 +47,7 @@ function doGetMenuInfo(menu_id, obj) {
|
||||||
function doInsertLayoutMenu(menu_id) {
|
function doInsertLayoutMenu(menu_id) {
|
||||||
var params = {node_srl:0}
|
var params = {node_srl:0}
|
||||||
doGetMenuInfo(menu_id, params);
|
doGetMenuInfo(menu_id, params);
|
||||||
|
deSelectNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 서버로부터 받아온 메뉴 정보를 출력 */
|
/* 서버로부터 받아온 메뉴 정보를 출력 */
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
<!--%import("js/admin.js")-->
|
<!--%import("js/admin.js")-->
|
||||||
<!--%import("filter/insert_layout_menu.xml")-->
|
<!--%import("filter/insert_layout_menu.xml")-->
|
||||||
|
<!--%import("filter/delete_layout_menu.xml")-->
|
||||||
|
|
||||||
<form id="fo_layout" action="./" method="post" enctype="multipart/form-data">
|
<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_srl" value="{$layout_srl}" />
|
||||||
|
|
@ -50,7 +51,7 @@
|
||||||
({$val->maxdepth} {$lang->depth})
|
({$val->maxdepth} {$lang->depth})
|
||||||
</th>
|
</th>
|
||||||
<td>
|
<td>
|
||||||
<form action="./" method="get" onsubmit="return procFilter(this, insert_layout_menu)">
|
<form id="fo_{$val->id}" action="./" method="get" onsubmit="return procFilter(this, insert_layout_menu)">
|
||||||
<input type="hidden" name="layout_srl" value="{$layout_srl}" />
|
<input type="hidden" name="layout_srl" value="{$layout_srl}" />
|
||||||
<input type="hidden" name="layout" value="{$layout_info->layout}" />
|
<input type="hidden" name="layout" value="{$layout_info->layout}" />
|
||||||
<input type="hidden" name="menu_id" value="{$val->id}" />
|
<input type="hidden" name="menu_id" value="{$val->id}" />
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,9 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2">
|
<td colspan="2">
|
||||||
<input type="submit" value="{$lang->cmd_submit}" />
|
<input type="submit" value="{$lang->cmd_submit}" />
|
||||||
|
<!--@if($menu_info->name)-->
|
||||||
|
<input type="button" value="{$lang->cmd_delete}" onclick="doDeleteLayoutMenu('{$menu_srl}','{$menu_info->menu_id}');return false"/>
|
||||||
|
<!--@end-->
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue