From 860897db6a005f44ab28bd1dc6dae26a0e2f47c8 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 8 Mar 2007 06:20:01 +0000 Subject: [PATCH] git-svn-id: http://xe-core.googlecode.com/svn/trunk@331 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/tree_menu.js | 29 +++++++++++++++++------------ layouts/sample_layout/layout.html | 8 +++++--- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/common/js/tree_menu.js b/common/js/tree_menu.js index 7462535fc..e2322d4aa 100644 --- a/common/js/tree_menu.js +++ b/common/js/tree_menu.js @@ -70,9 +70,6 @@ function loadTreeMenu(url, menu_id, zone_id, title, callback_func, manual_select var zone = xGetElementById(zone_id); if(typeof(zone)=="undefined") return; - // 노드 추가를 위한 빈 div하나 입력해 넣음 - xInnerHtml(zone, ""); - // xml_handler를 이용해서 직접 메뉴 xml파일(layout module에서 생성)을 읽음 var oXml = new xml_handler(); oXml.reset(); @@ -94,15 +91,17 @@ function loadTreeMenu(url, menu_id, zone_id, title, callback_func, manual_select } // 트리메뉴 XML정보를 이용해서 정해진 zone에 출력 +var manual_select_node_srl = 0; function drawTreeMenu(oXml, callback_func, resopnse_tags, param) { // 그리기 위한 object를 찾아 놓음 var menu_id = param.menu_id; var zone_id = param.zone_id; var title = param.title; - var manual_select_node_srl = param.manual_select_node_srl; + if(param.manual_select_node_srl) manual_select_node_srl = param.manual_select_node_srl; var zone = xGetElementById(zone_id); var html = ""; - html = '
root'+title+'
'; + + if(title) html = '
root'+title+'
'; tree_menu_folder_list[menu_id] = new Array(); @@ -130,6 +129,13 @@ function drawNode(parent_node, menu_id) { var node = parent_node.childNodes.item(i); if(node.nodeName!="node") continue; + var node_srl = node.getAttribute("node_srl"); + var text = node.getAttribute("text"); + var url = node.getAttribute("url"); + + // url을 확인하여 현재의 url과 동일하다고 판단되면 manual_select_node_srl 에 값을 추가 + if(!manual_select_node_srl && node_callback_func[menu_id] == moveTreeMenu && url && location.href.indexOf(url) != -1) manual_select_node_srl = node_srl; + // 자식 노드가 있는지 확인 var hasChild = false; if(node.hasChildNodes()) hasChild = true; @@ -161,9 +167,6 @@ function drawNode(parent_node, menu_id) { } } - var node_srl = node.getAttribute("node_srl"); - var text = node.getAttribute("text"); - node_info_list[node_srl] = node; var zone_id = "menu_"+menu_id+"_"+node_srl; @@ -209,7 +212,7 @@ function drawNode(parent_node, menu_id) { // 수동으로 메뉴를 선택하도록 함 function manualSelectNode(menu_id, node_srl) { var zone_id = "menu_"+menu_id+"_"+node_srl; - selectNode(menu_id,node_srl,zone_id); + selectNode(menu_id,node_srl,zone_id,false); var zone = xGetElementById(zone_id); try { @@ -254,7 +257,7 @@ function toggleFolder(zone_id) { // 노드의 글자 선택시 var prev_selected_node = null; -function selectNode(menu_id, node_srl, zone_id) { +function selectNode(menu_id, node_srl, zone_id, move_url) { // 이전에 선택된 노드가 있었다면 원래데로 돌림 if(prev_selected_node) { prev_selected_node.style.backgroundColor = "#ffffff"; @@ -273,8 +276,10 @@ function selectNode(menu_id, node_srl, zone_id) { prev_selected_node = node_zone; // 함수 실행 - var func = node_callback_func[menu_id]; - func(menu_id, node_info_list[node_srl]); + if(typeof(move_url)=="undefined"||move_url==true) { + var func = node_callback_func[menu_id]; + func(menu_id, node_info_list[node_srl]); + } } // 선택된 노드의 표시를 없앰 diff --git a/layouts/sample_layout/layout.html b/layouts/sample_layout/layout.html index 55096b5d1..da38660b4 100644 --- a/layouts/sample_layout/layout.html +++ b/layouts/sample_layout/layout.html @@ -1,10 +1,12 @@ - -
{$content}
+
+ +
{$content}
+