| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510 |
- <%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
- <%@ page import="cn.sinobest.framework.comm.iface.IOperator" %>
- <%@ page import="cn.sinobest.sysmngr.comm.ConVar,cn.sinobest.framework.util.ConfUtil,cn.sinobest.framework.comm.Environment" %>
- <%@include file="./taglib.jsp" %>
- <%
- String jsMin = "";
- if (Environment.getAppProductMode()) {
- jsMin = "-min";
- }
- final String headtoken=Environment.HEADER_TOKEN;
- %>
- <jsp:useBean id="treebean" scope="page" class="cn.sinobest.sysmngr.web.left.LeftTreeBean"></jsp:useBean>
- <%
- response.setHeader("Pragma","No-cache");
- response.setHeader("Cache-Control","no-cache");
- response.setDateHeader("Expires", 0);
-
- IOperator Operator = null;
- Object obj = request.getSession().getAttribute(ConVar.LOGIN_SESSION_ID);
-
- if(obj != null){
- Operator = (IOperator)obj;
- }
-
- StringBuilder model= treebean.getTreeMenus(Operator.getMenus(),request);
- //字典获取方法
- final String DICT_MODE = ConfUtil.getSysParam("app.dictMode","server");
-
- Cookie[] cookies=request.getCookies();
- String styleMode="blue";
- for(Cookie cookie:cookies){
- if("b2cPlatform".equals(cookie.getName())){
- styleMode=cookie.getValue();
- }
- }
- %>
-
- <html>
- <head>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <meta http-equiv="X-UA-Compatible" content="<%=Environment.XUACompatible %>" />
- <% if ("-min".equals(jsMin)) { %>
- <link href="${ctx}/themes/default/fw-all-default<%=jsMin%>.css?v=${deployVersion}" rel="stylesheet" type="text/css">
- <% } else { %>
- <link href="${ctx}/themes/default/letf.css?v=${deployVersion}" rel="stylesheet" type="text/css">
- <link href="${ctx}/themes/default/default.css?v=${deployVersion}" rel="stylesheet" type="text/css">
- <% } %>
- <link href="${ctx}/themes/default/style_<%=styleMode%>.css?v=${deployVersion}"
- rel="stylesheet" type="text/css" id="cssfile" />
- <!--[if IE 6]>
- <link href="${ctx}/themes/default/ie6.css" rel="stylesheet" type="text/css">
- <![endif]-->
- <link href="${ctx}/js/comm/ui/dynatree/ui.dynatree<%=jsMin%>.css" rel="stylesheet" type="text/css">
- <style>
- .searchIcon{
- position: absolute;
- left: 5px;
- top : 3px;
- background: url("<%=request.getContextPath()%>/themes/default/images/search.png");
- width: 16px;
- height: 16px;
- }
- .localstorage {
- border: 1px #cccccc solid;
- color: #006699;
- clip: height;
- background-color: #ffffff;
- height: 20px;
- font-weight:bold;
- padding-top: 5px;
- padding-right: 5px;
- padding-bottom: 5px;
- padding-left: 5px;
- width: 130px
- }
- .localstoragehover {
- border: 1px #006699 solid;
- color: #333333;
- clip: height;
- background-color: #C8D8F0;
- height: 20px;
- padding-top: 5px;
- padding-right: 5px;
- padding-bottom: 5px;
- padding-left: 5px;
- width: 130px
- }
- </style>
- <script type="text/javascript">
- var contextPath='${ctx}';
- var _selfUrl = '${url}';
- var headtoken= '<%=headtoken%>';
- </script>
- <script src="${ctx}/js/comm/lib/jquery.js" language="JavaScript" type="text/javascript"></script>
- <% if ("-min".equals(jsMin)) { %>
- <script src="${ctx}/js/comm/fw-comm-all<%=jsMin%>.js?v=${deployVersion}" language="JavaScript" type="text/javascript"></script>
- <% } else { %>
- <script src="${ctx}/js/comm/lib/ui.core.js" language="JavaScript" type="text/javascript"></script>
- <script src="${ctx}/js/comm/lib/ui.widget.js" language="JavaScript" type="text/javascript"></script>
- <script src="${ctx}/js/comm/ui/dynatree/jquery.dynatree.js" language="JavaScript" type="text/javascript"></script>
- <% if(DICT_MODE.equalsIgnoreCase("local")) { %>
- <script src="${ctx}/js/comm/fn/deployJava.js" language="JavaScript" type="text/javascript"></script>
- <% }else if(DICT_MODE.equalsIgnoreCase("localstorage")){%>
- <script src="${ctx}/js/comm/lib/jquery.cookie.js" language="JavaScript" type="text/javascript"></script>
- <script src="${ctx}/js/comm/lib/json2.js" language="JavaScript" type="text/javascript"></script>
- <%} %>
-
- <script src="${ctx}/js/comm/fw/pinyin.dict.js" language="JavaScript" type="text/javascript"></script>
- <% } %>
- </head>
- <body class="leftbody">
-
- <div id="div_tree" >
- <table style="padding-left:1px" width="100%" height="97%" border=0 cellpadding=0 cellspacing=0 >
- <tr height="25" >
- <td align="left" class="menubutton" width="100%" >
-
- <div >
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td align="center"><a href="#" id="zk">全部展开</a> | <a href="#" id="gb">全部关闭</a></td>
- </tr>
- </table>
- </div>
-
- </td>
- </tr>
-
- <tr>
- <td>
- <a href="###" id="searchIcon" class="searchIcon"></a>
- <input id="searchText" class="textbox" style="display:none;"></input>
- </td>
- </tr>
- <tr>
- <td>
- <div id="menuTree"></div>
- </td>
- </tr>
- <tr height="100%">
- <td>
- </td>
- </tr>
- <tr height="20" >
- <td align="center">
- <% if(DICT_MODE.equalsIgnoreCase("local")) { %>
- <script type="text/javascript">
- var attributes = {
- id : 'dictapplet',
- width : 100,
- height : 20,
- code:'cn.sinobest.framework.applet.DictCacheApplet',
- archive: contextPath+'/applet/DictApplet-0.0.1-SNAPSHOT.jar'
- };
- var parameters = {
- boxbgcolor:'white',
- MAYSCRIPT:true,
- scriptable:true,
- boxborder:false,
- userid:"<%=Operator.getOperID()%>",
- myxxid:"<%=session.getId()%>",
- serviceUrl:_getUrl()+'/downFile.do',
- contextPath:_getUrl()
- };
- deployJava.runApplet(attributes, parameters, '1.5');
-
- function _getUrl(){
- var url = window.location.toString();
- var count = 0;
- var pos = 0;
- for(var i=0;i<url.length;i++){
- if(url.charAt(i) == "/"){
- count++;
- }
- if(count == 4){
- pos = i;
- break;
- }
- }
- return url.substring(0,pos);
- }
- </script>
- <% }else if(DICT_MODE.equalsIgnoreCase("localstorage")){ %>
- <div id='localstorage' title="亲!字典显示不出来么?双击点我试试!" class='localstorage'>字典盒子</div>
- <script type="text/javascript">
- var dictflag=false;
- // 系统登录自动判断字典是否需要下载
- updatedict();
- function updatedict(version){
- if(!window.localStorage){
- return;
- }
- if(dictflag){
- return;
- }
- if(version==null){
- version=localStorage.DICTVERSION;
- }
- var services=[];
- var service={'serviceId':'localStorageDictService','method':'getDict','parameters':{'VERSION':version}};
- services.push(service);
- dictflag=!dictflag;
- $.ajax({
- url:contextPath+'/ajaxAdapter.do'
- ,data:{parameters:JSON.stringify(services),shareArguments:JSON.stringify({})}
- ,dataType :'json'
- ,cache:false
- ,async:false
- ,contentType: "application/x-www-form-urlencoded; charset=utf-8"
- ,type:'post'
- ,error:function (request, textStatus, errorThrown) {
- setTimeout(function(){
- dictflag=!dictflag;
- $('#localstorage').html('字典盒子');
- },500);
- }
- ,success:function (data, textStatus) {
- setTimeout(function(){
- dictflag=!dictflag;
- $('#localstorage').html('字典盒子');
- },500);
- if(data!=null && data[headtoken]!=null){
- token=data[headtoken];//更新全局变量token标志
- }
-
- //校验业务处理是否正确执行
- if("1"!=data.FHZ){//出错了,弹出错误提醒
- if ("loginTimeout" == data.FHZ) {
- if(window.confirm(data.MSG||'')){
- window.top.location.href=_selfUrl;
- }
- } else {
- alert(data.MSG||'');
- }
- }else{
- var mData=data.RTN;
- var needdown=mData[0]['NEEDDOWN'];
- if(needdown){
- localStorage.removeItem("DICTS");
- localStorage.setItem("DICTS",JSON.stringify(mData[0]['DICTS']));
- localStorage.removeItem("BIGDICTS");
- localStorage.setItem("BIGDICTS",JSON.stringify(mData[0]['BIGDICTS']));
- localStorage.removeItem("DICTVERSION");
- localStorage.DICTVERSION=mData[0]['DICTVERSION'];
- }
- }
- }
- ,beforeSend:function(XMLHttpRequest ){
- $('#localstorage').html('字典初始化中...');
- var cToken = $.cookie(headtoken) || token;XMLHttpRequest.setRequestHeader(headtoken,cToken);
- }
- ,complete:function( ){
- }
- });
- }
- /**
- * 绑定搜索按钮和搜索文本输入框的事件
- */
- $(function(){
-
- $("#localstorage").bind('mouseover',function(){
- $("#localstorage").removeClass("localstorage");
- $("#localstorage").addClass("localstoragehover");
- });
- $("#localstorage").bind('mouseleave',function(){
- $("#localstorage").removeClass("localstoragehover");
- $("#localstorage").addClass("localstorage");
- });
- $("#localstorage").bind('dblclick',function(){
- updatedict('V0');
- });
- });
-
-
- </script>
- <% }%>
- </td>
- </tr>
- <tr height=30 >
- <td align="center"><img src="${ctx}/themes/default/images/hnisi.jpg"></img></td>
- </tr>
- </table>
-
- </div>
- </body>
- <script type="text/javascript">
- var model='';
- <%if(!model.toString().equals("")){%>
- model=<%=model.toString()%>;
- <%}%>
- $(function(){
- // Attach the dynatree widget to an existing <div id="tree"> element
- // and pass the tree options as an argument to the dynatree() function:
- $("#menuTree").dynatree({
- selectMode:1,
- minExpandLevel:2,
- imagePath: "images/",
- onClick: function(dtnode, event) {
- // A DynaTreeNode object is passed to the activation handler
- // Note: we also get this event, if persistence is on, and the page is reloaded.
- var url= dtnode.data.url;
- if (!url ||url.length==0){
- return;
- }
- //新窗口中打开
- if( event.altKey ) {
- window.open(url);
- }else{
- top.frames['workspace'].location.href=url;
- }
- //alert("You activated " + dtnode.data.url);
- },
- children:model
- });
- //全部展开
- $('#zk').click(function(){
- $("#menuTree").dynatree("getRoot").visit(function(dtnode){
- dtnode.expand(true);
- });
- });
- //全部展开
- $('#gb').click(function(){
- $("#menuTree").dynatree("getRoot").visit(function(dtnode){
- dtnode.expand(false);
- });
- });
-
- });
-
- </script>
- <script type="text/javascript">
- /**
- * 搜索功能模块,入口请搜索“[main]”
- */
- (function(model){
- var mNodes = {mLevelOneNodes:{},mLevelTwoNodes:{},mLevelThreeNodes:{}};
- var bParseModel = false;
- /***
- * 功能:返回一个符合搜索条件的数据模型
- * 过程:
- * 1. 解析model,分别得出第一级菜单,第二级菜单,第三级菜单的数据
- * 2. 搜索出符合条件的三级菜单
- * 3. 为三级菜单加上对应的一二级菜单,得出最终的数据模型
- * @param model json类型,完整的数据模型
- * @param sSearchText string类型,搜索文本内容
- * @return 返回一个过滤后的菜单数据模型
- */
- function fnFilterModel(sSearchText){
- //1. 解析model,分别得出第一级菜单,第二级菜单,第三级菜单的数据
- if(!bParseModel){
- fnParseModel(model);
- }
- if(!sSearchText){
- return model;
- }
- sSearchText = sSearchText.replace(/(^\s*)|(\s*$)/g,'');
- var mLevelThreeNodes = mNodes.mLevelThreeNodes;
- var arrMatchKeys = [];
- //2. 搜索出符合条件的三级菜单
- for(var key in mLevelThreeNodes){
- var node = mLevelThreeNodes[key];
- if(node.title.indexOf(sSearchText)!=-1){
- arrMatchKeys.push(node.key);
- }
- }
- var mTmpNodes = {};
- var retModel = [];
- //3. 为三级菜单加上对应的一二级菜单,得出最终的数据模型
- for(var i in arrMatchKeys){
- var levelThreeKey = arrMatchKeys[i];
- var levelTwoKey = levelThreeKey.substring(0,4);
- var levelOneKey = levelThreeKey.substring(0,2);
-
- var levelThreeNode = mNodes.mLevelThreeNodes[levelThreeKey];
- if(!mTmpNodes[levelTwoKey]){
- var levelTwoNode = $.extend({},mNodes.mLevelTwoNodes[levelTwoKey]);
- levelTwoNode.children = [levelThreeNode];
- mTmpNodes[levelTwoKey] = levelTwoNode;
-
- if(!mTmpNodes[levelOneKey]){
- var levelOneNode = $.extend({},mNodes.mLevelOneNodes[levelOneKey]);
- levelOneNode.children = [levelTwoNode];
- mTmpNodes[levelOneKey] = levelOneNode;
- retModel.push(levelOneNode);
- }else{
- mTmpNodes[levelOneKey].children.push(levelTwoNode);
- }
- }else{
- mTmpNodes[levelTwoKey].children.push(levelThreeNode);
- }
- }
-
- return retModel;
- }
- /**
- * 功能:解析model,按第一级、第二级、第三级菜单存放在 mNodes = {mLevelOneNodes:{},mLevelTwoNodes:{},mLevelThreeNodes:{}}中
- */
- function fnParseModel(){
- var children = model;
- if(Object.prototype.toString.call(children) !== "[object Array]"){
- return false;
- }
- var mLevelOneNodes = {};
- var mLevelTwoNodes = {};
- var mLevelThreeNodes = {};
-
- var arrLevelOneNodeAttrs = ["key","title","isFolder"];
- var arrLevelTwoNodeAttrs = ["key","title","isFolder"];
- var arrLevelThreeNodeAttrs = ["key","title","url"];
-
- for(var i in children){
- var levelOneNode = children[i];
- _fnCopyNode(levelOneNode,mLevelOneNodes,arrLevelOneNodeAttrs);
- if(Object.prototype.toString.call(levelOneNode.children) !== "[object Array]"){
- continue;
- }
- for(var j in levelOneNode.children){
- var levelTwoNode = levelOneNode.children[j];
- _fnCopyNode(levelTwoNode,mLevelTwoNodes,arrLevelTwoNodeAttrs);
- if(Object.prototype.toString.call(levelTwoNode.children) !== "[object Array]"){
- continue;
- }
- for(var k in levelTwoNode.children){
- var levelThreeNode = levelTwoNode.children[k];
- _fnCopyNode(levelThreeNode,mLevelThreeNodes,arrLevelThreeNodeAttrs);
- }
- }
- }
- mNodes.mLevelOneNodes = mLevelOneNodes;
- mNodes.mLevelTwoNodes = mLevelTwoNodes;
- mNodes.mLevelThreeNodes = mLevelThreeNodes;
- bParseModel = true;
-
- function _fnCopyNode(srcNode,mDestNodes,arrNodeAttrs){
- var obj = {};
- for(var i in arrNodeAttrs){
- var attrName = arrNodeAttrs[i];
- obj[attrName] = srcNode[attrName];
- }
- mDestNodes[srcNode.key] = obj;
- }
- }
- /**
- * 绑定搜索按钮和搜索文本输入框的事件
- */
- $(function(){
- var $searchText = $("#searchText");
- var bShow = false;
- /**
- * 点击搜索放大镜图标的时候,隐藏或者显示搜索框
- */
- $("#searchIcon").bind('click dblclick',function(){
- if(bShow){
- $searchText.css({display:"none"});
- }else{
- $searchText.css({display:"inline"});
- setTimeout($searchText.focus(),0);
- }
- bShow = !bShow;
- });
- var root = $("#menuTree").dynatree("getRoot");
- /**
- * 搜索菜单
- */
- function fnSearch(){
- var sSearchText = $("#searchText").val();
- root.removeChildren();
- root.addChild(fnFilterModel(sSearchText));
- if(""!==sSearchText){
- root.visit(function(dtnode){
- dtnode.expand(true);
- });
- }
- };
- var timeoutSearch;
- /**
- * [main]在搜索文本文本框录入内容的时候,搜索菜单
- */
- $searchText.bind("propertychange",function(e){
- clearTimeout(timeoutSearch);
- timeoutSearch = setTimeout(fnSearch,0);
- });
- });
- })(model);//搜索功能模块
- </script>
- <script type="text/javascript">
- parent.mLoadStatus.TreeMenu = true;
- </script>
- </html>
|