栏目 右键克隆 栏目树调整顺序 遮罩层

遮罩层
<style>
#pageOverlay { position:fixed; top:0; left:0; z-index:1987;
width:100%; height:100%;
 background:#000; filter:alpha(opacity=50); opacity:0.50; }
</style>

function layerMaskShow()
{  
    document.getElementById('pageOverlay').style.visibility = 'visible' ;
}

function  layerMaskHidden()
{
    document.getElementById('pageOverlay').style.visibility = 'hidden' ;
}
</script>

</head>

<body οnlοad="layerMaskHidden()">

<div id="pageOverlay" ></div>

另一个页面
function layerMaskShow()
{
    window.parent.lFrame.layerMaskShow();

}

<input type="button"
    value='<s:text name="msg.portalMS.category.ordetcategory"/>' id="button"
    οnclick="javascript:NavTree.show();layerMaskShow();" title="<s:text name="msg.portalMS.category.ordetcategory"/>"/>
    <s:hidden name="cloneCategory.terminalType" id="category_terminalType" value="1"></s:hidden>




栏目树:
Ext.onReady(
       
        function() {

            Ext.override(Ext.tree.TreeNode, {
                deepExpand : function(anim, callback, scope){   
                    // 先展开本节点   
                    this.expand(false, anim, function(){   
                        // 然后展开子节点   
                        var cs = this.childNodes,    
                            expanded = 0,   
                            len = cs.length,   

                            
                            taskDone = function(){   
                                // 每展开成功一个子节点,计数+1   
                                expanded++;   
                                // 如果所有子节点都展开,调用最终回调   
                                if(expanded >= len){   
                                    this.runCallback(callback, scope || this, [this]);   
                                }   
                            };

                          if(len<=0){   
                              taskDone.call(this);// <--- 这里? 应该修改为 taskDone.call(this);   
                              return;   
                          }                      
                        // 递归展开   
                        for(var i = 0, len = cs.length; i < len; i++) {   
                            cs[i].deepExpand(anim, taskDone, this);   
                        }   
                    }, this);   
                }   
            });

            var heightWindows= document.documentElement.clientHeight -60;
            var width= document.documentElement.clientWidth -5;
              var siteID_;
              var arr =Ext.query("*[name=site.siteID]");// 通过class name来获取节点的数组
              siteID = arr[0].value;
              if(siteID!=''){
                    siteID_ = siteID;
                  }else{
                    siteID_ = siteid;
               }
              document.getElementById("sitesid").value=siteID_;
            var isClone = document.getElementById("isClone")
            
            Ext.BLANK_IMAGE_URL = "../js/ext/resources/images/default/s.gif";
            Ext.QuickTips.init();
            
            var Tree = Ext.tree;
 
            tree = new Tree.TreePanel({
                el:'tree_div',
                title:'右键进行克隆操作',
                autoScroll : true,
                border : false,
                animate : true,
                enableDD : false,
                height:heightWindows,
               
                bodyStyle:'background-color:#e9f0f9',
                containerScroll : true,
                loader: new Tree.TreeLoader({
                    dataUrl:'jsonTree.action'+'?site.siteID='+siteID
                })
            
            });
            tree.on('beforeload',function(node){           
                tree.loader.dataUrl = 'jsonTree.action?nodeId='+node.id+'&site.siteID='+siteID_;   
            });  

            // set the root node
             root = new Tree.AsyncTreeNode({
                text: '<s:text name="msg.portalMS.system.root"/>',
                draggable:false,
                root:'menus',
                url:'www.baidu.com',
                id:'root_id',
                icon:'../images/dataTemplate.gif'
            });
            tree.setRootNode(root);
            root.expand();
            // render the tree
            tree.render();
            if(typeof(isClone) != "undefined" && isClone != null)
            {
                 tree.on("contextmenu", showNASClassTreeMenu);
            }
            tree.on("click", showDetail);  

            tree.on('checkchange', function(node, checked) {
                
                node.deepExpand(false,function(){if(node.parentNode.id=='root_id'){
                    return;
                }
                selParent(node, checked);
                selChild(node, checked);},this);  
            }, tree);
            
        }
    );
    
调整顺序:

// 导航树
NavTree = function(){
    var nav;
    var formWindow;
    var navEditor;
    var leafMenu;
    var dirMenu;
    var loader;
    var root;
    var removeFlag = false;
    var titleChangeFlag = false;
    var nodeSelected;
    var mgr;
    var title;
    var cateType;
    var terminalType;
    return {
        init : function(){
            if(!mgr){
                Ext.Msg.alert($CON.WARM_TIP,$CON.CHECK_CONFIG+"NavTree.setMgr()"+CHECK_CONFIG_ONE+"mgr");
                return;
            }
            if(!loader){
                if(!Ext.get("cate_type"))
                {
                    return;
                }
                if(!Ext.get("category_terminalType"))
                {
                    return;
                }
                var siteId="";
                if(Ext.get("siteId"))
                {
                    siteId=Ext.get("siteId").dom.value;
                }
                terminalType = Ext.get("category_terminalType").dom.value;
                cateType =Ext.get("cate_type").dom.value;
                loader = new Ext.tree.TreeLoader({
                    url : '/portalMS/resource/jsonData.action?cateType='+cateType+'&terminalType='+terminalType+'&site.siteID='+siteId
                });
                loader.on('beforeload', function(treeloader, node) {
                    treeloader.baseParams = {
                        id : node.id        
                    };
                }, this);
            }
            if(!root){
                    if(Ext.get("category_firstNodeName")){
                        title=Ext.get("category_firstNodeName").dom.value;
                    }else{
                        title="";
                    }
               root = new Ext.tree.AsyncTreeNode({
                    id : Ext.get("category_firstNodeId").dom.value,
                    text : title,
                    expanded: true
                });
            }
            if(!nav){
                  
                nav = new Ext.tree.TreePanel({
                    width : 232,
                    height: 600,
                    autoScroll : true,
                    animate : true,
                    loader : loader,
                    root : root,
                    enableDD:true,
                    border:false,
                    listeners : {
                        'click' : function(node, event) {
                            if (node.isLeaf()) {
                                // 为叶子节点时,点击不进入链接
                              //  event.stopEvent();
                              //  alert(node.url);
                              //   window.open('http://www.google.com');
                            }
                        }
                    }
                });
                // 添加右键菜单
               // nav.on("contextmenu", this.showTreeMenu);
                // 当节点文本改变时触发事件
                nav.on("textchange", function(node, newText, oldText) {
                    if (!titleChangeFlag && newText != oldText) {
                        mgr.ajaxModifyTitle(node.id, newText, function(success) {          
                        });
                    }
                });
           
                // 当节点移动时触发事件
                nav.on("movenode", function(tree, node, oldParent, newParent, index) {  
                    mgr.updateMoveNode(node.id, oldParent.id, newParent.id, index+1, cateType, getReslut);
                });
                function getReslut(data)
                {
                    if(data == "error"){
                        Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOEXISTE);
                        
                    }
                    if(data == "false"){
                        Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOCHANGE);
                        
                    }
                }
                
                // 当节点移动前触发事件
                nav.on("beforemovenode", function(tree, node, oldParent, newParent, index) {
                    if(oldParent!=newParent){   
                        Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOCHANGE);
                    return false;
                    }
                });
               
                // 当节点删除时触发事件
                nav.on("remove", function(tree, parentNode, node) {
                    if (removeFlag) {
                        
                        mgr.ajaxRemoveParentById(node.id);
                    }
                });
                
                
            }
          
//            if(!navEditor){
//                navEditor = new Ext.tree.TreeEditor(nav, {
//                    allowBlank : false,
//                    ignoreNoChange : true,
//                    blankText : '标题不能为空',
//                    selectOnFocus : true
//                });
//            }
            this.setLeafMenu();
            this.setDirMenu();
        },
        setMgr : function(manager){
            mgr = manager;
        },
        getMgr : function(){
            return mgr;
        },
        setLeafMenu: function(){
            // 设置叶子菜单
            if(!leafMenu){
                leafMenu = new Ext.menu.Menu({
                    items : [{
                        text : $CON.TITLE_EDIT,
                        handler : function() {
                            navEditor.triggerEdit(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.EDIT,
                        handler : function() {
                            FormEditWin.showEditLeafWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.DELETE_ONE,
                        handler : this.delTreeItemComfirm
                    }]
                });
            }
        },
        setDirMenu: function(){
            // 设置目录菜单
            if(!dirMenu){
                dirMenu = new Ext.menu.Menu({
                    items : [{
                        text : $CON.TITLE_EDIT,
                        handler : function() {
                            navEditor.triggerEdit(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.EDIT,
                        handler : function() {
                            FormEditWin.showEditDirWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.LEAF_CHILDNODE_ADD,
                        handler : function() {
                            FormEditWin.showAddLeafWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.AIMDIRECTORY_ADDNODE,
                        handler : function() {
                            FormEditWin.showAddDirWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.DELETE_ONE,
                        handler : this.delTreeItemComfirm
                    }]
                });
            }
        },
        showTreeMenu : function(node, e){
            nodeSelected = node;
            nodeSelected.select();
            if (node.isLeaf()) {
                // 显示叶子节点菜单
                leafMenu.showAt(e.getPoint());
            } else {
                // 显示目录节点菜单
                dirMenu.showAt(e.getPoint());
            }
        },
        delTreeItemComfirm : function(){
            Ext.Msg.confirm($CON.DELETE_SURE, $CON.NODE_SUREDELETE, function(btn) {
                if (btn == "yes") {
                    NavTree.delTreeItem();
                }
            });
        },
        delTreeItem : function(){
            if (nodeSelected != nav.getRootNode()) {
                removeFlag = true;
                nodeSelected.remove();
                removeFlag = false;
            } else {
                Ext.Msg.alert($CON.WARM, $CON.NODE_NODELETE);
            }
        },
        show : function(){
        
            formWindow = new Ext.Window({
            modal:true,
            layout:'fit',     
            width:250,
            height: 400,
            resizable:true,   
            closeAction:'hide',  
            shim:false,  // 关键,设置此项为 false ,则最大化时 window不会撑破 tabPanel
            autoScroll:true,
              constrainHeader:true,  // 关键,设置此项为 true ,指定此 window 不会超过 tabPanel 的上面和左边
              style:"padding:0px;",                                       
            plain: true,   
            listeners:{  
                "hide":function(){  
                window.parent.lFrame.location.reload();
                }},
               items: [            
                   nav
               ]
        });

        formWindow.on('beforeclose',function(){Ext.Msg('sa');})
        formWindow.show();
        nav.getRootNode().toggle();
           
        }
    }
}();

// 文档加载完毕执行
Ext.onReady(function(){
    //Ext.BLANK_IMAGE_URL = "../scripts/ext/resources/images/default/s.gif";
    if(typeof(TreeDWR)=="undefined"){
         Ext.Msg.alert($CON.WARM_TIP,$CON.WRONG);
    }else{
         NavTree.setMgr(TreeDWR);
         NavTree.init();
         Text:$CON.LOADING;
    }
    
});
    
    
category_frame_left.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
    import="com.coship.dhm.portalMS.site.entity.Site"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@page import="org.apache.struts2.ServletActionContext"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="page" uri="/WEB-INF/tlds/paginated.tld"%>
<%@ taglib prefix="priveliege" uri="/WEB-INF/tlds/priveliege.tld" %>
<%@ include file="../common/language.jsp"  %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title>Panel</title>
<link href="../style/base<%=language_css%>.css" rel="stylesheet" type="text/css" />
<%@ include file="../common/commonJS.jsp" %>
<script type="text/javascript" src="../js/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../js/ext/ext-all.js"></script>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/dialogShow.js"></script>
<script type="text/javascript" src="../jsCBB/jquery.js" ></script>
<script type="text/javascript" src="../js/loading.js"></script>
<link rel="stylesheet" type="text/css"
    href="../js/ext/resources/css/ext-all.css"></link>
<%
            Site site = (Site) request.getAttribute("site");
            Long siteid = site.getSiteID();
            String siteAlias = site.getAlias();
%>
<style>
body {
    background-color: #e9f0f9;
    font-size: 12px
}
</style>

<style>
#pageOverlay { position:fixed; top:0; left:0; z-index:1987;
width:100%; height:100%;
 background:#000; filter:alpha(opacity=50); opacity:0.50; }
</style>
<script type="text/javascript">

var tree;
var root;
var siteid = '<%=siteid%>';
var siteID;

var siteAlias = '<%=siteAlias%>';
var siteALIAS;

//防重复提交按键功能
var timerID;
function activethis(){
     timerID=setTimeout('document.getElementById("syncTreeNode").disabled=false',10000);
     $("#syncTreeNode").submit();
}

function  changeTerminalType(parm){
    var url = "initTree.action?site.siteID="+parm.trim();
    var categoryType = window.parent.categoryType;
    parent.mFrame.window.location ='showResourceCategoryList.action?category.categoryType='+categoryType+'&categorySite='+parm;
    window.location = url;
    }

function removeNodes(){
    var queryString='';
    var flag = false;
    var rootindex='';
    var rootid='';

    // 所有选中的子菜单的id
    var checkedNodesIds = "";// 选中的节点id
    var checkedNodes = tree.getChecked();
    var nodes = new Array();
    for (var i = checkedNodes.length - 1 ;i >= 0 ; i--) {
        var node = checkedNodes[i];
        
        if(node.parentNode.id=='root_id'){  
            parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.root.not.delete"/>',400,200);
            return;
        }
        
        nodes.push(node);
        queryString += "&categoryids=" + node.id;
            if(parent.mFrame.document.getElementById("clickNode").value==node.id)//如果主页面显示的节点为要删除的节点
        {
        
            flag = true;
        }
    }
    var url='delResourceCategorys.action?ts=' + new Date().getTime()+'&'+queryString;
    //此处执行异步
    Ext.Ajax.request({
           type:"POST",
           url: url,
           callback : function(options,    success, response) {
                 if(response.responseText=='true')
                 {
                    var checkedNodes = tree.getChecked();
                    for (var a = checkedNodes.length - 1 ;a >= 0 ; a--) {
                        var node = checkedNodes[a];
                        var p = node.parentNode;
                           p.removeChild(node);
                    }
                     if(flag==true)
                     {
                         var s=root.firstChild;
                          //调用查询的方法
                        parent.mFrame.window.location.href=
                            'showResourceCategoryList.action?category.categoryId='+s.id;
                    }
                       document.getElementById("showSuccessDialog").value="1";
                       //传入参数true,定位到父亲的父亲显示成功信息
                    showSuccessWindowByParent( '<s:text name="msg.portalMS.success.message.deletecategory" />', '',2 );
                 }
                 else //alert('删除失败!请确保被删除的栏目下没有对应的资源、资讯或商品!');
                 {
                    
                     parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>',response.responseText,400,200);
                     
                 }
          }
        });
    }


function syncNodes(){
    var queryString='';
    var flag = false;
    var rootindex='';
    var rootid='';

    // 所有选中的子菜单的id
    var checkedNodesIds = "";// 选中的节点id
    var checkedNodes = tree.getChecked();
    var nodes = new Array();
    for (var i = checkedNodes.length - 1 ;i >= 0 ; i--) {
        var node = checkedNodes[i];
        
        if(node.parentNode.id=='root_id'){  
            parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.root.not.delete"/>',400,200);
            return;
        }
        
        nodes.push(node);
        queryString += "&categoryids=" + node.id;
            if(parent.mFrame.document.getElementById("clickNode").value==node.id)//如果主页面显示的节点为要删除的节点
        {
        
            flag = true;
        }
    }
    var url='syncResourceCategorys.action?ts=' + new Date().getTime()+'&'+queryString;
    //此处执行异步
    Ext.Ajax.request({
           type:"POST",
           url: url,
           callback : function(options,success, response) {
                 if(response.responseText=='true')
                 {
                     if(flag==true)
                     {
                         var s=root.firstChild;
                          //调用查询的方法
                        parent.mFrame.window.location.href=
                            'showResourceCategoryList.action?category.categoryId='+s.id;
                    }
                       document.getElementById("showSuccessDialog").value="1";
                       //传入参数true,定位到父亲的父亲显示成功信息
                    showSuccessWindowByParent( '<s:text name="msg.portalMS.success.message.deletecategory" />', '',2 );
                 }
                 else //alert('删除失败!请确保被删除的栏目下没有对应的资源、资讯或商品!');
                 {
                    
                     parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>',response.responseText,400,200);
                     
                 }
          }
        });
    }


function removeLocalAll()
{    var sitestext=$('#sitesid option:selected').text();//选中的文本
    var delsiteid=document.getElementById("sitesid").value;
    parent.parent.showConfirmAndCancel('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.delete.all.column"/>'+sitestext+'<s:text name="msg.portalMS.category.column"/>',"removeLocalAllAjax");
}

function removeLocalAllAjax(){
    var sitestext=$('#sitesid option:selected').text();//选中的文本
    var delsiteid=document.getElementById("sitesid").value;
    var url='delLocalAllCategory.action?ts=' + new Date().getTime()+'&delsiteid='+delsiteid ;  
    //此处执行异步
    Ext.Ajax.request({
           url: url,
            callback : function(options,success, response) {
                 if(response.responseText=='true')
                 {  root.reload();// 重新加载根节点.
                    root.expand();
                       document.getElementById("showSuccessDialog").value="1";
                       //传入参数true,定位到父亲的父亲显示成功信息
                    showSuccessWindowByParent( '<s:text name="msg.portalMS.success.message.deletecategory" />', '',2 );
                 }
                 else if(response.responseText=='nocategory')
                 {    
                     parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.city.no.column"/>'+sitestext+'<s:text name="msg.portalMS.category.column"/>',400,200);
                 }
                 
                 
                 else //alert('删除失败!请确保被删除的栏目下没有对应的资源、资讯或商品!');
                 {
                    
                     parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>',response.responseText,400,200);
                     
                 }
          }
        });
}


 

function removenode()
{
    var checkedNodes = tree.getChecked();

    if(checkedNodes.length == 0)
    {
        parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.delete.selected"/>',400,200,0,true);
        return;
    }if(checkedNodes.length > 100)
    {
        parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.selected.too.much"/>',400,200,0,true);
        return;
    }
    else
    parent.parent.showConfirmAndCancel_b('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.deleted.confirm" />','');
}


function syncTreeNode()
{
    var checkedNodes = tree.getChecked();

    if(checkedNodes.length == 0)
    {
        parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.sync.selected"/>',400,200,0,true);
        return;
    }if(checkedNodes.length > 100)
    {
        parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.selected.too.much"/>',400,200,0,true);
        return;
    }
    else
    parent.parent.showConfirmAndCancelSyncCategory('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.synccategory.confirm" />','');
}


var heightWindows;

Ext.override(Ext.tree.TreeNode, {
    deepExpand : function(anim, callback, scope){   
        // 先展开本节点   
        this.expand(false, anim, function(){   
            // 然后展开子节点   
            var cs = this.childNodes,    
                expanded = 0,   
                len = cs.length,   
                taskDone = function(){   
                    // 每展开成功一个子节点,计数+1   
                    expanded++;   
                    // 如果所有子节点都展开,调用最终回调   
                    if(expanded >= len){   
                        this.runCallback(callback, scope || this, [this]);   
                    }   
                };

              if(len<=0){   
                  taskDone.call(this);// <--- 这里? 应该修改为 taskDone.call(this);   
                  return;   
              }   
                                   
            // 递归展开   
            for(var i = 0, len = cs.length; i < len; i++) {   
                cs[i].deepExpand(anim, taskDone, this);   
            }   
        }, this);   
    }   
});


Ext.onReady(
       
        function() {

            Ext.override(Ext.tree.TreeNode, {
                deepExpand : function(anim, callback, scope){   
                    // 先展开本节点   
                    this.expand(false, anim, function(){   
                        // 然后展开子节点   
                        var cs = this.childNodes,    
                            expanded = 0,   
                            len = cs.length,   

                            
                            taskDone = function(){   
                                // 每展开成功一个子节点,计数+1   
                                expanded++;   
                                // 如果所有子节点都展开,调用最终回调   
                                if(expanded >= len){   
                                    this.runCallback(callback, scope || this, [this]);   
                                }   
                            };

                          if(len<=0){   
                              taskDone.call(this);// <--- 这里? 应该修改为 taskDone.call(this);   
                              return;   
                          }                      
                        // 递归展开   
                        for(var i = 0, len = cs.length; i < len; i++) {   
                            cs[i].deepExpand(anim, taskDone, this);   
                        }   
                    }, this);   
                }   
            });

            var heightWindows= document.documentElement.clientHeight -60;
            var width= document.documentElement.clientWidth -5;
              var siteID_;
              var arr =Ext.query("*[name=site.siteID]");// 通过class name来获取节点的数组
              siteID = arr[0].value;
              if(siteID!=''){
                    siteID_ = siteID;
                  }else{
                    siteID_ = siteid;
               }
              document.getElementById("sitesid").value=siteID_;
            var isClone = document.getElementById("isClone")
            
            Ext.BLANK_IMAGE_URL = "../js/ext/resources/images/default/s.gif";
            Ext.QuickTips.init();
            
            var Tree = Ext.tree;
 
            tree = new Tree.TreePanel({
                el:'tree_div',
                title:'右键进行克隆操作',
                autoScroll : true,
                border : false,
                animate : true,
                enableDD : false,
                height:heightWindows,
               
                bodyStyle:'background-color:#e9f0f9',
                containerScroll : true,
                loader: new Tree.TreeLoader({
                    dataUrl:'jsonTree.action'+'?site.siteID='+siteID
                })
            
            });
            tree.on('beforeload',function(node){           
                tree.loader.dataUrl = 'jsonTree.action?nodeId='+node.id+'&site.siteID='+siteID_;   
            });  

            // set the root node
             root = new Tree.AsyncTreeNode({
                text: '<s:text name="msg.portalMS.system.root"/>',
                draggable:false,
                root:'menus',
                url:'www.baidu.com',
                id:'root_id',
                icon:'../images/dataTemplate.gif'
            });
            tree.setRootNode(root);
            root.expand();
            // render the tree
            tree.render();
            if(typeof(isClone) != "undefined" && isClone != null)
            {
                 tree.on("contextmenu", showNASClassTreeMenu);
            }
            tree.on("click", showDetail);  

            tree.on('checkchange', function(node, checked) {
                
                node.deepExpand(false,function(){if(node.parentNode.id=='root_id'){
                    return;
                }
                selParent(node, checked);
                selChild(node, checked);},this);  
            }, tree);
            
        }
    );
 
//这个方法是选择父节点,自动选中所有的子节点
function selParent(node, checked) {
    checked ? node.expand() : node.collapse();
    if (node.hasChildNodes()) {
        node.eachChild(function(child) {
            child.attributes.checked = checked;
            var cb = child.ui.checkbox;
            if (cb) cb.checked = checked;
            selParent(child, checked);
        });
    }
}

//这个方法是选择子节点,自动选中父节点的父节点
function selChild(node, checked) {
    if (checked) {
    }
    else{
        var parentNode = node.parentNode;
        if (parentNode != undefined) {
            parentNode.attributes.checked = false;
            var cb = parentNode.ui.checkbox;
            if (cb) cb.checked = checked;
            selChild(parentNode, checked);
        }
   }
}


function showNASClassTreeMenu(node, e) {
    if(node.id=='root_id'||node.parentNode.id=='root_id')
    {  return;
    }
    var nasclassMenu = new Ext.menu.Menu({
        items : [{
                    text : '<s:text name="msg.portalMS.category.clone"/>'+node.text,
                    icon : '../images/cd.gif',
                    handler : function() {
                        
                        columnClone(node.id);
                    }
                }]
    });
    nasclassMenu.showAt(e.getPoint());
}

    //栏目的克隆
    function columnClone(id){
             var queryString='';
             queryString += "&categoryids=" + id;
            
           if(!id){
                parent.parent.showText('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.selected.box"/>',400,200,0,true);
         }else{
             ToCloneFrame(id);
        }
          }

function ToCloneFrame(id){
  parent.parent.showClonePage('<s:text name="msg.portalMS.category.select.clone"/>','<%=request.getContextPath()%>/resource/initTree.action?clone=1&cloneCatgoryId='+id,500,430);    
  }


function allclone(){
      var clonesiteid=document.getElementById("sitesid").value;
      parent.parent.showPage('<s:text name="msg.portalMS.category.selected.city"/>','<%=request.getContextPath()%>/resource/selectCity.action?clonesiteid='+clonesiteid,300,150);    
      
}


function showDetail(node, e) {
    //alert("showDetail"+node.id);
    if(node.id=='root_id')
    {
        return;
    }
    
    mFrameLoading();
    parent.document.getElementById("mFrame").src="showResourceCategoryList.action?category.categoryId="+node.id;
}        


function showNASClassTreeSubNode(node) {
    tree.expand(true,false);
}

function showNASClassTreeSubNode(node) {
    tree.expand(true,false);
}

function reLoadTree() {  
    root.reload();// 重新加载根节点.
    root.expand();
}

var i=-1;
function getLevel(categoryId) {
    i=-1;
    if(typeof(tree) != "undefined" && tree != null)
    {
        var tmpNode=tree.getNodeById(categoryId);
        
        if(typeof(tmpNode) != "undefined")
        {
            tt(tmpNode.id);
        }
    }
    return i;
}


function tt(categoryId) {   
    var tmpNode=tree.getNodeById(categoryId);
    if(tmpNode.id !='root_id')
    {
       tmpNode=tmpNode.parentNode;
       i++;
       tt(tmpNode.id);
    }else{
       return;
    }
}



function updateLoadTree(text,id) {
    tree.getNodeById(id).setText(text);
}

function reLoadTreeNode(id) {  
    var loadNode=tree.getNodeById(pid);
    loadNode.removeAll();
    tree.getStore.load({node:loadNode});//重新加载指定的节点。
    
}



function addNode(pid) {
    var loadNode=tree.getNodeById(pid);
    if(loadNode.isLeaf())
    {
    var parentNode = loadNode.parentNode;
    
    parentNode.reload();
    }else{
        loadNode.reload();
    }
    //tree.getStore.load({node:loadNode});//重新加载指定的节点。
}


function parentNode(pid){
    var nodes=tree.getChecked();
        
    var loadNode=tree.getNodeById(pid);
    if(typeof(loadNode) != 'undefined' )
    {
        if(loadNode.isLeaf())
        {
            var parentNode = loadNode.parentNode;
            parentNode.reload();
        }
        else
        {
            loadNode.reload();
        }
        if(nodes && nodes.length)
        {
             for(var i=0;i<nodes.length;i++)
             {
              //设置UI状态为未选中状态
              nodes[i].getUI().toggleCheck(false);
              //设置节点属性为未选中状态
              nodes[i].attributes.checked=false;
             }
        }
    }
}

function layerMaskShow()
{  
    document.getElementById('pageOverlay').style.visibility = 'visible' ;
}

function  layerMaskHidden()
{
    document.getElementById('pageOverlay').style.visibility = 'hidden' ;
}
</script>

</head>

<body οnlοad="layerMaskHidden()">
<div>
<priveliege:priveliege funCode="clone">
<s:hidden name="isClone" id="isClone"></s:hidden>
</priveliege:priveliege>
</div>
<s:hidden name="showSuccessDialog" />
<s:hidden name="site.siteID" id="site.siteID"></s:hidden>
<s:hidden name="catetype" id="cate_type" value="column" ></s:hidden>
<div id="pcolumn_delete" style="margin-left: -6px;">
 <priveliege:priveliege funCode="delResourceCategorys">
   <button id="deleteTreeNode" οnclick="removenode()"> <s:text name="msg.portalMS.system.delete"/></button>
 </priveliege:priveliege>
 <s:if test='#session.loginUser.city.levelType == "P"'>
  <priveliege:priveliege funCode="allclone">
    <button id="allclonebutton" οnclick="allclone()"> <s:text name="msg.portalMS.category.clone.all"/></button>
  </priveliege:priveliege>
</s:if>
<s:else>
 <priveliege:priveliege funCode="delLocalAllCategory">
   <button id="delallButton" οnclick="removeLocalAll()"><s:text name="msg.portalMS.category.delete.all"/></button>
 </priveliege:priveliege>
</s:else>

<button id="syncTreeNode" οnclick="this.disabled=true;activethis();syncTreeNode()"> <s:text name="msg.portalMS.sysmgr.syncmanage.sync"/></button>
</div>
<s:select id="sitesid" list="sites" name="iepgSiteVO.terminalType"
    listKey="siteID" listValue="alias"
    οnchange="changeTerminalType(this.value)" cssStyle="width:100%">
</s:select>
<div id="tree_div" cssStyle="width:99%,height:80%"></div>
<div id="pageOverlay" ></div>
</body>
</html>


category_frame_main.jsp
<%@ page import="com.coship.dhm.common.config.impl.XMLFactory" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <%

            String columnSwitch = XMLFactory.getValueString("resourceName.enable");
            
            String isNeedUpShelf = XMLFactory.getValueString("columnManage.column.isNeedUpShelf");
        %>
        <%@ taglib prefix="s" uri="/struts-tags"%>
        <%@ taglib prefix="page" uri="/WEB-INF/tlds/paginated.tld"%>
        <%@ taglib prefix="priveliege" uri="/WEB-INF/tlds/priveliege.tld"%>
        <%@ taglib uri="/WEB-INF/tlds/pageShow.tld" prefix="pageShow"%>
        <%@ page contentType="text/html; charset=UTF-8"%>
<%@ include file="../common/language.jsp"  %>
        <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
        <link rel="stylesheet" type="text/css"
            href="../js/ext/resources/css/ext-all.css" />
        <link href="../style/base<%=language_css%>.css" rel="stylesheet" type="text/css" />
        <%@ include file="../common/commonJS.jsp" %>
        <script src="../js/jquery.js" type="text/javascript"></script>
        <script type="text/javascript" src="../jsCBB/jquery.js" ></script>
        <script type="text/javascript" src="../js/jquery.validate.js"></script>
        <script type="text/javascript" src="../js/ex.jquery.validate.js"></script>
        <script type="text/javascript" src="../js/resourcemanage.js"></script>
        <script type="text/javascript" src="../js/dialogShow.js"></script>
        <script type="text/javascript" src="../js/resourcedialogShow.js"></script>
        <script type="text/javascript" src="<%=path%>/dwr/engine.js"></script>
        <script type="text/javascript"
            src="<%=path%>/dwr/interface/TreeDWR.js"></script>
        <script type="text/javascript" src="../js/fullHeight.js"></script>
        <script type="text/javascript" src="../js/ext/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="../js/ext/ext-all.js"></script>
        <script type="text/javascript" src="../js/exttree.js"></script>
        <script type="text/javascript" src="../js/tree.js"></script>
        <script type="text/javascript" src="../js/loading.js"></script>
        <script type="text/javascript">
var columnSwitch = '<%=columnSwitch%>';
var isNeedUpShelf = '<%=isNeedUpShelf%>';
jQuery(document).ready(function() {
    //动态设置下拉列表高度
    var sumHeight = document.documentElement.offsetHeight;
    $('#mainResourceFrame').height(sumHeight);
    
    setTrStyle('lumManageTable');
    /* 设置默认属性 */   
    $.validator.setDefaults({   
      submitHandler: function(form) { form.submit(); }   
    });


    var showSuccessDialog = $("#showSuccessDialog").val();
    if(showSuccessDialog == 0){
        /*弹出失败的提示框*/
        showFailuredWindow( '<s:text name="msg.portalMS.failured.message.tip" />','');
    }else{
        /*弹出成功的提示框*/
        showSuccessWindowByParent( '<s:text name="msg.portalMS.success.message.tip" />','<s:text name="msg.portalMS.categoryMessage.type.existed"/>',2 );
    }
    
    $( "input[type='checkbox'][name='infoIds']" ).click( function() {
        var firstCheckBox = $( "#allInfos");
        var checkboxes = $("input[type='checkbox'][name='infoIds']:checkbox" );
        var checked = true;
        for( var i = 0; i < checkboxes.length; i++ ) {
            var checkbox = checkboxes[i];
            if ( checkbox.value == '' ) {
                continue;
            }

            if ( !checkbox.checked ) {
                checked = false;
            }
        }
        if ( !checked ) {
            firstCheckBox.removeAttr( "checked" );
        } else {
            firstCheckBox.attr( "checked", "checked");
        }
    });
    
    $( "button[name='deleteMessage']" ).click( function() {
        var checked = $("input:checked");
        if( checked == null || checked.length == 0 ) {
            showText('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.no.message.selected"/>',400,200,0,true);
            return false;
        }
        var categoryId = document.getElementById("clickNode").value;
        var queryString = checked.serialize();
        var deleteUrl ='deleteCategoryMessage.action?' + queryString+"&categoryMessage.categoryId="+categoryId;
        showConfirmAndCancel('<s:text name="msg.portalMS.page.message.tip"/>','<s:text name="msg.portalMS.category.message.deleted.confirm" />',deleteUrl);
    });
    
    if($("#category_categoryType").val()==3 || $("#category_categoryType").val()==2){//如果是悬浮菜单或虚拟网,去掉URL type 一列
        $("#showOrHiden1").hide();
        $("#showOrHiden2").hide();
        $("#showOrHiden3").attr("colSpan","3");
        }
    //栏目名称是否显示出来
    if(columnSwitch=='1'){//0代表打开状态,其他1:代表关闭状态
        $("#showOrhideAlias1").hide();
        $("#showOrhideAlias2").hide();
        $("#showOrhideAlias3").attr("colSpan","3");
       }
    else{
    }
});

var isDetailOpen = true;
function hidenDetailDIV(){
    var t= document.getElementById("category.categoryParent_ID").value;
 if(t!=0 && isDetailOpen){
     document.getElementById("columnDetailDiv").style.display = "none"
     isDetailOpen=false;
  }else{
     document.getElementById("columnDetailDiv").style.display = ""
     isDetailOpen=true;
  }
}


function setTab(m)
{
    frameLoading(window.frames["mainResourceFrame"]);
    
    var t= document.getElementById("category.categoryParent_ID").value;
    if(t!=0)
    {
        var goodsType = document.getElementById("category_goodsType").value;
        var columnTypeCode = document.getElementById("category_columnTypeCode").value;
        var categoryId = document.getElementById("clickNode").value;
        var serviceCode = document.getElementById("category_serviceCode").value;
        var resourceType = document.getElementById("category_resourceType").value;
        //归属地Id
        var cityId = $("#cityid").val();
        if(m == 0){
            
            var data = "?category.goodsType=" +goodsType +"&category.categoryId=" + categoryId+"&category.serviceCode="+serviceCode + "&category.cityId=" + cityId+"&category.resourceType="+resourceType;
            suburl = "findProReady.action" + data;
        }else if(m == 1){
            suburl = "findProdoffers.action?category.categoryId="+ categoryId + "&category.cityId=" + cityId;
        }else if(m == 2){
            var data = "?catResource.categoryId=" + categoryId
                     + "&catResource.goodsType=" + goodsType
                     + "&catResource.columnTypeCode=" + columnTypeCode
                     + "&catResource.resourceType=" + resourceType
                     + "&catResource.cityId=" + cityId;
            suburl = "readyAddAsset.action" + data;
        }else if(m == 3){
            var data = "?catResource.categoryId="+ categoryId
                      +"&catResource.columnTypeCode="+columnTypeCode
                      + "&catResource.resourceType=" + resourceType
                      +"&catResource.cityId=" + cityId;
            suburl = "findUpShelf.action" + data;
        }else if(m == 4){
            var data = "?catResource.categoryId="+ categoryId
                     + "&catResource.cityId=" + cityId;
            suburl = "findReadyRecommend.action" + data;
        }else if(m == 5){
            var data = "?catResource.categoryId="+ categoryId
                     + "&catResource.cityId=" + cityId;
            suburl = "findRecommend.action" + data;
        }else if(m == 6){
            suburl = "findAll.action?catResource.categoryId="+ categoryId
                        + "&catResource.cityId=" + cityId+ "&catResource.goodsType=" + goodsType;
        }else if(m == 7){
            suburl = "findReadyUpShelf.action?catResource.categoryId="+ categoryId
                   + "&catResource.cityId=" + cityId;
        }
        else if(m == 8){
            suburl = "findImageByCategory.action?categoryImage.columnId="+ categoryId
                   + "&categoryImage.cityId=" + cityId;
        }
        var tli = document.getElementById("tab_nav").getElementsByTagName("li");
        for(var i=0; i<tli.length; i++)
        {
            tli[i].className=i==m?"draw_on":"";
        }
        setClass(m);
        mainResourceFrame.location.href = suburl;
    }
}



function handleTree(){
     var isupdate = $("#isupdate").val();
     if(isupdate==1){
        var treeText = "${category.treeText}";
        var id = $("#clickNode").val();
        parent.lFrame.updateLoadTree(treeText,id);    
    }else if(isupdate==2){
        var pid = "${category.categoryId}";
        parent.lFrame.addNode(pid);    
    }
        
}

function getRoot(){
   var categoryId = document.getElementById("clickNode").value;
   var lev = parent.lFrame.getLevel(categoryId);
   return lev;
}
var isOk = false;
function checkCanRefProduct(goodsType, columnRelaProduct, columnRelaGoodsType)
{

    // 如果左边的树还没有加载完成,则不继续执行
    if (parent.document.readyState != 'complete')
    {
        return;
    }
    var lev =  getRoot();
    
    var goodsTypeIsOk = false;
    var brands = new Array(); //创建数组
    var dtNum = columnRelaGoodsType.split(";").length; //取得字符串长度
    brands = columnRelaGoodsType.split(";"); //为数组负值
    for (i = 0; i < dtNum; i++)
    {
           if(goodsType == brands[i])
           {
               goodsTypeIsOk = true;
               break;
           }
    }
    var columnRelaIsOk = false;
    var brands1 = new Array(); //创建数组
    var dtNum = columnRelaProduct.split(";").length; //取得字符串长度
    brands1 = columnRelaProduct.split(";"); //为数组负值
    for (i = 0; i < dtNum; i++)
    {
           if(lev == brands1[i] || 0 == brands1[i])
           {
               columnRelaIsOk = true;
               break;
           }
    }
    
    if(isNeedUpShelf == 1)
    {
        if(goodsTypeIsOk && columnRelaIsOk)
        {
            isOk = true;
            if(document.getElementById('canRefProduct'))
            {
                document.getElementById('canRefProduct').style.display="block";
                //setTab(0);
                var tli = $("#tab_nav li");
                if (null != tli && tli.length > 0)
                {
                    var temp = $(tli[0]).attr("id");
                    setTab(temp);
                }
            }
            
        }
        else
        {
            isOk = false;
            if(document.getElementById('canRefProduct'))
            {
                document.getElementById('canRefProduct').style.display="none";
                var tli = $("#noRefProduct li");
                if (null != tli && (tli.length) > 0)
                {
                    var temp = $(tli[0]).attr("id");
                    setTab(temp);
                }
            }
        }
    }else
    {
        if(document.getElementById('isNeedUpShelf'))
        {
            document.getElementById('isNeedUpShelf').style.display="none";
            var tli = $("#tab_nav li");
            var li = $("#isNeedUpShelf li");
            if (null != tli && null != li && (tli.length-li.length) > 0)
            {
                var temp = $(tli[0]).attr("id");
                setTab(8);
            }
        }
    }
}

function setClass(day)
{
    //var tli = document.getElementById("tab_nav").getElementsByTagName("li");
    var tli = $("#tab_nav  li");
    for (var i=0; i<tli.length; i++)
    {
        var tmp = $(tli[i]);
        if (tmp.attr("id") == day)
        {
            tli[i].className="draw_on";
        }
        else
        {
            tli[i].className="";
        }
    }
}

function setTrStyle(tableId)
{
    var flag = 0;
    var table = document.getElementById(tableId);
    var trArrs = table.rows;
    for(var i = 0; i < trArrs.length; i++)
    {
        if(trArrs[i].style.display == "none")
        {
            continue;
        }
        flag = flag + 1;
        if(flag % 2 == 0)
        {
               trArrs[i].className='bule';
        }
        
    }
}


function layerMaskShow()
{
    window.parent.lFrame.layerMaskShow();

}    
</script>
    </head>
    <body
        οnlοad="handleTree();hidenDetailDIV();checkCanRefProduct('<s:text name="category.goodsType"/>','<s:text name="category.columnRelaProduct"/>','<s:text name="category.columnRelaGoodsType"/>');">
        <input type="hidden" id="status" name="status" value="${status}" />
        <s:hidden name="catetype" id="cate_type" value="column"/>
        <input type="hidden" name="siteId" id="siteId" value="${category.siteId}"/>
        <input type="hidden" id="flag" />
        <s:hidden name="showSuccessDialog" />
        <s:hidden name="isupdate" />
        <s:hidden name="site.siteID" />
        <s:hidden name="category.datePrivilegeFlag" />
        <div class="r_main">
            <s:hidden name="category.firstNodeName" id="category_firstNodeName" />
            <s:hidden name="category.categoryType" id="category_categoryType" />
            <s:hidden name="category.columnTypeCode" id="category_columnTypeCode" />
            <s:hidden name="category.resourceType" id="category_resourceType" />
            <s:hidden name="category.relationProductNum"
                id="category_relationProductNum" />
            <s:hidden name="category.goodsType" id="category_goodsType" />
            <s:hidden name="category.serviceCode" id="category_serviceCode" />
            <s:hidden name="category.firstNodeId" id="category_firstNodeId" />
            <s:hidden name="category.isFirstCategory"
                id="category_isFirstCategory" />
            <s:hidden name="category.categoryParent_ID"
                id='category.categoryParent_ID' />
            <s:hidden id="clickNode" name="category.categoryId" />
            <s:hidden id="chooseIDs" name="chsNodes" />
            <s:hidden name="showSuccessDialog" />
            <div id="pcolumn_list" style="padding-top: 5px;">

               <div class="page_line">
                    <div class="left"><img src="../images/in_l.jpg" width="5" height="30" /></div>
                    <div class="bu">

                                <input align="left"  type="button" οnclick="javascript:hidenDetailDIV()"
                                                            value="<s:text name="msg.portalMS.category.categorymessage" />" title="<s:text name="msg.portalMS.category.categorymessage" />"/>
                                
                                    <s:if test="category.resourceType != 5">
                                        <s:if test="#session.loginUser.city.cityId == category.cityId">
                                                <s:form action="readyAddResourceCategory" theme="simple"  style="display: inline;">
                                                    <s:hidden name="categorySite" />
                                                    <s:hidden name="category.cityId"></s:hidden>
                                                    <s:hidden name="category.categoryType"></s:hidden>
                                                    <s:hidden name="category.palias"
                                                        value="%{category.categoryAlias}" />
                                                    <s:hidden name="category.parentCategory.categoryId"
                                                        value="%{category.categoryId}" />
                                                    <s:hidden name="category.parentCategory.categoryAbspath"
                                                        value="%{category.categoryAbspath}" />
                                                    <s:hidden name="category.parentCategory.categoryType"
                                                        value="%{category.categoryType}" />
                                                    <s:hidden name="category.goodsType" />
                                                    <s:hidden name="category.categoryParent_ID"
                                                        id='category.categoryParent_ID' />
                                                    <s:hidden name="category.categoryId" />
                                                    <s:hidden name="category.display" />
                                                    <priveliege:priveliege funCode="readyAddResourceCategory">
                                                        <s:if test="!category.datePrivilegeFlag">
                                                        <input type="button" οnclick="javascript:this.form.submit();"
                                                            value="<s:text name="msg.portalMS.category.addcategory"/>" title="<s:text name="msg.portalMS.category.addcategory"/>"/>
                                                            </s:if>
                                                    </priveliege:priveliege>
                                                </s:form>
                                                
                                                <s:form action="readyUpdateResourceCategory" theme="simple" style="display: inline;">
                                                    <s:hidden name="category.categoryId" />
                                                    <s:hidden name="category.templateId" />
                                                    <s:hidden name="category.templateName" />
                                                    <s:hidden name="category.cityId"></s:hidden>
                                                    <s:if test="category.categoryParent_ID!=0">
                                                        <priveliege:priveliege funCode="readyUpdateResourceCategory">
                                                            <s:if test="!category.datePrivilegeFlag">
                                                            <input type="submit"
                                                                value="<s:text name="msg.portalMS.category.updatecategory"/>" title="<s:text name="msg.portalMS.category.updatecategory"/>"/>
                                                                </s:if>
                                                        </priveliege:priveliege>
                                                    </s:if>
                                                </s:form>
                                          </s:if>
                                        </s:if>
                                        <priveliege:priveliege funCode="jsonData">
                                        <s:if test="#session.loginUser.city.cityId == category.cityId">
                                            <s:if test="!category.datePrivilegeFlag">
                                        <input type="button"
                                            value='<s:text name="msg.portalMS.category.ordetcategory"/>' id="button"
                                            οnclick="javascript:NavTree.show();layerMaskShow();" title="<s:text name="msg.portalMS.category.ordetcategory"/>"/>
                                            <s:hidden name="cloneCategory.terminalType" id="category_terminalType" value="1"></s:hidden>
                                            </s:if>
                                            </s:if>
                                        </priveliege:priveliege>
                             </div>
                </div>

          </div>
          
          
            <div id="pcolumn_list" style="padding-top: 5px;">
                    <div  class="page_tb"  id="columnDetailDiv" >
                    <table width="100%" border="0" cellpadding="0" cellspacing="0"
                        class="in_table" id="lumManageTable">
                        <tr>
                            <td class="col1" style="width: 15%" >
                                <s:text name="msg.portalMS.category.column.id" />
                            </td>
                            <td style="width: 35%" colspan="3">
                                MANU<s:property value="category.Id" />
                            </td>
                            
                        </tr>
                        <!-- end:修改问题单D2011010380,增加父栏目显示,modify by chenzuyi 20110126 -->
                        <tr>
                            <td class="col1" id="showOrhideAlias1" style="width: 15%">
                                <s:text name="msg.portalMS.category.name" /><s:text name="msg.portalMS.colon.label"/>
                            </td>
                            <td id="showOrhideAlias2" style="width: 35%">
                                <s:property value="category.categoryName" />
                            </td>
                            <td class="col1" style="width: 15%">
                                <s:text name="msg.portalMS.category.othername" /><s:text name="msg.portalMS.colon.label"/>
                            </td>
                            <td id="showOrhideAlias3">
                                <s:property value="category.categoryAlias" />
                            </td>
                        </tr>
                        <!-- begin:修改问题单D2011010380,增加父栏目显示,modify by chenzuyi 20110126 -->
                        <s:if test="category.categoryParent_ID!=0">
                            <tr>
                                <td class="col1">
                                    <s:text name="msg.portalMS.category.fname" /><s:text name="msg.portalMS.colon.label"/>
                                </td>
                                <td>
                                    <s:property value="category.palias" />
                                </td>
                                <td class="col1">
                                    <s:text name="msg.portalMS.category.typeCode" /><s:text name="msg.portalMS.colon.label"/>
                                </td>
                                <td>
                                    <s:property value="category.columnTypeCode" />
                                </td>
                            </tr>
                        </s:if>
                        <tr>
                            <td class="col1">
                                <s:text name="msg.portalMS.category.categoryType" /><s:text name="msg.portalMS.colon.label"/>
                            </td>
                            <td>
                                <s:hidden name="category.categoryType" id="categoryTypeId" />
                                <s:if test="category.categoryType==1">
                                    <s:text name="msg.portalMS.column.type.goods" />
                                </s:if>
                                <s:elseif test="category.categoryType==2">
                                    <s:text name="msg.portalMS.column.type.navigate" />
                                </s:elseif>
                                <s:elseif test="category.categoryType==3">
                                    <s:text name="msg.portalMS.column.type.virtual" />
                                </s:elseif>
                            </td>
                            <td class="col1">
                                <s:text name="msg.portalMS.category.display" /><s:text name="msg.portalMS.colon.label"/>
                            </td>
                            <td>
                                <s:if test="category.display==1">
                                    <s:text name="msg.portalMS.system.yes" />
                                </s:if>
                                <s:else>
                                    <s:text name="msg.portalMS.system.no" />
                                </s:else>
                            </td>
                        </tr>
                        <tr id="goodsType">
                            <td class="col1">
                                <s:text name="msg.portalMS.replate.resource.type" /><s:text name="msg.portalMS.colon.label"/>
                            </td>
                            <td>
                                <s:if test="category.goodsType==-1">
                                    <s:text name="msg.portalMS.replate.resource.type.all" />
                                </s:if>
                                <s:elseif test="category.goodsType==1">
                                    <s:text name="msg.portalMS.goods.type.periodism" />
                                </s:elseif>
                                <s:elseif test="category.goodsType==2">
                                    <s:text name="msg.portalMS.goods.type.periodism" />
                                </s:elseif>
                                <s:elseif test="category.goodsType==3">
                                    <s:text name="msg.portalMS.goods.type.gratis" />
                                </s:elseif>
                                <s:elseif test="category.goodsType==0">
                                    <s:text name="msg.portalMS.goods.type.disposable" />
                                </s:elseif>
                                <s:elseif test="category.goodsType==5">
                                    <s:text name="msg.portalMS.goods.type.disposable" />
                                </s:elseif>
                                <s:elseif test="category.goodsType==6">
                                    <s:text name="msg.portalMS.goods.type.disposable" />
                                </s:elseif>
                            </td>

                            <td class="col1">
                                <s:text name="msg.portalMS.category.service"/><s:text name="msg.portalMS.colon.label"/>
                            </td>
                            <td>
                                <s:property value="category.serviceCode" />
                            </td>

                        </tr>
                        <tr id="categoryAbspathId">
                            <td class="col1" id="showOrHiden1">
                                <s:text name="msg.portalMS.category.urlType"/><s:text name="msg.portalMS.colon.label"/>
                            </td>
                            <td id="showOrHiden2">
                                <s:if test="category.urlType==1"><s:text name="msg.portalMS.category.urlType.one"/></s:if>
                                <s:elseif test="category.urlType==2"><s:text name="msg.portalMS.category.urlType.two"/></s:elseif>
                                <s:elseif test="category.urlType==3"><s:text name="msg.portalMS.category.urlType.three"/></s:elseif>
                            </td>
                            <td class="col1">
                                <s:text name="msg.portalMS.category.url" /><s:text name="msg.portalMS.colon.label"/>
                            </td>
                            <td id="showOrHiden3">
                                <s:property value="category.url" />
                            </td>
                        </tr>
                        <pageShow:pageShow tag="common.cityCode">
                            <tr id="cityId">
                                <td class="col1">
                                    <s:text name="msg.portalMS.system.city"/><s:text name="msg.portalMS.colon.label"/>
                                </td>
                                <td>
                                    <s:property value="category.cityName" />
                                </td>
                                <td class="col1">
                                    <s:text name="msg.portalMS.category.provincial.enforcement"/><s:text name="msg.portalMS.colon.label"/>
                                </td>
                                <td colspan="3">
                                    <s:if test="category.cityCanModify==0"><s:text name="msg.portalMS.system.yes"/></s:if>
                                    <s:elseif test="category.cityCanModify==1"><s:text name="msg.portalMS.system.no"/></s:elseif>
                                </td>
                            </tr>
                        </pageShow:pageShow>
                        
                         <!-- update by 906861 -->
                          <s:if test="enableColumnTemplate=='true'">
                          <tr>
                            <td class="col1" id="shoMonthColOnePay">
                                <s:text name="msg.portalMS.category.isMonthColOnePay"/><s:text name="msg.portalMS.colon.label"/>
                            </td>
                            <td id="showMonthColOnePay1">
                                <s:if test="category.isMonthColOnePay==1"><s:text name="msg.portalMS.system.yes" /></s:if>
                                <s:elseif test="category.isMonthColOnePay==0"><s:text name="msg.portalMS.system.no" /></s:elseif>
                            </td>
                            <td class="col1" ><s:text name="msg.portalMS.category.template"/><s:text name="msg.portalMS.colon.label"/></td>
                            <td><s:property value="category.templateName"/></td>
                          </tr>
                         </s:if>
                          <s:if test="enableColumnTemplate=='false'">
                           <s:if test="category.goodsType==1">
                              <tr>
                                <td class="col1" id="shoMonthColOnePay">
                                    <s:text name="msg.portalMS.category.isMonthColOnePay"/><s:text name="msg.portalMS.colon.label"/>
                                </td>
                                <td id="showMonthColOnePay1" colspan="3">
                                    <s:if test="category.isMonthColOnePay==1"><s:text name="msg.portalMS.system.yes" /></s:if>
                                    <s:elseif test="category.isMonthColOnePay==0"><s:text name="msg.portalMS.system.no" /></s:elseif>
                                </td>
                              </tr>
                          </s:if>
                         </s:if>
                        <!-- update by 906861 -->
                        <tr id="cityCanModify">

                        </tr>
                    </table>
                    <s:hidden name="category.cityId" id='cityid'></s:hidden>

                </div>
            </div>
            <s:if test="category.categoryParent_ID!=0">
                <s:if test="!category.datePrivilegeFlag">
                <div id="tab_switchdraw">
                    <ul id="tab_nav">
                    
                        <span id="isNeedUpShelf" style="display:true;">
                            <span id="canRefProduct" style="display: true;">
                            <li οnclick="setTab(0)" class="draw_on" id="0">
                                <span title="<s:text name="msg.portalMS.category.joint.product" />">
                                    <s:text name="msg.portalMS.category.joint.product" />
                                </span>
                            </li>
                            <li οnclick="setTab(1)" id="1">
                                <span title="<s:text name="msg.portalMS.category.cancel.product" />">
                                    <s:text name="msg.portalMS.category.cancel.product" />
                                </span>
                            </li>
                            </span>
                            <span id="noRefProduct"  style="display: block;">
                            <li οnclick="setTab(3)" id="3">
                                <span title="<s:text name="msg.portalMS.category.already.upshelf" />">
                                    <s:text name="msg.portalMS.category.already.upshelf" />
                                </span>
                            </li>
                            
                            <li οnclick="setTab(2)" id="2">
                                <span title="<s:text name="msg.portalMS.category.ready.upshelf" />">
                                    <s:text name="msg.portalMS.category.ready.upshelf" />
                                </span>
                            </li>

                            <li οnclick="setTab(4)" id="4">
                                <span title="<s:text name="msg.portalMS.category.ready.recommend" />">
                                    <s:text name="msg.portalMS.category.ready.recommend" />
                                </span>
                            </li>
                            <li οnclick="setTab(5)" id="5">
                                <span title="<s:text name="msg.portalMS.category.already.recommend" />">
                                    <s:text name="msg.portalMS.category.already.recommend" />
                                </span>
                            </li>
                            <li οnclick="setTab(6)" id="6">
                                <span title="<s:text name="msg.portalMS.category.timetask" />">
                                    <s:text name="msg.portalMS.category.timetask" />
                                </span>
                            </li>
                            <li οnclick="setTab(7)" id="7">
                                <span title="<s:text name="msg.portalMS.category.child.upShelf" />">
                                    <s:text name="msg.portalMS.category.child.upShelf" />
                                </span>
                            </li>
                            </span>
                            </span>
                            <li οnclick="setTab(8)" id="8">
                                <span title="<s:text name="msg.portalMS.category.image" />">
                                    <s:text name="msg.portalMS.category.image" />
                                </span>
                                
                            </li>
                    </ul>
                </div>
                </div>
        <div id="cdata_list">
            <iframe src="" name="mainResourceFrame" width="100%" scrolling="auto"
                frameborder="0" id="mainResourceFrame" title="mainResourceFrame" />
        </div>
        </s:if>
        </s:if>
    </body>
</html>


exttree.js
var basePath = "http://localhost:8080/portalMS";
if(typeof(glbRootPath) != "undefined"){
    basePath = glbRootPath;
}
// 扩展窗体
FormEditWin = function(){
    var curFormWin;
    return {
        width : 600,
        height : 400,
        showAddDirWin : function(parentNode) {
            // 显示添加子目录窗口
            var number = parentNode.indexOf(parentNode.lastChild) + 1;
            var editpage = 'resource/jsonData.action';
            var window = this.createWin("windirnew",$CON.AIMDIRECTORY_NEWNODE, editpage, function() {
                parentNode.reload();
            });
            window.show();
        },
        showAddLeafWin : function(parentNode) {
            // 显示添加子叶子节点窗口
            var number = parentNode.indexOf(parentNode.lastChild) + 1;
            var editpage = basePath
                    + "/treeAction!modifyNode.action?extTree.parentId="
                    + parentNode.id + "&extTree.leaf=1&extTree.number=" + number;
            var window = this.createWin("winleafnew", $CON.LEAF_NEWNODE, editpage, function() {
                parentNode.reload();
            });
            window.show();
        },
        showEditDirWin : function(node) {
            // 显示目录编辑窗口
            var editpage = basePath
                    + "/treeAction!modifyNode.action?extTree.id=" + node.id;
            var window = this.createWin("win" + node.id, node.text, editpage, function() {
                var nodeparent = node.parentNode;
                var tree = node.getOwnerTree();
                nodeparent.on("expand", function(pnode) {
                    tree.getNodeById(node.id).select();
                }, this, {
                    single : true
                });
                node.parentNode.reload();
            });
            window.show();
        },
        showEditLeafWin : function(node) {
            // 显示叶子节点编辑窗口
            var editpage = basePath
                    + "/treeAction!modifyNode.action?extTree.id=" + node.id;
            var window = this.createWin("win" + node.id, node.text, editpage, function() {
                var nodeparent = node.parentNode;
                var tree = node.getOwnerTree();
                nodeparent.on("expand", function(pnode) {
                    tree.getNodeById(node.id).select();
                }, this, {
                    single : true
                });
                node.parentNode.reload();
            });
            window.show();
        },
        createWin : function(winId, winTitle, iframePage, closeFun) {
            // 供各类型窗口创建时调用
            var win = Ext.getCmp(winId);
            if (!win) {
                win = new Ext.Window({
                    id : winId,
                    title : $CON.MENU_EDIT + winTitle,
                    width : this.width,
                    height : this.height,
                    maximizable : true,
                    modal : true,
                    html : "<iframe width='100%' height='100%' frameborder='0' src='"
                            + iframePage + "'></iframe>"
                });
                this.reloadNavNode = closeFun;
            }
            curFormWin = win;
            return win;
        },
        reloadNavNode : function() {
        },
        close : function() {
            if(curFormWin){
                curFormWin.close();
            }
        }
    }
}();

// 导航树
NavTree = function(){
    var nav;
    var formWindow;
    var navEditor;
    var leafMenu;
    var dirMenu;
    var loader;
    var root;
    var removeFlag = false;
    var titleChangeFlag = false;
    var nodeSelected;
    var mgr;
    var title;
    var cateType;
    var terminalType;
    return {
        init : function(){
            if(!mgr){
                Ext.Msg.alert($CON.WARM_TIP,$CON.CHECK_CONFIG+"NavTree.setMgr()"+CHECK_CONFIG_ONE+"mgr");
                return;
            }
            if(!loader){
                if(!Ext.get("cate_type"))
                {
                    return;
                }
                if(!Ext.get("category_terminalType"))
                {
                    return;
                }
                var siteId="";
                if(Ext.get("siteId"))
                {
                    siteId=Ext.get("siteId").dom.value;
                }
                terminalType = Ext.get("category_terminalType").dom.value;
                cateType =Ext.get("cate_type").dom.value;
                loader = new Ext.tree.TreeLoader({
                    url : '/portalMS/resource/jsonData.action?cateType='+cateType+'&terminalType='+terminalType+'&site.siteID='+siteId
                });
                loader.on('beforeload', function(treeloader, node) {
                    treeloader.baseParams = {
                        id : node.id        
                    };
                }, this);
            }
            if(!root){
                    if(Ext.get("category_firstNodeName")){
                        title=Ext.get("category_firstNodeName").dom.value;
                    }else{
                        title="";
                    }
               root = new Ext.tree.AsyncTreeNode({
                    id : Ext.get("category_firstNodeId").dom.value,
                    text : title,
                    expanded: true
                });
            }
            if(!nav){
                  
                nav = new Ext.tree.TreePanel({
                    width : 232,
                    height: 600,
                    autoScroll : true,
                    animate : true,
                    loader : loader,
                    root : root,
                    enableDD:true,
                    border:false,
                    listeners : {
                        'click' : function(node, event) {
                            if (node.isLeaf()) {
                                // 为叶子节点时,点击不进入链接
                              //  event.stopEvent();
                              //  alert(node.url);
                              //   window.open('http://www.google.com');
                            }
                        }
                    }
                });
                // 添加右键菜单
               // nav.on("contextmenu", this.showTreeMenu);
                // 当节点文本改变时触发事件
                nav.on("textchange", function(node, newText, oldText) {
                    if (!titleChangeFlag && newText != oldText) {
                        mgr.ajaxModifyTitle(node.id, newText, function(success) {          
                        });
                    }
                });
           
                // 当节点移动时触发事件
                nav.on("movenode", function(tree, node, oldParent, newParent, index) {  
                    mgr.updateMoveNode(node.id, oldParent.id, newParent.id, index+1, cateType, getReslut);
                });
                function getReslut(data)
                {
                    if(data == "error"){
                        Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOEXISTE);
                        
                    }
                    if(data == "false"){
                        Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOCHANGE);
                        
                    }
                }
                
                // 当节点移动前触发事件
                nav.on("beforemovenode", function(tree, node, oldParent, newParent, index) {
                    if(oldParent!=newParent){   
                        Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOCHANGE);
                    return false;
                    }
                });
               
                // 当节点删除时触发事件
                nav.on("remove", function(tree, parentNode, node) {
                    if (removeFlag) {
                        
                        mgr.ajaxRemoveParentById(node.id);
                    }
                });
                
                
            }
          
//            if(!navEditor){
//                navEditor = new Ext.tree.TreeEditor(nav, {
//                    allowBlank : false,
//                    ignoreNoChange : true,
//                    blankText : '标题不能为空',
//                    selectOnFocus : true
//                });
//            }
            this.setLeafMenu();
            this.setDirMenu();
        },
        setMgr : function(manager){
            mgr = manager;
        },
        getMgr : function(){
            return mgr;
        },
        setLeafMenu: function(){
            // 设置叶子菜单
            if(!leafMenu){
                leafMenu = new Ext.menu.Menu({
                    items : [{
                        text : $CON.TITLE_EDIT,
                        handler : function() {
                            navEditor.triggerEdit(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.EDIT,
                        handler : function() {
                            FormEditWin.showEditLeafWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.DELETE_ONE,
                        handler : this.delTreeItemComfirm
                    }]
                });
            }
        },
        setDirMenu: function(){
            // 设置目录菜单
            if(!dirMenu){
                dirMenu = new Ext.menu.Menu({
                    items : [{
                        text : $CON.TITLE_EDIT,
                        handler : function() {
                            navEditor.triggerEdit(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.EDIT,
                        handler : function() {
                            FormEditWin.showEditDirWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.LEAF_CHILDNODE_ADD,
                        handler : function() {
                            FormEditWin.showAddLeafWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.AIMDIRECTORY_ADDNODE,
                        handler : function() {
                            FormEditWin.showAddDirWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.DELETE_ONE,
                        handler : this.delTreeItemComfirm
                    }]
                });
            }
        },
        showTreeMenu : function(node, e){
            nodeSelected = node;
            nodeSelected.select();
            if (node.isLeaf()) {
                // 显示叶子节点菜单
                leafMenu.showAt(e.getPoint());
            } else {
                // 显示目录节点菜单
                dirMenu.showAt(e.getPoint());
            }
        },
        delTreeItemComfirm : function(){
            Ext.Msg.confirm($CON.DELETE_SURE, $CON.NODE_SUREDELETE, function(btn) {
                if (btn == "yes") {
                    NavTree.delTreeItem();
                }
            });
        },
        delTreeItem : function(){
            if (nodeSelected != nav.getRootNode()) {
                removeFlag = true;
                nodeSelected.remove();
                removeFlag = false;
            } else {
                Ext.Msg.alert($CON.WARM, $CON.NODE_NODELETE);
            }
        },
        show : function(){
        
            formWindow = new Ext.Window({
            modal:true,
            layout:'fit',     
            width:250,
            height: 400,
            resizable:true,   
            closeAction:'hide',  
            shim:false,  // 关键,设置此项为 false ,则最大化时 window不会撑破 tabPanel
            autoScroll:true,
              constrainHeader:true,  // 关键,设置此项为 true ,指定此 window 不会超过 tabPanel 的上面和左边
              style:"padding:0px;",                                       
            plain: true,   
            listeners:{  
                "hide":function(){  
                window.parent.lFrame.location.reload();
                }},
               items: [            
                   nav
               ]
        });

        formWindow.on('beforeclose',function(){Ext.Msg('sa');})
        formWindow.show();
        nav.getRootNode().toggle();
           
        }
    }
}();

// 文档加载完毕执行
Ext.onReady(function(){
    //Ext.BLANK_IMAGE_URL = "../scripts/ext/resources/images/default/s.gif";
    if(typeof(TreeDWR)=="undefined"){
         Ext.Msg.alert($CON.WARM_TIP,$CON.WRONG);
    }else{
         NavTree.setMgr(TreeDWR);
         NavTree.init();
         Text:$CON.LOADING;
    }
    
});


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值