From 2aebd5960fac01adfabb4f1529f403e0b0a90f2f Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 7 Mar 2007 06:49:24 +0000 Subject: [PATCH] git-svn-id: http://xe-core.googlecode.com/svn/trunk@293 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 42 ++-- common/js/tree_menu.js | 231 +++++++++++++++++++ common/js/xml_handler.js | 70 +++--- common/lang/ko.lang.php | 2 + common/tpl/common_header.html | 15 +- common/tpl/images/folder.gif | Bin 0 -> 372 bytes common/tpl/images/imgfolder.gif | Bin 0 -> 622 bytes common/tpl/images/join.gif | Bin 0 -> 69 bytes common/tpl/images/joinbottom.gif | Bin 0 -> 66 bytes common/tpl/images/line.gif | Bin 0 -> 66 bytes common/tpl/images/minus.gif | Bin 0 -> 86 bytes common/tpl/images/minusbottom.gif | Bin 0 -> 85 bytes common/tpl/images/page.gif | Bin 0 -> 582 bytes common/tpl/images/plus.gif | Bin 0 -> 89 bytes common/tpl/images/plusbottom.gif | Bin 0 -> 88 bytes modules/layout/tpl.admin/insert_layout2.html | 18 +- modules/layout/tpl.admin/js/admin.js | 140 ----------- 17 files changed, 303 insertions(+), 215 deletions(-) create mode 100644 common/js/tree_menu.js create mode 100644 common/tpl/images/folder.gif create mode 100644 common/tpl/images/imgfolder.gif create mode 100644 common/tpl/images/join.gif create mode 100644 common/tpl/images/joinbottom.gif create mode 100644 common/tpl/images/line.gif create mode 100644 common/tpl/images/minus.gif create mode 100644 common/tpl/images/minusbottom.gif create mode 100644 common/tpl/images/page.gif create mode 100644 common/tpl/images/plus.gif create mode 100644 common/tpl/images/plusbottom.gif diff --git a/common/js/common.js b/common/js/common.js index 745a450c4..0ccd57c43 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -10,7 +10,7 @@ String.prototype.trim = function() { // 주어진 인자가 하나라도 defined되어 있지 않으면 false return function isDef() { for(var i=0; i"+ - ""+ - ""+ - ""+ + ""+ + ""+ + ""+ + ""+ "<\/object>"; break; default : html = ""+ - ""; + ""; break; } @@ -51,7 +51,7 @@ function displayMultimedia(type, src, style) { // 화면내에서 이미지 리사이즈 및 클릭할 수 있도록 function resizeImageContents() { - var objs = xGetElementsByTagName('img'); + var objs = xGetElementsByTagName("img"); for(var i in objs) { var obj = objs[i]; var parent = xParent(obj); @@ -61,15 +61,15 @@ function resizeImageContents() { var obj_width = xWidth(obj); if(parent_width>=obj_width) continue; - obj.style.cursor = 'pointer'; + obj.style.cursor = "pointer"; obj.source_width = obj_width; obj.source_height = xHeight(obj); xWidth(obj, xWidth(parent)-1); - xAddEventListener(obj,'click', resizeImagePopup); + xAddEventListener(obj,"click", resizeImagePopup); } } -xAddEventListener(window, 'load', resizeImageContents); +xAddEventListener(window, "load", resizeImageContents); function resizeImagePopup(evt) { var e = new xEvent(evt); @@ -129,7 +129,7 @@ function setFixedPopupSize() { if(xIE4Up) { var i=0; while(i<2) { - var height = xHeight(xGetElementById('popup_content')); + var height = xHeight(xGetElementById("popup_content")); if(xGetBodyHeight()!=height) window.resizeBy(0, height-xGetBodyHeight()); i++; } diff --git a/common/js/tree_menu.js b/common/js/tree_menu.js new file mode 100644 index 000000000..1e8577642 --- /dev/null +++ b/common/js/tree_menu.js @@ -0,0 +1,231 @@ +/** + * @file tree_menu.js + * @author zero (zero@nzeo.com) + * @brief xml파일을 읽어서 트리 메뉴를 그려줌 + * + * 일단 이것 저것 꽁수가 좀 들어간 것이긴 한데 속도나 기타 면에서 쓸만함... + * 언제나 그렇듯 필요하신 분은 가져가서 쓰세요. + * 다만 제로보드에 좀 특화되어 있어서.... + **/ + +// 아이콘을 미리 생성해 놓음 +var tree_folder_icon = new Image(); +tree_folder_icon.src = "./common/tpl/images/folder.gif"; +var tree_open_folder_icon = new Image(); +tree_open_folder_icon.src = "./common/tpl/images/imgfolder.gif"; + +var tree_minus_icon = new Image(); +tree_minus_icon.src = "./common/tpl/images/minus.gif"; +var tree_minus_bottom_icon = new Image(); +tree_minus_bottom_icon.src = "./common/tpl/images/minusbottom.gif"; +var tree_plus_icon = new Image(); +tree_plus_icon.src = "./common/tpl/images/plus.gif"; +var tree_plus_bottom_icon = new Image(); +tree_plus_bottom_icon.src = "./common/tpl/images/plusbottom.gif"; + +// 폴더를 모두 열고/닫기 위한 변수 설정 +var tree_menu_folder_list = new Array(); + +// 트리메뉴의 정보를 담고 있는 xml파일을 읽고 drawTreeMenu()를 호출하는 함수 +function loadTreeMenu(url, menu_id, zone_id, title) { + // 일단 그릴 곳을 찾아서 사전 작업을 함 (그릴 곳이 없다면 아예 시도를 안함) + 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(); + oXml.xml_path = url; + + // menu_id, zone_id는 계속 달고 다녀야함 + var param = {menu_id:menu_id, zone_id:zone_id, title:title} + + // 요청후 drawTreeMenu()함수를 호출 + oXml.request(drawTreeMenu, oXml, null, null, param); +} + +// 트리메뉴 XML정보를 이용해서 정해진 zone에 출력 +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 zone = xGetElementById(zone_id); + var html = ""; + html = '
root'+title+'
'; + + tree_menu_folder_list[menu_id] = new Array(); + + + // xml 정보가 들어올때까지 대기 (async) + var xmlDoc = oXml.getResponseXml(); + if(xmlDoc) { + + // node 태그에 해당하는 값들을 가져옴 + var node_list = xmlDoc.getElementsByTagName("node"); + if(node_list.length>0) { + var root = xmlDoc.getElementsByTagName("root")[0]; + html += drawNode(root, menu_id); + } + } + + xInnerHtml(zone, html); +} + +// root부터 시작해서 recursive하게 노트를 표혐 +function drawNode(parent_node, menu_id) { + var html = ''; + for (var i=0; i< parent_node.childNodes.length; i++) { + var node = parent_node.childNodes.item(i); + if(node.nodeName!="node") continue; + + // 자식 노드가 있는지 확인 + var hasChild = false; + if(node.hasChildNodes()) hasChild = true; + + // nextSibling가 있는지 확인 + var hasNextSibling = false; + if(i==parent_node.childNodes.length-1) hasNextSibling = true; + + // 아이콘 설정 + var line_icon = null; + var folder_icon = null; + + // 자식 노드가 있는지 확인하여 있으면 아이콘을 바꿈 + if(hasChild) { + if(!hasNextSibling) { + line_icon = "minus"; + folder_icon = "folder"; + } else { + line_icon = "minusbottom"; + folder_icon = "folder"; + } + } else { + if(hasNextSibling) { + line_icon = "joinbottom"; + folder_icon = "page"; + } else { + line_icon = "join"; + folder_icon = "page"; + } + } + + var node_srl = node.getAttribute("node_srl"); + var text = node.getAttribute("text"); + + var zone_id = "menu_"+menu_id+"_"+node_srl; + tree_menu_folder_list[menu_id][tree_menu_folder_list[menu_id].length] = zone_id; + + html += ''+ + '
'+ + ''; + if(hasChild) + html+= ''+ + ''+ + ''; + else + html+= ''+ + ''+ + ''; + + html += ''+ + 'line'+ + 'folder'+ + ''+ + ''+ + text+ + ''+ + ''; + + if(node.childNodes.length) { + zone_id = zone_id+"_child"; + tree_menu_folder_list[menu_id][tree_menu_folder_list[menu_id].length] = zone_id; + if(!hasNextSibling) html += ''; + else html += ''; + } + + html += ''+ + '
' + ''; + + + } + return html; +} + +// 노드의 폴더 아이콘 클릭시 +function toggleFolder(zone_id) { + // 아이콘을 클릭한 대상을 찾아봄 + var child_zone = xGetElementById(zone_id+"_child"); + if(!child_zone) return; + + // 대상의 아이콘들 찾음 + var line_icon = xGetElementById(zone_id+'_line_icon'); + var folder_icon = xGetElementById(zone_id+'_folder_icon'); + + // 대상의 자식 노드들이 숨겨져 있다면 열고 아니면 닫기 + if(child_zone.style.display == "block") { + child_zone.style.display = "none"; + if(line_icon.src.indexOf('bottom')>0) line_icon.src = tree_minus_bottom_icon.src; + else line_icon.src = tree_minus_icon.src; + + folder_icon.src = tree_folder_icon.src; + } else { + if(line_icon.src.indexOf('bottom')>0) line_icon.src = tree_plus_bottom_icon.src; + else line_icon.src = tree_plus_icon.src; + folder_icon.src = tree_open_folder_icon.src; + child_zone.style.display = "block"; + } +} + +// 노드의 글자 선택시 +var prev_selected_node = null; +function selectNode(zone_id) { + // 이전에 선택된 노드가 있었다면 원래데로 돌림 + if(prev_selected_node) { + prev_selected_node.style.backgroundColor = "#ffffff"; + prev_selected_node.style.fontWeight = "normal"; + prev_selected_node.style.color = "#000000"; + } + + // 선택된 노드를 찾아봄 + var node_zone = xGetElementById(zone_id+'_node'); + if(!node_zone) return; + + // 선택된 노드의 글자를 변경 + node_zone.style.backgroundColor = "#000000"; + node_zone.style.fontWeight = "bold"; + node_zone.style.color = "#FFFFFF"; + prev_selected_node = node_zone; +} + +// 모두 닫기 +function closeAllTreeMenu(menu_id) { + for(var i in tree_menu_folder_list[menu_id]) { + var zone_id = tree_menu_folder_list[menu_id][i]; + var zone = xGetElementById(zone_id); + if(!zone) continue; + var child_zone = xGetElementById(zone_id+"_child"); + if(!child_zone) continue; + + child_zone.style.display = "block"; + toggleFolder(zone_id); + } +} + +// 모두 열기 +function openAllTreeMenu(menu_id) { + for(var i in tree_menu_folder_list[menu_id]) { + var zone_id = tree_menu_folder_list[menu_id][i]; + var zone = xGetElementById(zone_id); + if(!zone) continue; + var child_zone = xGetElementById(zone_id+"_child"); + if(!child_zone) continue; + + child_zone.style.display = "none"; + toggleFolder(zone_id); + } +} diff --git a/common/js/xml_handler.js b/common/js/xml_handler.js index 21e53c872..a82e19728 100644 --- a/common/js/xml_handler.js +++ b/common/js/xml_handler.js @@ -1,49 +1,49 @@ /** - * @file : common/js/xml_handler.js - * @author : zero - * @desc : ajax 사용을 위한 기본 js + * @file common/js/xml_handler.js + * @author zero + * @brief ajax 사용을 위한 기본 js **/ // xml handler을 이용하는 user function function exec_xml(module, act, params, callback_func, response_tags, callback_func_arg, fo_obj) { - var oXml = new xml_handler(); - oXml.reset(); - for(var key in params) { - var val = params[key]; - oXml.addParam(key, val); - } - oXml.addParam('module', module); - oXml.addParam('act', act); + var oXml = new xml_handler(); + oXml.reset(); + for(var key in params) { + var val = params[key]; + oXml.addParam(key, val); + } + oXml.addParam("module", module); + oXml.addParam("act", act); - response_tags[response_tags.length] = 'redirect_url'; + response_tags[response_tags.length] = "redirect_url"; - var waiting_obj = document.getElementById('waitingforserverresponse'); - waiting_obj.style.visibility = 'visible'; - oXml.request(xml_response_filter, oXml, callback_func, response_tags, callback_func_arg, fo_obj); + var waiting_obj = document.getElementById("waitingforserverresponse"); + waiting_obj.style.visibility = "visible"; + oXml.request(xml_response_filter, oXml, callback_func, response_tags, callback_func_arg, fo_obj); } // 결과 처리 후 callback_func에 넘겨줌 function xml_response_filter(oXml, callback_func, response_tags, callback_func_arg, fo_obj) { - var xmlDoc = oXml.getResponseXml(); - if(!xmlDoc) return; + var xmlDoc = oXml.getResponseXml(); + if(!xmlDoc) return null; - var waiting_obj = document.getElementById('waitingforserverresponse'); - waiting_obj.style.visibility = 'hidden'; - var ret_obj = oXml.toZMsgObject(xmlDoc, response_tags); - if(ret_obj['error']!=0) { - alert(ret_obj['message']); - return; - } + var waiting_obj = document.getElementById("waitingforserverresponse"); + waiting_obj.style.visibility = "hidden"; - callback_func(ret_obj, response_tags, callback_func_arg, fo_obj); + var ret_obj = oXml.toZMsgObject(xmlDoc, response_tags); + if(ret_obj["error"]!=0) { + alert(ret_obj["message"]); + return; + } + + callback_func(ret_obj, response_tags, callback_func_arg, fo_obj); } // xml handler function xml_handler() { this.obj_xmlHttp = null; this.method_name = null; - if(location.href.indexOf('admin.php')>0) this.xml_path = "./admin.php"; - else this.xml_path = "./index.php"; + this.xml_path = "./index.php"; this.params = new Array(); @@ -71,25 +71,25 @@ function zGetXmlHttp() { } function xml_handlerRequest(callBackFunc, xmlObj, callBackFunc2, response_tags, callback_func_arg, fo_obj) { - var rd = ""; rd += "\n" - + "\n" - + "\n" + + "\n" + + "\n" for (var key in this.params) { var val = this.params[key]; rd += "<"+key+">\n"; } - + rd += "\n" - + "\n"; + + "\n"; + if(this.obj_xmlHttp.readyState!=0) { this.obj_xmlHttp.abort(); this.obj_xmlHttp = this.getXmlHttp(); } this.obj_xmlHttp.onreadystatechange = function () {callBackFunc(xmlObj, callBackFunc2, response_tags, callback_func_arg, fo_obj)}; - this.obj_xmlHttp.open('POST', this.xml_path, true); + this.obj_xmlHttp.open("POST", this.xml_path, true); this.obj_xmlHttp.send(rd); } @@ -119,14 +119,14 @@ function xml_handlerGetResponseXML() { function xml_handlerToZMsgObject(xmlDoc, tags) { if(!xmlDoc) return null; if(!tags) { - tags = new Array('error','message'); + tags = new Array("error","message"); } var obj_ret = new Array(); for(var i=0; icmd_select = "선택"; $lang->cmd_select_all = "모두선택"; $lang->cmd_unselect_all = "모두해제"; + $lang->cmd_close_all = "모두닫기"; + $lang->cmd_open_all = "모두열기"; $lang->enable = '가능'; $lang->disable = '불가능'; diff --git a/common/tpl/common_header.html b/common/tpl/common_header.html index 51846c504..04bfc969d 100644 --- a/common/tpl/common_header.html +++ b/common/tpl/common_header.html @@ -3,16 +3,17 @@ {Context::getBrowserTitle()} - - - - + + + + + - + - + - + {Context::getHtmlHeader()} diff --git a/common/tpl/images/folder.gif b/common/tpl/images/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb129763dcea0dc1916b7e934fdce2fd8770c380 GIT binary patch literal 372 zcmZ?wbhEHb6k-r!xXQrr`}gnn@893v9&~1=$&)8f4jw$XxRCo$zt;Bc+vnx5?P^z= zlf`m!n&I9q)y<94Gt(JwZ!g^1B)cGw zMSgXq@QJAg2YNM*9XqzJMr>9F(~2^IHB}=2ujK##G5PiD*Z=>|`G33g|C9Rv?>o0` z+x8y>W-^ck6o0ZXGBD^d=zw&C{KUXE(P4UlhmKVLi6xgzC4402GB{W!L~2f9POOq~ zU`a4ovhaqB%+vz~Nx8dkFFrrvqSej!Kd!MF9@+A*p|PG#+gVIkwX>^RSE$vAT~}-J zl&QL${d#h`nsevP*X5qctE;hW`3hadnOwRm>o;uF<*#vKOczy ZVbwl)>NG2h3j?FtrOQ`>yuBP5tO0@?i&Ovr literal 0 HcmV?d00001 diff --git a/common/tpl/images/imgfolder.gif b/common/tpl/images/imgfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6d880347f518bbd1239f2af3e3059ccb1e674e3 GIT binary patch literal 622 zcmZ?wbhEHb6k-r!c*el+{{8!<#k_3u{{L^wI(YEl_U+q$|Ni~|@MghDua+)ZG%JH? z-TL((7IrU~Kj+DlCo5O3lwA7%*s)`qHgDa!eb@j0OBdvEG*;)$$zqw8!`56^^k}p5 z_Ya-7_UFu)+TYb$+uz;v|9Z=kBA(5S(&rbc{eRsuGoA72{gy`u15VE{KDj_~ajDeg z37uzVnk*{dIyud7L!HE&S<`mx+V>;JX-$>L)2C0b?{GLaORBB0{O{F*<)!?K3%Nf$ zsam#d+5aDt|39h!f4lVm`_9*|U#E2~`~QE=wr$&f|N3)mmgIjBn8`2{fZ|UUMg|5? z1|5)NL2<&se!9W4skx=K)lgW7o1c@{KvtWf%~RNQ+VpAif|G?@nV2{@=DW(VPUdzM za9Zso;A-yDro->*#N*D+IV1gO z@j_>Lk*uD81ih2?D)vTMXLcNRa$tCI39M1!eiVTiL RukLUjIIv`XD-$DwH2~IF)06-J literal 0 HcmV?d00001 diff --git a/common/tpl/images/join.gif b/common/tpl/images/join.gif new file mode 100644 index 0000000000000000000000000000000000000000..34dd47610a5d7c3580dedc342683559bf77abce2 GIT binary patch literal 69 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFv;}DH=KUEdfpt3ORshA Wx&LIzk};W<vKC_i literal 0 HcmV?d00001 diff --git a/common/tpl/images/joinbottom.gif b/common/tpl/images/joinbottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..48b81c80a9e25f6f29e2614aaa33bdf4a4d2881b GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Tx&LIzy5lkJS?4l0Mh0sDgH;v` literal 0 HcmV?d00001 diff --git a/common/tpl/images/line.gif b/common/tpl/images/line.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a259eea00c330eee85fb18aa64e2e232d5410b1 GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Txqp6J8?ND(@^elGBZD;ng_;%{ literal 0 HcmV?d00001 diff --git a/common/tpl/images/minus.gif b/common/tpl/images/minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d212a97ae0d8f83aa39836c5a85d442f8602553 GIT binary patch literal 86 zcmZ?wbhEHb6k-r!n8?h~)YR0_(7?dJ@c;jR#h)yU3=GT+IzTQ^R)~RtNqvreafzu-gC3m_gnAtsyGG)YXIxA8@>Pl literal 0 HcmV?d00001 diff --git a/common/tpl/images/page.gif b/common/tpl/images/page.gif new file mode 100644 index 0000000000000000000000000000000000000000..42d7318c5d928a2033cb42c72598a131ea6de64d GIT binary patch literal 582 zcmZ?wbhEHb6k-r!c*el+`}gnn@8AFU{r~N^{|65qeDdVU-@kuvy#9aS{{Mgf|9}4Z z|M0{AU%q_(`SWMv)Wg{&OV2(3AD1{GbotxKt1eYFZ#Zz^|ILSQTV|i?T5|Ba{La?4kwX3c6}c&WZ`PygnpJ?rkDyZry# zum9<}^Zxw(U)#BD%KlHsjvf2=@89j`-!lsq`N~Rn2+cXw3F)`cNXo|{M zwn^yh*lA;L&u+56RaJ{?r=8t#bK_Gj;^%BG95Yu?zS_*U>z2K_g$4ipCbgRvpFHC> zdg-Vu`PTd?H;48ok#7ReIGiR-xW0J7!Dc}Y2`z_&_QUOboFWD+3JrbT68dFMM=k~^ HFjxZso}Jb2 literal 0 HcmV?d00001 diff --git a/common/tpl/images/plus.gif b/common/tpl/images/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2c997233b3f7b0fd56c4637c2c20aaf0d47bae7 GIT binary patch literal 89 zcmZ?wbhEHb6k-r!n8?J?(9poZ!0`Y7e;}#&lZBCifr&u}$Og&^0ohtp^czmUT|IBk qf~en0XVhiRX3S&EJ6Nfmaxdepth} {$lang->depth}) -
- +
- - -
-
- - - - - + +
+ diff --git a/modules/layout/tpl.admin/js/admin.js b/modules/layout/tpl.admin/js/admin.js index 6bce2580a..e69de29bb 100644 --- a/modules/layout/tpl.admin/js/admin.js +++ b/modules/layout/tpl.admin/js/admin.js @@ -1,140 +0,0 @@ -function doEditMenuInfo(sel_obj) { - var idx = sel_obj.selectedIndex; - var obj = sel_obj.options[idx]; - if(typeof(obj)=='undefined'||!obj) return; - - var menu_srl = obj.value; - - var url = "./?module=layout&act=dispLayoutMenuInfo&menu_srl="+menu_srl; - var win = window.open(url,"_LayoutMenu","toolbars=no,status=no,resizable=no,width=10,height=10"); - win.focus(); -} - -function completeGetLayoutMenuSrl(ret_obj, response_tags) { - var menu_srl = ret_obj['menu_srl']; - var menu_id = ret_obj['menu_id']; - doEditInsertMenu(menu_id, menu_srl); -} - -function doEditInsertMenu(menu_id, menu_srl) { - var item_obj = xGetElementById('default_value_item_'+menu_id); - var listup_obj = xGetElementById('default_value_listup_'+menu_id); - - var text = item_obj.value; - if(!text) return; - - if(typeof(menu_srl)=='undefined'||!menu_srl) { - var params = new Array(); - params['text'] = text; - params['menu_id'] = menu_id; - var response_tags = new Array('error','message','menu_id','menu_srl'); - exec_xml('layout', 'getLayoutMenuSrl', params, completeGetLayoutMenuSrl, response_tags); - return; - } - - var opt = new Option(text, menu_srl, false, true); - listup_obj.options[listup_obj.length] = opt; - - setDepth(listup_obj.options[listup_obj.length-1],0); - - item_obj.value = ''; - item_obj.focus(); -} - -function doEditMenu(cmd, menu_id, max_depth) { - var listup_obj = xGetElementById('default_value_listup_'+menu_id); - var idx = listup_obj.selectedIndex; - var lng = listup_obj.options.length; - switch(cmd) { - case 'up' : - if(lng < 2 || idx<1) return; - - var value1 = listup_obj.options[idx].value; - var text1 = listup_obj.options[idx].text; - var depth1 = getDepth(listup_obj.options[idx]); - - var value2 = listup_obj.options[idx-1].value; - var text2 = listup_obj.options[idx-1].text; - var depth2 = getDepth(listup_obj.options[idx-1]); - - listup_obj.options[idx] = new Option(text2,value2,false,false); - setDepth(listup_obj.options[idx], depth1); - - listup_obj.options[idx-1] = new Option(text1,value1,false,true); - setDepth(listup_obj.options[idx-1], depth2); - break; - case 'down' : - if(lng < 2 || idx == lng-1) return; - - var value1 = listup_obj.options[idx].value; - var text1 = listup_obj.options[idx].text; - var depth1 = getDepth(listup_obj.options[idx]); - - var value2 = listup_obj.options[idx+1].value; - var text2 = listup_obj.options[idx+1].text; - var depth2 = getDepth(listup_obj.options[idx+1]); - - listup_obj.options[idx] = new Option(text2,value2,false,false); - setDepth(listup_obj.options[idx], depth1); - - listup_obj.options[idx+1] = new Option(text1,value1,false,true); - setDepth(listup_obj.options[idx+1], depth2); - break; - case 'delete' : - if(idxcur_depth) return; - } - - listup_obj.remove(idx); - if(idx==0) listup_obj.selectedIndex = 0; - else listup_obj.selectedIndex = idx-1; - break; - case 'add_indent' : - if(lng<2||idx<1) return; - - var opt_cur = listup_obj.options[idx]; - var opt_up = listup_obj.options[idx-1]; - - var cur_depth = getDepth(opt_cur); - var up_depth = getDepth(opt_up); - - if(up_depth >= cur_depth) addDepth(opt_cur, max_depth); - break; - case 'remove_indent' : - var opt_cur = listup_obj.options[idx]; - removeDepth(opt_cur); - break; - } - - var value_list = new Array(); - for(var i=0;i=max_depth) return; - obj.style.paddingLeft = (depth*20)+'px'; -} - -function removeDepth(obj) { - var depth = getDepth(obj); - var depth = depth - 1; - if(depth<0) return; - obj.style.paddingLeft = (depth*20)+'px'; -}