diff --git a/common/js/tree_menu.js b/common/js/tree_menu.js index d07d1395f..fb2d7100b 100644 --- a/common/js/tree_menu.js +++ b/common/js/tree_menu.js @@ -41,6 +41,9 @@ function loadTreeMenu(url, menu_id, zone_id, title, callback_func, manual_select var zone = xGetElementById(zone_id); if(typeof(zone)=="undefined") return; + // 노드 정보들을 담을 변수 세팅 + node_info_list[menu_id] = new Array(); + // xml_handler를 이용해서 직접 메뉴 xml파일(layout module에서 생성)을 읽음 var oXml = new xml_handler(); oXml.reset(); @@ -136,7 +139,7 @@ function drawNode(parent_node, menu_id) { if(i==parent_node.childNodes.length-1) hasNextSibling = true; // 후에 사용하기 위해 node_info_list에 node_srl을 값으로 하여 node object 추가 - node_info_list[node_srl] = node; + node_info_list[menu_id][node_srl] = node; // zone_id 값을 세팅 var zone_id = "menu_"+menu_id+"_"+node_srl; @@ -221,9 +224,9 @@ function drawNode(parent_node, menu_id) { 'line'+ 'folder'+ ''+ - ''+ + ''+ text+ - ''+ + ''+ ''; html += child_html; @@ -292,7 +295,7 @@ function selectNode(menu_id, node_srl, zone_id, move_url) { // 함수 실행 if(typeof(move_url)=="undefined"||move_url==true) { var func = node_callback_func[menu_id]; - func(menu_id, node_info_list[node_srl]); + func(menu_id, node_info_list[menu_id][node_srl]); toggleFolder(zone_id); } } @@ -370,6 +373,7 @@ function moveTreeMenu(menu_id, node) { // 메뉴 드래그 중이라는 상황을 간직할 변수 var tree_drag_manager = {obj:null, isDrag:false} var tree_tmp_object = new Array(); +var tree_disappear = 0; /** * 메뉴 드래깅을 위한 함수들 @@ -377,17 +381,22 @@ var tree_tmp_object = new Array(); // 드래깅시 보여줄 임시 object를 생성하는 함수 function tree_create_tmp_object(obj) { var tmp_obj = tree_tmp_object[obj.id]; - if(tmp_obj) return; + if(tmp_obj) return tmp_obj; tmp_obj = xCreateElement('DIV'); tmp_obj.id = obj.id + '_tmp'; tmp_obj.style.display = 'none'; tmp_obj.style.position = 'absolute'; - tmp_obj.style.backgroundColor = '#FFFFFF'; - tmp_obj.style.opacity = 0.9; - tmp_obj.style.filter = 'alpha(opacity=90)'; + tmp_obj.style.backgroundColor = obj.style.backgroundColor; + tmp_obj.style.fontSize = obj.style.fontSize; + tmp_obj.style.fontFamlily = obj.style.fontFamlily; + tmp_obj.style.color = obj.style.color; + tmp_obj.style.opacity = 1; + tmp_obj.style.filter = 'alpha(opacity=100)'; + document.body.appendChild(tmp_obj); tree_tmp_object[obj.id] = tmp_obj; + return tmp_obj; } // 기생성된 임시 object를 찾아서 return, 없으면 만들어서 return @@ -423,7 +432,9 @@ function tree_drag_start(tobj, px, py) { var obj = tree_get_tmp_object(tobj); xInnerHtml(obj, xInnerHtml(tobj)); - xInnerHtml(tobj,''); + + tobj.style.opacity = 0.4; + tobj.style.filter = 'alpha(opacity=40)'; xLeft(obj, xPageX(tobj)); xTop(obj, xPageY(tobj)); @@ -432,50 +443,82 @@ function tree_drag_start(tobj, px, py) { xDisplay(obj, 'block'); xHeight(tobj, xHeight(obj)); - tobj.style.borderStyle = 'dotted'; - tobj.style.borderWidth = '1px'; - tobj.style.borderColor = '#CF1111'; } // 드래그 시작후 마우스를 이동할때 발생되는 이벤트에 의해 실행되는 함수 function tree_drag(tobj, dx, dy) { - var obj = tree_get_tmp_object(tobj); - xLeft(obj, parseInt(xPageX(obj)) + parseInt(dx)); - xTop(obj, parseInt(xPageY(obj)) + parseInt(dy)); + var obj = tree_get_tmp_object(tobj); + xLeft(obj, parseInt(xPageX(obj)) + parseInt(dx)); + xTop(obj, parseInt(xPageY(obj)) + parseInt(dy)); - /* - for(var i in _zLayerMovObject) { - var obj = xGetElementById(_zLayerMovObject[i]); - var l = xPageX(obj); - var t = xPageY(obj); - var ll = parseInt(l) + parseInt(xWidth(obj)); - var tt = parseInt(t) + parseInt((parseInt(xHeight(obj)) <= parseInt(xHeight(tobj))) ? parseInt(xHeight(obj)) : parseInt(xHeight(tobj))); - - if((tobj != obj ) && (tobj.xDPX >= l && tobj.xDPX <= ll) && (tobj.xDPY >= t && tobj.xDPY <= tt)) { - if(obj.nextSibling == tobj || obj.id.slice(0,4) == 'col_') { - obj.parentNode.insertBefore(tobj, obj); - } else { - obj.parentNode.insertBefore(tobj, obj.nextSibling); + var menu_id = tobj.id.replace(/menu_/,''); + menu_id = menu_id.replace(/_([0-9]+)$/,''); + if(!menu_id) return; + + for(var node_srl in node_info_list[menu_id]) { + var zone_id = "menu_"+menu_id+"_"+node_srl; + var target_obj = xGetElementById(zone_id); + + var hh = parseInt(xHeight(target_obj)); + var h = parseInt(xHeight(target_obj)/2); + + var l = xPageX(target_obj); + var t = xPageY(target_obj); + var ll = parseInt(l) + parseInt(xWidth(target_obj)); + //var tt = parseInt(t) + parseInt((parseInt(xHeight(target_obj)) <= parseInt(xHeight(tobj))) ? parseInt(xHeight(target_obj)) : parseInt(xHeight(tobj))); + var tt = parseInt(t) + hh; + + if( tobj != target_obj && tobj.xDPX >= l && tobj.xDPX <= ll) { + if(tobj.xDPY >= t && tobj.xDPY < tt-h) { + try { + target_obj.parentNode.insertBefore(tobj, target_obj); + } catch(e) { + } + } else if(tobj.xDPY >= t+h && tobj.xDPY <= tt) { + if(target_obj.nextSibling == tobj) { + try { + target_obj.parentNode.insertBefore(tobj, target_obj.nextSibling); + } catch(e) { + } + } + } } - } - } - */ + } } // 드래그 종료 (이동되는 object가 이동할 곳에 서서히 이동되는 것처럼 보이는 효과) function tree_drag_end(tobj, px, py) { var obj = tree_get_tmp_object(tobj); - tobj.style.borderStyle = 'dotted'; - tobj.style.borderWidth = '1px'; - - /* - if(/zNullLayer_/i.test(tobj.id)) tobj.style.borderColor = '#888888'; - else tobj.style.borderColor = '#A9DA12'; - _zLayerDsa = zLayerDisapearTmpObject(obj,tobj); - */ + tree_disappear = tree_disapear_object(obj, tobj); tree_drag_disable(tobj.id); } +// 스르르 사라지게 함;; +function tree_disapear_object(obj, tobj) { + var it = 150; + var ib = 15; + + var x = parseInt(xPageX(obj)); + var y = parseInt(xPageY(obj)); + var ldt = (x - parseInt(xPageX(tobj))) / ib; + var tdt = (y - parseInt(xPageY(tobj))) / ib; + + return setInterval(function() { + if(ib < 1) { + clearInterval(tree_disappear); + xInnerHtml(tobj,xInnerHtml(obj)); + xInnerHtml(obj,''); + xDisplay(obj, 'none'); + return; + } + ib -= 5; + x-=ldt; + y-=tdt; + xLeft(obj, x); + xTop(obj, y); + }, it/ib); +} + // 마우스다운 이벤트 발생시 호출됨 function tree_mouse_down(e) { var evt = new xEvent(e); @@ -486,26 +529,26 @@ function tree_mouse_down(e) { } if(obj) { - xPreventDefault(e); - obj.xDPX = evt.pageX; - obj.xDPY = evt.pageY; - tree_drag_manager.obj = obj; - xAddEventListener(document, 'mouseup', tree_mouse_up, false); - if (obj.drag_start) obj.drag_start(obj, evt.pageX, evt.pageY); + xPreventDefault(e); + obj.xDPX = evt.pageX; + obj.xDPY = evt.pageY; + tree_drag_manager.obj = obj; + xAddEventListener(document, 'mouseup', tree_mouse_up, false); + if (obj.drag_start) obj.drag_start(obj, evt.pageX, evt.pageY); } } // 마우스 버튼을 놓았을때 동작될 함수 (각종 이벤트 해제 및 변수 설정 초기화) function tree_mouse_up(e) { if (tree_drag_manager.obj) { - xPreventDefault(e); - xRemoveEventListener(document, 'mouseup', tree_mouse_up, false); - - if (tree_drag_manager.obj.drag_end) { - var evt = new xEvent(e); - tree_drag_manager.obj.drag_end(tree_drag_manager.obj, evt.pageX, evt.pageY); - } - tree_drag_manager.obj = null; + xPreventDefault(e); + xRemoveEventListener(document, 'mouseup', tree_mouse_up, false); + + if (tree_drag_manager.obj.drag_end) { + var evt = new xEvent(e); + tree_drag_manager.obj.drag_end(tree_drag_manager.obj, evt.pageX, evt.pageY); + } + tree_drag_manager.obj = null; } } @@ -514,20 +557,20 @@ function tree_drag_mouse_move(e) { var evt = new xEvent(e); if (tree_drag_manager.obj) { - xPreventDefault(e); + xPreventDefault(e); - var obj = tree_drag_manager.obj; - var dx = evt.pageX - obj.xDPX; - var dy = evt.pageY - obj.xDPY; + var obj = tree_drag_manager.obj; + var dx = evt.pageX - obj.xDPX; + var dy = evt.pageY - obj.xDPY; - obj.xDPX = evt.pageX; - obj.xDPY = evt.pageY; + obj.xDPX = evt.pageX; + obj.xDPY = evt.pageY; - if (obj.drag) { - obj.drag(obj, dx, dy); - } else { - xMoveTo(obj, xLeft(obj) + dx, xTop(obj) + dy); - } + if (obj.drag) { + obj.drag(obj, dx, dy); + } else { + xMoveTo(obj, xLeft(obj) + dx, xTop(obj) + dy); + } } } @@ -543,7 +586,7 @@ function tree_drag_disable(id, last) { xRemoveEventListener(obj, 'mousedown', tree_mouse_down, false); if (tree_drag_manager.isDrag && last) { - tree_drag_manager.isDrag = false; - xRemoveEventListener(document, 'mousemove', tree_drag_mouse_move, false); + tree_drag_manager.isDrag = false; + xRemoveEventListener(document, 'mousemove', tree_drag_mouse_move, false); } } diff --git a/modules/layout/tpl.admin/layout_info.html b/modules/layout/tpl.admin/layout_info.html index 32a31e1fe..254e980fe 100644 --- a/modules/layout/tpl.admin/layout_info.html +++ b/modules/layout/tpl.admin/layout_info.html @@ -2,7 +2,6 @@ -
@@ -79,6 +78,7 @@
{$menu->name}
({$menu->maxdepth} {$lang->depth}) +