/* * JQuery zTree exedit 3.0 * http://code.google.com/p/jquerytree/ * * Copyright (c) 2010 Hunter.z (baby666.cn) * * Licensed same as jquery - MIT License * http://www.opensource.org/licenses/mit-license.php * * email: hunter.z@263.net * Date: 2012-01-10 */ (function(m){var C={onHoverOverNode:function(b,a){var c=o.getSetting(b.data.treeId),i=o.getRoot(c);if(i.curHoverNode!=a)C.onHoverOutNode(b);i.curHoverNode=a;g.addHoverDom(c,a)},onHoverOutNode:function(b){var b=o.getSetting(b.data.treeId),a=o.getRoot(b);if(a.curHoverNode&&!o.isSelectedNode(b,a.curHoverNode))g.removeTreeDom(b,a.curHoverNode),a.curHoverNode=null},onMousedownNode:function(b,a){function c(b){if(A.dragFlag==0&&Math.abs(H-b.clientX)1){var t=n[0].parentTId?n[0].getParentNode()[j]:o.getNodes(f);j=[];for(a=0, c=t.length;a-1&&l+1!==a&&(e=!1),j.push(t[a]),l=a),n.length===j.length){n=j;break}}e&&(C=n[0].getPreNode(),K=n[n.length-1].getNextNode());x=m("");for(a=0,c=n.length;a0),g.removeTreeDom(f,e),l=m("
  • "),l.append(m("#"+e.tId+d.id.A).clone()),l.css("padding","0"),l.children("#"+e.tId+d.id.A).removeClass(d.node.CURSELECTED),x.append(l),a==f.edit.drag.maxShowNodeNum- 1){l=m("
  • ...
  • ");x.append(l);break}x.attr("id",n[0].tId+d.id.UL+"_tmp");x.addClass(f.treeObj.attr("class"));x.appendTo("body");v=m("");v.attr("id","zTreeMove_arrow_tmp");v.appendTo("body");f.treeObj.trigger(d.event.DRAG,[f.treeId,n])}if(A.dragFlag==1&&v.attr("id")!=b.target.id){p&&(p.removeClass(d.node.TMPTARGET_TREE),w&&m("#"+w+d.id.A,p).removeClass(d.node.TMPTARGET_NODE));w=p=null;D=!1;k=f;e=o.getSettings();for(var r in e)if(e[r].treeId&& e[r].edit.enable&&e[r].treeId!=f.treeId&&(b.target.id==e[r].treeId||m(b.target).parents("#"+e[r].treeId).length>0))D=!0,k=e[r];r=y.scrollTop();l=y.scrollLeft();j=k.treeObj.offset();a=k.treeObj.get(0).scrollHeight;e=k.treeObj.get(0).scrollWidth;c=b.clientY+r-j.top;var E=k.treeObj.height()+j.top-b.clientY-r,F=b.clientX+l-j.left,q=k.treeObj.width()+j.left-b.clientX-l;j=cf.edit.drag.borderMin;var t=Ef.edit.drag.borderMin,s=F f.edit.drag.borderMin,O=qf.edit.drag.borderMin,E=c>f.edit.drag.borderMin&&E>f.edit.drag.borderMin&&F>f.edit.drag.borderMin&&q>f.edit.drag.borderMin,F=j&&k.treeObj.scrollTop()<=0,q=t&&k.treeObj.scrollTop()+k.treeObj.height()+10>=a,J=s&&k.treeObj.scrollLeft()<=0,P=O&&k.treeObj.scrollLeft()+k.treeObj.width()+10>=e;if(b.target.id&&k.treeObj.find("#"+b.target.id).length>0){for(var B=b.target;B&&B.tagName&&!h.eqs(B.tagName,"li")&&B.id!=k.treeId;)B=B.parentNode;var L=!0;for(a=0, c=n.length;a0){L=!1;break}if(L&&b.target.id&&(b.target.id==B.id+d.id.A||m(b.target).parents("#"+B.id+d.id.A).length>0))p=m(B),w=B.id}e=n[0];if(E&&(b.target.id==k.treeId||m(b.target).parents("#"+k.treeId).length>0)){if(!p&&(b.target.id==k.treeId||F||q||J||P)&&(D||!D&&e.parentTId))p=k.treeObj;j?k.treeObj.scrollTop(k.treeObj.scrollTop()-10):t&&k.treeObj.scrollTop(k.treeObj.scrollTop()+10);s?k.treeObj.scrollLeft(k.treeObj.scrollLeft()- 10):O&&k.treeObj.scrollLeft(k.treeObj.scrollLeft()+10);p&&p!=k.treeObj&&p.offset().left=-0.2)&&e?(a=1-v.width(),l=0-v.height()/2,u=d.move.TYPE_PREV):(j==0||b>=j&&b<=1.2)&&a?(a=1-v.width(),l=c.height()-v.height()/2,u=d.move.TYPE_NEXT):(a=5-v.width(),l=0,u=d.move.TYPE_INNER);v.css({display:"block",top:c.offset().top+l+"px",left:c.offset().left+a+"px"});if(M!=w||N!=u)G=(new Date).getTime();if(z&&z.isParent&&u==d.move.TYPE_INNER&&(b=!0,window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId!==z.tId?(clearTimeout(window.zTreeMoveTimer), window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===z.tId&&(b=!1),b))window.zTreeMoveTimer=setTimeout(function(){u==d.move.TYPE_INNER&&z&&z.isParent&&!z.open&&(new Date).getTime()-G>k.edit.drag.autoOpenTime&&h.apply(k.callback.beforeDragOpen,[k.treeId,z],!0)&&(g.switchNode(k,z),k.edit.drag.autoExpandTrigger&&k.treeObj.trigger(d.event.EXPAND,[k.treeId,z]))},k.edit.drag.autoOpenTime+50),window.zTreeMoveTargetNodeTId=z.tId}}else if(u=d.move.TYPE_INNER,p&&h.apply(k.edit.drag.inner, [k.treeId,n,null],!!k.edit.drag.inner)?p.addClass(d.node.TMPTARGET_TREE):p=null,v.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;M=w;N=u}return!1}function i(b){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;N=M=null;y.unbind("mousemove",c);y.unbind("mouseup",i);y.unbind("selectstart",e);m("body").css("cursor","auto");p&&(p.removeClass(d.node.TMPTARGET_TREE),w&&m("#"+w+d.id.A,p).removeClass(d.node.TMPTARGET_NODE)); h.showIfameMask(f,!1);A.showHoverDom=!0;if(A.dragFlag!=0){A.dragFlag=0;var a,l,j,q=f.data.key.children;for(a=0,l=n.length;a0);m("#"+r[0].tId+d.id.ICON).focus().blur()};u==d.move.TYPE_INNER&&k.async.enable&&t&&t.isParent&&(!t[q]||t[q].length===0)?g.asyncNode(k,t,!1,b):b();f.treeObj.trigger(d.event.DROP,[k.treeId,r,t,u])}}else{for(a=0,l=n.length;a0);f.treeObj.trigger(d.event.DROP,[f.treeId,null,null,null])}}}function e(){return!1}var l,j, f=o.getSetting(b.data.treeId),A=o.getRoot(f);if(b.button==2||!f.edit.enable||!f.edit.drag.isCopy&&!f.edit.drag.isMove)return!0;var s=b.target,q=o.getRoot(f).curSelectedList,n=[];if(o.isSelectedNode(f,a))for(l=0,j=q.length;l0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(a)for(var i=m("iframe"),e=0,d=i.length;e"); g.appendTo("body");c.dragMaskList.push(g)}}},view:{addEditBtn:function(b,a){if(!(a.editNameFlag||m("#"+a.tId+d.id.EDIT).length>0)&&h.apply(b.edit.showRenameBtn,[b.treeId,a],b.edit.showRenameBtn)){var c=m("#"+a.tId+d.id.A),i="";c.append(i);m("#"+a.tId+d.id.EDIT).bind("click",function(){if(!h.uCanDo(b)|| h.apply(b.callback.beforeEditName,[b.treeId,a],!0)==!1)return!0;g.editNode(b,a);return!1}).show()}},addRemoveBtn:function(b,a){if(!(a.editNameFlag||m("#"+a.tId+d.id.REMOVE).length>0)&&h.apply(b.edit.showRemoveBtn,[b.treeId,a],b.edit.showRemoveBtn)){var c=m("#"+a.tId+d.id.A),i="";c.append(i); m("#"+a.tId+d.id.REMOVE).bind("click",function(){if(!h.uCanDo(b)||h.apply(b.callback.beforeRemove,[b.treeId,a],!0)==!1)return!0;g.removeNode(b,a);b.treeObj.trigger(d.event.REMOVE,[b.treeId,a]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(b,a){if(o.getRoot(b).showHoverDom)a.isHover=!0,b.edit.enable&&(g.addEditBtn(b,a),g.addRemoveBtn(b,a)),h.apply(b.view.addHoverDom,[b.treeId,a])},cancelCurEditNode:function(b,a){var c=o.getRoot(b),i=b.data.key.name,e=c.curEditNode; if(e){var l=c.curEditInput,j=a?a:l.val();if(!a&&h.apply(b.callback.beforeRename,[b.treeId,e,j],!0)===!1)return e.editNameFlag=!0,!1;else e[i]=j?j:l.val(),a||b.treeObj.trigger(d.event.RENAME,[b.treeId,e]);m("#"+e.tId+d.id.A).removeClass(d.node.CURSELECTED_EDIT);l.unbind();g.setNodeName(b,e);e.editNameFlag=!1;c.curEditNode=null;c.curEditInput=null;g.selectNode(b,e,!1)}return c.noSelection=!0},editNode:function(b,a){var c=o.getRoot(b);g.editNodeBlur=!1;if(o.isSelectedNode(b,a)&&c.curEditNode==a&&a.editNameFlag)setTimeout(function(){h.inputFocus(c.curEditInput)}, 0);else{var i=b.data.key.name;a.editNameFlag=!0;g.removeTreeDom(b,a);g.cancelCurEditNode(b);g.selectNode(b,a,!1);m("#"+a.tId+d.id.SPAN).html("");var e=m("#"+a.tId+d.id.INPUT);e.attr("value",a[i]);h.inputFocus(e);e.bind("blur",function(){g.editNodeBlur||g.cancelCurEditNode(b)}).bind("keydown",function(c){c.keyCode=="13"?(g.editNodeBlur=!0,g.cancelCurEditNode(b,null,!0)):c.keyCode=="27"&&g.cancelCurEditNode(b,a[i])}).bind("click", function(){return!1}).bind("dblclick",function(){return!1});m("#"+a.tId+d.id.A).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=e;c.noSelection=!1;c.curEditNode=a}},moveNode:function(b,a,c,i,e,l){var j=o.getRoot(b),f=b.data.key.children;if(a!=c&&(!b.data.keep.leaf||!a||a.isParent||i!=d.move.TYPE_INNER)){var h=c.parentTId?c.getParentNode():j,s=a===null||a==j;s&&a===null&&(a=j);if(s)i=d.move.TYPE_INNER;j=a.parentTId?a.getParentNode():j;if(i!=d.move.TYPE_PREV&&i!=d.move.TYPE_NEXT)i=d.move.TYPE_INNER; var q,n;s?n=q=b.treeObj:l||(i==d.move.TYPE_INNER?g.expandCollapseNode(b,a,!0,!1):g.expandCollapseNode(b,a.getParentNode(),!0,!1),q=m("#"+a.tId),n=m("#"+a.tId+d.id.UL));var y=m("#"+c.tId).remove();n&&i==d.move.TYPE_INNER?n.append(y):q&&i==d.move.TYPE_PREV?q.before(y):q&&i==d.move.TYPE_NEXT&&q.after(y);var x=-1,v=0,p=null;q=null;var C=c.level;if(c.isFirstNode){if(x=0,h[f].length>1)p=h[f][1],p.isFirstNode=!0}else if(c.isLastNode)x=h[f].length-1,p=h[f][x-1],p.isLastNode=!0;else for(n=0,y=h[f].length;n< y;n++)if(h[f][n].tId==c.tId){x=n;break}x>=0&&h[f].splice(x,1);if(i!=d.move.TYPE_INNER)for(n=0,y=j[f].length;n0)q=a[f][a[f].length-1],q.isLastNode=!1;a[f].splice(a[f].length,0,c);c.isLastNode=!0;c.isFirstNode=a[f].length==1}else a.isFirstNode&&i==d.move.TYPE_PREV?(j[f].splice(v,0,c),q=a,q.isFirstNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!0,c.isLastNode= !1):a.isLastNode&&i==d.move.TYPE_NEXT?(j[f].splice(v+1,0,c),q=a,q.isLastNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(i==d.move.TYPE_PREV?j[f].splice(v,0,c):j[f].splice(v+1,0,c),c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!1);o.fixPIdKeyValue(b,c);o.setSonNodeLevel(b,c.getParentNode(),c);g.setNodeLineIcos(b,c);g.repairNodeLevelClass(b,c,C);!b.data.keep.parent&&h[f].length<1?(h.isParent=!1,h.open=!1,a=m("#"+h.tId+d.id.UL),i=m("#"+h.tId+d.id.SWITCH),f=m("#"+h.tId+d.id.ICON), g.replaceSwitchClass(h,i,d.folder.DOCU),g.replaceIcoClass(h,f,d.folder.DOCU),a.css("display","none")):p&&g.setNodeLineIcos(b,p);q&&g.setNodeLineIcos(b,q);b.check.enable&&g.repairChkClass&&(g.repairChkClass(b,h),g.repairParentChkClassWithSelf(b,h),h!=c.parent&&g.repairParentChkClassWithSelf(b,c));l||g.expandCollapseParentNode(b,c.getParentNode(),!0,e)}},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,i=a[c];if(i){m("#"+a.tId+d.id.UL).remove();for(var e=0,l=i.length;e0){var h=e[i][e[i].length-1];h.isLastNode=!0; h.isFirstNode=e[i].length==1;l=m("#"+h.tId+d.id.UL);j=m("#"+h.tId+d.id.SWITCH);f=m("#"+h.tId+d.id.ICON);e==c?e[i].length==1?g.replaceSwitchClass(h,j,d.line.ROOT):(c=m("#"+e[i][0].tId+d.id.SWITCH),g.replaceSwitchClass(e[i][0],c,d.line.ROOTS),g.replaceSwitchClass(h,j,d.line.BOTTOM)):g.replaceSwitchClass(h,j,d.line.BOTTOM);l.removeClass(d.line.LINE)}},removeRemoveBtn:function(b){m("#"+b.tId+d.id.REMOVE).unbind().remove()},removeTreeDom:function(b,a){a.isHover=!1;g.removeEditBtn(a);g.removeRemoveBtn(a); h.apply(b.view.removeHoverDom,[b.treeId,a])},repairNodeLevelClass:function(b,a,c){if(c!==a.level){var b=m("#"+a.tId),i=m("#"+a.tId+d.id.A),e=m("#"+a.tId+d.id.UL),c="level"+c,a="level"+a.level;b.removeClass(c);b.addClass(a);i.removeClass(c);i.addClass(a);e.removeClass(c);e.addClass(a)}}},event:s,data:{setSonNodeLevel:function(b,a,c){if(c){var d=b.data.key.children;c.level=a?a.level+1:0;if(c[d])for(var a=0,e=c[d].length;a0)switch(l=o.getNodeCache(c,e),j){case "mousedownNode":f=C.onMousedownNode;break;case "hoverOverNode":f=C.onHoverOverNode; break;case "hoverOutNode":f=C.onHoverOutNode}return{stop:!1,node:l,nodeEventType:j,nodeEventCallback:f,treeEventType:"",treeEventCallback:null}});o.addInitRoot(function(b){b=o.getRoot(b);b.curEditNode=null;b.curEditInput=null;b.curHoverNode=null;b.dragFlag=0;b.dragNodeShowBefore=[];b.dragMaskList=[];b.showHoverDom=!0});o.addZTreeTools(function(b,a){a.addNodes=function(a,d,e){function l(){g.addNodes(b,a,f,e==!0)}if(!d)return null;a||(a=null);if(a&&!a.isParent&&b.data.keep.leaf)return null;var j=b.data.key.children, f=h.clone(h.isArray(d)?d:[d]);this.setting.async.enable&&a&&a.isParent&&(!a[j]||a[j].length===0)?g.asyncNode(b,a,e,l):l();return f};a.cancelEditName=function(a){var d=o.getRoot(b),e=b.data.key.name,h=d.curEditNode;d.curEditNode&&g.cancelCurEditNode(b,a?a:h[e])};a.copyNode=function(a,i,e,l){if(!i)return null;if(a&&!a.isParent&&b.data.keep.leaf&&e===d.move.TYPE_INNER)return null;var j=b.data.key.children,f=h.clone(i);if(!a)a=null,e=d.move.TYPE_INNER;e==d.move.TYPE_INNER?(i=function(){g.addNodes(b,a, [f],l)},b.async.enable&&a&&a.isParent&&(!a[j]||a[j].length===0)?g.asyncNode(b,a,l,i):i()):(g.addNodes(b,a.parentNode,[f],l),g.moveNode(b,a,f,e,!1,l));return f};a.editName=function(a){a&&a.tId&&a===o.getNodeCache(b,a.tId)&&(g.expandCollapseParentNode(b,a,!0),g.editNode(b,a))};a.moveNode=function(a,i,e,h){function j(){g.moveNode(b,a,i,e,!1,h)}if(!i)return i;if(a&&!a.isParent&&b.data.keep.leaf&&e===d.move.TYPE_INNER)return null;else if(a&&(i.parentTId==a.tId&&e==d.move.TYPE_INNER||m("#"+i.tId).find("#"+ a.tId).length>0))return null;else a||(a=null);var f=b.data.key.children;b.async.enable&&a&&a.isParent&&(!a[f]||a[f].length===0)?g.asyncNode(b,a,h,j):j();return i};a.removeNode=function(a,i){a&&(i=!!i,i&&h.apply(b.callback.beforeRemove,[b.treeId,a],!0)==!1||(g.removeNode(b,a),i&&this.setting.treeObj.trigger(d.event.REMOVE,[b.treeId,a])))};a.removeChildNodes=function(a){if(!a)return null;var d=a[b.data.key.children];g.removeChildNodes(b,a);return d?d:null};a.setEditable=function(a){b.edit.enable=a; return this.refresh()}});var H=g.cancelPreSelectedNode;g.cancelPreSelectedNode=function(b,a){for(var c=o.getRoot(b).curSelectedList,d=0,e=c.length;d