diff options
author | 2016-09-20 20:23:38 +0800 | |
---|---|---|
committer | 2016-09-20 20:23:38 +0800 | |
commit | da0d4d81e5ddf347a71d341af18c3c42ea6bc3ab (patch) | |
tree | b7dc889174edd9bba7456d1d2ce42f1e680cb7e5 /openo-portal/portal-common/src/main/webapp/common/js | |
parent | 9f7095cc0c1f83ebe18e19da7733b7b0a0412632 (diff) |
add portal-common files
Change-Id: Id92745df42a6fde24d3b4709f6d92815cd88bd80
Signed-off-by: “shentao” <shentao@chinamobile.com>
Diffstat (limited to 'openo-portal/portal-common/src/main/webapp/common/js')
20 files changed, 7889 insertions, 0 deletions
diff --git a/openo-portal/portal-common/src/main/webapp/common/js/Main2moreMenu.js b/openo-portal/portal-common/src/main/webapp/common/js/Main2moreMenu.js new file mode 100644 index 00000000..3fadb215 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/Main2moreMenu.js @@ -0,0 +1,17 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var sideBarMenu_to_moreMenu_frame = new Array(); +var horBarMenu_to_moreMenu_frame = new Array(); diff --git a/openo-portal/portal-common/src/main/webapp/common/js/core/ZteFrameWork.js b/openo-portal/portal-common/src/main/webapp/common/js/core/ZteFrameWork.js new file mode 100644 index 00000000..9e2b10d8 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/core/ZteFrameWork.js @@ -0,0 +1,4008 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +String.prototype.trim = function() { + return this.replace(/(^\s*)|(\s*$)/g, ""); +}; +String.prototype.format=function() { + if(arguments.length==0) return this; + for(var s=this, i=0; i<arguments.length; i++) + s=s.replace(new RegExp("\\{"+i+"\\}","g"), arguments[i]); + return s; +}; +String.prototype.startWith=function(str){ + var reg=new RegExp("^"+str); + return reg.test(this); +}; +String.prototype.endWith=function(str){ + var reg=new RegExp(str+"$"); + return reg.test(this); +}; + +/*全屏 参考:http://www.alixixi.com/web/a/2015031794521.shtml */ +var s=!function(w,d){ + var fs={ + supportsFullScreen:false, + isFullScreen:false, + requestFullScreen:'', + exitFullScreen:'', + fullscreenchange:'', + prefix:'' + }, + aP=['webkit','moz','ms'], //opera 15 支持全屏是webkit内核 + len=aP.length, + i=0; + if(d.exitFullscreen){ + fs.supportsFullScreen=true + }else{ + for(; i<len; i++){ + if(d[aP[i]+'ExitFullscreen']||d[aP[i]+'CancelFullScreen']){ + fs.supportsFullScreen=true; + fs.prefix=aP[i]; + break + } + } + } + if(fs.supportsFullScreen){ + var p=fs.prefix; + fs.fullscreenchange=function(fn){ + d.addEventListener(p=='ms' ? 'MSFullscreenChange' : p+'fullscreenchange',function(){ + fn && fn() + },false) + }; + fs.fullscreenchange(function(){ + fs.isFullScreen=(function(p){ + switch (p) { + case '': + return d.fullscreen; + case 'webkit': + return d.webkitIsFullScreen; + case 'moz': + return d.mozFullScreen; + case 'ms': + return d.msFullscreenElement ? true : false + } + })(p) + }); + fs.requestFullScreen=function(elem){ + var elem=elem||d.documentElement; + try{ + p ? elem[p+'RequestFullScreen']() : elem.requestFullScreen() //chrome,ff,标准 + }catch(e){ + elem[p+'RequestFullscreen']() //elem.msRequestFullscreen + } + }; + fs.exitFullScreen=function(){ + try{ + p ? d[p+'ExitFullscreen']() : d.exitFullscreen() //ie,新版chrome或标准 + }catch(e){ + d[p+'CancelFullScreen']() //老版chrome 火狐 + } + } + } + w.screenfull=fs +}(window,document); +/* + * Purl (A JavaScript URL parser) v2.3.1 + * Developed and maintanined by Mark Perkins, mark@allmarkedup.com + * Source repository: https://github.com/allmarkedup/jQuery-URL-Parser + * Licensed under an MIT-style license. See https://github.com/allmarkedup/jQuery-URL-Parser/blob/master/LICENSE for details. + */ +;(function(factory) { + if (typeof define === 'function' && define.amd) { + define(factory); + } else { + window.purl = factory(); + } +})(function() { + var tag2attr = { + a : 'href', + img : 'src', + form : 'action', + base : 'href', + script : 'src', + iframe : 'src', + link : 'href', + embed : 'src', + object : 'data' + }, + + key = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'fragment'], // keys available to query + aliases = { 'anchor' : 'fragment' }, // aliases for backwards compatability + parser = { + strict : /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, //less intuitive, more accurate to the specs + loose : /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // more intuitive, fails on relative paths and deviates from specs + }, + isint = /^[0-9]+$/; + + function parseUri( url, strictMode ) { + var str = decodeURI( url ), + res = parser[ strictMode || false ? 'strict' : 'loose' ].exec( str ), + uri = { attr : {}, param : {}, seg : {} }, + i = 14; + while ( i-- ) { + uri.attr[ key[i] ] = res[i] || ''; + } + // build query and fragment parameters + uri.param['query'] = parseString(uri.attr['query']); + uri.param['fragment'] = parseString(uri.attr['fragment']); + // split path and fragement into segments + uri.seg['path'] = uri.attr.path.replace(/^\/+|\/+$/g,'').split('/'); + uri.seg['fragment'] = uri.attr.fragment.replace(/^\/+|\/+$/g,'').split('/'); + // compile a 'base' domain attribute + uri.attr['base'] = uri.attr.host ? (uri.attr.protocol ? uri.attr.protocol+'://'+uri.attr.host : uri.attr.host) + (uri.attr.port ? ':'+uri.attr.port : '') : ''; + + return uri; + } + + function getAttrName( elm ) { + var tn = elm.tagName; + if ( typeof tn !== 'undefined' ) return tag2attr[tn.toLowerCase()]; + return tn; + } + + function promote(parent, key) { + if (parent[key].length === 0) return parent[key] = {}; + var t = {}; + for (var i in parent[key]) t[i] = parent[key][i]; + parent[key] = t; + return t; + } + + function parse(parts, parent, key, val) { + var part = parts.shift(); + if (!part) { + if (isArray(parent[key])) { + parent[key].push(val); + } else if ('object' == typeof parent[key]) { + parent[key] = val; + } else if ('undefined' == typeof parent[key]) { + parent[key] = val; + } else { + parent[key] = [parent[key], val]; + } + } else { + var obj = parent[key] = parent[key] || []; + if (']' == part) { + if (isArray(obj)) { + if ('' !== val) obj.push(val); + } else if ('object' == typeof obj) { + obj[keys(obj).length] = val; + } else { + obj = parent[key] = [parent[key], val]; + } + } else if (~part.indexOf(']')) { + part = part.substr(0, part.length - 1); + if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + // key + } else { + if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + } + } + } + + function merge(parent, key, val) { + if (~key.indexOf(']')) { + var parts = key.split('['); + parse(parts, parent, 'base', val); + } else { + if (!isint.test(key) && isArray(parent.base)) { + var t = {}; + for (var k in parent.base) t[k] = parent.base[k]; + parent.base = t; + } + if (key !== '') { + set(parent.base, key, val); + } + } + return parent; + } + + function parseString(str) { + return reduce(String(str).split(/&|;/), function(ret, pair) { + try { + pair = decodeURIComponent(pair.replace(/\+/g, ' ')); + } catch(e) { + // ignore + } + var eql = pair.indexOf('='), + brace = lastBraceInKey(pair), + key = pair.substr(0, brace || eql), + val = pair.substr(brace || eql, pair.length); + + val = val.substr(val.indexOf('=') + 1, val.length); + + if (key === '') { + key = pair; + val = ''; + } + + return merge(ret, key, val); + }, { base: {} }).base; + } + + function set(obj, key, val) { + var v = obj[key]; + if (typeof v === 'undefined') { + obj[key] = val; + } else if (isArray(v)) { + v.push(val); + } else { + obj[key] = [v, val]; + } + } + + function lastBraceInKey(str) { + var len = str.length, + brace, + c; + for (var i = 0; i < len; ++i) { + c = str[i]; + if (']' == c) brace = false; + if ('[' == c) brace = true; + if ('=' == c && !brace) return i; + } + } + + function reduce(obj, accumulator){ + var i = 0, + l = obj.length >> 0, + curr = arguments[2]; + while (i < l) { + if (i in obj) curr = accumulator.call(undefined, curr, obj[i], i, obj); + ++i; + } + return curr; + } + + function isArray(vArg) { + return Object.prototype.toString.call(vArg) === "[object Array]"; + } + + function keys(obj) { + var key_array = []; + for ( var prop in obj ) { + if ( obj.hasOwnProperty(prop) ) key_array.push(prop); + } + return key_array; + } + + function purl( url, strictMode ) { + if ( arguments.length === 1 && url === true ) { + strictMode = true; + url = undefined; + } + strictMode = strictMode || false; + url = url || window.location.toString(); + + return { + data : parseUri(url, strictMode), + // get various attributes from the URI + attr : function( attr ) { + attr = aliases[attr] || attr; + return typeof attr !== 'undefined' ? this.data.attr[attr] : this.data.attr; + }, + // return query string parameters + param : function( param ) { + return typeof param !== 'undefined' ? this.data.param.query[param] : this.data.param.query; + }, + + // return fragment parameters + fparam : function( param ) { + return typeof param !== 'undefined' ? this.data.param.fragment[param] : this.data.param.fragment; + }, + // return path segments + segment : function( seg ) { + if ( typeof seg === 'undefined' ) { + return this.data.seg.path; + } else { + seg = seg < 0 ? this.data.seg.path.length + seg : seg - 1; // negative segments count from the end + return this.data.seg.path[seg]; + } + }, + // return fragment segments + fsegment : function( seg ) { + if ( typeof seg === 'undefined' ) { + return this.data.seg.fragment; + } else { + seg = seg < 0 ? this.data.seg.fragment.length + seg : seg - 1; // negative segments count from the end + return this.data.seg.fragment[seg]; + } + } + }; + } + purl.jQuery = function($){ + if ($ != null) { + $.fn.url = function( strictMode ) { + var url = ''; + if ( this.length ) { + url = $(this).attr( getAttrName(this[0]) ) || ''; + } + return purl( url, strictMode ); + }; + $.url = purl; + } + }; + purl.jQuery(window.jQuery); + return purl; +}); +//把框架所有的ajax请求集中到一起,发一条请求,获取所有的配置信息。 +ZteFrameWork_conf = { + userName:store.get('username'), + changePassItem:FrameConst.change_pass?FrameConst.change_pass:true, + helpMenuItem:false, + aboutMenuItem:false, + flightMenuItem:false, + fullscreenMenuItem:false, + logoutMenuItem:true, + defaultThemeColor:"ztebluelight2", + dbType:"other", + acceptLanguage:"zh-CN" +}; +$("#currentUser").html(ZteFrameWork_conf.userName); + +$.ajax({ + url : FrameConst.REST_FRAMECOMMIFO, + type : "GET", + cache:false, + contentType : 'application/json; charset=utf-8', + success: function(data){ + var tempConf = data; + if( tempConf.helpMenuItem && tempConf.helpMenuItem != "" ){ + ZteFrameWork_conf.helpMenuItem = tempConf.helpMenuItem; + } + if( tempConf.aboutMenuItem && tempConf.aboutMenuItem != "" ){ + ZteFrameWork_conf.aboutMenuItem = tempConf.aboutMenuItem; + } + if( tempConf.flightMenuItem && tempConf.flightMenuItem != "" ){ + ZteFrameWork_conf.flightMenuItem = tempConf.flightMenuItem; + } + if( tempConf.fullscreenMenuItem && tempConf.fullscreenMenuItem != "" ){ + ZteFrameWork_conf.fullscreenMenuItem = tempConf.fullscreenMenuItem; + } + if( tempConf.logoutMenuItem && tempConf.logoutMenuItem != "" ){ + ZteFrameWork_conf.logoutMenuItem = tempConf.logoutMenuItem; + } + if( tempConf.defaultThemeColor && tempConf.defaultThemeColor != "" ){ + ZteFrameWork_conf.defaultThemeColor = tempConf.defaultThemeColor; + } + if( tempConf.dbType && tempConf.dbType != "" ){ + ZteFrameWork_conf.dbType = tempConf.dbType; + } + if( tempConf.acceptLanguage && tempConf.acceptLanguage != "" ){ + ZteFrameWork_conf.acceptLanguage = tempConf.acceptLanguage; + } + if( tempConf.changePassItem && tempConf.changePassItem != "" ){ + ZteFrameWork_conf.changePassItem = tempConf.changePassItem; + } + + setFrameWorkByConf(); + //userName = data; + //console.info('login user is :' + data); + }, + error:function(data){ + setFrameWorkByConf(); + } +}); + +function setThemeColor( configColor ){ + var panel = $('.zte-theme-panel'); + $('.theme-colors > ul > li', panel).each(function () { + var color = $(this).attr("data-style"); + if (color == configColor) { + // 匹配上了才重设默认主题 + $(this).addClass("current"); + $('#style_color').attr("href", "css/themes/" + color + ".css"); + //if (store) { + store('style_color', color); + //} + } + }); +}; + +function setFrameWorkByConf(){ + //设置用户相关的框架下拉菜单是否可用 + var helpMenuItem = ZteFrameWork_conf.helpMenuItem; + var aboutMenuItem = ZteFrameWork_conf.aboutMenuItem; + var flightMenuItem = ZteFrameWork_conf.flightMenuItem; + var fullscreenMenuItem = ZteFrameWork_conf.fullscreenMenuItem; + var logoutMenuItem = ZteFrameWork_conf.logoutMenuItem; + var changePassMenuItem = ZteFrameWork_conf.changePassMenuItem; + if (!helpMenuItem || helpMenuItem === "false") { + $('#uep_ict_help_url').parent('li').remove(); + } + if(!aboutMenuItem|| aboutMenuItem === "false"){ + $('[data-target="#aboutDlg"]').parent('li').remove(); + } + if(!helpMenuItem && !aboutMenuItem){ + $('#uep_ict_help_div').remove(); + } + if (!flightMenuItem|| flightMenuItem === "false") { + $('#header_notification_bar').html("<div>      </div>"); + } + if (!fullscreenMenuItem|| fullscreenMenuItem === "false") { + //$('#trigger_fullscreen').parent().css("display", "none"); + $('#trigger_fullscreen_div').html(""); + } + if (!logoutMenuItem || logoutMenuItem === "false") { + //$('#trigger_logout').parent().css("display", "none"); + $('#trigger_logout_div').html(""); + } + if ((!fullscreenMenuItem && !logoutMenuItem) || (fullscreenMenuItem === "false" && logoutMenuItem === "false")) { + $('#full_logout_divider').css("display", "none"); + } + if (!changePassMenuItem ) { + $('#changePwd_labellink').css('display','none'); + $('#full_logout_divider').css('display','none'); + } + + //设置二次开发者选择的框架皮肤 + var defaultColor = ZteFrameWork_conf.defaultThemeColor; + var panel = $('.zte-theme-panel'); + $('ul > li', panel).removeClass("current"); + if (store && !store('style_color')) { // cookie没有才设置默认主题 + setThemeColor(defaultColor); + }else{ + setThemeColor(store('style_color')); + } +}; + +/*新增的hashtabel实现类,用户后续iframe的缓存,前进后退时打开过的页面的菜单id的缓存等*/ +function Hashtable() +{ + this._hash = {}; + this._count = 0; + this.add = function(key, value) + { + if (this._hash.hasOwnProperty(key)) + return false; + else { + this._hash[key] = value; this._count++; return true; + } + } ; + this.hash = function() { return this._hash; }; + this.remove = function(key) { delete this._hash[key]; this._count--; } ; + this.count = function() { return this._count; }; + this.items = function(key) { if (this.contains(key)) return this._hash[key]; }; + this.contains = function(key) { return this._hash.hasOwnProperty(key); }; + this.clear = function() { this._hash = {}; this._count = 0; }; + this.replace = function(key, value) + { //有则删除后增加///相当于更新 + if(this.contains(key)){ + this.remove(key); + } + return this.add(key, value); + } ; +}; + +var fMenuSiderDivId = 'page-f-sidebar-menu'; +var fMenuMegaDivId = 'f_hormenu'; +var megaSiderDivId = 'page-megachild-sidebar-menu'; +var megaDivId = 'main_hormenu'; +var zteframework_menu_horizontal = "horizontal"; +var zteframework_menu_vertical = "vertical"; +var zteframework_menu_fmenu = "fmenu"; +var zteframework_showNav = "true"; +var zteframework_smallView = 960;//原来为992,但是在投影仪上不准(投影仪设置为1024,但是实际尺寸比1024小),边栏菜单也会被移除,这个设置一个稍小的值。 + +/*下面是主框架的核心*/ +var ZteFrameWork = function () { + var defaultLanage=getLanguage(); + var isRTL = false;//文档顺序 + var isTouch=function(){ + try { + document.createEvent("TouchEvent"); + return true; + } catch (e) { + return false; + } + }; + var isDesktop = !isTouch; + var isIE8 = false; + var isIE9 = false; + var isIE10 = false; + var gdocTitle=""; + var _sidebarWidth = 225; + var _sidebarCollapsedWidth = 35; + var responsiveHandlers = []; + var cachedIframes=new Hashtable(); + var cachedIframesObject=new Hashtable(); + var breadcrumbBtnMenus=new Hashtable(); + var _menuCategorys=new Hashtable(); + var _iframe="page-mainIframe"; //全局变量保存的是当前正在打开使用的iframe + var _sceneURLRootPath=""; + var _hashSource="";//信号量 + var _isClicked=false;//信号量 + //var _breadcrumbSource=false; + + // 皮肤颜色 + var layoutColorCodes = { + 'blue': '#4b8df8', + 'red': '#e02222', + 'green': '#35aa47', + 'purple': '#852b99', + 'grey': '#555555', + 'light-grey': '#fafafa', + 'yellow': '#ffb848', + 'ztebluelight': '#3366cc' + }; + // 获取真实的设备窗口大小,参考了 http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/ + var _getViewPort = function () { + var e = window, a = 'inner'; + if (!('innerWidth' in window)) { + a = 'client'; + e = document.documentElement || document.body; + } + return { + width: e[a + 'Width'], + height: e[a + 'Height'] + } + } + // 初始化 + var dealInit = function () { + var sence = '0'; + var menuSence = getUrlParam("menu"); + var confSence = 0; + if (menuSence) { + sence = menuSence; + } else { + sence = confSence; + } + switch (sence) { + case "1": + gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title_1').text().trim(); + break; + case "2": + gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title_2').text().trim(); + break; + case "3": + gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title_3').text().trim(); + break; + case "0": + default: + gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title').text().trim(); + break; + } + if ($('body').css('direction') === 'rtl') { + isRTL = true; + } + isIE8 = !! navigator.userAgent.match(/MSIE 8.0/); + isIE9 = !! navigator.userAgent.match(/MSIE 9.0/); + isIE10 = !! navigator.userAgent.match(/MSIE 10.0/); + if (isIE10) { + $('html').addClass('ie10'); // IE10 + } + if (isIE10 || isIE9 || isIE8) { + $('html').addClass('ie'); // IE10 + } + var deviceAgent = navigator.userAgent.toLowerCase(); + if (deviceAgent.match(/(iphone|ipod|ipad)/)) { + $(document).on('focus', 'input, textarea', function () { + $('.page-header').hide(); + if($('.page-footer')&&$('.page-footer').length>0) + $('.page-footer').hide(); + }); + $(document).on('blur', 'input, textarea', function () { + $('.page-header').show(); + if($('.page-footer')&&$('.page-footer').length>0) + $('.page-footer').show(); + }); + } else { + $(document).on('focus', 'input, textarea', function () { + if($('.page-footer')&&$('.page-footer').length>0) + $('.page-footer').hide(); + }); + $(document).on('blur', 'input, textarea', function () { + if($('.page-footer')&&$('.page-footer').length>0) + $('.page-footer').show(); + }); + } + } + //处理滚动到 + var dealScrollTo=function (el, offeset) { + + } + var dealstartPageLoading=function(message) { + $('.page-loading').remove(); + $('body').append('<div class="page-loading"><img src="'+ ICTFRAME_CONST_SPINNER_GIF_PATH +'"/> <span>' + (message ? message : $.i18n.prop('com_zte_ums_ict_framework_ui_loading')) + '</span></div>'); + } + var dealstopPageLoading=function() { + $('.page-loading').remove(); + } + var dealSidebarState = function () { + // 窗体宽度小尺寸(平板和iphone模式下)时移出左边栏 + var viewport = _getViewPort(); + if (viewport.width < zteframework_smallView) { + $('body').removeClass("page-sidebar-closed"); + }else{ + if (getCookie('sidebar_closed') === '1') { + $('body').addClass('page-sidebar-closed'); + } + } + } + // ZteFrameWork.addResponsiveHandler()回调函数. + var runResponsiveHandlers = function () { + //重新初始化其他订阅的元素elements + for (var i = 0; i < responsiveHandlers.length; i++) { + var each = responsiveHandlers[i]; + each.call(); + } + } + // 窗体重新调整大小时初始化调整边栏状态高度 + var dealResponsive = function () { + dealSidebarState(); + ajustHorMenuDropDirection(); + dealSidebarAndContentHeight(); + dealFixedSidebar(); + runResponsiveHandlers(); + } + // 页面重载入时初始化调整内部布局 + var dealResponsiveOnInit = function () { + dealSidebarState(); + dealSidebarAndContentHeight(); + setTimeout(function () { + ajustHorMenuDropDirection(true); + }, 100); + } + // 窗体重新调整大小时初始化调整布局 + var dealResponsiveOnResize = function () { + var resize; + if (isIE8) { + var currheight; + $(window).resize(function () { + if (currheight == document.documentElement.clientHeight) { + return; + } + if (resize) { + clearTimeout(resize); + } + resize = setTimeout(function () { + dealResponsive(); + }, 50); + currheight = document.documentElement.clientHeight; + }); + } else { + $(window).resize(function () { + if (resize) { + clearTimeout(resize); + } + resize = setTimeout(function () { + dealResponsive(); + }, 50); + }); + } + } + var changeSiderBar = function(hideAllMenu){ + var siderbarpos = $(".nav-pos-direction", $(".zte-theme-panel")).val(); + var sidermenu = $("#page-sidebar-menu"); + var hormenu = $("#main_hormenu"); + var fhorMenu = $("#" + fMenuMegaDivId); + var fsiderMenu = $("#" + fMenuSiderDivId); + if(hideAllMenu){ + sidermenu.css('display','block');// 侧边栏显示 + hormenu.css("display", "none");//隐藏水平菜单栏 + fhorMenu.css('display','none'); + fsiderMenu.css('display','none'); + return; + } + if (zteframework_menu_horizontal == siderbarpos) { + sidermenu.css('display','none');// 侧边栏隐藏 + fhorMenu.css('display','none');// 侧边栏隐藏 + fsiderMenu.css('display','none');// 侧边栏隐藏 + hormenu.css("display", "block");//显示水平菜单栏 + } else if (zteframework_menu_vertical == siderbarpos) { + sidermenu.css('display','block');// 侧边栏显示 + hormenu.css("display", "none");//隐藏水平菜单栏 + fhorMenu.css('display','none');// 侧边栏隐藏 + fsiderMenu.css('display','none');// 侧边栏隐藏 + } else if (zteframework_menu_fmenu == siderbarpos) { + sidermenu.css('display','none'); + hormenu.css("display", "none"); + fhorMenu.css('display','block'); + fsiderMenu.css('display','block'); + //除了toggle按钮之外,是否还有其他儿子是要显示的,如果没有,那么竖菜单不显示;反之,显示。 + var lis = fsiderMenu.children(".sidebar-toggler-wrapper").siblings(); + if(lis.length > 0 && lis.css('display') != "none"){ + fsiderMenu.css('display','block'); + // + $("body").removeClass("page-full-width"); + if ($('body').hasClass("page-sidebar-closed")) { + $(".page-content").css("marginLeft", _sidebarCollapsedWidth); + } else { + $(".page-content").css("marginLeft", _sidebarWidth); + } + } + } + } + //根据当前菜单在屏幕的位置,和一级菜单下二级菜单的排列,来决定菜单是向左展开还是向右展开 + var ajustHorMenuDropDirection = function( isInit ){ + //获取屏幕宽度 + var bodyWidth = document.body.clientWidth; + //循环,获取每个一级菜单在屏幕中的位置 + var levelOneAdropdowns = $('a.dropdown-toggle', '#main_hormenu' ); + //每一个文字span的图标、他父亲的margin\padding等占用的位置 + var marginCount = 5 * 2 + 17.5 + 2 * 2 + 30 + 15 * 2 + 3; + for( var i = 0 ; i < levelOneAdropdowns.length ; i++ ){ + var a = $(levelOneAdropdowns[i]); + var leftOffset = a.offset().left; + //获取二级菜单的数量 + var ul = a.parent().children('.dropdown-menu'); + var groupDivs = $('.zteDivWidth' , ul); + var widthOfDropDownMenu = 0; + for(var j = 0 ; j < groupDivs.length && groupDivs.length >0 ; j++ ){//循环获取每个分组的宽度 + var eachDiv = groupDivs[j]; + var maxLengthText = ""; + var maxLength = 0; + var spans = $('span' , eachDiv).each(function(){ + var innerText = this.innerText; + if( innerText.length > maxLength ){ + maxLength= innerText.length; + maxLengthText = innerText; + } + }); + widthOfDropDownMenu = widthOfDropDownMenu + getStringWidth(maxLengthText , 14) + marginCount; + } + //预估每个组占宽度150PX,多预计一点 + if( widthOfDropDownMenu + leftOffset > bodyWidth ){ + console.log("ajust class dropdown-menu-right ,id = "+ a.attr("id") ); + ul.addClass('dropdown-menu-right'); + //var right = bodyWidth - (leftOffset + a.width() + 15); + //ul.attr('style' ,'right:' + right ); + }else{ + ul.removeClass('dropdown-menu-right'); + //ul.removeAttr('style'); + } + } + } + // 屏幕大小发生变化或者移动设备旋转屏幕时处理响应式布局. + var dealSidebarAndContentHeight = function (isToggler) { + var content = $('.page-content'); + var contentbody = $('.page-content-body'); + var sidebar = $('.page-sidebar'); + var body = $('body'); + var height; + var viewport = _getViewPort(); + var scrAvaHeight=Math.min(window.screen.availHeight,viewport.height)-5; + var footer=$('.footer'); + var pgbread=$('.page-breadcrumb'); + var pageableDiv=$('#pageableDiv'); + console.log("pageableDiv height:"+pageableDiv.outerHeight(true)); + var pheader=$('.header'); + var childPagetype=!!cachedIframesObject.items(_iframe)?cachedIframesObject.items(_iframe).childpageType:""; + if(childPagetype==="isc")//smartclient的子页面固定高度为视口可用内容区高度 + { + $('.sidebar-option', panel).val("fixed"); + } + dealShownav(); + var available_height =scrAvaHeight - ((!footer||footer.length<=0)?0:footer.outerHeight(true)) - pheader.outerHeight(true); + var _pageableDivHeight=(!pageableDiv||pageableDiv.length<=0||pageableDiv.is(":visible")==false)?0:pageableDiv.outerHeight(true); + var h= scrAvaHeight-pheader.outerHeight(true)-((!footer||footer.length<=0||footer.is(":visible")==false)?0:footer.outerHeight(true))-pgbread.outerHeight(true)-_pageableDivHeight-(contentbody.outerHeight(true)-contentbody.height()); + var miframe=_iframe==""?"page-mainIframe": _iframe; + var pagemyIframe=$('.page-content .page-content-body .'+miframe); //.page-mainIframe + if(pagemyIframe&&pagemyIframe.length>0){ + //处理iframe,下面计算中间iframe的高度 + var deviceAgent = navigator.userAgent.toLowerCase(); + if (deviceAgent.match(/(iphone|ipod|ipad)/)) { //||viewport.height<=480 + var w=viewport.width-content.offset().left-(pagemyIframe.offset().left-content.offset().left)*2;//宽度=总宽度-左边栏宽度-内容区内边距。左右两个 + pagemyIframe.width(w); + } + //对桌面必须计算高度 + var tmp_style = sidebar.attr('style');// firefox下执行 sidebar.height()会改变style样式,这里缓存下执行前的style样式,执行完后重新赋给页面元素 + console.log("pym:parent iframe "+miframe+" sidebar.height:"+sidebar.height()+" h:"+h); + h=sidebar.height()>h?sidebar.height():h; + //IE下,把iframe的高度再减掉7,因为IE10及以下版本,计算的高度会比IE实际显示区域大,导致出现IE滚动条。 + /*h=h-ICTFRAME_CONST_IFRAME_HEIGHT_AJUST; + if(isIE){ + h=h-ICTFRAME_CONST_IFRAME_HEIGHT_AJUST_IE; + }*/ + sidebar.attr('style',tmp_style); + if (isDesktop) { + //pagemyIframe.attr("height",h); + if(cachedIframesObject.items(miframe).setMinHeight){ + var minHeight=Math.min(scrAvaHeight,h); + console.log("pym:parent iframe "+miframe+" window.screen.availHeight:"+scrAvaHeight+" viewport.height:"+viewport.height+" h:"+h+" minHeight:"+minHeight); + cachedIframesObject.items(miframe).setMinHeight(minHeight); + } + }else{ + //pagemyIframe.attr("height","100%");//去掉这里错误的设置,ipad上测试高度不正确 + var _h=h; + try{ + _h=pagemyIframe.contents().height(); + }catch(e){} + h=_h>h?_h:h; + if(cachedIframesObject.items(miframe).setMinHeight){ + var minHeight=Math.min(scrAvaHeight,h); + console.log("pym:parent iframe "+miframe+" window.screen.availHeight:"+scrAvaHeight+" viewport.height:"+viewport.height+" h:"+h+" minHeight:"+minHeight); + cachedIframesObject.items(miframe).setMinHeight(minHeight); + } + } + } + + if (body.hasClass("page-footer-fixed") === true && body.hasClass("page-sidebar-fixed") === true) { + if (content.height() < available_height) { + //content.attr('style', 'min-height:' + available_height + 'px !important'); + dealAddStyle(content,'min-height',available_height + 'px',true); + } + } else{ + if (body.hasClass("page-footer-fixed") === true && body.hasClass("page-sidebar-fixed") === false) { + if (content.height() < available_height) { + //content.attr('style', 'min-height:' + available_height + 'px !important'); + dealAddStyle(content,'min-height',available_height + 'px',true); + } + } else { + if (body.hasClass('page-sidebar-fixed')) { + height = _calculateFixedSidebarViewportHeight(); + } else { + // firefox下执行 sidebar.height()会改变style样式,这里缓存下执行前的style样式,执行完后重新赋给页面元素 + var tmp_style = sidebar.attr('style'); + // height = sidebar.height() + 20; + sidebar.attr('style',tmp_style); + var headerHeight = pheader.outerHeight(true); + var footerHeight = (!footer||footer.length<=0)?0:footer.outerHeight(true); + if ($(window).width() > 1024 && (height + headerHeight + footerHeight) < scrAvaHeight) { + height = scrAvaHeight - headerHeight - footerHeight; + } + } + if (height <= content.height()) {//这里为了避免内容区域很小的时候出现内容区域无法充满屏幕,把min-height修改为height + //content.attr('style', 'min-height:' + height + 'px !important'); + dealAddStyle(content,'min-height',height + 'px',true); + } + } + } + // 屏幕小尺寸时会隐藏边栏,这时菜单由小屏幕右上图标控制,当屏幕变化到大尺寸屏幕时, + // 需要按原菜单出现方式恢复菜单显示。 + var screenwidth = $(window).width(); + if(screenwidth >= zteframework_smallView){ + changeSiderBar(); + if($(".page-sidebar-menu li").css('display') != "none"){ + if ($('body').hasClass("page-sidebar-closed") && $(".sidebar-toggler").hasClass("close-by-viewportChange")) { + if( !isToggler ){ + $(".sidebar-toggler")[1].click(); + } + $(".sidebar-toggler").removeClass("close-by-viewportChange"); + } + } + } + else { + changeSiderBar(true); + } + } + var showIframe=function(iframe){ + var resize,pagemainIframe; + if (cachedIframes.count()>0) { + for (var i in cachedIframes.hash()) { + cachedIframes.replace(i,0); + var pagemyIframe=$('.page-content .page-content-body .'+i); + if(pagemyIframe&&pagemyIframe.length>0){ + if(iframe==i){ + pagemyIframe.show(); + cachedIframes.replace(i,1); + } else{ + if("page-mainIframe"===i){//2015年12月10日 wimax要求页面切换后删除没有配置cacheNum的缓存页面 + pagemainIframe=i; + pagemyIframe.attr("src",""); + pagemyIframe.remove(); + }else{ + pagemyIframe.hide(); + } + cachedIframes.replace(i,0); + } + } + } + } + if(pagemainIframe){ + delete cachedIframes._hash[pagemainIframe]; + delete cachedIframesObject._hash[pagemainIframe]; + } + if (!cachedIframes.contains(iframe)) { + cachedIframes.add(iframe,1); + //增加的iframe加载完毕后 停止加载中提示信息 + myIframe=$('.'+iframe); + myIframe.show(); + myIframe.load(function(){ + /*if (!isDesktop) { + if (resize) { + clearInterval(resize); + } + resize = setInterval(dealIframeHeight, 400,$(this)); + }*/ + ZteFrameWork.stopPageLoading(); + }); + } + } + var hidemenu=function(){ + $('.hor-menu').hide(); + dealAddStyle($('.page-content'),'margin-left','0px',true); + dealAddStyle($('.page-sidebar'),'display','none',true); + var fsiderMenu = $("#" + fMenuSiderDivId); + fsiderMenu.children().css('display' , 'none'); + } + var hideAlarmLight=function(){ + //$('#header_notification_bar').hide(); + //$('#header_notification_bar').empty(); + $('#header_notification_bar').html("<div>      </div>"); + } + var dealShownav=function(){ + var showNav=ZteFrameWork.getLocationURLParameter('showNav'); + if( showNav=="false"){ + zteframework_showNav = showNav; + hidemenu(); + hideAlarmLight(); + } + } + /* 点击菜单时,处理对应该菜单项的横,左菜单项 */ + var dealRelateMenu = function(source) { + // 点击子菜单时,对应的横竖菜单项也联动为选择样式,(高亮,箭头变化) + var panel = $('.zte-theme-panel'); + var navPosOption = $('.nav-pos-direction', panel).val(); + var targetsource = null; + var targetContainer = null; + if (navPosOption === "vertical") { + // 当前是左菜单,则处理对应的横菜单 + targetsource = $("#"+source.attr("id"), $("#main_hormenu")); + targetContainer = $(".header ul"); + } else if (navPosOption === "horizontal") { + var rtn = dealMgaBarRelated(source); + dealFMenuRelated(source , megaSiderDivId); + targetContainer = rtn[0]; + targetsource = rtn[1]; + }else if(navPosOption === zteframework_menu_fmenu){ + dealFMenuRelated(source , fMenuSiderDivId); + } + if (targetContainer) { + // 移除原有菜单项的活动及箭头样式 + targetContainer.children('li.active').removeClass('active'); + targetContainer.find('.arrow.open').removeClass('open'); + } + if (targetsource) { + // 增加活动及箭头样式 + targetsource.parents('li').each(function () { + $(this).addClass('iframe active'); + $(this).find('a > span.arrow').addClass('open'); + }); + targetsource.parents('li').addClass('active'); + if (navPosOption === "horizontal") { + if (targetsource.parent().parent().parent().is("li")) { + $('.arrow', targetsource.parent().parent().parent()).addClass("open"); + } + } + } + } + var dealMgaBarRelated = function(source){ + // 当前是横菜单,则处理对应的左菜单 + targetsource = $("#"+source.attr("id"), $("[class='page-sidebar-menu']")); + targetContainer = $("#page-sidebar-menu ul"); + // 将先前左菜单展开的子菜单收缩 + $("li.open",targetContainer).each(function() { + var style = $("ul.sub-menu", this).attr("style"); + if (style) { + $("ul.sub-menu", this).removeAttr("style"); + $(this).removeClass('open'); + } + }); + // 当前是横菜单,但在屏幕缩小的情况下显示的是tip垂直菜单,而横菜单是隐藏的,所以需额外处理横菜单 + if (source.parent().parent().parent().parent().attr("class").indexOf("page-sidebar-menu") >= 0) { + var tiptargetsource = $("#"+source.attr("id"), $("#main_hormenu")); + var tiptargetContainer = $(".header ul"); + tiptargetContainer.children('li.active').removeClass('active'); + tiptargetContainer.find('.arrow.open').removeClass('open'); + tiptargetsource.parents('li').each(function () { + $(this).addClass('iframe active'); + $(this).find('a > span.arrow').addClass('open'); + }); + tiptargetsource.parents('li').addClass('active'); + } + return [targetContainer ,targetsource ]; + } + var dealFMenuRelated = function(source , siderDivId ){ + var fsiderMenu = $("#" + siderDivId); + if(isMoreMenuItemClick){//更多菜单点击 , 临时方案,增加信号量,使用之后就置为false + isMoreMenuItemClick = false + }else if($(source).parents('li').hasClass('mega-menu-dropdown')){//F的横向菜单的点击 + var id = source.attr('id'); + //非被点击的一级菜单的二级菜单都不显示 + $('#' + siderDivId + '>li').hide(); + var level2Lis = $("a[hparentid= " + id + "]" , fsiderMenu).parent(); + level2Lis.show(); + if(level2Lis.length > 0){//把竖向菜单的收起放大按钮显示出来 + $('#' + siderDivId + '>li.sidebar-toggler-wrapper').show(); + } + if($("a[hparentid= " + id + "]" , fsiderMenu).length > 0){ //有子孙菜单时,把F菜单的竖菜单显示出来 + dealFSidermenu(source ,siderDivId ); + }else{//否则隐藏竖菜单 + fsiderMenu.css('display','none'); + $("body").addClass("page-full-width"); + $(".page-content").css("marginLeft", _sidebarWidth); + } + + }else{//F菜单的竖向菜单点击 + //处理一种特殊情况,告警灯打开新页面,所有的菜单都不出现,因此,虽然这个source在竖菜单,但竖菜单这个时候实际上是没有显示的 + if( zteframework_showNav == "true") { + $('#' + siderDivId + '>li').hide(); + var lis = $(source).parents('li'); + var id = lis.eq(lis.length-1).children( 'a' ).attr('hparentid'); + //var id = $(source).parents('li').children('a').attr('hparentId'); + var level2Lis = $("a[hparentid=" + id + "]" , fsiderMenu).parent(); + level2Lis.show(); + if(level2Lis.length > 0) {//把竖向菜单的收起放大按钮显示出来 + $('#'+ siderDivId + '>li.sidebar-toggler-wrapper').show(); + } + //$('#' + siderDivId + '>li')[0].show(); + dealFSidermenu(source , siderDivId); + } + } + } + var dealFSidermenu = function(source , siderDivId){ + var fsiderMenu = $("#" + siderDivId); + fsiderMenu.css('display','block'); + $('ul.sub-menu',fsiderMenu).css('display','block'); + $('.arrow',fsiderMenu).addClass('open'); + $("body").removeClass("page-full-width"); + if ($('body').hasClass("page-sidebar-closed")) { + $(".page-content").css("marginLeft", _sidebarCollapsedWidth); + } else { + $(".page-content").css("marginLeft", _sidebarWidth); + } + var href = source.attr("href"); + $('li.iframe' ,fsiderMenu ).removeClass('active'); + var selectedIframeLi = $("a[href ='" + href + "']" ,fsiderMenu ).parent(); + selectedIframeLi.addClass('active'); + selectedIframeLi.parent().parent().addClass("open").addClass("active"); + selectedIframeLi.parent().css('display','block'); + selectedIframeLi.parent().parent().children('a').children('.arrow').addClass('open'); + } + var dealMenuItemClick=function(source,e,menuContainerStr){ + var url = source.attr("href"); + if(!url||url.length<2) + return; + e.preventDefault(); + if(!_isClicked){//导航情况下,首先要模拟点开菜单分组 + _isClicked=true;//如果菜单有子菜单点击一次来展开子菜单,注意这个信号量的变化,避免死循环 + var mainMenu=source.parents('li').last(); + if(!mainMenu.hasClass('open')){ + dealLiAClick(mainMenu.children('a:eq(0)')); + } + } + if(menuContainerStr&&menuContainerStr.length>0){ + var menuContainer = $('.'+menuContainerStr+' ul'); + + menuContainer.children('li.active').removeClass('active'); + // menuContainer.children('arrow.open').removeClass('open'); + //menuContainer.find('.arrow.open').addClass('open'); + } + source.parents('li').each(function () { + $(this).addClass('iframe active'); + $(this).children('a > span.arrow').addClass('open'); + }); + source.parents('li').addClass('active'); + // 处理点击菜单对应的横或左菜单项的选择样式 + dealRelateMenu(source); + if(menuContainerStr&&menuContainerStr.length>0){ + if ($(window).width() <= 991 && $('.'+menuContainerStr).hasClass("in")) { + $('.navbar-toggle').click(); + } + } + if(dealMultTabPage(source)) + return true; + dealScrollTo(); + var breadmenuID=e.data&&e.data.breadcrumbBtnMenuItem&&e.data.breadcrumbBtnMenuItem.length>0?e.data.breadcrumbBtnMenuItem:""; + if(breadmenuID.length>0){//面包削导航来的,只需要重新生成面包削即可 + //找到更多菜单按钮 + var moreMenuItem = $('#' + breadmenuID , $('#pageableDiv')); + if( moreMenuItem.length == 0 ){ + moreMenuItem = $('#' + breadmenuID , $('.more-botton-zone')); + } + dealBreadcrumbBtnMenuItemClick(moreMenuItem,e); + //dealBreadcrumb(source,false,e); + }else{//非面包削导航来的, + dealstartPageLoading(); + if(dealIframe(source,e))//当返回true时说明是正常加载iframe了,否则面包削不能切换 + dealBreadcrumb(source,false,e); + } + //dealShownav(); + }; + var dealMenuItemGetFocus=function(source,e,menuContainerStr){ + var url = source.attr("href"); + if(!url||url.length<2) + return; + e.preventDefault(); + if(!_isClicked){//导航情况下,首先要模拟点开菜单分组 + _isClicked=true;//如果菜单有子菜单点击一次来展开子菜单,注意这个信号量的变化,避免死循环 + var mainMenu=source.parents('li').last(); + dealLiAClick(mainMenu.children('a:eq(0)')); + } + if(menuContainerStr&&menuContainerStr.length>0){ + var menuContainer = $('.'+menuContainerStr+' ul'); + + menuContainer.children('li.active').removeClass('active'); + menuContainer.children('arrow.open').removeClass('open'); + } + source.parents('li').each(function () { + $(this).addClass('iframe active'); + $(this).children('a > span.arrow').addClass('open'); + }); + source.parents('li').addClass('active'); + + if(menuContainerStr&&menuContainerStr.length>0){ + if ($(window).width() <= 991 && $('.'+menuContainerStr).hasClass("in")) { + $('.navbar-toggle').click(); + } + } + }; + //处理iframe的核心处理类,逻辑较为复杂,注意各种参数的处理 + var dealIframe=function(aObject,e){ + _hashSource=""; + var url = aObject.attr("href"); + if(!url||url.length<2) + return; + url=ZteFrameWork.handlBaseURL(url); + //-----------2015年9月21日新增V5中大O需要的按照实例(根据选择的系统实例变化url的ip和端口地址)进行动态切换菜单的功能 + var category= aObject.attr("category");//处理菜单中定义的Category属性 + if(category&&category.length>0){//处理Category属性 + var newIpPort=_menuCategorys.items(category); + if(newIpPort&&newIpPort.ipPort&&newIpPort.ipPort.trim()!=""){//如果找到了 + var newIpPortstr=ZteFrameWork.getDomainURL(newIpPort.ipPort);//去掉ip和port后多余的部分 + var urlipport=ZteFrameWork.getDomainURL(url); + console.log("old url:"+url); + url=newIpPortstr+url.replace(urlipport,""); + console.log("newIpPort:"+newIpPortstr+" newURL:"+url); + } + } + //------------ + dealstartPageLoading(); + var cacheNum= aObject.attr("cacheNum");//当第三方应用需要框架缓存曾经打开过的页面时使用。 + var shiftJS= aObject.attr("shiftJS");//当第三方应用不需要后面的href页面进行重新加载仅仅执行某个脚本打开某个功能时使用 + var _iframeName= aObject.attr("iframeName");//对有些第三方应用设置了顶层frame名字的,这个必须设置 + var _iframeAutoScroll= aObject.attr("iframeAutoScroll");//设置iframe的滚动条是否出现,可以设置为auto,yes或者no,默认为no 不出现. + _iframeAutoScroll=!!_iframeAutoScroll?(_iframeAutoScroll==='yes'?'yes':_iframeAutoScroll==='auto'?'auto':'no'):'no'; + _xdomain= aObject.attr("xdomain");//对有些第三方应用如果跨域了,需要设置这个信任域属性,以便于来跨域通讯.这里取值是一个正则表达式 + _xdomain=_xdomain&&_xdomain.length>0?_xdomain:"*"; + var _cssfile= aObject.attr("cssSrc");//设置iframe中页面需要动态加载的css文件. + _cssfile=(_cssfile&&_cssfile.length>0)?_cssfile:""; + var _runShiftJS=""; + var pageContentBody=$('.page-content .page-content-body'); + var tabHtml=""; + var tabContentHtml=""; + var tabID=""; + var tabContentID=""; + var iframename=''; + function createIframe(pdiv,url,id,name,clsname,xdom,autoScroll){ + var pymParent = new pym.Parent(pdiv, url, {xdomain:xdom}); + pymParent.iframe.id=id; + pymParent.iframe.name=name; + //pymParent.iframe.setAttribute('display', "none"); + //pymParent.iframe.style.height="100%"; + //pymParent.iframe.setAttribute('height', "100%"); + pymParent.iframe.setAttribute('class', clsname); + pymParent.iframe.setAttribute('allowfullscreen',''); + pymParent.iframe.setAttribute('mozallowfullscreen',''); + pymParent.iframe.setAttribute('oallowfullscreen',''); + pymParent.iframe.setAttribute('msallowfullscreen',''); + pymParent.iframe.setAttribute('webkitallowfullscreen',''); + //pymParent.iframe.setAttribute('scrolling',autoScroll); + pymParent.iframe.setAttribute('onload', 'ZteFrameWork.SyncCSS(this,0,"'+_cssfile+'");ZteFrameWork.stopPageLoading();'); + cachedIframesObject.replace(id,pymParent);//缓存iframe对象实体 + pymParent.onMessage('height', function(he){ + console.log("The frame "+id+" receive message height is "+he); + var pagemyIframe=$('.page-content .page-content-body .'+id); + var h=Math.max(this.minHeight,he); + pagemyIframe.height(h); + }); + return pymParent; + }; + + if(cacheNum){//处理缓存iframe和iframename标签 + cacheNum="page-mainIframe"+cacheNum; + iframename="fraMain"+cacheNum; + }else{ + cacheNum="page-mainIframe"; + iframename="fraMain"; + } + iframename=!!_iframeName?_iframeName:iframename; + _iframe= cacheNum;//注意这里_iframe是一个全局变量 + + var miframe=_iframe==""?"page-mainIframe": _iframe; + var pagemyIframe=$('.page-content .page-content-body .'+miframe); + var nagivJS=e&&e.data&&e.data.action?e.data.action:""; + nagivJS=(!!nagivJS&&nagivJS.length>0)?(nagivJS.trim().toLowerCase()=="null"?nagivJS:"javascript:$('.page-content .page-content-body ."+miframe+"')[0].contentWindow."+nagivJS.trim()+";"):""; + nagivJS=nagivJS.trim(); + + _runShiftJS=(!!shiftJS&&shiftJS.length>0)?(shiftJS.trim().toLowerCase()=="null"?shiftJS:"javascript:$('.page-content .page-content-body ."+miframe+"')[0].contentWindow."+shiftJS+";"):""; + if(pagemyIframe&&pagemyIframe.length>0){//如果iframe已经添加了,则直接更改url或者执行切换或导航函数 + var src=pagemyIframe.attr("src"); + if((!!shiftJS||nagivJS.length>0)&&(src==url||src.split('?')[0]==url.split('?')[0])&& cacheNum!="page-mainIframe") { //url相同时,处理缓存shiftJS标签 + //这里shiftJS必须定义iframe中的页面定义到window上的函数; + //pagemyIframe.attr("scrolling",_iframeAutoScroll); + cachedIframesObject.items(miframe).settings.xdomain=_xdomain; + if(nagivJS.length>0&&nagivJS.toLowerCase()!="null") + _runShiftJS=nagivJS;//如果是nagivJS导航过来的,nagivJS优先级高于shiftJS,如果有nagivJS就用nagivJS替换_runShiftJS; 直接执行一次导航切换 + try{ + if(_runShiftJS.trim().toLowerCase()!="null") + eval(_runShiftJS); + }catch(e){ + if (e instanceof EvalError) { + console.log(e.name + " EvalError: " + e.message); + } else if (e instanceof SyntaxError) { + console.log(e.name + " SyntaxError: " + e.message); + }else if (e instanceof Error) { + if(e.name.toLowerCase().trim()=="typeerror") + { + //console.log($.i18n.prop('com_zte_ums_ict_framework_ui_clickTooFast')); + var parm={runShiftJS:_runShiftJS}; + pagemyIframe.one('load',parm,function(e){ + var runShiftJS=e&&e.data&&e.data.runShiftJS?e.data.runShiftJS:""; + if(runShiftJS.length>0&&runShiftJS.toLowerCase()!="null") + eval(runShiftJS);//点击太快了,页面没有加载完毕,那就加载完毕了再次执行 + }) + } + } + return false;//返回false 后续不再做其他动作了 + } + finally{ + ZteFrameWork.stopPageLoading(); + } + }else{//否则url不同,或者url相同但没有shiftjs + if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是代码导航过来的去掉url参数中的默认action动作 + url=url.split('?')[0];//去掉?参数,防止默认执行动作,只响应nagivJS指定的动作; + } + if(src.split('#')[0]!=url.split('#')[0])//如果相等说明是通过锚点导航的,真实url没有变化,对SPA应用比较普遍 + { + pagemyIframe.attr("src","");//url和src不同说明更换了页面,需要清空重新加载 + }else //if (src.trim()==url.trim()) //没有shiftjs并且url相同,说明不需要再次加载了,已经加载过了 + { + ZteFrameWork.stopPageLoading(); + } + pagemyIframe.attr("src",url); + + if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是nagivJS导航过来的,iframe加载完毕后执行一次导航切换脚本 + var parm={nagivJS:nagivJS}; + pagemyIframe.one('load',parm,function(e){ + var nagivJS=e&&e.data&&e.data.nagivJS?e.data.nagivJS:""; + if(nagivJS.length>0&&nagivJS.toLowerCase()!="null") + eval(nagivJS);//如果没有加载过,加载后也要执行跳转的函数 + }); + } + if(_cssfile.length>0&&_cssfile.toLowerCase()!="null"){//如果配置了cssSrc,每次切换都重新执行一边这个css文件,防止有遗漏 + parm={syncCSSJS:'ZteFrameWork.SyncCSS(this,10,"'+_cssfile+'");ZteFrameWork.stopPageLoading();'}; + pagemyIframe.one('load',parm,function(e){ + var syncCSSJS=e&&e.data&&e.data.syncCSSJS?e.data.syncCSSJS:""; + if(syncCSSJS.length>0&&syncCSSJS.toLowerCase()!="null") + eval(syncCSSJS); + }); + } + } + + }else{//否则添加新的iframe元素 overflow:visible; + if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是代码导航过来的去掉url参数中的默认action动作 + url=url.split('?')[0];//去掉?参数,防止默认执行动作,只响应nagivJS指定的动作; + } + var pdiv="pdiv_"+miframe; + if($("#"+pdiv).length<=0){//检查下,如果该div没有添加过就添加 + pageContentBody.append("<div id='"+pdiv+"'></div>"); + } + dealstartPageLoading(); + pymParent=createIframe(pdiv, url,miframe,miframe,miframe,_xdomain,_iframeAutoScroll); + pagemyIframe=$(pymParent.iframe); + + if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是nagivJS导航过来的,iframe加载完毕后执行一次导航切换 + var parm={nagivJS:nagivJS}; + pagemyIframe=$('.page-content .page-content-body .'+miframe); + if(pagemyIframe&&pagemyIframe.length>0){ + pagemyIframe.one('load',parm,function(e){ + var nagivJS=e&&e.data&&e.data.nagivJS?e.data.nagivJS:""; + if(nagivJS.length>0&&nagivJS.toLowerCase()!="null") + eval(nagivJS);//如果没有加载过,加载后也要执行跳转的函数 + }) + } + } + + } + showIframe(miframe); + ZteFrameWork.fixContentHeight(); // 调整高度 + return true; + } + // 处理边栏菜单 + var dealLiAClick=function(source){ + if (source.next().hasClass('sub-menu') == false) { + if ($('.btn-navbar').hasClass('collapsed') == false) { + $('.btn-navbar').click(); + } + return; + } + + if (source.next().hasClass('sub-menu always-open')) { + return; + } + var parent = source.parent().parent(); + var the = source; + var menu = $('.page-sidebar-menu'); + var sub = source.next(); + var autoScroll = menu.data("auto-scroll") ? menu.data("auto-scroll") : true; + var slideSpeed = menu.data("slide-speed") ? parseInt(menu.data("slide-speed")) : 200; + parent.children('li.open').children('a').children('.arrow').removeClass('open'); + parent.children('li.open').children('.sub-menu:not(.always-open)').slideUp(200); + parent.children('li.open').removeClass('open'); + var slideOffeset = -200; + if (sub.is(":visible")) { + $('.arrow', source).removeClass("open"); + source.parent().removeClass("open"); + sub.slideUp(slideSpeed, function () { + if (autoScroll == true && $('body').hasClass('page-sidebar-closed') == false) { + if ($('body').hasClass('page-sidebar-fixed')) { + + } else { + dealScrollTo(the, slideOffeset); + } + } + dealSidebarAndContentHeight(); + }); + } else { + $('.arrow', source).addClass("open"); + source.parent().addClass("open"); + sub.slideDown(slideSpeed, function () { + if (autoScroll == true && $('body').hasClass('page-sidebar-closed') == false) { + if ($('body').hasClass('page-sidebar-fixed')) { + dealScrollTo(the, slideOffeset); + } + } + dealSidebarAndContentHeight(); + }); + } + } + var dealSidebarMenu = function () {//这里注册和处理边栏菜单的各类点击事件 + $('.page-sidebar').on('click', 'li > a', function (e) { + if ($(this).next().hasClass('sub-menu') == false) { + if ($('.btn-navbar').hasClass('collapsed') == false) { + $('.btn-navbar').click(); + } + return; + } + if ($(this).next().hasClass('sub-menu always-open')) { + return; + } + dealLiAClick($(this)); + e.preventDefault(); + }); + + // 处理左边导航中的菜单连接,显示在iframe中 + $('.page-sidebar').on('click', ' li > a.iframe', function (e) { + //dealMenuItemClick($(this),e,"page-sidebar") + e.preventDefault(); + var menuItemID=$(this).attr("id"); + if(!!menuItemID&&menuItemID.length>0){ + _setLocationHash(menuItemID); + _hashSource="dhByInterface"; + }//else{ + _isClicked=true; + dealMenuItemClick($(this),e,"page-sidebar"); + //} + }); + // 处理更多菜单的菜单连接,显示在iframe中dropdown-menu + $('.page-breadcrumb').on('click', ' li > a.iframe', function (e) { + var url = $(this).attr("href"); + if(url.length<2) + return; + e.preventDefault(); + dealBreadcrumbBtnMenuItemClick($(this),e); + }); + // 处理可翻页更多菜单中的菜单连接,显示在iframe中dropdown-menu + $('#pageableDiv').on('click', ' div > a.iframe', function (e) { + var url = $(this).attr("href"); + if(url.length<2) + return; + e.preventDefault(); + dealBreadcrumbBtnMenuItemClick($(this),e); + }); + // 处理可翻页更多菜单中的菜单连接,显示在iframe中dropdown-menu + $('#pageableDiv').on('click', ' li > a.iframe', function (e) { + var url = $(this).attr("href"); + if(url.length<2) + return; + e.preventDefault(); + if(e.target){ + var tg=$("span",e.target); + tg=tg.length>0?tg[0]:e.target; + $(".open a>div>span",e.target.parentNode.parentNode.parentNode.parentNode.parentNode).replaceWith(tg.outerHTML); + } + dealBreadcrumbBtnMenuItemClick($(this),e); + }); + + // 处理header下拉菜单中的菜单连接,显示在iframe中 + $('.dropdown').on('click', ' li > a.iframe', function (e) { + var url = $(this).attr("href"); + if(url.length<2) + return; + e.preventDefault(); + dealScrollTo(); + dealstartPageLoading(); + + dealIframe($(this),e) + dealBreadcrumb($(this),false,e); + }); + } + var getSceneURL=function(url){ + if(url&&url.trim().length>0){ + url=url.trim(); + //url= + _sceneURLRootPath=_sceneURLRootPath+url; + } + } + var gurl="";//临时全局变量,存储当前加载的more菜单,如果加载过了,就不再加载了。下面的方法中会用到 + var moreMenusisLoaded=true; + var waittime=null; + var getBreadcrumbRightButtons=function(url,e){ + if (url.length<2){ + return; + } + url=ZteFrameWork.handlBaseURL(url); + if (gurl==url){ + if(e===true){ + $('#pageableDiv').show(); + }else if(e&&e.target&&e.currentTarget){ + var defaultDisplay=$(e.target).attr("defaultDisplay"); + defaultDisplay=(!defaultDisplay)?$(e.currentTarget).attr("defaultDisplay"):defaultDisplay; + if(defaultDisplay&&defaultDisplay.trim()=="false"){ + $('#pageableDiv').hide(); + }else{ + $('#pageableDiv').show(); + } + } + return; + + }else{ + gurl=url; + clearMoreOperations(); + } + //处理e参数,注意e可能为null + var breadmenuID=e&&e.data&&e.data.breadcrumbBtnMenuItem&&e.data.breadcrumbBtnMenuItem.length>0?e.data.breadcrumbBtnMenuItem:""; + breadmenuID=breadmenuID.length<=0?(e&&e.breadcrumbBtnMenuItem&&e.breadcrumbBtnMenuItem.length>0?e.breadcrumbBtnMenuItem:""):breadmenuID; + moreMenusisLoaded=false; + $.ajax({ + type: "GET", + cache: false, + url: url, + dataType: "html", + success: function (res) { + try{ + //$('.page-breadcrumb').append(res); + var resScriptsSriped = stripHtmlScripts(res); + //$('.page-breadcrumb').append(resScriptsSriped); + $('.more-botton-zone').children().remove(); + //V5新增逻辑,如果displayType = pageableDiv,那么就用滑动的DIV来显示更多菜单里面的内容,如果没有配置,或为其他值,就按原有方式显示 + var tempDiv = $('<div style="display:none"></div>'); + tempDiv.children().remove(); + tempDiv.append(resScriptsSriped); + + //获取UL属性 + var displayType = $('.dropdown-menu',tempDiv).attr('displayType'); + if( displayType && displayType != 'pageableDiv'){ + $('.more-botton-zone').append(resScriptsSriped); + $('#pageableDiv').hide(); + }else{ + var tempUl = $('.dropdown-menu',tempDiv); + if(tempUl.length>0){ + moreOperations(tempUl[0]); + if(e&&e.target&&e.currentTarget){ + var defaultDisplay=$(e.target).attr("defaultDisplay"); + defaultDisplay=(!defaultDisplay)?$(e.currentTarget).attr("defaultDisplay"):defaultDisplay; + if(defaultDisplay&&defaultDisplay.trim()=="false"){ + $('#pageableDiv').hide(); + }else{ + $('#pageableDiv').show(); + } + } + } + } + runHtmlScripts(res); + }catch(ex){ + }finally{ + moreMenusisLoaded=true; + } + groupButtonAuthentication(); + if(breadmenuID.length>0){//面包削导航来的,只需要重新生成面包削即可 + var menuitem=undefined; + var panel = $('.zte-theme-panel'); + var navPosOption = $('.nav-pos-direction', panel).val(); + //var items=$("a[id='"+breadmenuID+"']"); + var items = undefined; + if (navPosOption === "vertical"){ //从垂直菜单里面找 + items=$("#page-sidebar-menu a[id='"+breadmenuID+"']"); + + }else{//从水平菜单里面找 + items=$(".hor-menu a[id='"+breadmenuID+"']"); + } + if (!items || items.length < 1) { + items=$(".page-content a[id='"+breadmenuID+"']"); + } + if(items.length>0){ + for(var i=0;i<items.length;i++){ + if($(items[i]).parentsUntil('.more-botton-zone .btn-group').hasClass('dropdown-menu')){ + menuitem=$(items[i]); + break; + } + if($(items[i]).parentsUntil('#pageableDiv').hasClass('row1')){ + menuitem=$(items[i]); + break; + } + } + } + if(!!menuitem&&menuitem.length>0) + dealBreadcrumbBtnMenuItemClick(menuitem,e); + } + }, + error: function (xhr, ajaxOptions, thrownError) {//加载操作菜单失败!com_zte_ums_ict_framework_ui_loadmenuerror + $('.page-breadcrumb').append('<h4>'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>'); + moreMenusisLoaded=true; + } + }); + } + + //处理多tab也场景 ----redirect 该标签暂时保留,不建议使用了 + dealMultTabPage=function(clickedObject){ + var url = clickedObject.attr("href"); + if(!url||url.length<2) + return; + var redirect=clickedObject.attr("redirect"); //处理多tab页面的需求 + if (!!redirect&&redirect.length>0){ + var miframe=_iframe==""?"page-mainIframe": _iframe; + var pagemyIframe=$('.page-content .page-content-body .'+miframe); //.page-mainIframe + //var pagemyIframe=$('.page-content .page-content-body .page-mainIframe'); + var oldhref=""; + if(pagemyIframe&&pagemyIframe.length>0){ + oldhref=pagemyIframe.attr("src"); + if(url.split("?")[0]==oldhref.split("?")[0]) + { + eval(redirect); + dealBreadcrumb(clickedObject,false,e); + return true; + } + } + }; + return false; + }; + //处理主菜单面包削导航 + var globleCurrentBreadcrumb=""; + var globleCurrentMainMenuItemID=""; + var dhByBreadcrumb = false; + var dealBreadcrumb=function(clickedObject,notGenUID,e){//notGenUID为true就不重新生成id + var mbreadcrumb=$('.breadcrumbUl'); + ZteFrameWork.setPageTitle(clickedObject.find('span').text().trim()); + var clieckedObj= clickedObject.parent('li'); + if(clieckedObj.length == 0){ //分页式更多菜单,a链接的父亲是div + clieckedObj= clickedObject.parent('div'); + } + //如果点击的是F菜单的竖菜单,还需要找到横菜单上的对应父亲加入到clieckedObj + var navPosOption = $('.nav-pos-direction', panel).val(); + var parentid = clickedObject.attr('hparentid'); + var breadcrumGroupButtonSrc=clickedObject.attr("breadcrumGroupButtonSrc"); + globleCurrentMainMenuItemID=clickedObject.attr("id"); + var mhmtl=""; + var url=""; + var tempObj=null; + //var breadChangeType = e? (e.data ? e.data.breadChangeType:null):null; + if( dhByBreadcrumb ){ + mhmtl = dealClickBreadcrumb(clieckedObj); + dhByBreadcrumb = ""; + }else{ + while (clieckedObj&&clieckedObj.length>0){ + if(clieckedObj.children('a')){ + if(!notGenUID){ + url=ZteFrameWork.getUniqueID("aid");//+Math.floor(Math.random() * (new Date()).getTime()); + clieckedObj.children('a').attr("name",url); + }else{ + url=clieckedObj.children('a').attr("name"); + } + tempObj=clieckedObj.clone(); + tempObj.children('a').removeClass('iframe'); + tempObj.children('a').removeClass('active'); + tempObj.children('a').attr("href","javascript:ZteFrameWork.goToURL('"+url+"');"); + var arrowdown = $(".fa-angle-down", tempObj.children('a')); + if (arrowdown) { + arrowdown.remove(); + } + if(tempObj.children('a').length>0){ + mhmtl=tempObj.children('a')[0].outerHTML+"<i class='fa fa-angle-right'></i>"+mhmtl; + } + //如果是F菜单和横菜单的子竖菜单点击,需要做特殊处理 + if( clieckedObj.parent('ul').attr('id') == fMenuSiderDivId || clieckedObj.parent('ul').attr('id') == megaSiderDivId){ + var id = clieckedObj.children( 'a' ).attr('hparentid'); + //判断是F菜单还是横菜单 + var megaMenu = null; + if(navPosOption == zteframework_menu_horizontal){ + magaMenu = $('#'+megaDivId); + }else if(navPosOption == zteframework_menu_fmenu){ + magaMenu = $('#'+fMenuMegaDivId); + } + clieckedObj = $("a[id=" + id + "]" , magaMenu).parent('li'); + }else{ + clieckedObj=clieckedObj.parents('li'); + } + } + } + if(clieckedObj[0]&&clieckedObj[0].length>0) { + mhmtl=clieckedObj.children('a')[0].outerHTML+"<i class='fa fa-angle-right'></i>"+mhmtl; + } + } + mbreadcrumb.empty(); + $('.more-botton-zone').empty(); + globleCurrentBreadcrumb=mhmtl; + store("globleCurrentBreadcrumb",globleCurrentBreadcrumb); + mbreadcrumb.append(mhmtl); + if(breadcrumGroupButtonSrc&&breadcrumGroupButtonSrc.length>0){ + getBreadcrumbRightButtons(breadcrumGroupButtonSrc,e); + }else{ + $('#pageableDiv').hide(); + } + + }; + //面包屑发起的点击,就不重新生成面包屑,只是把该面包屑的后续节点移出。 + var dealClickBreadcrumb = function(clieckedObj){ + var index = globleCurrentBreadcrumb.indexOf(clieckedObj.children('a').attr("name")); + if( index > -1 ){//截取 + var indexofSign = globleCurrentBreadcrumb.indexOf("<i class='fa fa-angle-right'>",index); + var newBreadcrumb = globleCurrentBreadcrumb.substring(0,indexofSign) + "<i class='fa fa-angle-right'></i>"; + return newBreadcrumb; + } + } + //处理面包削中菜单点击后的导航(更多菜单的面包屑) + var dealBreadcrumbBtnGroupMenus=function(clickedObject,notGenUID , e ){ + var mbreadcrumb=$('.breadcrumbUl'); + var clieckedObj= clickedObject.parent(); + var breadcrumGroupButtonSrc=clickedObject.attr("breadcrumGroupButtonSrc"); + var mhmtl=""; + var url=""; + var tempObj=null; + var menuid=clickedObject.attr("id"); + if (!breadcrumbBtnMenus.contains(menuid)) {//把当前面包削中的菜单id和该子菜单对应的父菜单关联缓存起来 + breadcrumbBtnMenus.add(menuid,globleCurrentMainMenuItemID); + } + while (clieckedObj&&clieckedObj.length>0){ + tempObj=clieckedObj.clone(); + if(tempObj.children('a')){ + tempObj.children('a').removeClass('iframe'); + url=tempObj.children('a').attr("href"); + tempObj.children('a').attr("onclick","ZteFrameWork.openbreadcrumbLink($(this),event);"); + var tempdiv = tempObj.children('a').children('div'); + if( tempdiv.length > 0 ){ + var innerofDiv = tempdiv[0].innerHTML; + tempdiv.remove(); + tempObj.children('a')[0].innerHTML = innerofDiv; + } + if(tempObj.children('a').length>0){ + mhmtl=tempObj.children('a')[0].outerHTML+"<i class='fa fa-angle-right'></i>"+mhmtl; + } + clieckedObj=clieckedObj.parents('li'); + } + + } + if(clieckedObj[0]&&clieckedObj[0].length>0) { + mhmtl=clieckedObj.children('a')[0].outerHTML+"<i class='fa fa-angle-right'></i>"+mhmtl; + } + + if(breadcrumGroupButtonSrc&&breadcrumGroupButtonSrc.length>0){ + getBreadcrumbRightButtons(breadcrumGroupButtonSrc,true); + }else{ + $('#pageableDiv').hide(); + } + mbreadcrumb.empty(); + var category= clickedObject.attr("category");//处理菜单中定义的Category属性 + if(category&&category.length>0){//处理Category属性 + var newIpPort=_menuCategorys.items(category); + if(newIpPort&&newIpPort.ipTitle&&newIpPort.ipTitle.trim()!=""){//如果找到了 + mhmtl=newIpPort.ipTitle+'<i class="fa fa-angle-right"></i>'+mhmtl; + } + } + mhmtl=globleCurrentBreadcrumb+mhmtl; + mbreadcrumb.append(mhmtl); + }; + var isMoreMenuItemClick = false; + var dealBreadcrumbBtnMenuItemClick=function(clickObj,e){ + dealScrollTo(); + var menuItemID=clickObj.attr("id"); + if(!!menuItemID&&menuItemID.length>0){ + _setLocationHash(menuItemID); + var breadmenuID=e&&e.data&&e.data.breadcrumbBtnMenuItem&&e.data.breadcrumbBtnMenuItem.length>0?e.data.breadcrumbBtnMenuItem:""; + _hashSource=breadmenuID&&breadmenuID.length>0?"":"dhByInterface";//hash进来的,不是导航进来的。 + } + if(!(e&&e.breadcrumbBtnMenuItem&&e.breadcrumbBtnMenuItem.length>0)){//如果仅仅是tab跳转设置bread进来的,就框架不处理菜单点击,直接重新建立bread即可 + dealstartPageLoading(); + dealIframe(clickObj,e); + } + dealBreadcrumbBtnGroupMenus(clickObj,false,e); + } + // 固定边栏布局时计算边栏高度. + var _calculateFixedSidebarViewportHeight = function () { + var viewport = _getViewPort(); + var sidebarHeight =viewport.height - $('.header').height() + 1; + if ($('body').hasClass("page-footer-fixed")) { + sidebarHeight = sidebarHeight - (!$('.footer')||$('.footer').length<=0)?0:$('.footer').outerHeight(); + } + return sidebarHeight; + } + // 处理固定边栏 + var dealFixedSidebar = function () { + var menu = $('.page-sidebar-menu'); + if (menu.parent('.slimScrollDiv').size() === 1) { + menu.removeAttr('style'); + $('.page-sidebar').removeAttr('style'); + } + + if ($('.page-sidebar-fixed').size() === 0) { + dealSidebarAndContentHeight(); + return; + } + + var viewport = _getViewPort(); + if (viewport.width >= zteframework_smallView) { + var sidebarHeight = _calculateFixedSidebarViewportHeight(); + dealSidebarAndContentHeight(); + } + } + // 固定边栏时处理菜单 hover 效果. + var dealFixedSidebarHoverable = function () { + if ($('body').hasClass('page-sidebar-fixed') === false) { + return; + } + $('.page-sidebar').off('mouseenter').on('mouseenter', function () { + dealSiderBarMouseenter(); + }); + $('.page-sidebar').off('mouseleave').on('mouseleave', function () { + dealSiderBarMouseLeave(); + }); + } + var dealSiderBarMouseenter=function(){ + var body = $('body'); + var siderbar=$('.page-sidebar'); + if ((body.hasClass('page-sidebar-closed') === false || body.hasClass('page-sidebar-fixed') === false) || $(this).hasClass('page-sidebar-hovering')) { + return; + } + body.removeClass('page-sidebar-closed').addClass('page-sidebar-hover-on'); + var siderbartoggle=$('.sidebar-toggler'); + + if (body.hasClass("page-sidebar-reversed")) { + siderbar.width(_sidebarWidth); + dealSiderBarWidthChange(); + } else { + siderbar.addClass('page-sidebar-hovering'); + siderbar.animate({ + width: _sidebarWidth + }, 350, '', function () { + siderbar.removeClass('page-sidebar-hovering'); + dealSiderBarWidthChange(); + }); + } + } + var dealSiderBarMouseLeave=function(){ + var body = $('body'); + if ((body.hasClass('page-sidebar-hover-on') === false || body.hasClass('page-sidebar-fixed') === false) || $(this).hasClass('page-sidebar-hovering')) { + return; + } + var siderbar=$('.page-sidebar'); + var siderbartoggle=$('.sidebar-toggler'); + if (body.hasClass("page-sidebar-reversed")) { + body.addClass('page-sidebar-closed').removeClass('page-sidebar-hover-on'); + siderbar.width(_sidebarCollapsedWidth); + if(siderbartoggle){ + siderbartoggle.removeAttr('style'); + } + dealSiderBarWidthChange(); + } else { + siderbar.addClass('page-sidebar-hovering'); + siderbar.animate({ + width: _sidebarCollapsedWidth + }, 350, '', function () { + body.addClass('page-sidebar-closed').removeClass('page-sidebar-hover-on'); + dealSiderBarWidthChange(); + siderbar.removeClass('page-sidebar-hovering'); + if(siderbartoggle){ + siderbartoggle.removeAttr('style'); + } + }); + } + + } + //处理style css + var dealAddStyle=function(element, property, value, important) { + var styleText=element.attr('style')?element.attr('style'):""; + styles=styleText.split(";"); + var find=""; + for(i=0;i<styles.length;i++){ + if(styles[i].indexOf(property)>=0){ + find=styles[i];//看是否已经添加过,如果添加过就需要替换掉 + break; + } + } + styleText=find.length>0?styleText.replace(find,""):styleText; + styleText=(styleText + ';'+property + ':' + value + ((important) ? ' !important' : '') + ';').replace(/;;/g,";"); + element.attr('style',styleText ); + } + var dealSiderBarWidthChange=function(){ + + } + // 处理边栏菜单切换时的关闭和隐藏. + var dealSidebarToggler = function () { + var viewport = _getViewPort(); + if (getCookie('sidebar_closed') === '1' && viewport.width >= zteframework_smallView) { + $('body').addClass('page-sidebar-closed'); + } + $('.page-sidebar, .sidebar-toggler').on('click', '.sidebar-toggler', function (e) { + e.preventDefault(); + var body = $('body'); + var sidebar = $('.page-sidebar'); + if(body.hasClass('page-sidebar-closed')){ + $(this).removeAttr('style'); + } + } ); + $('.page-sidebar, .header').on('click', '.sidebar-toggler', function (e) { + var body = $('body'); + var sidebar = $('.page-sidebar'); + if ((body.hasClass("page-sidebar-hover-on") && body.hasClass('page-sidebar-fixed')) || sidebar.hasClass('page-sidebar-hovering')) { + body.removeClass('page-sidebar-hover-on'); + sidebar.css('width', '').hide().show(); + dealSidebarAndContentHeight(); //fix content & sidebar height + setCookie('sidebar_closed', '0'); + dealSiderBarWidthChange(); + e.stopPropagation(); + runResponsiveHandlers(); + return; + } + $(".sidebar-search", sidebar).removeClass("open"); + var panel = $('.zte-theme-panel'); + var sidebarPosOption = $('.sidebar-pos-option', panel).val(); + var pcontent = $("[class='page-content']"); + if (body.hasClass("page-sidebar-closed")) { + body.removeClass("page-sidebar-closed"); + if (body.hasClass('page-sidebar-fixed')) { + sidebar.css('width', ''); + } + setCookie('sidebar_closed', '0'); + pcontent.css("marginLeft",_sidebarWidth); + dealSiderBarWidthChange(); + } else { + body.addClass("page-sidebar-closed"); + $(this).removeAttr('style'); + setCookie('sidebar_closed', '1'); + pcontent.css("marginLeft", _sidebarCollapsedWidth); + dealSiderBarWidthChange(); + } + //针对侧边栏伸缩的情况需加入对.page-content的判断。 + dealSidebarAndContentHeight(true); + runResponsiveHandlers(); + }); + } + // 处理水平菜单 + var dealHorizontalMenu = function () { + $('.header').on('click', '.hor-menu .hor-menu-search-form-toggler', function (e) { + if ($(this).hasClass('off')) { + $(this).removeClass('off'); + $('.header .hor-menu .search-form').hide(); + } else { + $(this).addClass('off'); + $('.header .hor-menu .search-form').show(); + } + e.preventDefault(); + }); + // 处理水平菜单 处理header下拉菜单中的菜单连接,显示在iframe中 + $('.header').on('click', ' li > a.iframe', function (e) { + //dealMenuItemClick($(this),e,"header"); + e.preventDefault(); + var menuItemID=$(this).attr("id"); + if(!!menuItemID&&menuItemID.length>0){ + _setLocationHash(menuItemID); + _hashSource="dhByInterface"; + }//else{ + _isClicked=true; + dealMenuItemClick($(this),e,"header"); + //} + }); + //处理TAB点击 + $('.header').on('click', '.hor-menu a[data-toggle="tab"]', function (e) { + e.preventDefault(); + var nav = $(".hor-menu .nav"); + var active_link = nav.find('li.current'); + $('li.active', active_link).removeClass("active"); + $('.selected', active_link).remove(); + var new_link = $(this).parents('li').last(); + new_link.addClass("current"); + new_link.find("a:first").append('<span class="selected"></span>'); + }); + } + // 增加一个对服务端的心跳 + var doHeartbeat = function() { + //心跳超时次数 + var heartBeatTimes = 0; + return setInterval(function() { + var userName; + if( userName == null ){ + var userName = ZteFrameWork_conf.userName; + } + var heartUrl = FrameConst.REST_HEARTBEAT + "?username=" + encodeURIComponent(userName); + $.ajax(heartUrl, { + dataType : "text", + cache : false + }).done(function(data) { + // if (data != "true") { //收到不属于取值范围内的回复,说明出现不可预知情况,取消心跳。是原framework.js中的逻辑,比较奇怪,先保留注释。 + // disableHeartbeat(); + // } + //收到心跳回应消息,心跳超时次数置0 + if( data == "true" ){ + heartBeatTimes = 0; + } + }); + heartBeatTimes++; + //心跳超时6次即1分钟,转到登录界面,认为链路断。 + if(heartBeatTimes >= 6){ + disableHeartbeat(); + //console.log(com_zte_ums_aos_framework_ui_heartbeat_timeout); + bootbox.alert($.i18n.prop('com_zte_ums_aos_framework_ui_heartbeat_fail'), function () { + window.location.replace("login.html"); + }); + } + }, 10000); + }; + if( FrameConst.do_heartbeat ){ + var heartbeatTimer = doHeartbeat(); + } + window.enableHeartbeat = function() { + if (!heartbeatTimer) { + //重新启动心跳功能,心跳超时次数置0 + heartBeatTimes = 0; + heartbeatTimer = doHeartbeat(); + return "Enabled"; + } + return "Already enabled!"; + }; + window.disableHeartbeat = function() { + if (heartbeatTimer) { + clearInterval(heartbeatTimer); + heartbeatTimer = null; + return "Disabled"; + } + return "Already disabled!"; + }; + window.doLogout = function(){ + window.location=FrameConst.REST_LOGOUT; + }; + //处理ict注销确认 + $('#trigger_logout').click(function(){ + bootbox.confirm($.i18n.prop('com_zte_ums_ict_framework_ui_confirmlogout'), function(result) { //你确认要注销吗? + if(result){ + doLogout(); + } + }); + }); + // Handle full screen mode toggle + var isscreenFull=false; + var dealFullScreenMode = function() { + // 处理全屏事件 + function toggleFullScreen() { + if(!screenfull.supportsFullScreen){//不支持全屏 + if (isIE&&typeof window.ActiveXObject !== "undefined") { // Older IE. + var wscript = new ActiveXObject("WScript.Shell"); + if (wscript !== null) { + wscript.SendKeys("{F11}"); + isscreenFull=!isscreenFull; + } + }else{ + isscreenFull=screenfull.supportsFullScreen; + }; + }else{ + screenfull.isFullScreen?screenfull.exitFullScreen():screenfull.requestFullScreen(); + isscreenFull= screenfull.isFullscreen; + } + setTimeout(function(){ + if(isscreenFull){ + $("#fullscreen_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_exitfullscreen')); + }else{ + $("#fullscreen_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_fullscreen')); + } + },500); + } + + $('#trigger_fullscreen').click(function() { + toggleFullScreen(); + }); + } + //清理当前正在显示的iframe之外缓存的iframe, + var dealClearCachedIframes=function(isall){ + if (cachedIframes.count()>0) { + for (var i in cachedIframes.hash()) { + var pagemyIframe=$('.page-content .page-content-body .'+i); + if(pagemyIframe&&pagemyIframe.length>0){ + if(isall==true){ + pagemyIframe.attr("src",""); + pagemyIframe.remove(); + }else if(i!=_iframe) + pagemyIframe.attr("src",""); + pagemyIframe.remove(); + } + } + } + cachedIframes.clear(); + if (cachedIframesObject.count()>0) {//清理缓存的iframe实体对象。 + for (var i in cachedIframesObject.hash()) { + if(i!=_iframe) + cachedIframesObject.remove(i); + } + } + } + var lastSelectedLayout = ''; + var dealTheme = function () { + var panel = $('.zte-theme-panel'); + if ($('body').hasClass('page-boxed') == false) { + $('.layout-option', panel).val("fluid"); + } + $('.sidebar-option', panel).val("default"); + $('.language-option', panel).val(defaultLanage); + $('.header-option', panel).val("fixed"); + $('.footer-option', panel).val("default"); + if ( $('.sidebar-pos-option').attr("disabled") === false) { + $('.sidebar-pos-option', panel).val(ZteFrameWork.isRTL() ? 'right' : 'left'); + } + var _resetLayout = function () { + dealResetLayout(); + } + var _setLayout = function () { + dealSetLayout(); + } + var setColor = function (color) { + var color_ = (ZteFrameWork.isRTL() ? color + '-rtl' : color); + $('#style_color').attr("href", ICTFRAME_CONST_THEME_COLOR_CSS_PREFFIX + color_ + ".css"); + setCookie('style_color', color); + syncColorCSS(); + } + $('.toggler', panel).click(function () { + $('.toggler').hide(); + $('.toggler-close').show(); + $('.zte-theme-panel > .theme-options').show(); + }); + + $('.toggler-close', panel).click(function () { + $('.toggler').show(); + $('.toggler-close').hide(); + $('.zte-theme-panel > .theme-options').hide(); + }); + $('.theme-colors > ul > li', panel).click(function () { + var color = $(this).attr("data-style"); + setColor(color); + $('ul > li', panel).removeClass("current"); + $(this).addClass("current"); + }); + $('.layout-option,.header-option, .sidebar-option, .footer-option, .sidebar-pos-option, .nav-pos-direction', panel).change(_setLayout); + if (getCookie('style_color') != undefined) { + setColor(getCookie('style_color')); + } + $('.language-option', panel).change(function(){ + var languageOption = $('.language-option', panel).val(); + setCookie('language-option', languageOption); + window.location.reload(); + }); + } + var dealResetLayout = function () { + $("body"). + removeClass("page-boxed"). + removeClass("page-footer-fixed"). + removeClass("page-sidebar-fixed"). + removeClass("page-header-fixed"). + removeClass("page-sidebar-reversed"); + $('.header > .header-inner').removeClass("container"); + if ($('.page-container').parent(".container").size() === 1) { + $('.page-container').insertAfter('body > .clearfix'); + } + if ($('.footer > .container').size() === 1) { + $('.footer').html($('.footer > .container').html()); + } else if ($('.footer').parent(".container").size() === 1) { + $('.footer').insertAfter('.page-container'); + } + $('body > .container').remove(); + } + /* + * 此方法在客户端初始化和设置面板上选择菜单方向的时候用。 + * param navPosOption + */ + var dealNavPos = function(navPosOption) { + // 横竖边栏切换功能禁用,则返回 + var panel = $('.zte-theme-panel'); + if ($('.nav-pos-direction', panel).attr("disabled") == "disabled") { + return; + } + var sidermenu = $("#page-sidebar-menu"); + var hormenu = $("#main_hormenu"); + var sidermenu = $("#page-sidebar-menu"); + var hormenu = $("#main_hormenu"); + var horSiderMenu = $('#' + megaSiderDivId ); + var fhorMenu = $("#" + fMenuMegaDivId); + var fsiderMenu = $("#" + fMenuSiderDivId); + var pcontent = $("[class='page-content']"); + if (sidermenu && sidermenu.length > 0 && hormenu && hormenu.length > 0 && fhorMenu && fhorMenu.length > 0) { + if (navPosOption === zteframework_menu_horizontal) { + sidermenu.css('display','none');// 侧边栏隐藏 + fhorMenu.css('display','none'); + fsiderMenu.css('display','none'); + pcontent.css("marginLeft",0); + $("body").addClass("page-full-width");//调整内容显示 + hormenu.css("display", "block");//显示水平菜单栏 + // 导航位置为水平菜单时,边栏和边栏位置为默认和靠左,且将其切换功能禁用掉 + $('.sidebar-option', panel).val("default"); + $('.sidebar-option', panel).attr("disabled", true); + $('.sidebar-pos-option', panel).val("left"); + $('.sidebar-pos-option', panel).attr("disabled", true); + } else if (navPosOption === zteframework_menu_vertical ) { + $("body").removeClass("page-full-width"); + sidermenu.css('display','block');//侧边栏显示 + var body = $('body'); + if (body.hasClass("page-sidebar-closed")) { + pcontent.css("marginLeft", _sidebarCollapsedWidth); + } else { + pcontent.css("marginLeft", _sidebarWidth); + } + hormenu.css("display", "none");//隐藏水平菜单栏 + fhorMenu.css('display','none'); + fsiderMenu.css('display','none'); + horSiderMenu.css('display','none'); + $('.sidebar-option', panel).attr("disabled", false); + $('.sidebar-pos-option', panel).attr("disabled", false); + } else if(navPosOption === zteframework_menu_fmenu ){ + sidermenu.css('display','none');// 侧边栏隐藏 + hormenu.css("display", "none");//隐藏水平菜单栏 + fsiderMenu.css('display','none'); + fhorMenu.css('display','block'); + pcontent.css("marginLeft",0); + $("body").addClass("page-full-width");//调整内容显示 + // 导航位置为水平菜单时,边栏和边栏位置为默认和靠左,且将其切换功能禁用掉 + $('.sidebar-option', panel).val("default"); + $('.sidebar-option', panel).attr("disabled", true); + $('.sidebar-pos-option', panel).val("left"); + $('.sidebar-pos-option', panel).attr("disabled", true); + } + } + } + var dealSetLayout = function(){ + var panel = $('.zte-theme-panel'); + var layoutOption = $('.layout-option', panel).val(); + var languageOption = $('.language-option', panel).val(); + var headerOption = $('.header-option', panel).val(); + var footerOption = $('.footer-option', panel).val(); + var navPosOption = $('.nav-pos-direction', panel).val(); + dealNavPos(navPosOption); + var sidebarOption = $('.sidebar-option', panel).val(); + var sidebarPosOption = $('.sidebar-pos-option', panel).val(); + if (sidebarOption == "fixed" && headerOption == "default") { + alert($.i18n.prop('com_zte_ums_ict_framework_ui_fixedsidedefaultheaderError')); //页头不支持固定边栏,先固定页头才能固定边栏. + $('.header-option', panel).val("fixed"); + $('.sidebar-option', panel).val("fixed"); + sidebarOption = 'fixed'; + headerOption = 'fixed'; + } + if (sidebarOption == "fixed" && sidebarPosOption == "right") { + alert($.i18n.prop('com_zte_ums_ict_framework_ui_fixedsiderightpositionError')); //固定边栏情况下,边栏不能靠右。. + $('.sidebar-pos-option', panel).val("left"); + sidebarPosOption = 'left'; + } + dealResetLayout(); // reset layout to default state + if (layoutOption === "boxed") { + $("body").addClass("page-boxed"); + // set header + $('.header > .header-inner').addClass("container"); + var cont = $('body > .clearfix').after('<div class="container"></div>'); + // set content + $('.page-container').appendTo('body > .container'); + // set footer + if (footerOption === 'fixed') { + $('.footer').html('<div class="container">' + $('.footer').html() + '</div>'); + } else { + $('.footer').appendTo('body > .container'); + } + } + if (lastSelectedLayout != layoutOption) { + runResponsiveHandlers(); + } + lastSelectedLayout = layoutOption; + //header + if (headerOption === 'fixed') { + $("body").addClass("page-header-fixed"); + $(".header").removeClass("navbar-static-top").addClass("navbar-fixed-top"); + } else { + $("body").removeClass("page-header-fixed"); + $(".header").removeClass("navbar-fixed-top").addClass("navbar-static-top"); + } + //sidebar + if ($('body').hasClass('page-full-width') === false) { + if (sidebarOption === 'fixed') { + $("body").addClass("page-sidebar-fixed"); + } else { + $("body").removeClass("page-sidebar-fixed"); + } + } + //footer + if (footerOption === 'fixed') { + $("body").addClass("page-footer-fixed"); + } else { + $("body").removeClass("page-footer-fixed"); + } + //sidebar position + if (ZteFrameWork.isRTL()) { + if (sidebarPosOption === 'left') { + $("body").addClass("page-sidebar-reversed"); + $('#frontend-link').tooltip('destroy').tooltip({placement: 'right'}); + } else { + var pcontent = $("[class='page-content']"); + pcontent.css("marginLeft",0);//侧边栏靠右,则左边内容填充为0 + $("body").removeClass("page-sidebar-reversed"); + $('#frontend-link').tooltip('destroy').tooltip({placement: 'left'}); + } + } else { + if (sidebarPosOption === 'right') { + var pcontent = $("[class='page-content']"); + pcontent.css("marginLeft",0);//侧边栏靠右,则左边内容填充为0 + $("body").addClass("page-sidebar-reversed"); + $('#frontend-link').tooltip('destroy').tooltip({placement: 'left'}); + } else { + $("body").removeClass("page-sidebar-reversed"); + $('#frontend-link').tooltip('destroy').tooltip({placement: 'right'}); + } + } + dealSidebarAndContentHeight(); + dealFixedSidebar(); + dealFixedSidebarHoverable(); + dealSiderBarWidthChange(); + setCookie('layout-option', layoutOption); + setCookie('language-option', languageOption); + setCookie('header-option', headerOption); + setCookie('sidebar-option', sidebarOption); + setCookie('sidebar-pos-option', sidebarPosOption); + setCookie('nav-pos-direction', navPosOption); + } + var setCookie = function (key, value) { + if (store) { + store(key, value); + } + } + var getCookie = function (key) { + if (store) { + return store(key); + } else { + return undefined; + } + } + /*下面处理前进后退和锚点访问*/ + var _getLocationHash = function() { + return location.hash.replace("#_", ""); + } + /*统一入口设置锚点*/ + var _setLocationHash = function(menuItemID) { + location.hash = getLocationHashByMenuId(menuItemID); + } + var getLocationHashByMenuId = function(menuItemID){ + return "#_" + menuItemID; + } + // hash control + var loadCurrentHash = function(e,data){ + var locationhash = _getLocationHash(); //important + if(!!locationhash&&locationhash.length>0){ + if(_hashSource.trim()=="dhByInterface"){ + _hashSource=""; + }else{ + processChangedHash(locationhash,data); + } + } + } + // hash control 这种写法安全点 + var processChangedHash = function(path) { + var id = path; + var action = undefined; + var spIndex = path.indexOf("/"); + if(spIndex != -1) { + id = path.substring(0,spIndex); + action = path.substring(spIndex+1); + } + ZteFrameWork.goToURLByIDAndNewAction(id,action); + } + var syncColorCSS=function(){//注册皮肤切换事件处理函数,处理iframe中的皮肤切换 + var pagemyIframe=null; + if (cachedIframes.count()>0) { + for (var i in cachedIframes.hash()) { + pagemyIframe=$('.page-content .page-content-body .'+i); + if(pagemyIframe&&pagemyIframe.length>0){ + ZteFrameWork.SyncCSS(pagemyIframe[0],1,""); + } + } + } + } + var getCurrentVisibleIframe=function(){ + var pagemyIframe=null; + if (cachedIframes.count()>0) { + for (var i in cachedIframes.hash()) { + if(cachedIframes.items(i)===1){ + pagemyIframe=$('.page-content .page-content-body .'+i); + } + } + } + return pagemyIframe; + } + //处理跨域请求代理,通过该代理进行iframe间传递参数,注意这里的代理页面proxy.html必须部署到要跨域的对端域的服务器web根目录下 + var dealCrossProxy=function(ifrm,crossproxysrc,ifmHeadlins,flag){//crossproxysrc这个是proxy.html对应的url根路径 + var url=$.url(ZteFrameWork.getCurrentScript(document)); + var proxyHtmlPath=url.attr("directory")+"proxy/proxy.html"//这中情况适用于使用了该界面集成框架的应用系统 + var _ifmProxy=$('<iframe id="ifm_Proxy" name="ifm_Proxy" oldproxyorigin="'+crossproxysrc+'" src="'+crossproxysrc+proxyHtmlPath+'" style="border: 0px; margin: 0px; padding: 0px; width: 100%; display:none;" ></iframe>'); + var _ifm=$('#ifm_Proxy'); + _ifm.hide(); + var pageContentBody=$('.page-content .page-content-body'); + var linksrcs=new Array(); + var linksids=new Array(); + var linktyps=new Array(); + var _src=""; + for (i=0;i<ifmHeadlins.length;i++){ + if(typeof ifmHeadlins[i].link.href!== "undefined"){ + _src=ifmHeadlins[i].link.href; + linktyps.push("css"); + } + else if(typeof ifmHeadlins[i].link.src!== "undefined"){ + if(!!ifmHeadlins[i].link.src&&ifmHeadlins[i].link.src.length>0){ + _src=ifmHeadlins[i].link.src; + linktyps.push("javascriptfile"); + }else{ + _src=ifmHeadlins[i].link.text; + linktyps.push("javascripttext"); + } + }else{ + linktyps.push("undefined"); + } + linksrcs.push(_src); + linksids.push({"pos":ifmHeadlins[i].pos,"scope":ifmHeadlins[i].scope,"id":ifmHeadlins[i].link.id}); + } + var parm={iFrame:ifrm,cssLinktyps:linktyps,cssLinksrcs:linksrcs,cssLinkids:linksids,origin:crossproxysrc,flag:flag}; + if(_ifm&&_ifm.length<=0){//没有添加过 + _ifmProxy.appendTo(pageContentBody); + _ifmProxy.one('load',parm,function(e){ + var data={iFrame:e.data.iFrame,cssLinktyps:e.data.cssLinktyps,cssLinksrcs:e.data.cssLinksrcs,cssLinkids:e.data.cssLinkids,flag:flag}; + $('#ifm_Proxy')[0].contentWindow.postMessage(data,e.data.origin);//window.location.origin + }); + }else if(_ifm.attr("oldproxyorigin")!=crossproxysrc){//代理已经添加过了,看是否是同一个网站的代理,如果不是需要重新加载 + _ifm.attr("src",""); + _ifm.attr("oldproxyorigin",crossproxysrc); + _ifm.one('load',parm,function(e){ + var data={iFrame:e.data.iFrame,cssLinktyps:e.data.cssLinktyps,cssLinksrcs:e.data.cssLinksrcs,cssLinkids:e.data.cssLinkids,flag:flag}; + $('#ifm_Proxy')[0].contentWindow.postMessage(data,e.data.origin);//window.location.origin + }); + _ifm.attr("src",_ifmProxy.attr("src")); + }else{//已经添加过,直接触发消息发送即可 + var data={iFrame:parm.iFrame,cssLinktyps:parm.cssLinktyps,cssLinksrcs:parm.cssLinksrcs,cssLinkids:parm.cssLinkids,flag:flag}; + _ifm[0].contentWindow.postMessage(data,parm.origin);//window.location.origin + } + } + return { + init: function () { + if(zte_http_headers){ + store("zte_http_headers",zte_http_headers); + } + dealInit(); + dealResponsiveOnResize(); + dealResponsiveOnInit(); + dealClearCachedIframes(true); ////清理当前正在显示的iframe之外缓存的iframe, + breadcrumbBtnMenus.clear(); + dealFixedSidebar(); // deals fixed sidebar menu + dealFixedSidebarHoverable(); // deals fixed sidebar on hover effect + dealSidebarMenu(); // deals main menu + dealHorizontalMenu(); // deals horizontal menu + dealSidebarToggler(); // deals sidebar hide/show + dealTheme(); // deals style customer tool + dealSetLayout(); + $(function() { + $(window).on('hashchange',function(){ + loadCurrentHash(); + }); + }); + dealFullScreenMode(); // deals full screen + $("#header_dropdown_user").css('display','block'); + $("#com_zte_ums_ict_framework_img_netnumenLogo").css('display','inline'); + $("#com_zte_ums_ict_framework_ui_main_title").css('display','inline'); + handeCtxMenuitem(); + }, + //公开清理缓存的所有Iframe的方法:isALL==true则清理所有,否则清理当前正在显示的iframe之外缓存的iframe,。 + clearCachedIframes:function(isAll){ + dealClearCachedIframes(isAll); + }, + + setBaseURLRoot:function(ipportStr){//菜单url的跟ip和端口例如:http://10.74.151.122:21180 + if (store) { + store('baseURLRoot', ipportStr); + } + var url = $.url(ipportStr); + location.hash=url.attr('fragment'); + var auth=url.attr('query'); + if (store) { + store('baseURLRootAuth', auth); + } + }, + getBaseURLRoot:function(ipportStr){//菜单url的跟ip和端口例如:http://10.74.151.122:21180 + var rooturl=""; + if (store) { + rooturl=store('baseURLRoot'); + } + return !rooturl?"":rooturl; + }, + clearBaseURLRoot:function(){//菜单url的跟ip和端口例如:http://10.74.151.122:21180 + if (store) { + store('baseURLRoot', "",-1); + } + }, + setPageTitle:function(title){//设置页面标题 + $('title').html(title+" - "+gdocTitle); + }, + getLanguage:function(){//获取语言 + return ZteFrameWork_conf.acceptLanguage; + }, + + getLocationHash:function(){ + return _getLocationHash(); + }, + setSceneURLRootPath:function(sceneURLRootPath){ + if(sceneURLRootPath&&sceneURLRootPath.trim().length>0){//如果定义了场景的全局参数 + _sceneURLRootPath=sceneURLRootPath.trim(); + if(_sceneURLRootPath.charAt(_sceneURLRootPath.length-1)!='/') + { + _sceneURLRootPath=_sceneURLRootPath+'/'; + } + } + }, + //public function to add callback a function which will be called on window resize + addResponsiveHandler: function (func) { + responsiveHandlers.push(func); + }, + + hiddenAlarmLight:function(){ + hideAlarmLight(); + }, + + hiddenMenu:function(){ + hidemenu(); + }, + setBreadcrumbByMenuID:function(id){ + //var breaditem=$('#'+id); + var menuitem=undefined; + // var items=$("a[id='"+id+"']"); + var items = undefined; + var panel = $('.zte-theme-panel'); + var navPosOption = $('.nav-pos-direction', panel).val(); + if (navPosOption === "vertical"){ //从垂直菜单里面找 + items=$("#page-sidebar-menu a[id='"+id+"']"); + if (!items || items.length < 1) { + items=$(".page-content a[id='"+id+"']"); + } + }else if(navPosOption === zteframework_menu_horizontal){//从水平菜单里面找 + items=$("#main_hormenu a[id='"+id+"']"); + if(items.length == 0){ + //横菜单没有找到,再在横菜单的子菜单找一次 + items=$("#page-megachild-sidebar-menu a[id='"+id+"']"); + } + }else if(navPosOption === zteframework_menu_fmenu){ + items=$("#f_hormenu a[id='"+id+"']"); + if(items.length == 0){ + //横菜单没有找到,再在竖菜单找一次。 + items=$("#page-f-sidebar-menu a[id='"+id+"']"); + } + } + var isbreadcrumbMenuItem=false; + if(items.length>0){ + for(var i=0;i<items.length;i++){ + if($(items[i]).parentsUntil('.header-inner').hasClass('hor-menu')){ + menuitem=$(items[i]); + break; + }else if($(items[i]).parentsUntil('.page-container').hasClass('page-sidebar')){ + menuitem=$(items[i]); + break; + }else if($(items[i]).parentsUntil('.more-botton-zone .btn-group').hasClass('dropdown-menu')){ + menuitem=$(items[i]); + isbreadcrumbMenuItem=true; + break; + }else if($(items[i]).parentsUntil('#pageableDiv').hasClass('row1')){ + menuitem=$(items[i]); + isbreadcrumbMenuItem=true; + break; + } + } + } + + if(menuitem&&menuitem.length>0){ + if(isbreadcrumbMenuItem){ + dealBreadcrumbBtnGroupMenus(menuitem,false); + }else{ + dealBreadcrumb(menuitem,true,null); + } + }else{ + var breadcrumbBtnMenuItemParent=""; + if(!menuitem||menuitem.length<=0){//没有找到该菜单,可能是面包削中的,需要额外处理 + var menuItemID=id; + if (breadcrumbBtnMenus.contains(menuItemID)) {//有缓存 + breadcrumbBtnMenuItemParent="#"+breadcrumbBtnMenus.items(menuItemID); + menuitem=$(breadcrumbBtnMenuItemParent); + //_breadcrumbSource=true; + } + } + var parm=undefined; + if(breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){ + parm={breadcrumbBtnMenuItem:menuItemID}; + } + if(parm&&menuitem&&menuitem.length>0) { + dealBreadcrumb(menuitem,true,parm); + } + } + }, + setSiderbarCollapseWidth:function(width){ + _sidebarCollapsedWidth = width; + }, + getSiderbarCollapseWidth:function(){ + return _sidebarCollapsedWidth; + }, + setSidebarWidth:function(width){ + _sidebarWidth = width; + }, + getSidebarWidth:function(){ + return _sidebarWidth; + }, + //2015年10月26日新增动态切换菜单的功能,这里的菜单还需要再次更换菜单项访问的ip端口信息 + handlBaseURL:function(url){ + var baseURLRoot=ZteFrameWork.getBaseURLRoot(); + if (baseURLRoot.length>0) {//2015年10月26日新增动态切换菜单的功能,这里的菜单还需要再次更换菜单项访问的ip端口信息 + baseURLRoot=ZteFrameWork.getDomainURL(baseURLRoot);//去掉ip和port后多余的部分 + console.log("old a link href url:"+url); + url=baseURLRoot+url.replace(ZteFrameWork.getDomainURL(url),""); + console.log("baseURLRoot:"+baseURLRoot+" newURL:"+url); + }; + return url; + }, + + startPageLoading: function(message) { + dealstartPageLoading(message); + }, + stopPageLoading: function() { + dealstopPageLoading(); + }, + //public function to get a paremeter by name from URL + getLocationURLParameter: function (paramName,separator) { + var searchString = decodeURIComponent(window.location.search.substring(1)).toLowerCase(), + i, val, params = searchString.split(separator?separator:"&"); + paramName=paramName.toLowerCase(); + for (i = 0; i < params.length; i++) { + val = params[i].split("="); + if (val[0] == paramName) { + return unescape(val[1]); + } + } + return null; + }, + //public function to get a paremeter by name from URL + getURLParameter: function (paramName,url) { + var searchString = decodeURIComponent(url).toLowerCase(), + i, val, params = searchString.split("&"); + paramName=paramName.toLowerCase(); + for (i = 0; i < params.length; i++) { + val = params[i].split("="); + if (val[0] == paramName) { + return unescape(val[1]); + } + } + return null; + }, + // check for device touch support + isTouchDevice: function () { + return isTouch; + }, + getUniqueID: function(prefix) { + return prefix+'_' + Math.floor(Math.random() * (new Date()).getTime()); + }, + // check IE8 mode + isIE8: function () { + return isIE8; + }, + // check IE9 mode + isIE9: function () { + return isIE9; + }, + //check RTL mode + isRTL: function () { + return isRTL; + }, + getViewPort:function(){ + return _getViewPort(); + }, + // get layout color code by color name + getLayoutColorCode: function (name) { + if (layoutColorCodes[name]) { + return layoutColorCodes[name]; + } else { + return ''; + } + } , + fixContentHeight: function () { + dealSidebarAndContentHeight(); + }, + dealAtoIframe:function(aObj,event){ + var containerStr=aObj.parentsUntil('.page-container').hasClass('page-sidebar')?'page-sidebar':"";// + containerStr=aObj.parentsUntil('.header-inner').hasClass('hor-menu')?'header':containerStr; + dealMenuItemClick(aObj,event,containerStr); + _isClicked=false; + }, + getDomainURL:function(urlAddress){ + var url = $.url(urlAddress); + var protocol=url.attr('protocol'); + var host=url.attr('host'); + var port=url.attr('port'); + var crossOrign=protocol+"://"+host+(port.length>0?":"+port:""); + return crossOrign; + }, + getCurrentScript:function(doc) {//doc为 document对象 + /* 注意该功能在其他脚本中调用时出safari获取到的脚本路径为本方法所在脚本的路径, + 其他浏览器获取到的为调用该方法的脚本所在路径 + 取得正在解析的script节点 + */ + if(doc&&doc.currentScript) { //firefox 4+ + console.log("0、 "+doc.currentScript.src); + return doc.currentScript.src; + } + // 参考 https://github.com/samyk/jiagra/blob/master/jiagra.js + var stack; + try { + a.b.c(); //强制报错,以便捕获e.stack + } catch(e) {//safari的错误对象只有line,sourceId 或者高版本还有sourceURL + stack = e.stack; + if(e.sourceURL){//safari 浏览器没有e.stack但有e.sourceURL + stack=e.sourceURL; + }else if(!stack && window.opera){ + //opera 9没有e.stack,但有e.Backtrace,但不能直接取得,需要对e对象转字符串进行抽取 + stack = (String(e).match(/of linked script \S+/g) || []).join(" "); + } + console.log("1、 "+stack); + } + if(stack) { + /*e.stack最后一行在所有支持的浏览器大致如下: + *chrome23: + * at http://113.93.50.63/data.js:4:1 + *firefox17: + *@http://113.93.50.63/query.js:4 + *opera12: + *@http://113.93.50.63/data.js:4 + *IE10: + * at Global code (http://113.93.50.63/data.js:4:1) + */ + console.log("2、 "+stack); + stack = stack.split( /[@ ]/g).pop();//取得最后一行,最后一个空格或@之后的部分 + stack = stack[0] == "(" ? stack.slice(1,-1) : stack; + console.log("3、 "+stack); + return stack.replace(/(:\d+)?:\d+$/i, "");//去掉行号与或许存在的出错字符起始位置 + } + if(doc){ + var nodes = doc.getElementsByTagName("script"); //只在head标签中寻找 + for(var i = 0, node; node = nodes[i++];) { + if(node.readyState === "interactive") { + console.log("4、 "+(node.className = node.src)); + return node.className = node.src; + } + } + } + }, + /*下面的flag为0表示默认不触发孙子iframe中的onload事件,为1表示要触发,flag为10则对cssSrc重复执行,其他不做重复执行*/ + SyncCSS:function(ifrm,flag,cssSrc){//将主框架中的皮肤css应用到打开的iframe页面中 + if(!ifrm)return; + var ifmHeadlins = new Array(); + if(cssSrc&&cssSrc.length>0&&cssSrc.endWith(".css")){ + var _div = $('<a href="'+cssSrc+'"></a>'); + var csslink=document.createElement("link"); + csslink.href=_div[0].href;//这里同步菜单定义中cssSrc属性指定的css文件到iframe + _div = null; + csslink.rel="stylesheet"; + csslink.type="text/css"; + csslink.id="ifram_csssrc"; + ifmHeadlins.push({"pos":"head","scope":"all","link":csslink});//pos是添加到子iframe中的位置,scope是子窗体作用返回,one表示直接子窗体,all表示嵌套所有子窗体 + } + if(flag!=10){//当flag为10时下面的css和js都不执行 + if($('#style_color').length>0){ + var csslink=document.createElement("link"); + csslink.href=$('#style_color')[0].href.replace(".css","_ifrm.css");//这里同步的皮肤页面修改为原皮肤页面文件名后缀添加ifrm的css皮肤文件 + csslink.rel="stylesheet"; + csslink.type="text/css"; + csslink.id="style_color"; + ifmHeadlins.push({"pos":"head","scope":"all","link":csslink});//pos是添加到子iframe中的位置,scope是子窗体作用返回,one表示直接子窗体,all表示嵌套所有子窗体 + } + // 将 font-awesome字体图标应用到模块iframe + if($('#font_awesome').length>0){ + var awesomelink=document.createElement("link"); + awesomelink.href=$('#font_awesome')[0].href; + awesomelink.rel="stylesheet"; + awesomelink.type="text/css"; + awesomelink.id="font_awesome"; + ifmHeadlins.push({"pos":"head","scope":"all","link":awesomelink}); + } + // 将pym.js or pym.min.js应用到模块iframe + var pymjsObj=$("script[src*='/pym.']");//模糊查找 + pymjsObj=pymjsObj.length>0?pymjsObj:$("script[src*='/pym1.']"); + if(pymjsObj.length>0){ + var pymjs=document.createElement("script"); + pymjs.src=pymjsObj[0].src; + pymjs.type="text/javascript"; + pymjs.id=!!pymjsObj[0].id?pymjsObj[0].id:"pymjs"; + ifmHeadlins.push({"pos":"head","scope":"one","link":pymjs}); + pymjs=document.createElement("script"); //pym脚本文件加载后要执行new pym.Child()进行iframe子窗体实例化,便于子窗体和父窗体通讯new pym.Child({ id: '"+_iframe+"' ,polling: 1000}) + var frameid=(_iframe.split('-').length>0?_iframe.split('-')[1]:"1"); + pymjs.text="var t1;function pmchd(){console.log('In the frame "+_iframe+",pym code call is begining; '+(typeof pym!= 'undefined'));if(typeof pym != 'undefined'){pymChild"+frameid+" = new pym.Child({ id: 'pdiv_"+_iframe+"' ,polling: 500});window.clearInterval(t1); }};t1 = window.setInterval(pmchd,5);"; + pymjs.type="text/javascript"; + pymjs.id="pymChild"; + ifmHeadlins.push({"pos":"htmlend","scope":"one","link":pymjs}); + } + // 将hk.js or hk.min.js应用到模块iframe + var hkjsObj=$("script[src*='/hk.']");//模糊查找 + hkjsObj=hkjsObj.length>0?hkjsObj:$("script[src*='/hk1.']"); + if(hkjsObj.length>0){ + var hkjs=document.createElement("script"); + hkjs.src=hkjsObj[0].src; + hkjs.type="text/javascript"; + hkjs.id=!!hkjsObj[0].id?hkjsObj[0].id:"hkjs"; + ifmHeadlins.push({"pos":"head","scope":"one","link":hkjs}); + hkjs=document.createElement("script"); ////hk.js 加载后拦截ajax请求进行转发 + } + } + var crossOrign=ZteFrameWork.getDomainURL(ifrm.src); + if( window.location.origin==crossOrign){ //第一层同域处理 + for (i=0;i<ifmHeadlins.length;i++){ + var link=ifrm.contentDocument.getElementById(ifmHeadlins[i].link.id); + if(link){ + if(link.parentNode.tagName.toUpperCase==="HEAD"){ + ifrm.contentDocument.head.removeChild(link); + }else if(link.parentNode.tagName.toUpperCase==="HTML"){ + ifrm.contentDocument.removeChild(link); + } + } + if(ifmHeadlins[i].pos=="head") + ifrm.contentDocument.head.appendChild(ifmHeadlins[i].link); + else if (ifmHeadlins[i].pos=="bodyend") + ifrm.contentDocument.body.appendChild(ifmHeadlins[i].link); + else if (ifmHeadlins[i].pos=="htmlend") + ifrm.contentDocument.body.parentNode.appendChild(ifmHeadlins[i].link); + } + //对iframe中又有嵌套一级iframe的地方进行同步,只同步scope为all的 + var childifrms=ifrm.contentDocument.getElementsByTagName("iframe"); + if(childifrms&&childifrms.length>0){ + var ifmHeadlins2 = new Array(); + for (i=0;i<ifmHeadlins.length;i++){//筛选出scope为all的 + if(ifmHeadlins[i].scope=="one") break; + ifmHeadlins2.push(ifmHeadlins[i]); + } + for(j=0;j<childifrms.length;j++){ + var parm={ifmHeadlins:ifmHeadlins2}; + var childOrign=ZteFrameWork.getDomainURL(childifrms[j].src); + if(window.location.origin==childOrign){//同域 + var ifrmload=function(e){ + for (i=0;i<e.data.ifmHeadlins.length;i++){ + var ifmheadlink=$(e.data.ifmHeadlins[i].link).clone()[0];////注意这里必须克隆,否则会出现元素移动,前面ifrm添加的都会被移出 + var link=this.contentDocument.getElementById(ifmheadlink.id); + if(link){ + if(link.parentNode.tagName.toUpperCase==="HEAD"){ + this.contentDocument.head.removeChild(link); + }else if(link.parentNode.tagName.toUpperCase==="HTML"){ + this.contentDocument.removeChild(link); + } + } + if(e.data.ifmHeadlins[i].pos=="head"){ + this.contentDocument.head.appendChild(ifmheadlink); + }else if(e.data.ifmHeadlins[i].pos=="bodyend"){ + this.contentDocument.body.appendChild(ifmheadlink); + }else if (ifmHeadlins2[i].pos=="htmlend"){ + this.contentDocument.body.parentNode.appendChild(ifmheadlink); + } + } + } + $(childifrms[j]).off('onload',parm,ifrmload); + $(childifrms[j]).on('onload',parm,ifrmload); + $(childifrms[j]).trigger("onload"); + + }else{ + if(ifmHeadlins2.length>0){ + console.log('跨域访问: 系统将进入跨域访问代理处理流程 '); + dealCrossProxy(childifrms[j].name,childOrign,ifmHeadlins2,flag); + } + } + } + } + }else{ + if(ifmHeadlins.length>0){ + console.log('跨域访问: 系统将进入跨域访问代理处理流程 '); + dealCrossProxy(ifrm.name,crossOrign,ifmHeadlins,flag); + } + } + }, + goToURL:function(url){ + dhByBreadcrumb = true;//全局变量,声明此次事件是由点击面包屑发起的 + var showNav=ZteFrameWork.getLocationURLParameter('showNav'); + if(showNav=="false"){//如果不显示菜单,就强制刷新本页 + location.reload(); + }else{ + url="a[name='"+url+"']"; + $(url).click(); + } + }, + goToURLByName:function(name){ + var showNav=ZteFrameWork.getLocationURLParameter('showNav'); + if(showNav=="false"){//如果不显示菜单,就强制刷新本页 + location.reload(); + }else{ + url="a[name='"+name+"']"; + $(url).click(); + } + }, + goToURLByID:function(id){ + if(!id){ + return; + } + var showNav=ZteFrameWork.getLocationURLParameter('showNav'); + if(showNav=="false"){//如果不显示菜单,就强制刷新本页 + location.reload(); + }else{ + if(id.indexOf("#")<0){ + id="#"+id; + } + $(id).click(); + } + }, + goToPortal:function(id){ + var _url=top.location.href; + console.log(_url); + //_url="/ngict/iui/framework/"; + var url=$.url(_url); + top.location=url.attr("directory")+"uifportal.html#"+id+"/"; + }, + //Category + goToURLByIDAndNewIPPort:function(id,newIPPort,newActionStr){ + //先把NewIPPort对象:newIPPort={menuCategoryID:'vim',ipPortStr:'htpp://10.74.151.123:31180',newTitle:''}缓存到Category数组中, + //menuCategoryID属性是更多菜单上配置的菜单的分类id,; + //ipPortStr属性是该id的菜单要替换的新的ip和端口地址字符串,包括协议部分,比如http://10.74.151.64:21169 + //newTitle属性用于放置新开ip的页面对应到面包屑上的名字,可以为“”,空标识不关注 + _menuCategorys.replace(newIPPort.menuCategoryID,{ipPort:newIPPort.ipPortStr,ipTitle:newIPPort.newTitle});//把当前面包削中的菜单id和该子菜单对应的父菜单关联缓存起来 + if (store) { + store('menuCategoryID', newIPPort.menuCategoryID+"[menuCategoryID]"+newIPPort.ipPortStr+"[menuCategoryID]"+(!!newIPPort.newTitle?newIPPort.newTitle:"")); + } + //这里增加按照newIPPort.menuCategoryID分类加载more菜单的处理逻辑 + //首先根据id找到对应的主菜单菜单项 + var menuitem = this.findMenuItemByMenuId(id); + if(!menuitem||menuitem.length<=0){//主菜单中没有找到,就找more菜单,找到id对应的more菜单项所属的主菜单项 + var mainMenuId = this.getMenuItemId_From_MoreMenuRelation(id); + if( !!mainMenuId&&mainMenuId.length>0 ){//more菜单中找到了id对应的主菜单项id,根据id返回主菜单项 + menuitem = this.findMenuItemByMenuId(mainMenuId); + if(!!menuitem&&menuitem.length>0){ + var more=$("#"+id,$('#pageableDiv')).parent(); + $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected"); + more=$('a>div.box',more); + if (more.hasClass('moreButtonSelected') == false){ + more.addClass('moreButtonSelected'); + } + var pagesTags=$('.item.moreButtonsTag'); + if(pagesTags.length>0){ + for(var i=0;i<pagesTags.length;i++){ + var tags=$(pagesTags[i]); + tags.removeClass('active'); + if($('.moreButtonSelected',tags).length>0){ + tags.addClass('active'); + } + } + } + } + } + } + //其次找到的菜单项中newIPPort.menuCategoryID对应的src覆盖breadcrumgroupbuttonsrc属性值, + if(!!menuitem&&menuitem.length>0){ + var mulsrc=menuitem.attr(newIPPort.menuCategoryID+"-multiInsrc"); + if(!!mulsrc){ + menuitem.attr("breadcrumgroupbuttonsrc" ,mulsrc); + getBreadcrumbRightButtons(mulsrc,true); + } + } + if (waittime) { + clearInterval(waittime); + } + waittime = setInterval(function () { + if(moreMenusisLoaded==true){ + clearInterval(waittime); + ZteFrameWork.goToURLByIDAndNewAction(id,newActionStr,null); + } + }, 10); + }, + goToURLByIDAndNewAction:function(id,newActionStr,newBrowserPageOption){ + if(!id){ + return; + } + + /*if(id.indexOf("#")<0){ + id="#"+id; + }*/ + var menuitem = this.findMenuItemByMenuId(id); + //处理新开页面情况 + if(newBrowserPageOption){ + var href = ICTFRAME_CONST_DEFAULTPAGE_PATH; + var hash = getLocationHashByMenuId(id); + var newin=window.open(href + newBrowserPageOption.paramStr + hash,newBrowserPageOption.windowTitle); + newin.name=newActionStr;//注意这种传递参数的方法,被打开的页面中需要通过top.name中获取该传递的参数。 + return; + } + //$(window).off('hashchange', loadCurrentHash); + var menuItemID=menuitem?menuitem.attr("id"):""; + if(!!menuItemID&&menuItemID.length>0){ + //menuItemID="#" + menuItemID; + //menuItemID=!!newActionStr?menuItemID:menuItemID+"/no"; + _setLocationHash(menuItemID); + } + var breadcrumbBtnMenuItemParent=""; + if(!menuitem||menuitem.length<=0){//没有找到该菜单,可能是面包削中的,需要额外处理 + menuItemID=id; + if (breadcrumbBtnMenus.contains(menuItemID)) {//有缓存 + breadcrumbBtnMenuItemParent=breadcrumbBtnMenus.items(menuItemID); + menuitem=this.findMenuItemByMenuId(breadcrumbBtnMenuItemParent); + //_breadcrumbSource=true; + } + // else{//在新增的可翻页的更多菜单里面找 + // var pageDiv = $('#pageableDiv'); + // menuitem=$('#' + menuItemID , pageDiv); + // } + if( menuitem && menuitem.length > 0){ + isMoreMenuItemClick = true; + } + } + if(!menuitem||menuitem.length<=0){ + //面包屑和主菜单都没有找到,情况可能是:更多菜单点击打开后,刷新,hash已经更改,但是对应的更多菜单的html没有加载,需要找到更多菜单和主菜单的对应关系 + var mainMenuId = this.getMenuItemId_From_MoreMenuRelation( id ); + if( mainMenuId ){ + menuitem = this.findMenuItemByMenuId(mainMenuId); + } + + } + if (store&&store("globleCurrentBreadcrumb")){ + globleCurrentBreadcrumb=store("globleCurrentBreadcrumb"); + //下面处理下刷新整个页面后从cookie中获取来的最后一次操作的面包屑对应的对应菜单的name属性回写,便于面包屑事件响应能够找到对应的菜单 + var al=$("a",$("<div>"+globleCurrentBreadcrumb+"</div>")); + var alink,gal; + for(i=0;i<al.length;i++){ + alink=$(al[i]); + gal=$("a[id='"+alink.attr("id")+"']");//从整个页面查找 + for(j=0;j<gal.length;j++){ + $(gal[j]).attr("name",alink.attr("name")); + } + } + } + if(menuitem&&menuitem.length>0){ + var panel = $('.zte-theme-panel'); + var navPosOption = $('.nav-pos-direction', panel).val(); + if(navPosOption === zteframework_menu_fmenu){ + var hparentid=menuitem.attr("hparentid"); + var id=menuitem.attr("id"); + var i=0,menuItemH=menuitem; + while (id!=hparentid&&i<20){ + menuItemH=ZteFrameWork.findMenuItemByMenuId(hparentid); + hparentid=menuItemH.attr("hparentid"); + id=menuItemH.attr("id"); + i++; + }; + if(!menuItemH.hasClass('active')) + menuItemH.parent().addClass("active"); + } + }else{ + console.log("goToURLByIDAndNewAction():Can't find the menuitem.The menu ID is:"+id+".Please check if the ID or ID cache is correct."); + } + //try{ + var parm=undefined; + if(!!newActionStr&&breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){ + parm={action:newActionStr,breadcrumbBtnMenuItem:menuItemID}; + }else if(!!newActionStr){ + parm={action:newActionStr}; + }else if(breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){ + parm={breadcrumbBtnMenuItem:menuItemID}; + }else if(mainMenuId){ + isMoreMenuItemClick = true; + parm={breadcrumbBtnMenuItem:menuItemID}; + } + //if(breadChangeType){ + // if(!parm){ + // parm = {}; + // } + // parm.breadChangeType = breadChangeType; + //} + if(parm&&parm.action || parm&&parm.breadChangeType) { + _hashSource="dhByInterface"; + } + + if(menuitem&&menuitem.length>0){ + menuitem.one('click',parm,function(e){ //临时一次性的注册一次click事件处理函数,执行完毕会自动删除 + ZteFrameWork.dealAtoIframe($(this),e); + //$(window).one('hashchange', loadCurrentHash); + return false; + }); + menuitem.click();//后执行 + } + /*}catch(e){} + finally{ + //$(window).on('hashchange', loadCurrentHash); + }*/ + }, + + getBreadcrumbEle:function(){ + return $('.breadcrumbUl')[0]; + }, + + + findMenuItemByMenuId:function( id ){ + var menuitem=undefined; + var panel = $('.zte-theme-panel'); + var navPosOption = $('.nav-pos-direction', panel).val(); + + var items = undefined; + if (navPosOption === "vertical"){ //从垂直菜单里面找 + items=$("#page-sidebar-menu a[id='"+id+"']"); + }else if(navPosOption === zteframework_menu_horizontal){//从水平菜单里面找 + items=$("#main_hormenu a[id='"+id+"']"); + if(items.length == 0){ + //横菜单没有找到,再在横菜单的子菜单找一次 + items=$("#page-megachild-sidebar-menu a[id='"+id+"']"); + } + }else if(navPosOption === zteframework_menu_fmenu){ + items=$("#f_hormenu a[id='"+id+"']"); + if(items.length == 0){ + //横菜单没有找到,再在竖菜单找一次。 + items=$("#page-f-sidebar-menu a[id='"+id+"']"); + + } + + } + if( items&&items.length == 0 ){ + console.log( 'fmenu alink length is :' + $("#page-f-sidebar-menu a").length ); + console.log( 'cant find menu in sidemenu、megamenu and fmenu , the menu id is ' + id ); + } + if(items&&items.length>0){ + for(var i=0;i<items.length;i++){ + if($(items[i]).parentsUntil('.header-inner').hasClass('hor-menu')){ + menuitem=$(items[i]); + break; + }else if($(items[i]).parentsUntil('.page-container').hasClass('page-sidebar')){ + menuitem=$(items[i]); + break; + } + } + } + return menuitem; + }, + + getMenuItemId_From_MoreMenuRelation:function( id ){ + var panel = $('.zte-theme-panel'); + var navPosOption = $('.nav-pos-direction', panel).val(); + var mainMenuId = null; + if (navPosOption === zteframework_menu_vertical){ + relationAry=sideBarMenu_to_moreMenu_frame; + }else if(navPosOption === zteframework_menu_horizontal){ + relationAry=horBarMenu_to_moreMenu_frame; + }else if(navPosOption === zteframework_menu_fmenu){ + relationAry=horBarMenu_to_moreMenu_frame; + } + if ( !relationAry || !id ){ + return; + } + for ( var i = 0 ; i < relationAry.length ; i++ ){ + var eachMain = relationAry[i]; + var moreMenuIds = eachMain.moreMenuIds; + for ( var j = 0 ; j < moreMenuIds.length ; j++ ){ + if( moreMenuIds[j] && moreMenuIds[j] == id ){ + return eachMain.mainMenuId; + } + } + } + return null; + }, + + getMenuItemFoucsByID : function (id) { + if(!id){ + return; + } + var menuitem=undefined; + // var items=$("a[id='"+id+"']"); + var items = undefined; + var panel = $('.zte-theme-panel'); + var navPosOption = $('.nav-pos-direction', panel).val(); + if (navPosOption === "vertical"){ //从垂直菜单里面找 + items=$("#page-sidebar-menu a[id='"+id+"']"); + }else if(navPosOption === zteframework_menu_horizontal){//从水平菜单里面找 + items=$("#main_hormenu a[id='"+id+"']"); + if(items.length == 0){ + //横菜单没有找到,再在横菜单的子菜单找一次 + items=$("#page-megachild-sidebar-menu a[id='"+id+"']"); + } + }else if(navPosOption === zteframework_menu_fmenu){ + items=$("#f_hormenu a[id='"+id+"']"); + if(items.length == 0){ + //横菜单没有找到,再在竖菜单找一次。 + items=$("#page-f-sidebar-menu a[id='"+id+"']"); + + } + } + if(items.length>0){ + for(var i=0;i<items.length;i++){ + if($(items[i]).parentsUntil('.header-inner').hasClass('hor-menu')){ + menuitem=$(items[i]); + break; + }else if($(items[i]).parentsUntil('.page-container').hasClass('page-sidebar')){ + menuitem=$(items[i]); + break; + } + } + } + var breadcrumbBtnMenuItemParent=""; + if(!menuitem||menuitem.length<=0){//没有找到该菜单,可能是面包削中的,需要额外处理 + menuItemID=id; + if (breadcrumbBtnMenus.contains(menuItemID)) {//有缓存 + breadcrumbBtnMenuItemParent="#"+breadcrumbBtnMenus.items(menuItemID); + menuitem=$(breadcrumbBtnMenuItemParent); + } + } + var parm = undefined; + if (breadcrumbBtnMenuItemParent && breadcrumbBtnMenuItemParent.length > 0) { + parm = { + breadcrumbBtnMenuItem : menuItemID + }; + } + if (menuitem && menuitem.length > 0) { + menuitem.one('click', parm, function (e) { //临时一次性的注册一次click事件处理函数,执行完毕会自动删除 + var containerStr = $(this).parentsUntil('.page-container').hasClass('page-sidebar') ? 'page-sidebar' : ""; // + containerStr = $(this).parentsUntil('.header-inner').hasClass('hor-menu') ? 'header' : containerStr; + _isClicked = false; + dealMenuItemGetFocus($(this),e,containerStr); + return false; + }); + menuitem.click(); //后执行 + } + }, + // 处理面包削中的按钮菜单增加的导航连接,显示在iframe中 + openbreadcrumbLink:function(aObject,e) { + var url = aObject.attr("href"); + if(!url||url.length<2) + return; + e.preventDefault(); + dealScrollTo(); + var menuItemID=aObject.attr("id"); + if(!!menuItemID&&menuItemID.length>0){ + _setLocationHash(menuItemID); + _hashSource="dhByInterface"; + } + dealstartPageLoading(); + dealIframe(aObject,e); + }, + getURLParam:function(name){ + var reg = new RegExp("(^|&)" + name.toLowerCase() + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 + var search =decodeURIComponent(location.search.substring(1)).toLowerCase(); + var r =search.match(reg); //匹配目标参数 + if (r != null) return unescape(r[2]); + return null; //返回参数值 + } + }; + +}(); + +var currentRunningScriptSrcPath = {}; +//抽取html片段中任意位置的script标签(包括代码是内嵌的情况)逐个运行(不会在单个script加载不到的时候停下来) +function runHtmlScripts(s) { + var div = document.createElement('div'); + div.innerHTML = s; + var scripts = div.getElementsByTagName('script'); + $(scripts).each(function(){ + var src = this.src; + src=ZteFrameWork.handlBaseURL(src); + if(src){ + //存储当前Script标签的绝对路径以适应该js被其他系统跨域引用的情况 + currentRunningScriptSrcPath[src.substring(src.lastIndexOf("/") + 1)] = src.substring(0, src.lastIndexOf("/")+1); + $.getScript(src); + }else{ + $.globalEval(this.text || this.textContent || this.innerHTML || ''); + } + }); +} +function stripHtmlScripts(s) { + var div = document.createElement('div'); + div.innerHTML = s; + var scripts = div.getElementsByTagName('script'); + $(scripts).each(function(){ + /* if(this.src){ + $.getScript(this.src); + }else{ + $.globalEval(this.text || this.textContent || this.innerHTML || ''); + } */ + this.src=ZteFrameWork.handlBaseURL(this.src); + this.parentNode.removeChild(this); + }); + return div.innerHTML; +} +function getsiderBarMenu(url){ + if (url.length<2){ + return; + } + url=ZteFrameWork.handlBaseURL(url); + ZteFrameWork.startPageLoading();//菜单加载中请稍候.... + var pagesidebar=$('#page-sidebar-menu'); + pagesidebar.empty(); + pagesidebar.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>"); + $.ajax({ + type: "GET", + cache: false, + url: url, + dataType: "html", + success: function (res) { + //去除script标签以后添加到主框架以防止append方法因为加载script标签失败导致后面的代码无法运行 + //res = stripHtmlScripts(res); + var resScriptsSriped = stripHtmlScripts(res); + pagesidebar.append(resScriptsSriped); + runHtmlScripts(res); + + siderBarMenuAuthentication(); + dealMysqlBackupMenu(); + //loadi18n_WebFramework_sideMenu(); + setTimeout(function () { + ZteFrameWork.stopPageLoading(); + goToHomePage(); + }, 1000); + }, + error: function (xhr, ajaxOptions, thrownError) { + //$('#page-sidebar-menu').append('<h4 class="nav-load-error">'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统菜单失败!;//加载系统菜单失败! + } + }); +}; +var setLayoutValueByCookie = function () { + var panel = $('.zte-theme-panel'); + if (store('layout-option') != undefined) { + $('.layout-option', panel).val(store('layout-option')); + } + if (store('language-option') != undefined) { + $('.language-option', panel).val(store('language-option')); + } + if (store('sidebar-option') != undefined) { + $('.sidebar-option', panel).val(store('sidebar-option')); + } + if (store('header-option') != undefined) { + $('.header-option', panel).val(store('header-option')); + } + if (store('sidebar-pos-option') != undefined) { + $('.sidebar-pos-option', panel).val(store('sidebar-pos-option')); + } + var horMenuLoadTip = $("[class='nav-load-error']", $(".hormenu")); + var sideMenuLoadTip = $("[class='nav-load-error']", $("[class='page-sidebar-menu']")); + // 横竖菜单都无错误提示,都正确加载 + // if ((!horMenuLoadTip || horMenuLoadTip.length <= 0) && (!sideMenuLoadTip || sideMenuLoadTip.length <= 0)) { + // if (store('nav-pos-direction') != undefined) { + // var navPosOption = store('nav-pos-direction'); + // $('.nav-pos-direction', panel).val(navPosOption); + // } else { + $('.nav-pos-direction', panel).val('fmenu'); + // $.ajax({ + // "dataType" : 'json', + // "type" : "GET", + // "async" : false, + // url : FrameConst.REST_GET_FRAME_MENUDIRECTION + "&tmpstamp=" + new Date().getTime(), + // "success" : function (obj) { + // if (obj.value && (obj.value != "")) { + // $('.nav-pos-direction', panel).val(obj.value); + // } + // } + // }); + //} + // } else { + // $('.nav-pos-direction', panel).attr("disabled", true); + // } +} +function getHorMenu(url){ + setLayoutValueByCookie(); + if (url.length<2){ + return; + } + url=ZteFrameWork.handlBaseURL(url); + ZteFrameWork.startPageLoading();//菜单加载中请稍候.... + var pagehorbar=$('#main_hormenu') + pagehorbar.empty(); + $.ajax({ + type: "GET", + async : false, + cache: false, + url: url, + dataType: "html", + success: function (res) { + //去除script标签以后添加到主框架以防止append方法因为加载script标签失败导致后面的代码无法运行 + //res = stripHtmlScripts(res); + var resScriptsSriped = stripHtmlScripts(res); + $('#main_hormenu').append(resScriptsSriped); + runHtmlScripts(res); + // 增加mysql判断,如果数据库为mysql,去掉基础数据备份功能菜单项 + var dbType = ZteFrameWork_conf.dbType; + if (dbType == "mysql") { + var item=$(".hor-menu a[id='uep-ict-backup-baseDataBack']"); + item.parent().remove(); + } + horMenuAuthentication('main_hormenu'); + ZteFrameWork.stopPageLoading(); + if($('.nav-pos-direction', panel).val() === "horizontal"){ + setTimeout(function () { + //goToHomePage();//注意这里由于水平和左边栏菜单都在一个页面中出现,所以这里只调用一次 + }, 150); + } + }, + error: function (xhr, ajaxOptions, thrownError) { + //$('#main_hormenu').append('<h4 class="nav-load-error">'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统菜单失败! + var pcontent = $("[class='page-content']"); + //pcontent.css("marginLeft",225); + $('.nav-pos-direction', panel).attr("disabled", true); + } + }); +}; +//加载横菜单的子菜单,加到左边的siderbar里面 +function getMegaFMenu( url ){ + if (url.length<2){ + return; + } + url=ZteFrameWork.handlBaseURL(url); + ZteFrameWork.startPageLoading();//菜单加载中请稍候.... + var siderDiv =$( '#' + megaSiderDivId ); + siderDiv.empty(); + siderDiv.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>"); + $.ajax({ + type: "GET", + async : false, + cache: false, + url: url, + dataType: "html", + success: function (res) { + //去除script标签以后添加到主框架以防止append方法因为加载script标签失败导致后面的代码无法运行 + var resScriptsSriped = stripHtmlScripts(res); + siderDiv.append(resScriptsSriped); + runHtmlScripts(res); + FMenuAuthentication( megaDivId ,megaSiderDivId ); + rebuildHorMenu(); + ajustFMenu( megaDivId ,megaSiderDivId ); + ZteFrameWork.stopPageLoading(); + }, + error: function (xhr, ajaxOptions, thrownError) { + //siderDiv.append('<h4 class="nav-load-error">'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统菜单失败! + //var pcontent = $("[class='page-content']"); + //pcontent.css("marginLeft",225); + } + }); +} + +function iniHorMenu(){ + var hormenu=$('#main_hormenu'); + if(!hormenu) return; + var url=hormenu.attr("menuSrc"); + if(url&&url.length>0){ + getHorMenu(url); + } + // + var megaFMenu = $('#'+megaSiderDivId); + if(!megaFMenu) return; + var url = megaFMenu.attr("menuSrc"); + if(url&&url.length>0){ + getMegaFMenu(url); + } +}; +function iniFMenu(){ + var fhormenu=$('#f_hormenu'); + var fsidemenu=$('#page-f-sidebar-menu'); + if(!fhormenu || !fsidemenu) return; + var urlmega=fhormenu.attr("menuSrc"); + var urlsider=fsidemenu.attr("menuSrc"); + if(urlmega&&urlmega.length>0 && urlsider && urlsider.length > 0){ + getFMenu(urlmega , urlsider); + } +}; +function getFMenu( urlMega , urlSider ){ + if (urlMega.length<2 || urlSider.length<2){ + return; + } + urlMega=ZteFrameWork.handlBaseURL(urlMega); + urlSider=ZteFrameWork.handlBaseURL(urlSider); + ZteFrameWork.startPageLoading();//菜单加载中请稍候.... + var fhorbar=$('#f_hormenu'); + fhorbar.empty(); + var fSideBar= $("#page-f-sidebar-menu"); + fSideBar.empty(); + $.ajax({ + type: "GET", + async : false, + cache: false, + url: urlMega, + dataType: "html", + success: function (res) { + var resScriptsSriped = stripHtmlScripts(res); + $('#f_hormenu').append(resScriptsSriped); + horMenuAuthentication('f_hormenu'); + runHtmlScripts(res); + dealMysqlBackupMenu(); + ZteFrameWork.stopPageLoading(); + }, + error: function (xhr, ajaxOptions, thrownError) { + $('#f_hormenu').append('<h4 class="nav-load-error">'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统菜单失败! + var pcontent = $("[class='page-content']"); + $('.nav-pos-direction', panel).attr("disabled", true); + } + }); + var fpagesidebar=$('#' + fMenuSiderDivId); + fpagesidebar.empty(); + fpagesidebar.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>"); + $.ajax({ + type: "GET", + cache: false, + url: urlSider, + dataType: "html", + success: function (res) { + var resScriptsSriped = stripHtmlScripts(res); + fpagesidebar.append(resScriptsSriped); + //先全部隐藏,后面根据与hash的匹配情况来显示 + fpagesidebar.children().css('display','none'); + runHtmlScripts(res); + dealMysqlBackupMenu(); + FMenuAuthentication( fMenuMegaDivId ,fMenuSiderDivId ); + ajustFMenu( fMenuMegaDivId ,fMenuSiderDivId ); + ZteFrameWork.stopPageLoading(); + loadi18n_WebFramework_sideMenu(); + }, + error: function (xhr, ajaxOptions, thrownError) { + $('.page-f-sidebar-menu').append('<h4 class="nav-load-error">'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统菜单失败!;//加载系统菜单失败! + } + }); +}; +function iniSidebarMenu(){ + var sidermenu=$('#page-sidebar-menu'); + if(!sidermenu) return; + var url=sidermenu.attr("menuSrc"); + if(url&&url.length>0){ + getsiderBarMenu(url); + } +}; +function getChangePWDDlg(url){ + if (url.length<2){ + return; + } + ZteFrameWork.startPageLoading();//加载中.... + var pageChangepasswd=$('.modal-dialog .Changepasswd'); + pageChangepasswd.empty(); + $.ajax({ + type: "GET", + cache: false, + url: url, + dataType: "html", + success: function (res) { + $('.modal-dialog .Changepasswd').append(res); + ChangePWD.init(); + ZteFrameWork.stopPageLoading(); + }, + error: function (xhr, ajaxOptions, thrownError) { + $('.modal-dialog .Changepasswd').append('<h4>'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadchgpwdpageError')+'</h4>');//加载修改密码页面失败! + } + }); +}; +function iniChangePWDDlg(){ + var url=$('.modal-dialog .Changepasswd').attr("dlgsrc"); + if(url&&url.length>0){ + getChangePWDDlg(url); + } +}; +function getHeaderMenu(url){ + if (url.length<2){ + return; + } + ZteFrameWork.startPageLoading();//加载中请稍候.... + var headerMenu=$('#headerMenu'); + headerMenu.empty(); + $.ajax({ + type: "GET", + cache: false, + async: false, + url: url, + dataType: "html", + success: function (res) { + $('#headerMenu').append(res); + ZteFrameWork.stopPageLoading(); + }, + error: function (xhr, ajaxOptions, thrownError) { + //$('#headerMenu').append('<h4>'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统菜单失败! + } + }); +}; +function goToHomePage(){ + locationhash = ZteFrameWork.getLocationHash(); + if(!!locationhash&&locationhash.length>0){//有锚点,直接触发 + var newIPPort=null; + if (store&&store('menuCategoryID')) { + var s=store('menuCategoryID').split('[menuCategoryID]'); + if(s.length>2){ + newIPPort={menuCategoryID:s[0],ipPortStr:s[1],newTitle:s[2]}; + } + } + if(!!newIPPort){ + ZteFrameWork.goToURLByIDAndNewIPPort(locationhash,newIPPort,null); + }else{ + ZteFrameWork.goToURLByIDAndNewAction(locationhash,null,null); + } + }else{//否则还是模拟点击配置了start类的菜单 + var containerStr = ""; + //var sidermenu = $("[class='page-sidebar-menu']", $("[class='page-sidebar navbar-collapse collapse']")); + var sidermenu = $("#page-sidebar-menu"); + var hormenu = $("#main_hormenu"); + var fhormenu = $('#' + fMenuMegaDivId); + var fhormenusider = $('#page-f-sidebar-menu'); + var startmenu = null; + var navPosOption = $('.nav-pos-direction', panel).val(); + // 侧边栏显示,根据侧边栏CSS选择 + if (navPosOption === "vertical") { + //containerStr=$('.page-sidebar').length>0?'.page-sidebar':""; + startmenu = $('.iframe.start' , sidermenu); + dealStartMenu( startmenu, sidermenu ); + } + // 水平菜单显示,根据水平菜单CSS选择 + else if (navPosOption === "horizontal") { + //containerStr=$('.hor-menu').length>0?'.header':containerStr; + startmenu = $('.iframe.start' , hormenu); + dealStartMenu( startmenu, hormenu ); + + } + //F菜单的恒菜单显示 + else if (navPosOption === zteframework_menu_fmenu) { + //containerStr=$('.hor-menu').length>0?'.header':containerStr; + startmenu = $('.iframe.start' ,fhormenu); + if (startmenu && startmenu.length < 1) { + startmenu = $('.iframe.start' ,fhormenusider); + } + dealStartMenu( startmenu, fhormenu,fhormenusider ); + } + } +}; +var dealStartMenu = function(startmenu , menuContainer,menuContainer2 ){ + var timer =setInterval(function () { + if(startmenu&&startmenu.length>0){ + startmenu.click(); + clearInterval(timer); + }else{ + console.log('the start menu click event is not be triggerd ,so do it repeat!!'); + $('a[operation]', menuContainer).each(function () { + startmenu = $(this); + return false; + }); + if (menuContainer2&&startmenu && startmenu.length < 1) { + $('a[operation]', menuContainer2).each(function () { + startmenu = $(this); + return false; + }); + } + } + }, 100); + handeCtxMenuitem(); + } +// 屏蔽横竖菜单项的右键功能 +function handeCtxMenuitem() { + $(".page-sidebar ul li a").each(function() { + if ($(this).attr("href") && $(this).attr("href") != "javascript:;" && $(this).attr("href") != "#") { + $(this).attr("oncontextmenu", "return false"); + } + }); + $(".hormenu li a").each(function() { + if ($(this).attr("href") && $(this).attr("href") != "javascript:;" && $(this).attr("href") != "#") { + $(this).attr("oncontextmenu", "return false"); + } + }); +} +function initBaseInfo(){ + $("#logout_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_logout')); + $("#fullscreen_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_fullscreen')); + $("#changePwd_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_changePwd')); + $("#com_zte_ums_ict_framework_moudle_about").text($.i18n.prop('com_zte_ums_ict_framework_moudle_about')); + $("#com_zte_ums_ict_framework_moudle_help").text($.i18n.prop('com_zte_ums_ict_framework_moudle_help')); + $("#zte_menu-toggler").attr("title",$.i18n.prop('com_zte_ums_ict_framework_moudle_menutoggler')); +}; +window.closeModal = function(modalid) { + if(!modalid){ + return; + } + if(modalid.indexOf("#")<0){ + modalid="#"+modalid; + } + $(modalid).modal('hide'); +}; +function getLcsRight(lcsoperations) { + var lcsrights = new Array(); + if (lcsoperations && (lcsoperations.length > 0)) { + // 请求后台license value + //----test data---- + // var testjson = '{"data":[{"id":"mylcs","name":"xxx","value":"false"}]}'; + // var testopt = eval('(' + testjson + ')'); + // var testarray = testopt.data; + //-----end test data--- + var keys = { + "keys" : lcsoperations + }; + var jsonvalues = JSON.stringify(keys); + var data = { + "data" : jsonvalues + }; + var url=FrameConst.REST_GETLICENSEINFO + "?tmpstamp=" + new Date().getTime(); + url=ZteFrameWork.handlBaseURL(url); + $.ajax({ + "dataType" : 'json', + "type" : "GET", + "async" : false, + "url" : url, + "data" : data, + //"contentType" : 'application/json; charset=utf-8', + "success" : function (response) { + if (response) { + lcsrights = response.data; + } + }, + "error" : function (XMLHttpRequest, textStatus, errorThrown) { + lcsrights = null; + } + }); + return lcsrights; + } + return lcsrights; +} +// 侧边栏菜单鉴权 +function siderBarMenuAuthentication() { + // license 鉴权 + var menuids = new Array(); + var lcsoperations = new Array(); + //从页面DOM取得菜单license项。 + $('a[licenseid]', $('.page-sidebar-menu')).each(function () { + var licenseid = $(this).attr("licenseid"); + if (licenseid) { + lcsoperations.push(licenseid); + var id = $(this).attr("id"); + menuids.push(id); + } + }); + var lcsrights = getLcsRight(lcsoperations);// 取得license数据。 + if (lcsrights && (lcsrights.length == menuids.length)) { + // 根据后台license值判断所在菜单项是否显示 + for (var i = 0; i < menuids.length; i++) { + var id = menuids[i]; + var lcskey = lcsoperations[i]; + var lcsitem = lcsrights[i]; + // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 + if (lcsitem.value != "True") { + $('#'+id, $('.page-sidebar-menu')).parent().remove(); + } + } + } + var operations = new Array(); + $('a[operation]', $('.page-sidebar-menu')).each(function () { + var operation = $(this).attr("operation"); + if (operation) { + operations.push(operation); + } + }); // 遍历菜单项,提取所有的操作码 + var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断 + $('a[operation]', $('.page-sidebar-menu')).each(function () { + var operation = $(this).attr("operation"); + if (operation) { + if (!hasRight(operation, rightObj)) { + $(this).parent("li").remove(); // 删除没有权限的菜单项 + } + } + }); + rebuildSiderBarMenu(); +}; +// 横向菜单栏鉴权 +function horMenuAuthentication( horMenuId ) { + // license 鉴权 + var menuids = new Array(); + var lcsoperations = new Array(); + //从页面DOM取得菜单license项。 + $('a[licenseid]', $('#'+ horMenuId)).each(function () { + var licenseid = $(this).attr("licenseid"); + if (licenseid) { + lcsoperations.push(licenseid); + var id = $(this).attr("id"); + menuids.push(id); + } + }); + var lcsrights = getLcsRight(lcsoperations);// 取得license数据。 + if (lcsrights && (lcsrights.length == menuids.length)) { + // 根据后台license值判断所在菜单项是否显示 + for (var i = 0; i < menuids.length; i++) { + var id = menuids[i]; + var lcskey = lcsoperations[i]; + var lcsitem = lcsrights[i]; + // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 + if (lcsitem.value != "True") { + $('#'+id, $('#'+ horMenuId)).parent().remove(); + } + } + } + var operations = new Array(); + $('a[operation]', $('#'+ horMenuId)).each(function () { + var operation = $(this).attr("operation"); + if (operation) { + operations.push(operation); + } + }); // 遍历菜单项,提取所有的操作码 + var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断 + $('a[operation]', $('#'+ horMenuId)).each(function () { + var operation = $(this).attr("operation"); + if (operation) { + if (!hasRight(operation, rightObj)) { + $(this).parent("li").remove(); // 删除没有权限的菜单项 + } + } + }); + rebuildHorMenu(); +}; +//根据F菜单的竖菜单来调整横菜单。获取hparentid相同的竖菜单中的第一个,来更新横菜单上对应父亲菜单的href、catchnum等信息 +function ajustFMenu(megaBarDivId , siderbarDivId){ + var hparentIds = {}; + $('a[hparentid]', $('#'+ siderbarDivId)).each(function () { + var hparentId = $(this).attr("hparentId"); + var parentMenu = $('a[id = ' + hparentId + ']', $('#' + megaBarDivId)); + var oldAHref = parentMenu.attr("href"); + if (oldAHref == null || oldAHref.trim() == "#" || oldAHref == "javascript") { + var hrefMenu = $(this); + //竖菜单的第一级有可能是虚菜单,则找这个虚节点下面的第一个有href的菜单 + if( $(this).attr('href') == null || $(this).attr('href') == "#" || $(this).attr('href') == "javascript:;"){ + $('a[href]', $(this).parent().children('ul')).each(function () { + hrefMenu = $(this); + if (hrefMenu != null && hrefMenu != "#" && hrefMenu != "javascript") { + return false; //跳出循环 + } + }) + } + parentMenu.attr("href", hrefMenu.attr("href")); + parentMenu.attr("shiftjs", hrefMenu.attr("shiftjs")); + parentMenu.attr("cachenum", hrefMenu.attr("cachenum")); + parentMenu.attr("iframeName", hrefMenu.attr("iframeName")); + parentMenu.attr("xdomain", hrefMenu.attr("xdomain")); + parentMenu.attr("cssSrc", hrefMenu.attr("cssSrc")); + parentMenu.attr("category", hrefMenu.attr("category")); + parentMenu.attr("breadcrumgroupbuttonsrc", hrefMenu.attr("breadcrumgroupbuttonsrc")); + parentMenu.attr("operation", hrefMenu.attr("operation")); + parentMenu.attr("iframeautoscroll", hrefMenu.attr("iframeautoscroll")); + } + }); +} +function FMenuAuthentication(megaBarDivId , siderbarDivId){ + var beforeHparentId = {}; + $('a[hparentid]', $('#'+ siderbarDivId)).each(function(){ + var parentid = $(this).attr("hparentid"); + beforeHparentId[parentid] = 1; + }); + checkFmenuRightByAttr('licenseid' , megaBarDivId , siderbarDivId , getLcsRight); + checkFmenuRightByAttr('operation' , megaBarDivId , siderbarDivId, getAllOperCodeRights); + rebuildSiderBarMenu(); + var afterHparentId={}; + $('a[hparentid]', $('#'+ siderbarDivId)).each(function(){ + var parentid = $(this).attr("hparentid"); + afterHparentId[parentid] = 1; + }); + //比较鉴权前后的父菜单差异,如果这个父菜单自己没有href属性,且鉴权后,所有的子菜单都没有权限,那么这个父菜单需要从界面上去掉 + for( var parentid in beforeHparentId ){ + if( afterHparentId[parentid] == null ){ + var parent = $('#'+ parentid , $('#'+ megaBarDivId)); + if(parent.attr('href') == null || parent.attr('href') == "javascript:;" || parent.attr('href') == "#"){ + parent.parent().remove(); + } + } + } +} +function checkFmenuRightByAttr( attrName, megaBarDivId , siderbarDivId ,callback ){ + // license 鉴权 + var menuids = new Array(); + var parentMenuId = new Array(); + var operations = new Array(); + //从页面DOM取得菜单license项。 + $('a['+ attrName+']', $('#'+ siderbarDivId)).each(function () { + var attrValue = $(this).attr(attrName); + if (attrValue) { + operations.push(attrValue); + var id = $(this).attr("id"); + menuids.push({'id':id }); + } + }); + var rights = callback(operations);// 取得license数据。 + if (rights && (rights.length == menuids.length)) { + // 根据后台license值判断所在菜单项是否显示 + for (var i = 0; i < menuids.length; i++) { + var id = menuids[i].id; + var hparentId =menuids[i].hParentId; + var key = operations[i]; + var item = rights[i]; + // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 + if (item.value != "True") { + $('#'+id, $('#'+ siderbarDivId)).parent().remove(); + } + } + } +} +// “更多操作”分组按钮鉴权 +function groupButtonAuthentication() { + // license 鉴权 + var menuids = new Array(); + var lcsoperations = new Array(); + //从页面DOM取得菜单license项。 + $('a[licenseid]', $('.more-botton-zone > li.btn-group')).each(function () { + var licenseid = $(this).attr("licenseid"); + if (licenseid) { + lcsoperations.push(licenseid); + var id = $(this).attr("id"); + menuids.push(id); + } + }); + var lcsrights = getLcsRight(lcsoperations);// 取得license数据。 + if (lcsrights && (lcsrights.length == menuids.length)) { + // 根据后台license值判断所在菜单项是否显示 + for (var i = 0; i < menuids.length; i++) { + var id = menuids[i]; + var lcskey = lcsoperations[i]; + var lcsitem = lcsrights[i]; + // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 + if (lcsitem.value != "True") { + $('#'+id, $('.more-botton-zone > li.btn-group')).parent().remove(); + } + } + } + // 增加mysql判断,如果数据库为mysql,去掉基础数据备份功能菜单项 + var dbType = ZteFrameWork_conf.dbType; + if (dbType == "mysql") { + $("#uep-ict-backup-baseDataBack",$('.more-botton-zone > li.btn-group')).parent().remove(); + } + var operations = new Array(); + $('a[operation]', $('.more-botton-zone > li.btn-group')).each(function () { + var operation = $(this).attr("operation"); + if (operation) { + operations.push(operation); + } + }); // 遍历菜单项,提取所有的操作码 + var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断 + $('a[operation]', $('.more-botton-zone > li.btn-group')).each(function () { + var operation = $(this).attr("operation"); + if (operation) { + if (!hasRight(operation, rightObj)) { + $(this).parent("li").remove(); // 删除没有权限的菜单项 + } + } + }); + // 如果“更多菜单”下没有子菜单了,则删除整个“更多菜单”下拉框。 + if ($('li > a', $('.more-botton-zone > li.btn-group')).length == 0) { + $('.more-botton-zone > li.btn-group').remove(); + } +}; +// 删除没有子菜单的一级菜单,查看新菜单是否配了登录默认页面,如没有则指定第一个有权限的菜单作为登录后默认页面 +function rebuildSiderBarMenu() { + if ($('a.start').length == 0) { + $('li > a[href!="javascript:;"]', $('.page-sidebar-menu')).eq(0).addClass("start"); + } + $('ul.sub-menu', $('.page-sidebar-menu')).each(function () { + if ($(this).has('li').length == 0) { + $(this).parent("li").remove(); + } + }); +}; +// 删除没有子菜单的一级菜单,查看新菜单是否配了登录默认页面,如没有则指定第一个有权限的菜单作为登录后默认页面 +function rebuildHorMenu() { + if ($('a.start').length == 0) { + $('li > a[href!="#"]', $('#main_hormenu')).eq(0).addClass("start"); + } + $('ul.mega-menu-submenu', $('#main_hormenu')).each(function () { + if ($(this).has('li > a').length == 0) { + $(this).remove(); // 删空的分组列 + } + }); + //删除增加的分组div + $('div.zteDivWidth', $('#main_hormenu')).each(function () { + if ($(this).has('ul').length == 0) { + $(this).remove(); // 删空的分组列 + } + }); + $('ul.dropdown-menu', $('#main_hormenu')).each(function () { + if ($(this).has('ul').length == 0) { + $(this).parent("li").remove(); // 删空的一级菜单栏 + } + }); + $('li.divider', $('#main_hormenu')).each(function () { + if ($(this).next().hasClass('divider')) { + $(this).remove(); // 连续出现分隔线则删除一个 + } + }); + $('li.divider', $('#main_hormenu')).each(function () { + if ($(this).next().length == 0) { + $(this).remove(); // 如果分隔线在最后一行,则删除之 + } + }); +} +//获取页面菜单栏所有的操作码权限 +function getAllOperCodeRights(operations) { + var rights = new Array(); + if( operations && operations.length > 0 ){ + var data = { + "operations" : operations + }; + var sendData = JSON.stringify(data); + var url=FrameConst.REST_CHECKRIGHT + "?data=" + sendData + "&tmpstamp=" + new Date().getTime(); + url=ZteFrameWork.handlBaseURL(url); + $.ajax({ + "dataType" : 'json', + "type" : "GET", + "async" : false, + "url" : url, + "data" : null, + //"contentType" : 'application/json; charset=utf-8', + "success" : function (response) { + rights = response.value; + }, + "error" : function (XMLHttpRequest, textStatus, errorThrown) { + if (XMLHttpRequest.status == 401) { + window.location.replace("login.html"); + } else { + console.log('Communication Error!'); + } + } + }); + } + return { + opCodes : operations, + rights : rights + }; +}; +// 判断操作码是否有权限 +function hasRight(opCode, rightObj) { + for (var i = 0; i < rightObj.opCodes.length; i++) { + if (rightObj.opCodes[i] == opCode) { + return (rightObj.rights[i] == true); + } + } + return false; +}; +// 处理mysql环境下备份菜单的合并问题 +function dealMysqlBackupMenu() { + var dbType = ZteFrameWork_conf.dbType; + if (dbType !== undefined && dbType !== "mysql") { + return; + } + var sidermenu = $("[class='page-sidebar-menu']"); + var hormenu = $(".hormenu"); + //这段代码先这么写,html的位置不一定正确,如果后面位置不一致,再修改。 + if (sidermenu.length > 0 && $('#uep-ict-backup-dataBackup').length > 0) { + $('#uep-ict-backup-dataBackup', sidermenu).attr("breadcrumGroupButtonSrc", ICTFRAME_CONST_DATABACKUP_PATH); + } + if (hormenu.length > 0 && $('#uep-ict-backup-dataBackup').length > 0) { + $('#uep-ict-backup-dataBackup', hormenu).attr("breadcrumGroupButtonSrc", ICTFRAME_CONST_DATABACKUP_PATH); + $('#uep-ict-backup-dataBackup').parent('li').attr('style', 'display:block'); + $('#uep-ict-backup-allDbStructBackup').parent('li').attr('style', 'display:none'); + $('#uep-ict-backup-baseDataBack').parent('li').attr('style', 'display:none'); + } +}; +// 浏览器缩小后导航栏隐藏的情况下点击navbar-toggle显示菜单的前置工作, +// 浏览器缩小后导航栏隐藏的情况下点击navbar-toggle显示菜单的前置工作, +function dealMavToggle(navtoggle) { + var sidermenu = $("#page-sidebar-menu"); + var hormenu = $("#main_hormenu"); + var panel = $(".zte-theme-panel"); + var siderbarpos = $(".nav-pos-direction", panel).val() + if ("hidden" == $(navtoggle).attr("navtoggledispattr")) { + $(navtoggle).attr("navtoggledispattr", "display"); + sidermenu.css('display','block');//侧边栏显示 + hormenu.css("display", "none");//隐藏水平菜单栏 + } else { + $(navtoggle).attr("navtoggledispattr", "hidden"); + sidermenu.css('display','none');//侧边栏隐藏 + hormenu.css("display", "none"); + } +}; diff --git a/openo-portal/portal-common/src/main/webapp/common/js/core/ZteFrameWork.min.js b/openo-portal/portal-common/src/main/webapp/common/js/core/ZteFrameWork.min.js new file mode 100644 index 00000000..2b5c041d --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/core/ZteFrameWork.min.js @@ -0,0 +1,165 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +String.prototype.trim=function(){return this.replace(/(^\s*)|(\s*$)/g,"")};String.prototype.format=function(){if(0==arguments.length)return this;for(var b=this,d=0;d<arguments.length;d++)b=b.replace(RegExp("\\{"+d+"\\}","g"),arguments[d]);return b};String.prototype.startWith=function(b){return RegExp("^"+b).test(this)};String.prototype.endWith=function(b){return RegExp(b+"$").test(this)}; +var s=!function(b,d){var h={supportsFullScreen:!1,isFullScreen:!1,requestFullScreen:"",exitFullScreen:"",fullscreenchange:"",prefix:""},k=["webkit","moz","ms"],g=k.length,n=0;if(d.exitFullscreen)h.supportsFullScreen=!0;else for(;n<g;n++)if(d[k[n]+"ExitFullscreen"]||d[k[n]+"CancelFullScreen"]){h.supportsFullScreen=!0;h.prefix=k[n];break}if(h.supportsFullScreen){var m=h.prefix;h.fullscreenchange=function(b){d.addEventListener("ms"==m?"MSFullscreenChange":m+"fullscreenchange",function(){b&&b()},!1)}; +h.fullscreenchange(function(){h.isFullScreen=function(b){switch(b){case "":return d.fullscreen;case "webkit":return d.webkitIsFullScreen;case "moz":return d.mozFullScreen;case "ms":return d.msFullscreenElement?!0:!1}}(m)});h.requestFullScreen=function(b){b=b||d.documentElement;try{m?b[m+"RequestFullScreen"]():b.requestFullScreen()}catch(h){b[m+"RequestFullscreen"]()}};h.exitFullScreen=function(){try{m?d[m+"ExitFullscreen"]():d.exitFullscreen()}catch(b){d[m+"CancelFullScreen"]()}}}b.screenfull=h}(window, +document); +(function(b){"function"===typeof define&&define.amd?define(b):window.purl=b()})(function(){function b(b,d){for(var h=decodeURI(b),h=I[d?"strict":"loose"].exec(h),g={attr:{},param:{},seg:{}},n=14;n--;)g.attr[u[n]]=h[n]||"";g.param.query=k(g.attr.query);g.param.fragment=k(g.attr.fragment);g.seg.path=g.attr.path.replace(/^\/+|\/+$/g,"").split("/");g.seg.fragment=g.attr.fragment.replace(/^\/+|\/+$/g,"").split("/");g.attr.base=g.attr.host?(g.attr.protocol?g.attr.protocol+"://"+g.attr.host:g.attr.host)+(g.attr.port? +":"+g.attr.port:""):"";return g}function d(b){b=b.tagName;return"undefined"!==typeof b?l[b.toLowerCase()]:b}function h(b,d,g,k){var l=b.shift();if(l){var v=d[g]=d[g]||[];if("]"==l)if(n(v))""!==k&&v.push(k);else if("object"==typeof v){d=b=v;g=[];for(var m in d)d.hasOwnProperty(m)&&g.push(m);b[g.length]=k}else d[g]=[d[g],k];else{~l.indexOf("]")&&(l=l.substr(0,l.length-1));if(!w.test(l)&&n(v))if(0===d[g].length)v=d[g]={};else{m={};for(var u in d[g])m[u]=d[g][u];v=d[g]=m}h(b,v,l,k)}}else n(d[g])?d[g].push(k): +d[g]="object"==typeof d[g]?k:"undefined"==typeof d[g]?k:[d[g],k]}function k(b){return g(String(b).split(/&|;/),function(b,d){try{d=decodeURIComponent(d.replace(/\+/g," "))}catch(g){}var k=d.indexOf("="),l;a:{for(var m=d.length,x,u=0;u<m;++u)if(x=d[u],"]"==x&&(l=!1),"["==x&&(l=!0),"="==x&&!l){l=u;break a}l=void 0}m=d.substr(0,l||k);l=d.substr(l||k,d.length);l=l.substr(l.indexOf("=")+1,l.length);""===m&&(m=d,l="");k=m;m=l;if(~k.indexOf("]")){var q=k.split("[");h(q,b,"base",m)}else{if(!w.test(k)&&n(b.base)){l= +{};for(q in b.base)l[q]=b.base[q];b.base=l}""!==k&&(q=b.base,l=q[k],"undefined"===typeof l?q[k]=m:n(l)?l.push(m):q[k]=[l,m])}return b},{base:{}}).base}function g(b,d,h){for(var g=0,k=b.length>>0;g<k;)g in b&&(h=d.call(void 0,h,b[g],g,b)),++g;return h}function n(b){return"[object Array]"===Object.prototype.toString.call(b)}function m(d,h){1===arguments.length&&!0===d&&(h=!0,d=void 0);d=d||window.location.toString();return{data:b(d,h||!1),attr:function(b){b=q[b]||b;return"undefined"!==typeof b?this.data.attr[b]: +this.data.attr},param:function(b){return"undefined"!==typeof b?this.data.param.query[b]:this.data.param.query},fparam:function(b){return"undefined"!==typeof b?this.data.param.fragment[b]:this.data.param.fragment},segment:function(b){if("undefined"===typeof b)return this.data.seg.path;b=0>b?this.data.seg.path.length+b:b-1;return this.data.seg.path[b]},fsegment:function(b){if("undefined"===typeof b)return this.data.seg.fragment;b=0>b?this.data.seg.fragment.length+b:b-1;return this.data.seg.fragment[b]}}} +var l={a:"href",img:"src",form:"action",base:"href",script:"src",iframe:"src",link:"href",embed:"src",object:"data"},u="source protocol authority userInfo user password host port relative path directory file query fragment".split(" "),q={anchor:"fragment"},I={strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}, +w=/^[0-9]+$/;m.jQuery=function(b){null!=b&&(b.fn.url=function(h){var g="";this.length&&(g=b(this).attr(d(this[0]))||"");return m(g,h)},b.url=m)};m.jQuery(window.jQuery);return m});ZteFrameWork_conf={userName:store.get("username"),changePassItem:FrameConst.change_pass?FrameConst.change_pass:!0,helpMenuItem:!1,aboutMenuItem:!1,flightMenuItem:!1,fullscreenMenuItem:!1,logoutMenuItem:!0,defaultThemeColor:"ztebluelight2",dbType:"other",acceptLanguage:"zh-CN"};$("#currentUser").html(ZteFrameWork_conf.userName); +$.ajax({url:FrameConst.REST_FRAMECOMMIFO,type:"GET",cache:!1,contentType:"application/json; charset=utf-8",success:function(b){b.helpMenuItem&&""!=b.helpMenuItem&&(ZteFrameWork_conf.helpMenuItem=b.helpMenuItem);b.aboutMenuItem&&""!=b.aboutMenuItem&&(ZteFrameWork_conf.aboutMenuItem=b.aboutMenuItem);b.flightMenuItem&&""!=b.flightMenuItem&&(ZteFrameWork_conf.flightMenuItem=b.flightMenuItem);b.fullscreenMenuItem&&""!=b.fullscreenMenuItem&&(ZteFrameWork_conf.fullscreenMenuItem=b.fullscreenMenuItem);b.logoutMenuItem&& +""!=b.logoutMenuItem&&(ZteFrameWork_conf.logoutMenuItem=b.logoutMenuItem);b.defaultThemeColor&&""!=b.defaultThemeColor&&(ZteFrameWork_conf.defaultThemeColor=b.defaultThemeColor);b.dbType&&""!=b.dbType&&(ZteFrameWork_conf.dbType=b.dbType);b.acceptLanguage&&""!=b.acceptLanguage&&(ZteFrameWork_conf.acceptLanguage=b.acceptLanguage);b.changePassItem&&""!=b.changePassItem&&(ZteFrameWork_conf.changePassItem=b.changePassItem);setFrameWorkByConf()},error:function(b){setFrameWorkByConf()}}); +function setThemeColor(b){var d=$(".zte-theme-panel");$(".theme-colors > ul > li",d).each(function(){var d=$(this).attr("data-style");d==b&&($(this).addClass("current"),$("#style_color").attr("href","css/themes/"+d+".css"),store("style_color",d))})} +function setFrameWorkByConf(){var b=ZteFrameWork_conf.helpMenuItem,d=ZteFrameWork_conf.aboutMenuItem,h=ZteFrameWork_conf.flightMenuItem,k=ZteFrameWork_conf.fullscreenMenuItem,g=ZteFrameWork_conf.logoutMenuItem,n=ZteFrameWork_conf.changePassMenuItem;b&&"false"!==b||$("#uep_ict_help_url").parent("li").remove();d&&"false"!==d||$('[data-target="#aboutDlg"]').parent("li").remove();b||d||$("#uep_ict_help_div").remove();h&&"false"!==h||$("#header_notification_bar").html("<div>      </div>"); +k&&"false"!==k||$("#trigger_fullscreen_div").html("");g&&"false"!==g||$("#trigger_logout_div").html("");(!k&&!g||"false"===k&&"false"===g)&&$("#full_logout_divider").css("display","none");n||($("#changePwd_labellink").css("display","none"),$("#full_logout_divider").css("display","none"));b=ZteFrameWork_conf.defaultThemeColor;d=$(".zte-theme-panel");$("ul > li",d).removeClass("current");store&&!store("style_color")?setThemeColor(b):setThemeColor(store("style_color"))} +function Hashtable(){this._hash={};this._count=0;this.add=function(b,d){if(this._hash.hasOwnProperty(b))return!1;this._hash[b]=d;this._count++;return!0};this.hash=function(){return this._hash};this.remove=function(b){delete this._hash[b];this._count--};this.count=function(){return this._count};this.items=function(b){if(this.contains(b))return this._hash[b]};this.contains=function(b){return this._hash.hasOwnProperty(b)};this.clear=function(){this._hash={};this._count=0};this.replace=function(b,d){this.contains(b)&& +this.remove(b);return this.add(b,d)}} +var fMenuSiderDivId="page-f-sidebar-menu",fMenuMegaDivId="f_hormenu",megaSiderDivId="page-megachild-sidebar-menu",megaDivId="main_hormenu",zteframework_menu_horizontal="horizontal",zteframework_menu_vertical="vertical",zteframework_menu_fmenu="fmenu",zteframework_showNav="true",zteframework_smallView=960,ZteFrameWork=function(){var b=getLanguage(),d=!1,h=function(){try{return document.createEvent("TouchEvent"),!0}catch(c){return!1}},k=!h,g=!1,n=!1,m=!1,l="",u=225,q=35,I=[],w=new Hashtable,x=new Hashtable, +C=new Hashtable,V=new Hashtable,y="page-mainIframe",J="",v="",D=!1,ca={blue:"#4b8df8",red:"#e02222",green:"#35aa47",purple:"#852b99",grey:"#555555","light-grey":"#fafafa",yellow:"#ffb848",ztebluelight:"#3366cc"},G=function(){var c=window,t="inner";"innerWidth"in window||(t="client",c=document.documentElement||document.body);return{width:c[t+"Width"],height:c[t+"Height"]}},va=function(){var c=getUrlParam("menu");switch(c?c:0){case "1":l=$("#com_zte_ums_ict_framework_ui_page_title_1").text().trim(); +break;case "2":l=$("#com_zte_ums_ict_framework_ui_page_title_2").text().trim();break;case "3":l=$("#com_zte_ums_ict_framework_ui_page_title_3").text().trim();break;default:l=$("#com_zte_ums_ict_framework_ui_page_title").text().trim()}"rtl"===$("body").css("direction")&&(d=!0);g=!!navigator.userAgent.match(/MSIE 8.0/);n=!!navigator.userAgent.match(/MSIE 9.0/);(m=!!navigator.userAgent.match(/MSIE 10.0/))&&$("html").addClass("ie10");(m||n||g)&&$("html").addClass("ie");navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad)/)? +($(document).on("focus","input, textarea",function(){$(".page-header").hide();$(".page-footer")&&0<$(".page-footer").length&&$(".page-footer").hide()}),$(document).on("blur","input, textarea",function(){$(".page-header").show();$(".page-footer")&&0<$(".page-footer").length&&$(".page-footer").show()})):($(document).on("focus","input, textarea",function(){$(".page-footer")&&0<$(".page-footer").length&&$(".page-footer").hide()}),$(document).on("blur","input, textarea",function(){$(".page-footer")&&0< +$(".page-footer").length&&$(".page-footer").show()}))},F=function(c){$(".page-loading").remove();$("body").append('<div class="page-loading"><img src="'+ICTFRAME_CONST_SPINNER_GIF_PATH+'"/> <span>'+(c?c:$.i18n.prop("com_zte_ums_ict_framework_ui_loading"))+"</span></div>")},da=function(){G().width<zteframework_smallView?$("body").removeClass("page-sidebar-closed"):"1"===Q("sidebar_closed")&&$("body").addClass("page-sidebar-closed")},W=function(){for(var c=0;c<I.length;c++)I[c].call()},fa= +function(){da();ea();B();X();W()},wa=function(){da();B();setTimeout(function(){ea(!0)},100)},xa=function(){var c;if(g){var t;$(window).resize(function(){t!=document.documentElement.clientHeight&&(c&&clearTimeout(c),c=setTimeout(function(){fa()},50),t=document.documentElement.clientHeight)})}else $(window).resize(function(){c&&clearTimeout(c);c=setTimeout(function(){fa()},50)})},ga=function(c){var t=$(".nav-pos-direction",$(".zte-theme-panel")).val(),f=$("#page-sidebar-menu"),b=$("#main_hormenu"), +H=$("#"+fMenuMegaDivId),d=$("#"+fMenuSiderDivId);c?(f.css("display","block"),b.css("display","none"),H.css("display","none"),d.css("display","none")):zteframework_menu_horizontal==t?(f.css("display","none"),H.css("display","none"),d.css("display","none"),b.css("display","block")):zteframework_menu_vertical==t?(f.css("display","block"),b.css("display","none"),H.css("display","none"),d.css("display","none")):zteframework_menu_fmenu==t&&(f.css("display","none"),b.css("display","none"),H.css("display", +"block"),d.css("display","block"),c=d.children(".sidebar-toggler-wrapper").siblings(),0<c.length&&"none"!=c.css("display")&&(d.css("display","block"),$("body").removeClass("page-full-width"),$("body").hasClass("page-sidebar-closed")?$(".page-content").css("marginLeft",q):$(".page-content").css("marginLeft",u)))},ea=function(c){c=document.body.clientWidth;for(var t=$("a.dropdown-toggle","#main_hormenu"),f=0;f<t.length;f++){for(var b=$(t[f]),H=b.offset().left,d=b.parent().children(".dropdown-menu"), +g=$(".zteDivWidth",d),h=0,k=0;k<g.length&&0<g.length;k++){var l="",m=0;$("span",g[k]).each(function(){var c=this.innerText;c.length>m&&(m=c.length,l=c)});h=h+getStringWidth(l,14)+94.5}h+H>c?(console.log("ajust class dropdown-menu-right ,id = "+b.attr("id")),d.addClass("dropdown-menu-right")):d.removeClass("dropdown-menu-right")}},B=function(c){var t=$(".page-content"),f=$(".page-content-body"),b=$(".page-sidebar"),d=$("body"),g,h=G(),l=Math.min(window.screen.availHeight,h.height)-5,z=$(".footer"), +m=$(".page-breadcrumb"),n=$("#pageableDiv");console.log("pageableDiv height:"+n.outerHeight(!0));var u=$(".header");"isc"===(x.items(y)?x.items(y).childpageType:"")&&$(".sidebar-option",panel).val("fixed");var r=ZteFrameWork.getLocationURLParameter("showNav");"false"==r&&(zteframework_showNav=r,ha(),ia());r=l-(!z||0>=z.length?0:z.outerHeight(!0))-u.outerHeight(!0);n=!n||0>=n.length||!1==n.is(":visible")?0:n.outerHeight(!0);f=l-u.outerHeight(!0)-(!z||0>=z.length||!1==z.is(":visible")?0:z.outerHeight(!0))- +m.outerHeight(!0)-n-(f.outerHeight(!0)-f.height());m=""==y?"page-mainIframe":y;if((n=$(".page-content .page-content-body ."+m))&&0<n.length){if(navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad)/)){var q=h.width-t.offset().left-2*(n.offset().left-t.offset().left);n.width(q)}q=b.attr("style");console.log("pym:parent iframe "+m+" sidebar.height:"+b.height()+" h:"+f);f=b.height()>f?b.height():f;b.attr("style",q);if(!k){q=f;try{q=n.contents().height()}catch(Ja){}f=q>f?q:f}x.items(m).setMinHeight&& +(n=Math.min(l,f),console.log("pym:parent iframe "+m+" window.screen.availHeight:"+l+" viewport.height:"+h.height+" h:"+f+" minHeight:"+n),x.items(m).setMinHeight(n))}!0===d.hasClass("page-footer-fixed")&&!0===d.hasClass("page-sidebar-fixed")?t.height()<r&&K(t,"min-height",r+"px",!0):!0===d.hasClass("page-footer-fixed")&&!1===d.hasClass("page-sidebar-fixed")?t.height()<r&&K(t,"min-height",r+"px",!0):(d.hasClass("page-sidebar-fixed")?g=ja():(q=b.attr("style"),b.attr("style",q),b=u.outerHeight(!0),z= +!z||0>=z.length?0:z.outerHeight(!0),1024<$(window).width()&&g+b+z<l&&(g=l-b-z)),g<=t.height()&&K(t,"min-height",g+"px",!0));$(window).width()>=zteframework_smallView?(ga(),"none"!=$(".page-sidebar-menu li").css("display")&&$("body").hasClass("page-sidebar-closed")&&$(".sidebar-toggler").hasClass("close-by-viewportChange")&&(c||$(".sidebar-toggler")[1].click(),$(".sidebar-toggler").removeClass("close-by-viewportChange"))):ga(!0)},ya=function(c){var t;if(0<w.count())for(var f in w.hash()){w.replace(f, +0);var b=$(".page-content .page-content-body ."+f);b&&0<b.length&&(c==f?(b.show(),w.replace(f,1)):("page-mainIframe"===f?(t=f,b.attr("src",""),b.remove()):b.hide(),w.replace(f,0)))}t&&(delete w._hash[t],delete x._hash[t]);w.contains(c)||(w.add(c,1),myIframe=$("."+c),myIframe.show(),myIframe.load(function(){ZteFrameWork.stopPageLoading()}))},ha=function(){$(".hor-menu").hide();K($(".page-content"),"margin-left","0px",!0);K($(".page-sidebar"),"display","none",!0);$("#"+fMenuSiderDivId).children().css("display", +"none")},ia=function(){$("#header_notification_bar").html("<div>      </div>")},Aa=function(c){var b=$(".zte-theme-panel"),b=$(".nav-pos-direction",b).val(),f=null,p=null;"vertical"===b?(f=$("#"+c.attr("id"),$("#main_hormenu")),p=$(".header ul")):"horizontal"===b?(f=za(c),ka(c,megaSiderDivId),p=f[0],f=f[1]):b===zteframework_menu_fmenu&&ka(c,fMenuSiderDivId);p&&(p.children("li.active").removeClass("active"),p.find(".arrow.open").removeClass("open"));f&&(f.parents("li").each(function(){$(this).addClass("iframe active"); +$(this).find("a > span.arrow").addClass("open")}),f.parents("li").addClass("active"),"horizontal"===b&&f.parent().parent().parent().is("li")&&$(".arrow",f.parent().parent().parent()).addClass("open"))},za=function(c){targetsource=$("#"+c.attr("id"),$("[class='page-sidebar-menu']"));targetContainer=$("#page-sidebar-menu ul");$("li.open",targetContainer).each(function(){$("ul.sub-menu",this).attr("style")&&($("ul.sub-menu",this).removeAttr("style"),$(this).removeClass("open"))});if(0<=c.parent().parent().parent().parent().attr("class").indexOf("page-sidebar-menu")){c= +$("#"+c.attr("id"),$("#main_hormenu"));var b=$(".header ul");b.children("li.active").removeClass("active");b.find(".arrow.open").removeClass("open");c.parents("li").each(function(){$(this).addClass("iframe active");$(this).find("a > span.arrow").addClass("open")});c.parents("li").addClass("active")}return[targetContainer,targetsource]},ka=function(c,b){var f=$("#"+b);if(R)R=!1;else if($(c).parents("li").hasClass("mega-menu-dropdown")){var p=c.attr("id");$("#"+b+">li").hide();var d=$("a[hparentid= "+ +p+"]",f).parent();d.show();0<d.length&&$("#"+b+">li.sidebar-toggler-wrapper").show();0<$("a[hparentid= "+p+"]",f).length?la(c,b):(f.css("display","none"),$("body").addClass("page-full-width"),$(".page-content").css("marginLeft",u))}else"true"==zteframework_showNav&&($("#"+b+">li").hide(),p=$(c).parents("li"),p=p.eq(p.length-1).children("a").attr("hparentid"),d=$("a[hparentid="+p+"]",f).parent(),d.show(),0<d.length&&$("#"+b+">li.sidebar-toggler-wrapper").show(),la(c,b))},la=function(c,b){var f=$("#"+ +b);f.css("display","block");$("ul.sub-menu",f).css("display","block");$(".arrow",f).addClass("open");$("body").removeClass("page-full-width");$("body").hasClass("page-sidebar-closed")?$(".page-content").css("marginLeft",q):$(".page-content").css("marginLeft",u);var p=c.attr("href");$("li.iframe",f).removeClass("active");f=$("a[href ='"+p+"']",f).parent();f.addClass("active");f.parent().parent().addClass("open").addClass("active");f.parent().css("display","block");f.parent().parent().children("a").children(".arrow").addClass("open")}, +Z=function(c,b,f){var p=c.attr("href");if(p&&!(2>p.length)){b.preventDefault();D||(D=!0,p=c.parents("li").last(),p.hasClass("open")||Y(p.children("a:eq(0)")));f&&0<f.length&&$("."+f+" ul").children("li.active").removeClass("active");c.parents("li").each(function(){$(this).addClass("iframe active");$(this).children("a > span.arrow").addClass("open")});c.parents("li").addClass("active");Aa(c);f&&0<f.length&&991>=$(window).width()&&$("."+f).hasClass("in")&&$(".navbar-toggle").click();if(dealMultTabPage(c))return!0; +f=b.data&&b.data.breadcrumbBtnMenuItem&&0<b.data.breadcrumbBtnMenuItem.length?b.data.breadcrumbBtnMenuItem:"";0<f.length?(c=$("#"+f,$("#pageableDiv")),0==c.length&&(c=$("#"+f,$(".more-botton-zone"))),L(c,b)):(F(),S(c,b)&&M(c,!1,b))}},Ba=function(c,b,f){var p=c.attr("href");!p||2>p.length||(b.preventDefault(),D||(D=!0,b=c.parents("li").last(),Y(b.children("a:eq(0)"))),f&&0<f.length&&(b=$("."+f+" ul"),b.children("li.active").removeClass("active"),b.children("arrow.open").removeClass("open")),c.parents("li").each(function(){$(this).addClass("iframe active"); +$(this).children("a > span.arrow").addClass("open")}),c.parents("li").addClass("active"),f&&0<f.length&&991>=$(window).width()&&$("."+f).hasClass("in")&&$(".navbar-toggle").click())},S=function(c,b){function f(c,b,f,t,d,p,g){c=new pym.Parent(c,b,{xdomain:p});c.iframe.id=f;c.iframe.name=t;c.iframe.setAttribute("class",d);c.iframe.setAttribute("allowfullscreen","");c.iframe.setAttribute("mozallowfullscreen","");c.iframe.setAttribute("oallowfullscreen","");c.iframe.setAttribute("msallowfullscreen",""); +c.iframe.setAttribute("webkitallowfullscreen","");c.iframe.setAttribute("onload",'ZteFrameWork.SyncCSS(this,0,"'+m+'");ZteFrameWork.stopPageLoading();');x.replace(f,c);c.onMessage("height",function(c){console.log("The frame "+f+" receive message height is "+c);var b=$(".page-content .page-content-body ."+f);c=Math.max(this.minHeight,c);b.height(c)});return c}v="";var p=c.attr("href");if(p&&!(2>p.length)){var p=ZteFrameWork.handlBaseURL(p),d=c.attr("category");if(d&&0<d.length&&(d=V.items(d))&&d.ipPort&& +""!=d.ipPort.trim()){var d=ZteFrameWork.getDomainURL(d.ipPort),g=ZteFrameWork.getDomainURL(p);console.log("old url:"+p);p=d+p.replace(g,"");console.log("newIpPort:"+d+" newURL:"+p)}F();var h=c.attr("cacheNum"),k=c.attr("shiftJS");c.attr("iframeName");var l=c.attr("iframeAutoScroll"),l=l?"yes"===l?"yes":"auto"===l?"auto":"no":"no";_xdomain=(_xdomain=c.attr("xdomain"))&&0<_xdomain.length?_xdomain:"*";var m=c.attr("cssSrc"),m=m&&0<m.length?m:"",n="",u=$(".page-content .page-content-body");y=h=h? +"page-mainIframe"+h:"page-mainIframe";var d=""==y?"page-mainIframe":y,g=$(".page-content .page-content-body ."+d),r=b&&b.data&&b.data.action?b.data.action:"",r=r&&0<r.length?"null"==r.trim().toLowerCase()?r:"javascript:$('.page-content .page-content-body ."+d+"')[0].contentWindow."+r.trim()+";":"",r=r.trim(),n=k&&0<k.length?"null"==k.trim().toLowerCase()?k:"javascript:$('.page-content .page-content-body ."+d+"')[0].contentWindow."+k+";":"";if(g&&0<g.length)if(l=g.attr("src"),!(k||0<r.length)||l!= +p&&l.split("?")[0]!=p.split("?")[0]||"page-mainIframe"==h)0<r.length&&"null"!=r.toLowerCase()&&(p=p.split("?")[0]),l.split("#")[0]!=p.split("#")[0]?g.attr("src",""):ZteFrameWork.stopPageLoading(),g.attr("src",p),0<r.length&&"null"!=r.toLowerCase()&&(p={nagivJS:r},g.one("load",p,function(c){c=c&&c.data&&c.data.nagivJS?c.data.nagivJS:"";0<c.length&&"null"!=c.toLowerCase()&&eval(c)})),0<m.length&&"null"!=m.toLowerCase()&&(p={syncCSSJS:'ZteFrameWork.SyncCSS(this,10,"'+m+'");ZteFrameWork.stopPageLoading();'}, +g.one("load",p,function(c){c=c&&c.data&&c.data.syncCSSJS?c.data.syncCSSJS:"";0<c.length&&"null"!=c.toLowerCase()&&eval(c)}));else{x.items(d).settings.xdomain=_xdomain;0<r.length&&"null"!=r.toLowerCase()&&(n=r);try{"null"!=n.trim().toLowerCase()&&eval(n)}catch(q){return q instanceof EvalError?console.log(q.name+" EvalError: "+q.message):q instanceof SyntaxError?console.log(q.name+" SyntaxError: "+q.message):q instanceof Error&&"typeerror"==q.name.toLowerCase().trim()&&(p={runShiftJS:n},g.one("load", +p,function(c){c=c&&c.data&&c.data.runShiftJS?c.data.runShiftJS:"";0<c.length&&"null"!=c.toLowerCase()&&eval(c)})),!1}finally{ZteFrameWork.stopPageLoading()}}else if(0<r.length&&"null"!=r.toLowerCase()&&(p=p.split("?")[0]),g="pdiv_"+d,0>=$("#"+g).length&&u.append("<div id='"+g+"'></div>"),F(),pymParent=f(g,p,d,d,d,_xdomain,l),g=$(pymParent.iframe),0<r.length&&"null"!=r.toLowerCase()&&(p={nagivJS:r},(g=$(".page-content .page-content-body ."+d))&&0<g.length))g.one("load",p,function(c){c=c&&c.data&&c.data.nagivJS? +c.data.nagivJS:"";0<c.length&&"null"!=c.toLowerCase()&&eval(c)});ya(d);ZteFrameWork.fixContentHeight();return!0}},Y=function(c){if(!1==c.next().hasClass("sub-menu"))!1==$(".btn-navbar").hasClass("collapsed")&&$(".btn-navbar").click();else if(!c.next().hasClass("sub-menu always-open")){var b=c.parent().parent(),f=$(".page-sidebar-menu"),d=c.next(),g=f.data("auto-scroll")?f.data("auto-scroll"):!0,f=f.data("slide-speed")?parseInt(f.data("slide-speed")):200;b.children("li.open").children("a").children(".arrow").removeClass("open"); +b.children("li.open").children(".sub-menu:not(.always-open)").slideUp(200);b.children("li.open").removeClass("open");d.is(":visible")?($(".arrow",c).removeClass("open"),c.parent().removeClass("open"),d.slideUp(f,function(){!0==g&&!1==$("body").hasClass("page-sidebar-closed")&&$("body").hasClass("page-sidebar-fixed");B()})):($(".arrow",c).addClass("open"),c.parent().addClass("open"),d.slideDown(f,function(){!0==g&&!1==$("body").hasClass("page-sidebar-closed")&&$("body").hasClass("page-sidebar-fixed"); +B()}))}},Ca=function(){$(".page-sidebar").on("click","li > a",function(c){!1==$(this).next().hasClass("sub-menu")?!1==$(".btn-navbar").hasClass("collapsed")&&$(".btn-navbar").click():$(this).next().hasClass("sub-menu always-open")||(Y($(this)),c.preventDefault())});$(".page-sidebar").on("click"," li > a.iframe",function(c){c.preventDefault();var b=$(this).attr("id");b&&0<b.length&&(N(b),v="dhByInterface");D=!0;Z($(this),c,"page-sidebar")});$(".page-breadcrumb").on("click"," li > a.iframe",function(c){2> +$(this).attr("href").length||(c.preventDefault(),L($(this),c))});$("#pageableDiv").on("click"," div > a.iframe",function(c){2>$(this).attr("href").length||(c.preventDefault(),L($(this),c))});$("#pageableDiv").on("click"," li > a.iframe",function(c){if(!(2>$(this).attr("href").length)){c.preventDefault();if(c.target){var b=$("span",c.target),b=0<b.length?b[0]:c.target;$(".open a>div>span",c.target.parentNode.parentNode.parentNode.parentNode.parentNode).replaceWith(b.outerHTML)}L($(this),c)}});$(".dropdown").on("click", +" li > a.iframe",function(c){2>$(this).attr("href").length||(c.preventDefault(),F(),S($(this),c),M($(this),!1,c))})},ma="",T=!0,U=null,aa=function(c,b){if(!(2>c.length))if(c=ZteFrameWork.handlBaseURL(c),ma==c)if(!0===b)$("#pageableDiv").show();else{if(b&&b.target&&b.currentTarget){var f=$(b.target).attr("defaultDisplay");(f=f?f:$(b.currentTarget).attr("defaultDisplay"))&&"false"==f.trim()?$("#pageableDiv").hide():$("#pageableDiv").show()}}else{ma=c;clearMoreOperations();var d=b&&b.data&&b.data.breadcrumbBtnMenuItem&& +0<b.data.breadcrumbBtnMenuItem.length?b.data.breadcrumbBtnMenuItem:"",d=0>=d.length?b&&b.breadcrumbBtnMenuItem&&0<b.breadcrumbBtnMenuItem.length?b.breadcrumbBtnMenuItem:"":d;T=!1;$.ajax({type:"GET",cache:!1,url:c,dataType:"html",success:function(c){try{var f=stripHtmlScripts(c);$(".more-botton-zone").children().remove();var g=$('<div style="display:none"></div>');g.children().remove();g.append(f);var h=$(".dropdown-menu",g).attr("displayType");if(h&&"pageableDiv"!=h)$(".more-botton-zone").append(f), +$("#pageableDiv").hide();else{var k=$(".dropdown-menu",g);if(0<k.length&&(moreOperations(k[0]),b&&b.target&&b.currentTarget)){var l=$(b.target).attr("defaultDisplay");(l=l?l:$(b.currentTarget).attr("defaultDisplay"))&&"false"==l.trim()?$("#pageableDiv").hide():$("#pageableDiv").show()}}runHtmlScripts(c)}catch(m){}finally{T=!0}groupButtonAuthentication();if(0<d.length){c=void 0;g=$(".zte-theme-panel");f=void 0;f="vertical"===$(".nav-pos-direction",g).val()?$("#page-sidebar-menu a[id='"+d+"']"):$(".hor-menu a[id='"+ +d+"']");if(!f||1>f.length)f=$(".page-content a[id='"+d+"']");if(0<f.length)for(g=0;g<f.length;g++){if($(f[g]).parentsUntil(".more-botton-zone .btn-group").hasClass("dropdown-menu")){c=$(f[g]);break}if($(f[g]).parentsUntil("#pageableDiv").hasClass("row1")){c=$(f[g]);break}}c&&0<c.length&&L(c,b)}},error:function(c,b,f){$(".page-breadcrumb").append("<h4>"+$.i18n.prop("com_zte_ums_ict_framework_ui_loadmenuerror")+"</h4>");T=!0}})}};dealMultTabPage=function(c){var b=c.attr("href");if(b&&!(2>b.length)){var f= +c.attr("redirect");if(f&&0<f.length){var d=$(".page-content .page-content-body ."+(""==y?"page-mainIframe":y)),g="";if(d&&0<d.length&&(g=d.attr("src"),b.split("?")[0]==g.split("?")[0]))return eval(f),M(c,!1,e),!0}return!1}};var E="",na="",ba=!1,M=function(c,b,f){var d=$(".breadcrumbUl");ZteFrameWork.setPageTitle(c.find("span").text().trim());var g=c.parent("li");0==g.length&&(g=c.parent("div"));var h=$(".nav-pos-direction",panel).val();c.attr("hparentid");var k=c.attr("breadcrumGroupButtonSrc");na= +c.attr("id");var l=c="",m=null;if(ba)b=E.indexOf(g.children("a").attr("name")),-1<b?(b=E.indexOf("<i class='fa fa-angle-right'>",b),c=E.substring(0,b)+"<i class='fa fa-angle-right'></i>"):c=void 0,ba="";else{for(;g&&0<g.length;)g.children("a")&&(b?l=g.children("a").attr("name"):(l=ZteFrameWork.getUniqueID("aid"),g.children("a").attr("name",l)),m=g.clone(),m.children("a").removeClass("iframe"),m.children("a").removeClass("active"),m.children("a").attr("href","javascript:ZteFrameWork.goToURL('"+l+"');"), +(l=$(".fa-angle-down",m.children("a")))&&l.remove(),0<m.children("a").length&&(c=m.children("a")[0].outerHTML+"<i class='fa fa-angle-right'></i>"+c),g.parent("ul").attr("id")==fMenuSiderDivId||g.parent("ul").attr("id")==megaSiderDivId?(g=g.children("a").attr("hparentid"),h==zteframework_menu_horizontal?magaMenu=$("#"+megaDivId):h==zteframework_menu_fmenu&&(magaMenu=$("#"+fMenuMegaDivId)),g=$("a[id="+g+"]",magaMenu).parent("li")):g=g.parents("li"));g[0]&&0<g[0].length&&(c=g.children("a")[0].outerHTML+ +"<i class='fa fa-angle-right'></i>"+c)}d.empty();$(".more-botton-zone").empty();E=c;store("globleCurrentBreadcrumb",E);d.append(c);k&&0<k.length?aa(k,f):$("#pageableDiv").hide()},oa=function(c,b,f){b=$(".breadcrumbUl");var d=c.parent(),g=c.attr("breadcrumGroupButtonSrc");f="";var h=null,h=c.attr("id");for(C.contains(h)||C.add(h,na);d&&0<d.length;)if(h=d.clone(),h.children("a")){h.children("a").removeClass("iframe");h.children("a").attr("href");h.children("a").attr("onclick","ZteFrameWork.openbreadcrumbLink($(this),event);"); +var k=h.children("a").children("div");if(0<k.length){var l=k[0].innerHTML;k.remove();h.children("a")[0].innerHTML=l}0<h.children("a").length&&(f=h.children("a")[0].outerHTML+"<i class='fa fa-angle-right'></i>"+f);d=d.parents("li")}d[0]&&0<d[0].length&&(f=d.children("a")[0].outerHTML+"<i class='fa fa-angle-right'></i>"+f);g&&0<g.length?aa(g,!0):$("#pageableDiv").hide();b.empty();(c=c.attr("category"))&&0<c.length&&(c=V.items(c))&&c.ipTitle&&""!=c.ipTitle.trim()&&(f=c.ipTitle+'<i class="fa fa-angle-right"></i>'+ +f);f=E+f;b.append(f)},R=!1,L=function(c,b){var f=c.attr("id");f&&0<f.length&&(N(f),v=(f=b&&b.data&&b.data.breadcrumbBtnMenuItem&&0<b.data.breadcrumbBtnMenuItem.length?b.data.breadcrumbBtnMenuItem:"")&&0<f.length?"":"dhByInterface");b&&b.breadcrumbBtnMenuItem&&0<b.breadcrumbBtnMenuItem.length||(F(),S(c,b));oa(c,!1,b)},ja=function(){var c=G().height-$(".header").height()+1;$("body").hasClass("page-footer-fixed")&&(c=c-(!$(".footer")||0>=$(".footer").length)?0:$(".footer").outerHeight());return c},X= +function(){var c=$(".page-sidebar-menu");1===c.parent(".slimScrollDiv").size()&&(c.removeAttr("style"),$(".page-sidebar").removeAttr("style"));0===$(".page-sidebar-fixed").size()?B():G().width>=zteframework_smallView&&(ja(),B())},pa=function(){!1!==$("body").hasClass("page-sidebar-fixed")&&($(".page-sidebar").off("mouseenter").on("mouseenter",function(){Da()}),$(".page-sidebar").off("mouseleave").on("mouseleave",function(){Ea()}))},Da=function(){var c=$("body"),b=$(".page-sidebar");!1===c.hasClass("page-sidebar-closed")|| +!1===c.hasClass("page-sidebar-fixed")||$(this).hasClass("page-sidebar-hovering")||(c.removeClass("page-sidebar-closed").addClass("page-sidebar-hover-on"),$(".sidebar-toggler"),c.hasClass("page-sidebar-reversed")?b.width(u):(b.addClass("page-sidebar-hovering"),b.animate({width:u},350,"",function(){b.removeClass("page-sidebar-hovering")})))},Ea=function(){var c=$("body");if(!1!==c.hasClass("page-sidebar-hover-on")&&!1!==c.hasClass("page-sidebar-fixed")&&!$(this).hasClass("page-sidebar-hovering")){var b= +$(".page-sidebar"),f=$(".sidebar-toggler");c.hasClass("page-sidebar-reversed")?(c.addClass("page-sidebar-closed").removeClass("page-sidebar-hover-on"),b.width(q),f&&f.removeAttr("style")):(b.addClass("page-sidebar-hovering"),b.animate({width:q},350,"",function(){c.addClass("page-sidebar-closed").removeClass("page-sidebar-hover-on");b.removeClass("page-sidebar-hovering");f&&f.removeAttr("style")}))}},K=function(c,b,f,d){var g=c.attr("style")?c.attr("style"):"";styles=g.split(";");var h="";for(i=0;i< +styles.length;i++)if(0<=styles[i].indexOf(b)){h=styles[i];break}g=0<h.length?g.replace(h,""):g;g=(g+";"+b+":"+f+(d?" !important":"")+";").replace(/;;/g,";");c.attr("style",g)},Fa=function(){var c=G();"1"===Q("sidebar_closed")&&c.width>=zteframework_smallView&&$("body").addClass("page-sidebar-closed");$(".page-sidebar, .sidebar-toggler").on("click",".sidebar-toggler",function(c){c.preventDefault();c=$("body");$(".page-sidebar");c.hasClass("page-sidebar-closed")&&$(this).removeAttr("style")});$(".page-sidebar, .header").on("click", +".sidebar-toggler",function(c){var b=$("body"),d=$(".page-sidebar");b.hasClass("page-sidebar-hover-on")&&b.hasClass("page-sidebar-fixed")||d.hasClass("page-sidebar-hovering")?(b.removeClass("page-sidebar-hover-on"),d.css("width","").hide().show(),B(),A("sidebar_closed","0"),c.stopPropagation()):($(".sidebar-search",d).removeClass("open"),c=$(".zte-theme-panel"),$(".sidebar-pos-option",c).val(),c=$("[class='page-content']"),b.hasClass("page-sidebar-closed")?(b.removeClass("page-sidebar-closed"),b.hasClass("page-sidebar-fixed")&& +d.css("width",""),A("sidebar_closed","0"),c.css("marginLeft",u)):(b.addClass("page-sidebar-closed"),$(this).removeAttr("style"),A("sidebar_closed","1"),c.css("marginLeft",q)),B(!0));W()})},Ga=function(){$(".header").on("click",".hor-menu .hor-menu-search-form-toggler",function(c){$(this).hasClass("off")?($(this).removeClass("off"),$(".header .hor-menu .search-form").hide()):($(this).addClass("off"),$(".header .hor-menu .search-form").show());c.preventDefault()});$(".header").on("click"," li > a.iframe", +function(c){c.preventDefault();var b=$(this).attr("id");b&&0<b.length&&(N(b),v="dhByInterface");D=!0;Z($(this),c,"header")});$(".header").on("click",'.hor-menu a[data-toggle="tab"]',function(c){c.preventDefault();c=$(".hor-menu .nav").find("li.current");$("li.active",c).removeClass("active");$(".selected",c).remove();c=$(this).parents("li").last();c.addClass("current");c.find("a:first").append('<span class="selected"></span>')})},qa=function(){var c=0;return setInterval(function(){var b;null==b&& +(b=ZteFrameWork_conf.userName);b=FrameConst.REST_HEARTBEAT+"?username="+encodeURIComponent(b);$.ajax(b,{dataType:"text",cache:!1}).done(function(b){"true"==b&&(c=0)});c++;6<=c&&(disableHeartbeat(),bootbox.alert($.i18n.prop("com_zte_ums_aos_framework_ui_heartbeat_fail"),function(){window.location.replace("login.html")}))},1E4)};if(FrameConst.do_heartbeat)var O=qa();window.enableHeartbeat=function(){return O?"Already enabled!":(heartBeatTimes=0,O=qa(),"Enabled")};window.disableHeartbeat=function(){return O? +(clearInterval(O),O=null,"Disabled"):"Already disabled!"};window.doLogout=function(){window.location=FrameConst.REST_LOGOUT};$("#trigger_logout").click(function(){bootbox.confirm($.i18n.prop("com_zte_ums_ict_framework_ui_confirmlogout"),function(c){c&&doLogout()})});var P=!1,Ha=function(){function c(){if(screenfull.supportsFullScreen)screenfull.isFullScreen?screenfull.exitFullScreen():screenfull.requestFullScreen(),P=screenfull.isFullscreen;else if(isIE&&"undefined"!==typeof window.ActiveXObject){var c= +new ActiveXObject("WScript.Shell");null!==c&&(c.SendKeys("{F11}"),P=!P)}else P=screenfull.supportsFullScreen;setTimeout(function(){P?$("#fullscreen_label").text($.i18n.prop("com_zte_ums_ict_framework_ui_group_exitfullscreen")):$("#fullscreen_label").text($.i18n.prop("com_zte_ums_ict_framework_ui_group_fullscreen"))},500)}$("#trigger_fullscreen").click(function(){c()})},ra=function(c){if(0<w.count())for(var b in w.hash()){var f=$(".page-content .page-content-body ."+b);f&&0<f.length&&(!0==c?(f.attr("src", +""),f.remove()):b!=y&&f.attr("src",""),f.remove())}w.clear();if(0<x.count())for(b in x.hash())b!=y&&x.remove(b)},sa="",Ia=function(){var c=$(".zte-theme-panel");!1==$("body").hasClass("page-boxed")&&$(".layout-option",c).val("fluid");$(".sidebar-option",c).val("default");$(".language-option",c).val(b);$(".header-option",c).val("fixed");$(".footer-option",c).val("default");!1===$(".sidebar-pos-option").attr("disabled")&&$(".sidebar-pos-option",c).val(ZteFrameWork.isRTL()?"right":"left");var d=function(c){var b= +ZteFrameWork.isRTL()?c+"-rtl":c;$("#style_color").attr("href",ICTFRAME_CONST_THEME_COLOR_CSS_PREFFIX+b+".css");A("style_color",c);c=null;if(0<w.count())for(var d in w.hash())(c=$(".page-content .page-content-body ."+d))&&0<c.length&&ZteFrameWork.SyncCSS(c[0],1,"")};$(".toggler",c).click(function(){$(".toggler").hide();$(".toggler-close").show();$(".zte-theme-panel > .theme-options").show()});$(".toggler-close",c).click(function(){$(".toggler").show();$(".toggler-close").hide();$(".zte-theme-panel > .theme-options").hide()}); +$(".theme-colors > ul > li",c).click(function(){var b=$(this).attr("data-style");d(b);$("ul > li",c).removeClass("current");$(this).addClass("current")});$(".layout-option,.header-option, .sidebar-option, .footer-option, .sidebar-pos-option, .nav-pos-direction",c).change(function(){ta()});void 0!=Q("style_color")&&d(Q("style_color"));$(".language-option",c).change(function(){var b=$(".language-option",c).val();A("language-option",b);window.location.reload()})},ta=function(){var c=$(".zte-theme-panel"), +b=$(".layout-option",c).val(),f=$(".language-option",c).val(),d=$(".header-option",c).val(),g=$(".footer-option",c).val(),h=$(".nav-pos-direction",c).val();var k=$(".zte-theme-panel");if("disabled"!=$(".nav-pos-direction",k).attr("disabled")){var l=$("#page-sidebar-menu"),m=$("#main_hormenu"),l=$("#page-sidebar-menu"),m=$("#main_hormenu"),n=$("#"+megaSiderDivId),v=$("#"+fMenuMegaDivId),w=$("#"+fMenuSiderDivId),r=$("[class='page-content']");l&&0<l.length&&m&&0<m.length&&v&&0<v.length&&(h===zteframework_menu_horizontal? +(l.css("display","none"),v.css("display","none"),w.css("display","none"),r.css("marginLeft",0),$("body").addClass("page-full-width"),m.css("display","block"),$(".sidebar-option",k).val("default"),$(".sidebar-option",k).attr("disabled",!0),$(".sidebar-pos-option",k).val("left"),$(".sidebar-pos-option",k).attr("disabled",!0)):h===zteframework_menu_vertical?($("body").removeClass("page-full-width"),l.css("display","block"),$("body").hasClass("page-sidebar-closed")?r.css("marginLeft",q):r.css("marginLeft", +u),m.css("display","none"),v.css("display","none"),w.css("display","none"),n.css("display","none"),$(".sidebar-option",k).attr("disabled",!1),$(".sidebar-pos-option",k).attr("disabled",!1)):h===zteframework_menu_fmenu&&(l.css("display","none"),m.css("display","none"),w.css("display","none"),v.css("display","block"),r.css("marginLeft",0),$("body").addClass("page-full-width"),$(".sidebar-option",k).val("default"),$(".sidebar-option",k).attr("disabled",!0),$(".sidebar-pos-option",k).val("left"),$(".sidebar-pos-option", +k).attr("disabled",!0)))}k=$(".sidebar-option",c).val();l=$(".sidebar-pos-option",c).val();"fixed"==k&&"default"==d&&(alert($.i18n.prop("com_zte_ums_ict_framework_ui_fixedsidedefaultheaderError")),$(".header-option",c).val("fixed"),$(".sidebar-option",c).val("fixed"),d=k="fixed");"fixed"==k&&"right"==l&&(alert($.i18n.prop("com_zte_ums_ict_framework_ui_fixedsiderightpositionError")),$(".sidebar-pos-option",c).val("left"),l="left");$("body").removeClass("page-boxed").removeClass("page-footer-fixed").removeClass("page-sidebar-fixed").removeClass("page-header-fixed").removeClass("page-sidebar-reversed"); +$(".header > .header-inner").removeClass("container");1===$(".page-container").parent(".container").size()&&$(".page-container").insertAfter("body > .clearfix");1===$(".footer > .container").size()?$(".footer").html($(".footer > .container").html()):1===$(".footer").parent(".container").size()&&$(".footer").insertAfter(".page-container");$("body > .container").remove();"boxed"===b&&($("body").addClass("page-boxed"),$(".header > .header-inner").addClass("container"),$("body > .clearfix").after('<div class="container"></div>'), +$(".page-container").appendTo("body > .container"),"fixed"===g?$(".footer").html('<div class="container">'+$(".footer").html()+"</div>"):$(".footer").appendTo("body > .container"));sa!=b&&W();sa=b;"fixed"===d?($("body").addClass("page-header-fixed"),$(".header").removeClass("navbar-static-top").addClass("navbar-fixed-top")):($("body").removeClass("page-header-fixed"),$(".header").removeClass("navbar-fixed-top").addClass("navbar-static-top"));!1===$("body").hasClass("page-full-width")&&("fixed"=== +k?$("body").addClass("page-sidebar-fixed"):$("body").removeClass("page-sidebar-fixed"));"fixed"===g?$("body").addClass("page-footer-fixed"):$("body").removeClass("page-footer-fixed");ZteFrameWork.isRTL()?"left"===l?($("body").addClass("page-sidebar-reversed"),$("#frontend-link").tooltip("destroy").tooltip({placement:"right"})):(c=$("[class='page-content']"),c.css("marginLeft",0),$("body").removeClass("page-sidebar-reversed"),$("#frontend-link").tooltip("destroy").tooltip({placement:"left"})):"right"=== +l?(c=$("[class='page-content']"),c.css("marginLeft",0),$("body").addClass("page-sidebar-reversed"),$("#frontend-link").tooltip("destroy").tooltip({placement:"left"})):($("body").removeClass("page-sidebar-reversed"),$("#frontend-link").tooltip("destroy").tooltip({placement:"right"}));B();X();pa();A("layout-option",b);A("language-option",f);A("header-option",d);A("sidebar-option",k);A("sidebar-pos-option",l);A("nav-pos-direction",h)},A=function(c,b){store&&store(c,b)},Q=function(c){if(store)return store(c)}, +N=function(c){location.hash="#_"+c},ua=function(c,b,f,d){var g=$.url(ZteFrameWork.getCurrentScript(document)).attr("directory")+"proxy/proxy.html",g=$('<iframe id="ifm_Proxy" name="ifm_Proxy" oldproxyorigin="'+b+'" src="'+b+g+'" style="border: 0px; margin: 0px; padding: 0px; width: 100%; display:none;" ></iframe>'),h=$("#ifm_Proxy");h.hide();var k=$(".page-content .page-content-body"),l=[],m=[],n=[],q="";for(i=0;i<f.length;i++)"undefined"!==typeof f[i].link.href?(q=f[i].link.href,n.push("css")):"undefined"!== +typeof f[i].link.src?f[i].link.src&&0<f[i].link.src.length?(q=f[i].link.src,n.push("javascriptfile")):(q=f[i].link.text,n.push("javascripttext")):n.push("undefined"),l.push(q),m.push({pos:f[i].pos,scope:f[i].scope,id:f[i].link.id});c={iFrame:c,cssLinktyps:n,cssLinksrcs:l,cssLinkids:m,origin:b,flag:d};h&&0>=h.length?(g.appendTo(k),g.one("load",c,function(c){var b={iFrame:c.data.iFrame,cssLinktyps:c.data.cssLinktyps,cssLinksrcs:c.data.cssLinksrcs,cssLinkids:c.data.cssLinkids,flag:d};$("#ifm_Proxy")[0].contentWindow.postMessage(b, +c.data.origin)})):h.attr("oldproxyorigin")!=b?(h.attr("src",""),h.attr("oldproxyorigin",b),h.one("load",c,function(c){var b={iFrame:c.data.iFrame,cssLinktyps:c.data.cssLinktyps,cssLinksrcs:c.data.cssLinksrcs,cssLinkids:c.data.cssLinkids,flag:d};$("#ifm_Proxy")[0].contentWindow.postMessage(b,c.data.origin)}),h.attr("src",g.attr("src"))):h[0].contentWindow.postMessage({iFrame:c.iFrame,cssLinktyps:c.cssLinktyps,cssLinksrcs:c.cssLinksrcs,cssLinkids:c.cssLinkids,flag:d},c.origin)};return{init:function(){zte_http_headers&& +store("zte_http_headers",zte_http_headers);va();xa();wa();ra(!0);C.clear();X();pa();Ca();Ga();Fa();Ia();ta();$(function(){$(window).on("hashchange",function(){var c=location.hash.replace("#_","");if(c&&0<c.length)if("dhByInterface"==v.trim())v="";else{var b=c,f=void 0,d=c.indexOf("/");-1!=d&&(b=c.substring(0,d),f=c.substring(d+1));ZteFrameWork.goToURLByIDAndNewAction(b,f)}})});Ha();$("#header_dropdown_user").css("display","block");$("#com_zte_ums_ict_framework_img_netnumenLogo").css("display","inline"); +$("#com_zte_ums_ict_framework_ui_main_title").css("display","inline");handeCtxMenuitem()},clearCachedIframes:function(c){ra(c)},setBaseURLRoot:function(c){store&&store("baseURLRoot",c);c=$.url(c);location.hash=c.attr("fragment");c=c.attr("query");store&&store("baseURLRootAuth",c)},getBaseURLRoot:function(c){c="";store&&(c=store("baseURLRoot"));return c?c:""},clearBaseURLRoot:function(){store&&store("baseURLRoot","",-1)},setPageTitle:function(c){$("title").html(c+" - "+l)},getLanguage:function(){return ZteFrameWork_conf.acceptLanguage}, +getLocationHash:function(){return location.hash.replace("#_","")},setSceneURLRootPath:function(c){c&&0<c.trim().length&&(J=c.trim(),"/"!=J.charAt(J.length-1)&&(J+="/"))},addResponsiveHandler:function(c){I.push(c)},hiddenAlarmLight:function(){ia()},hiddenMenu:function(){ha()},setBreadcrumbByMenuID:function(c){var b=void 0,f=void 0,d=$(".zte-theme-panel"),d=$(".nav-pos-direction",d).val();if("vertical"===d){if(f=$("#page-sidebar-menu a[id='"+c+"']"),!f||1>f.length)f=$(".page-content a[id='"+c+"']")}else d=== +zteframework_menu_horizontal?(f=$("#main_hormenu a[id='"+c+"']"),0==f.length&&(f=$("#page-megachild-sidebar-menu a[id='"+c+"']"))):d===zteframework_menu_fmenu&&(f=$("#f_hormenu a[id='"+c+"']"),0==f.length&&(f=$("#page-f-sidebar-menu a[id='"+c+"']")));d=!1;if(0<f.length)for(var g=0;g<f.length;g++)if($(f[g]).parentsUntil(".header-inner").hasClass("hor-menu")){b=$(f[g]);break}else if($(f[g]).parentsUntil(".page-container").hasClass("page-sidebar")){b=$(f[g]);break}else if($(f[g]).parentsUntil(".more-botton-zone .btn-group").hasClass("dropdown-menu")){b= +$(f[g]);d=!0;break}else if($(f[g]).parentsUntil("#pageableDiv").hasClass("row1")){b=$(f[g]);d=!0;break}if(b&&0<b.length)d?oa(b,!1):M(b,!0,null);else{f="";if(!b||0>=b.length){var h=c;C.contains(h)&&(f="#"+C.items(h),b=$(f))}c=void 0;f&&0<f.length&&(c={breadcrumbBtnMenuItem:h});c&&b&&0<b.length&&M(b,!0,c)}},setSiderbarCollapseWidth:function(c){q=c},getSiderbarCollapseWidth:function(){return q},setSidebarWidth:function(c){u=c},getSidebarWidth:function(){return u},handlBaseURL:function(c){var b=ZteFrameWork.getBaseURLRoot(); +0<b.length&&(b=ZteFrameWork.getDomainURL(b),console.log("old a link href url:"+c),c=b+c.replace(ZteFrameWork.getDomainURL(c),""),console.log("baseURLRoot:"+b+" newURL:"+c));return c},startPageLoading:function(c){F(c)},stopPageLoading:function(){$(".page-loading").remove()},getLocationURLParameter:function(c,b){var f,d,g=decodeURIComponent(window.location.search.substring(1)).toLowerCase().split(b?b:"&");c=c.toLowerCase();for(f=0;f<g.length;f++)if(d=g[f].split("="),d[0]==c)return unescape(d[1]); +return null},getURLParameter:function(c,b){var f,d,g=decodeURIComponent(b).toLowerCase().split("&");c=c.toLowerCase();for(f=0;f<g.length;f++)if(d=g[f].split("="),d[0]==c)return unescape(d[1]);return null},isTouchDevice:function(){return h},getUniqueID:function(c){return c+"_"+Math.floor(Math.random()*(new Date).getTime())},isIE8:function(){return g},isIE9:function(){return n},isRTL:function(){return d},getViewPort:function(){return G()},getLayoutColorCode:function(c){return ca[c]?ca[c]:""},fixContentHeight:function(){B()}, +dealAtoIframe:function(c,b){var f=c.parentsUntil(".page-container").hasClass("page-sidebar")?"page-sidebar":"",f=c.parentsUntil(".header-inner").hasClass("hor-menu")?"header":f;Z(c,b,f);D=!1},getDomainURL:function(c){var b=$.url(c);c=b.attr("protocol");var f=b.attr("host"),b=b.attr("port");return c+"://"+f+(0<b.length?":"+b:"")},getCurrentScript:function(c){if(c&&c.currentScript)return console.log("0\u3001 "+c.currentScript.src),c.currentScript.src;var b;try{a.b.c()}catch(f){b=f.stack,f.sourceURL? +b=f.sourceURL:!b&&window.opera&&(b=(String(f).match(/of linked script \S+/g)||[]).join(" ")),console.log("1\u3001 "+b)}if(b)return console.log("2\u3001 "+b),b=b.split(/[@ ]/g).pop(),b="("==b[0]?b.slice(1,-1):b,console.log("3\u3001 "+b),b.replace(/(:\d+)?:\d+$/i,"");if(c){c=c.getElementsByTagName("script");b=0;for(var d;d=c[b++];)if("interactive"===d.readyState)return console.log("4\u3001 "+(d.className=d.src)),d.className=d.src}},SyncCSS:function(c,b,f){if(c){var d=[];if(f&&0<f.length&&f.endWith(".css")){f= +$('<a href="'+f+'"></a>');var g=document.createElement("link");g.href=f[0].href;f=null;g.rel="stylesheet";g.type="text/css";g.id="ifram_csssrc";d.push({pos:"head",scope:"all",link:g})}10!=b&&(0<$("#style_color").length&&(g=document.createElement("link"),g.href=$("#style_color")[0].href.replace(".css","_ifrm.css"),g.rel="stylesheet",g.type="text/css",g.id="style_color",d.push({pos:"head",scope:"all",link:g})),0<$("#font_awesome").length&&(f=document.createElement("link"),f.href=$("#font_awesome")[0].href, +f.rel="stylesheet",f.type="text/css",f.id="font_awesome",d.push({pos:"head",scope:"all",link:f})),g=$("script[src*='/pym.']"),g=0<g.length?g:$("script[src*='/pym1.']"),0<g.length&&(f=document.createElement("script"),f.src=g[0].src,f.type="text/javascript",f.id=g[0].id?g[0].id:"pymjs",d.push({pos:"head",scope:"one",link:f}),f=document.createElement("script"),g=0<y.split("-").length?y.split("-")[1]:"1",f.text="var t1;function pmchd(){console.log('In the frame "+y+",pym code call is begining; '+(typeof pym!= 'undefined'));if(typeof pym != 'undefined'){pymChild"+ +g+" = new pym.Child({ id: 'pdiv_"+y+"' ,polling: 500});window.clearInterval(t1); }};t1 = window.setInterval(pmchd,5);",f.type="text/javascript",f.id="pymChild",d.push({pos:"htmlend",scope:"one",link:f})),f=$("script[src*='/hk.']"),f=0<f.length?f:$("script[src*='/hk1.']"),0<f.length&&(g=document.createElement("script"),g.src=f[0].src,g.type="text/javascript",g.id=f[0].id?f[0].id:"hkjs",d.push({pos:"head",scope:"one",link:g}),g=document.createElement("script")));f=ZteFrameWork.getDomainURL(c.src);if(window.location.origin== +f){for(i=0;i<d.length;i++)(f=c.contentDocument.getElementById(d[i].link.id))&&("HEAD"===f.parentNode.tagName.toUpperCase?c.contentDocument.head.removeChild(f):"HTML"===f.parentNode.tagName.toUpperCase&&c.contentDocument.removeChild(f)),"head"==d[i].pos?c.contentDocument.head.appendChild(d[i].link):"bodyend"==d[i].pos?c.contentDocument.body.appendChild(d[i].link):"htmlend"==d[i].pos&&c.contentDocument.body.parentNode.appendChild(d[i].link);if((c=c.contentDocument.getElementsByTagName("iframe"))&&0< +c.length){var h=[];for(i=0;i<d.length&&"one"!=d[i].scope;i++)h.push(d[i]);for(j=0;j<c.length;j++)d={ifmHeadlins:h},f=ZteFrameWork.getDomainURL(c[j].src),window.location.origin==f?(f=function(c){for(i=0;i<c.data.ifmHeadlins.length;i++){var b=$(c.data.ifmHeadlins[i].link).clone()[0],f=this.contentDocument.getElementById(b.id);f&&("HEAD"===f.parentNode.tagName.toUpperCase?this.contentDocument.head.removeChild(f):"HTML"===f.parentNode.tagName.toUpperCase&&this.contentDocument.removeChild(f));"head"== +c.data.ifmHeadlins[i].pos?this.contentDocument.head.appendChild(b):"bodyend"==c.data.ifmHeadlins[i].pos?this.contentDocument.body.appendChild(b):"htmlend"==h[i].pos&&this.contentDocument.body.parentNode.appendChild(b)}},$(c[j]).off("onload",d,f),$(c[j]).on("onload",d,f),$(c[j]).trigger("onload")):0<h.length&&(console.log("\u8de8\u57df\u8bbf\u95ee: \u7cfb\u7edf\u5c06\u8fdb\u5165\u8de8\u57df\u8bbf\u95ee\u4ee3\u7406\u5904\u7406\u6d41\u7a0b "),ua(c[j].name,f,h,b))}}else 0<d.length&&(console.log("\u8de8\u57df\u8bbf\u95ee: \u7cfb\u7edf\u5c06\u8fdb\u5165\u8de8\u57df\u8bbf\u95ee\u4ee3\u7406\u5904\u7406\u6d41\u7a0b "), +ua(c.name,f,d,b))}},goToURL:function(c){ba=!0;"false"==ZteFrameWork.getLocationURLParameter("showNav")?location.reload():$("a[name='"+c+"']").click()},goToURLByName:function(c){"false"==ZteFrameWork.getLocationURLParameter("showNav")?location.reload():(url="a[name='"+c+"']",$(url).click())},goToURLByID:function(c){c&&("false"==ZteFrameWork.getLocationURLParameter("showNav")?location.reload():(0>c.indexOf("#")&&(c="#"+c),$(c).click()))},goToPortal:function(c){var b=top.location.href;console.log(b); +b=$.url(b);top.location=b.attr("directory")+"uifportal.html#"+c+"/"},goToURLByIDAndNewIPPort:function(b,d,f){V.replace(d.menuCategoryID,{ipPort:d.ipPortStr,ipTitle:d.newTitle});store&&store("menuCategoryID",d.menuCategoryID+"[menuCategoryID]"+d.ipPortStr+"[menuCategoryID]"+(d.newTitle?d.newTitle:""));var g=this.findMenuItemByMenuId(b);if(!g||0>=g.length){var h=this.getMenuItemId_From_MoreMenuRelation(b);if(h&&0<h.length&&(g=this.findMenuItemByMenuId(h))&&0<g.length&&(h=$("#"+b,$("#pageableDiv")).parent(), +$(".box.boxOperation",$(".carousel-inner")).removeClass("moreButtonSelected"),h=$("a>div.box",h),!1==h.hasClass("moreButtonSelected")&&h.addClass("moreButtonSelected"),h=$(".item.moreButtonsTag"),0<h.length))for(var k=0;k<h.length;k++){var l=$(h[k]);l.removeClass("active");0<$(".moreButtonSelected",l).length&&l.addClass("active")}}g&&0<g.length&&(d=g.attr(d.menuCategoryID+"-multiInsrc"))&&(g.attr("breadcrumgroupbuttonsrc",d),aa(d,!0));U&&clearInterval(U);U=setInterval(function(){!0==T&&(clearInterval(U), +ZteFrameWork.goToURLByIDAndNewAction(b,f,null))},10)},goToURLByIDAndNewAction:function(b,d,f){if(b){var g=this.findMenuItemByMenuId(b);if(f)window.open(ICTFRAME_CONST_DEFAULTPAGE_PATH+f.paramStr+("#_"+b),f.windowTitle).name=d;else{(f=g?g.attr("id"):"")&&0<f.length&&N(f);var h="";if(!g||0>=g.length)f=b,C.contains(f)&&(h=C.items(f),g=this.findMenuItemByMenuId(h)),g&&0<g.length&&(R=!0);if(!g||0>=g.length){var k=this.getMenuItemId_From_MoreMenuRelation(b);k&&(g=this.findMenuItemByMenuId(k))}if(store&& +store("globleCurrentBreadcrumb")){E=store("globleCurrentBreadcrumb");for(var l=$("a",$("<div>"+E+"</div>")),m,n,q=0;q<l.length;q++)for(m=$(l[q]),n=$("a[id='"+m.attr("id")+"']"),j=0;j<n.length;j++)$(n[j]).attr("name",m.attr("name"))}if(g&&0<g.length){if(b=$(".zte-theme-panel"),$(".nav-pos-direction",b).val()===zteframework_menu_fmenu){l=g.attr("hparentid");b=g.attr("id");var q=0;for(m=g;b!=l&&20>q;)m=ZteFrameWork.findMenuItemByMenuId(l),l=m.attr("hparentid"),b=m.attr("id"),q++;m.hasClass("active")|| +m.parent().addClass("active")}}else console.log("goToURLByIDAndNewAction():Can't find the menuitem.The menu ID is:"+b+".Please check if the ID or ID cache is correct.");b=void 0;d&&h&&0<h.length?b={action:d,breadcrumbBtnMenuItem:f}:d?b={action:d}:h&&0<h.length?b={breadcrumbBtnMenuItem:f}:k&&(R=!0,b={breadcrumbBtnMenuItem:f});if(b&&b.action||b&&b.breadChangeType)v="dhByInterface";g&&0<g.length&&(g.one("click",b,function(b){ZteFrameWork.dealAtoIframe($(this),b);return!1}),g.click())}}},getBreadcrumbEle:function(){return $(".breadcrumbUl")[0]}, +findMenuItemByMenuId:function(b){var d=void 0,f=$(".zte-theme-panel"),g=$(".nav-pos-direction",f).val(),f=void 0;"vertical"===g?f=$("#page-sidebar-menu a[id='"+b+"']"):g===zteframework_menu_horizontal?(f=$("#main_hormenu a[id='"+b+"']"),0==f.length&&(f=$("#page-megachild-sidebar-menu a[id='"+b+"']"))):g===zteframework_menu_fmenu&&(f=$("#f_hormenu a[id='"+b+"']"),0==f.length&&(f=$("#page-f-sidebar-menu a[id='"+b+"']")));f&&0==f.length&&(console.log("fmenu alink length is :"+$("#page-f-sidebar-menu a").length), +console.log("cant find menu in sidemenu\u3001megamenu and fmenu , the menu id is "+b));if(f&&0<f.length)for(b=0;b<f.length;b++)if($(f[b]).parentsUntil(".header-inner").hasClass("hor-menu")){d=$(f[b]);break}else if($(f[b]).parentsUntil(".page-container").hasClass("page-sidebar")){d=$(f[b]);break}return d},getMenuItemId_From_MoreMenuRelation:function(b){var d=$(".zte-theme-panel"),d=$(".nav-pos-direction",d).val();d===zteframework_menu_vertical?relationAry=sideBarMenu_to_moreMenu_frame:d===zteframework_menu_horizontal? +relationAry=horBarMenu_to_moreMenu_frame:d===zteframework_menu_fmenu&&(relationAry=horBarMenu_to_moreMenu_frame);if(relationAry&&b){for(d=0;d<relationAry.length;d++)for(var f=relationAry[d],g=f.moreMenuIds,h=0;h<g.length;h++)if(g[h]&&g[h]==b)return f.mainMenuId;return null}},getMenuItemFoucsByID:function(b){if(b){var d=void 0,f=void 0,g=$(".zte-theme-panel"),g=$(".nav-pos-direction",g).val();"vertical"===g?f=$("#page-sidebar-menu a[id='"+b+"']"):g===zteframework_menu_horizontal?(f=$("#main_hormenu a[id='"+ +b+"']"),0==f.length&&(f=$("#page-megachild-sidebar-menu a[id='"+b+"']"))):g===zteframework_menu_fmenu&&(f=$("#f_hormenu a[id='"+b+"']"),0==f.length&&(f=$("#page-f-sidebar-menu a[id='"+b+"']")));if(0<f.length)for(g=0;g<f.length;g++)if($(f[g]).parentsUntil(".header-inner").hasClass("hor-menu")){d=$(f[g]);break}else if($(f[g]).parentsUntil(".page-container").hasClass("page-sidebar")){d=$(f[g]);break}f="";if(!d||0>=d.length)menuItemID=b,C.contains(menuItemID)&&(f="#"+C.items(menuItemID),d=$(f));b=void 0; +f&&0<f.length&&(b={breadcrumbBtnMenuItem:menuItemID});d&&0<d.length&&(d.one("click",b,function(b){var c=$(this).parentsUntil(".page-container").hasClass("page-sidebar")?"page-sidebar":"",c=$(this).parentsUntil(".header-inner").hasClass("hor-menu")?"header":c;D=!1;Ba($(this),b,c);return!1}),d.click())}},openbreadcrumbLink:function(b,d){var f=b.attr("href");!f||2>f.length||(d.preventDefault(),(f=b.attr("id"))&&0<f.length&&(N(f),v="dhByInterface"),F(),S(b,d))},getURLParam:function(b){b=RegExp("(^|&)"+ +b.toLowerCase()+"=([^&]*)(&|$)");b=decodeURIComponent(location.search.substring(1)).toLowerCase().match(b);return null!=b?unescape(b[2]):null}}}(),currentRunningScriptSrcPath={}; +function runHtmlScripts(b){var d=document.createElement("div");d.innerHTML=b;b=d.getElementsByTagName("script");$(b).each(function(){var b=this.src;(b=ZteFrameWork.handlBaseURL(b))?(currentRunningScriptSrcPath[b.substring(b.lastIndexOf("/")+1)]=b.substring(0,b.lastIndexOf("/")+1),$.getScript(b)):$.globalEval(this.text||this.textContent||this.innerHTML||"")})} +function stripHtmlScripts(b){var d=document.createElement("div");d.innerHTML=b;b=d.getElementsByTagName("script");$(b).each(function(){this.src=ZteFrameWork.handlBaseURL(this.src);this.parentNode.removeChild(this)});return d.innerHTML} +function getsiderBarMenu(b){if(!(2>b.length)){b=ZteFrameWork.handlBaseURL(b);ZteFrameWork.startPageLoading();var d=$("#page-sidebar-menu");d.empty();d.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>");$.ajax({type:"GET",cache:!1,url:b,dataType:"html",success:function(b){var k=stripHtmlScripts(b);d.append(k);runHtmlScripts(b);siderBarMenuAuthentication();dealMysqlBackupMenu();setTimeout(function(){ZteFrameWork.stopPageLoading();goToHomePage()}, +1E3)},error:function(b,d,g){}})}} +var setLayoutValueByCookie=function(){var b=$(".zte-theme-panel");void 0!=store("layout-option")&&$(".layout-option",b).val(store("layout-option"));void 0!=store("language-option")&&$(".language-option",b).val(store("language-option"));void 0!=store("sidebar-option")&&$(".sidebar-option",b).val(store("sidebar-option"));void 0!=store("header-option")&&$(".header-option",b).val(store("header-option"));void 0!=store("sidebar-pos-option")&&$(".sidebar-pos-option",b).val(store("sidebar-pos-option"));$("[class='nav-load-error']", +$(".hormenu"));$("[class='nav-load-error']",$("[class='page-sidebar-menu']"));$(".nav-pos-direction",b).val("fmenu")}; +function getHorMenu(b){setLayoutValueByCookie();2>b.length||(b=ZteFrameWork.handlBaseURL(b),ZteFrameWork.startPageLoading(),$("#main_hormenu").empty(),$.ajax({type:"GET",async:!1,cache:!1,url:b,dataType:"html",success:function(b){var h=stripHtmlScripts(b);$("#main_hormenu").append(h);runHtmlScripts(b);"mysql"==ZteFrameWork_conf.dbType&&$(".hor-menu a[id='uep-ict-backup-baseDataBack']").parent().remove();horMenuAuthentication("main_hormenu");ZteFrameWork.stopPageLoading();"horizontal"===$(".nav-pos-direction", +panel).val()&&setTimeout(function(){},150)},error:function(b,h,k){$("[class='page-content']");$(".nav-pos-direction",panel).attr("disabled",!0)}}))} +function getMegaFMenu(b){if(!(2>b.length)){b=ZteFrameWork.handlBaseURL(b);ZteFrameWork.startPageLoading();var d=$("#"+megaSiderDivId);d.empty();d.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>");$.ajax({type:"GET",async:!1,cache:!1,url:b,dataType:"html",success:function(b){var k=stripHtmlScripts(b);d.append(k);runHtmlScripts(b);FMenuAuthentication(megaDivId,megaSiderDivId);rebuildHorMenu();ajustFMenu(megaDivId,megaSiderDivId);ZteFrameWork.stopPageLoading()}, +error:function(b,d,g){}})}}function iniHorMenu(){var b=$("#main_hormenu");b&&((b=b.attr("menuSrc"))&&0<b.length&&getHorMenu(b),(b=$("#"+megaSiderDivId))&&(b=b.attr("menuSrc"))&&0<b.length&&getMegaFMenu(b))}function iniFMenu(){var b=$("#f_hormenu"),d=$("#page-f-sidebar-menu");b&&d&&(b=b.attr("menuSrc"),d=d.attr("menuSrc"),b&&0<b.length&&d&&0<d.length&&getFMenu(b,d))} +function getFMenu(b,d){if(!(2>b.length||2>d.length)){b=ZteFrameWork.handlBaseURL(b);d=ZteFrameWork.handlBaseURL(d);ZteFrameWork.startPageLoading();$("#f_hormenu").empty();$("#page-f-sidebar-menu").empty();$.ajax({type:"GET",async:!1,cache:!1,url:b,dataType:"html",success:function(b){var d=stripHtmlScripts(b);$("#f_hormenu").append(d);horMenuAuthentication("f_hormenu");runHtmlScripts(b);dealMysqlBackupMenu();ZteFrameWork.stopPageLoading()},error:function(b,d,h){$("#f_hormenu").append('<h4 class="nav-load-error">'+ +$.i18n.prop("com_zte_ums_ict_framework_ui_loadmenuerror")+"</h4>");$("[class='page-content']");$(".nav-pos-direction",panel).attr("disabled",!0)}});var h=$("#"+fMenuSiderDivId);h.empty();h.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>");$.ajax({type:"GET",cache:!1,url:d,dataType:"html",success:function(b){var d=stripHtmlScripts(b);h.append(d);h.children().css("display","none");runHtmlScripts(b);dealMysqlBackupMenu();FMenuAuthentication(fMenuMegaDivId, +fMenuSiderDivId);ajustFMenu(fMenuMegaDivId,fMenuSiderDivId);ZteFrameWork.stopPageLoading();loadi18n_WebFramework_sideMenu()},error:function(b,d,h){$(".page-f-sidebar-menu").append('<h4 class="nav-load-error">'+$.i18n.prop("com_zte_ums_ict_framework_ui_loadmenuerror")+"</h4>")}})}}function iniSidebarMenu(){var b=$("#page-sidebar-menu");b&&(b=b.attr("menuSrc"))&&0<b.length&&getsiderBarMenu(b)} +function getChangePWDDlg(b){2>b.length||(ZteFrameWork.startPageLoading(),$(".modal-dialog .Changepasswd").empty(),$.ajax({type:"GET",cache:!1,url:b,dataType:"html",success:function(b){$(".modal-dialog .Changepasswd").append(b);ChangePWD.init();ZteFrameWork.stopPageLoading()},error:function(b,h,k){$(".modal-dialog .Changepasswd").append("<h4>"+$.i18n.prop("com_zte_ums_ict_framework_ui_loadchgpwdpageError")+"</h4>")}}))} +function iniChangePWDDlg(){var b=$(".modal-dialog .Changepasswd").attr("dlgsrc");b&&0<b.length&&getChangePWDDlg(b)}function getHeaderMenu(b){2>b.length||(ZteFrameWork.startPageLoading(),$("#headerMenu").empty(),$.ajax({type:"GET",cache:!1,async:!1,url:b,dataType:"html",success:function(b){$("#headerMenu").append(b);ZteFrameWork.stopPageLoading()},error:function(b,h,k){}}))} +function goToHomePage(){if((locationhash=ZteFrameWork.getLocationHash())&&0<locationhash.length){var b=null;if(store&&store("menuCategoryID")){var d=store("menuCategoryID").split("[menuCategoryID]");2<d.length&&(b={menuCategoryID:d[0],ipPortStr:d[1],newTitle:d[2]})}b?ZteFrameWork.goToURLByIDAndNewIPPort(locationhash,b,null):ZteFrameWork.goToURLByIDAndNewAction(locationhash,null,null)}else{var b=$("#page-sidebar-menu"),d=$("#main_hormenu"),h=$("#"+fMenuMegaDivId),k=$("#page-f-sidebar-menu"),g=null, +g=$(".nav-pos-direction",panel).val();"vertical"===g?(g=$(".iframe.start",b),dealStartMenu(g,b)):"horizontal"===g?(g=$(".iframe.start",d),dealStartMenu(g,d)):g===zteframework_menu_fmenu&&((g=$(".iframe.start",h))&&1>g.length&&(g=$(".iframe.start",k)),dealStartMenu(g,h,k))}} +var dealStartMenu=function(b,d,h){var k=setInterval(function(){b&&0<b.length?(b.click(),clearInterval(k)):(console.log("the start menu click event is not be triggerd ,so do it repeat!!"),$("a[operation]",d).each(function(){b=$(this);return!1}),h&&b&&1>b.length&&$("a[operation]",h).each(function(){b=$(this);return!1}))},100);handeCtxMenuitem()}; +function handeCtxMenuitem(){$(".page-sidebar ul li a").each(function(){$(this).attr("href")&&"javascript:;"!=$(this).attr("href")&&"#"!=$(this).attr("href")&&$(this).attr("oncontextmenu","return false")});$(".hormenu li a").each(function(){$(this).attr("href")&&"javascript:;"!=$(this).attr("href")&&"#"!=$(this).attr("href")&&$(this).attr("oncontextmenu","return false")})} +function initBaseInfo(){$("#logout_label").text($.i18n.prop("com_zte_ums_ict_framework_ui_group_logout"));$("#fullscreen_label").text($.i18n.prop("com_zte_ums_ict_framework_ui_group_fullscreen"));$("#changePwd_label").text($.i18n.prop("com_zte_ums_ict_framework_ui_changePwd"));$("#com_zte_ums_ict_framework_moudle_about").text($.i18n.prop("com_zte_ums_ict_framework_moudle_about"));$("#com_zte_ums_ict_framework_moudle_help").text($.i18n.prop("com_zte_ums_ict_framework_moudle_help"));$("#zte_menu-toggler").attr("title", +$.i18n.prop("com_zte_ums_ict_framework_moudle_menutoggler"))}window.closeModal=function(b){b&&(0>b.indexOf("#")&&(b="#"+b),$(b).modal("hide"))};function getLcsRight(b){var d=[];if(b&&0<b.length){b={data:JSON.stringify({keys:b})};var h=FrameConst.REST_GETLICENSEINFO+"?tmpstamp="+(new Date).getTime(),h=ZteFrameWork.handlBaseURL(h);$.ajax({dataType:"json",type:"GET",async:!1,url:h,data:b,success:function(b){b&&(d=b.data)},error:function(b,g,h){d=null}})}return d} +function siderBarMenuAuthentication(){var b=[],d=[];$("a[licenseid]",$(".page-sidebar-menu")).each(function(){var g=$(this).attr("licenseid");g&&(d.push(g),g=$(this).attr("id"),b.push(g))});var h=getLcsRight(d);if(h&&h.length==b.length)for(var k=0;k<b.length;k++){var g=b[k];"True"!=h[k].value&&$("#"+g,$(".page-sidebar-menu")).parent().remove()}var n=[];$("a[operation]",$(".page-sidebar-menu")).each(function(){var b=$(this).attr("operation");b&&n.push(b)});var m=getAllOperCodeRights(n);$("a[operation]", +$(".page-sidebar-menu")).each(function(){var b=$(this).attr("operation");b&&(hasRight(b,m)||$(this).parent("li").remove())});rebuildSiderBarMenu()} +function horMenuAuthentication(b){var d=[],h=[];$("a[licenseid]",$("#"+b)).each(function(){var b=$(this).attr("licenseid");b&&(h.push(b),b=$(this).attr("id"),d.push(b))});var k=getLcsRight(h);if(k&&k.length==d.length)for(var g=0;g<d.length;g++){var n=d[g];"True"!=k[g].value&&$("#"+n,$("#"+b)).parent().remove()}var m=[];$("a[operation]",$("#"+b)).each(function(){var b=$(this).attr("operation");b&&m.push(b)});var l=getAllOperCodeRights(m);$("a[operation]",$("#"+b)).each(function(){var b=$(this).attr("operation"); +b&&(hasRight(b,l)||$(this).parent("li").remove())});rebuildHorMenu()} +function ajustFMenu(b,d){$("a[hparentid]",$("#"+d)).each(function(){var d=$(this).attr("hparentId"),d=$("a[id = "+d+"]",$("#"+b)),k=d.attr("href");if(null==k||"#"==k.trim()||"javascript"==k){var g=$(this);null!=$(this).attr("href")&&"#"!=$(this).attr("href")&&"javascript:;"!=$(this).attr("href")||$("a[href]",$(this).parent().children("ul")).each(function(){g=$(this);if(null!=g&&"#"!=g&&"javascript"!=g)return!1});d.attr("href",g.attr("href"));d.attr("shiftjs",g.attr("shiftjs"));d.attr("cachenum",g.attr("cachenum")); +d.attr("iframeName",g.attr("iframeName"));d.attr("xdomain",g.attr("xdomain"));d.attr("cssSrc",g.attr("cssSrc"));d.attr("category",g.attr("category"));d.attr("breadcrumgroupbuttonsrc",g.attr("breadcrumgroupbuttonsrc"));d.attr("operation",g.attr("operation"));d.attr("iframeautoscroll",g.attr("iframeautoscroll"))}})} +function FMenuAuthentication(b,d){var h={};$("a[hparentid]",$("#"+d)).each(function(){var b=$(this).attr("hparentid");h[b]=1});checkFmenuRightByAttr("licenseid",b,d,getLcsRight);checkFmenuRightByAttr("operation",b,d,getAllOperCodeRights);rebuildSiderBarMenu();var k={};$("a[hparentid]",$("#"+d)).each(function(){var b=$(this).attr("hparentid");k[b]=1});for(var g in h)if(null==k[g]){var n=$("#"+g,$("#"+b));null!=n.attr("href")&&"javascript:;"!=n.attr("href")&&"#"!=n.attr("href")||n.parent().remove()}} +function checkFmenuRightByAttr(b,d,h,k){var g=[],n=[];$("a["+b+"]",$("#"+h)).each(function(){var d=$(this).attr(b);d&&(n.push(d),d=$(this).attr("id"),g.push({id:d}))});if((d=k(n))&&d.length==g.length)for(k=0;k<g.length;k++){var m=g[k].id;"True"!=d[k].value&&$("#"+m,$("#"+h)).parent().remove()}} +function groupButtonAuthentication(){var b=[],d=[];$("a[licenseid]",$(".more-botton-zone > li.btn-group")).each(function(){var g=$(this).attr("licenseid");g&&(d.push(g),g=$(this).attr("id"),b.push(g))});var h=getLcsRight(d);if(h&&h.length==b.length)for(var k=0;k<b.length;k++){var g=b[k];"True"!=h[k].value&&$("#"+g,$(".more-botton-zone > li.btn-group")).parent().remove()}"mysql"==ZteFrameWork_conf.dbType&&$("#uep-ict-backup-baseDataBack",$(".more-botton-zone > li.btn-group")).parent().remove();var n= +[];$("a[operation]",$(".more-botton-zone > li.btn-group")).each(function(){var b=$(this).attr("operation");b&&n.push(b)});var m=getAllOperCodeRights(n);$("a[operation]",$(".more-botton-zone > li.btn-group")).each(function(){var b=$(this).attr("operation");b&&(hasRight(b,m)||$(this).parent("li").remove())});0==$("li > a",$(".more-botton-zone > li.btn-group")).length&&$(".more-botton-zone > li.btn-group").remove()} +function rebuildSiderBarMenu(){0==$("a.start").length&&$('li > a[href!="javascript:;"]',$(".page-sidebar-menu")).eq(0).addClass("start");$("ul.sub-menu",$(".page-sidebar-menu")).each(function(){0==$(this).has("li").length&&$(this).parent("li").remove()})} +function rebuildHorMenu(){0==$("a.start").length&&$('li > a[href!="#"]',$("#main_hormenu")).eq(0).addClass("start");$("ul.mega-menu-submenu",$("#main_hormenu")).each(function(){0==$(this).has("li > a").length&&$(this).remove()});$("div.zteDivWidth",$("#main_hormenu")).each(function(){0==$(this).has("ul").length&&$(this).remove()});$("ul.dropdown-menu",$("#main_hormenu")).each(function(){0==$(this).has("ul").length&&$(this).parent("li").remove()});$("li.divider",$("#main_hormenu")).each(function(){$(this).next().hasClass("divider")&& +$(this).remove()});$("li.divider",$("#main_hormenu")).each(function(){0==$(this).next().length&&$(this).remove()})} +function getAllOperCodeRights(b){var d=[];if(b&&0<b.length){var h=JSON.stringify({operations:b}),h=FrameConst.REST_CHECKRIGHT+"?data="+h+"&tmpstamp="+(new Date).getTime(),h=ZteFrameWork.handlBaseURL(h);$.ajax({dataType:"json",type:"GET",async:!1,url:h,data:null,success:function(b){d=b.value},error:function(b,d,h){401==b.status?window.location.replace("login.html"):console.log("Communication Error!")}})}return{opCodes:b,rights:d}} +function hasRight(b,d){for(var h=0;h<d.opCodes.length;h++)if(d.opCodes[h]==b)return!0==d.rights[h];return!1} +function dealMysqlBackupMenu(){var b=ZteFrameWork_conf.dbType;if(void 0===b||"mysql"===b){var b=$("[class='page-sidebar-menu']"),d=$(".hormenu");0<b.length&&0<$("#uep-ict-backup-dataBackup").length&&$("#uep-ict-backup-dataBackup",b).attr("breadcrumGroupButtonSrc",ICTFRAME_CONST_DATABACKUP_PATH);0<d.length&&0<$("#uep-ict-backup-dataBackup").length&&($("#uep-ict-backup-dataBackup",d).attr("breadcrumGroupButtonSrc",ICTFRAME_CONST_DATABACKUP_PATH),$("#uep-ict-backup-dataBackup").parent("li").attr("style", +"display:block"),$("#uep-ict-backup-allDbStructBackup").parent("li").attr("style","display:none"),$("#uep-ict-backup-baseDataBack").parent("li").attr("style","display:none"))}} +function dealMavToggle(b){var d=$("#page-sidebar-menu"),h=$("#main_hormenu"),k=$(".zte-theme-panel");$(".nav-pos-direction",k).val();"hidden"==$(b).attr("navtoggledispattr")?($(b).attr("navtoggledispattr","display"),d.css("display","block")):($(b).attr("navtoggledispattr","hidden"),d.css("display","none"));h.css("display","none")}; diff --git a/openo-portal/portal-common/src/main/webapp/common/js/core/const.js b/openo-portal/portal-common/src/main/webapp/common/js/core/const.js new file mode 100644 index 00000000..1dba1f3e --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/core/const.js @@ -0,0 +1,56 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var fMenuSiderDivId = 'page-f-sidebar-menu'; +var ICTFRAME_CONST_SPINNER_GIF_PATH="../../iui/framework/img/loading-spinner-grey.gif"; +var ICTFRAME_CONST_IFRAME_HEIGHT_AJUST = 10; +var ICTFRAME_CONST_IFRAME_HEIGHT_AJUST_IE = 5; +var ICTFRAME_CONST_THEME_COLOR_CSS_PREFFIX = "css/themes/"; +var ICTFRAME_CONST_DEFAULTPAGE_PATH = "default.html?"; +var ICTFRAME_CONST_DATABACKUP_PATH = 'menus/dataBackup-mysql.html'; +var IS_V5_TESTVERSION = true; + + +var FrameConst={}; +//Ĭϵ¼ɹתҳ +FrameConst.DEFAULT_LOGINSKIP_PAGE = "main-page.html"; + +FrameConst.do_heartbeat = false; +FrameConst.change_pass = false; +//Ƿ +FrameConst.isEncypt = "false"; +//FrameConst.REST_FRAMECOMMIFO = "/web/rest/web-common/getMenuItemVisible"; +FrameConst.REST_FRAMECOMMIFO = "../../api/uiframe/v1/frameCommInfo"; +//FrameConst.REST_HEARTBEAT = "/web/rest/web-common/common?action=heartbeat"; +FrameConst.REST_HEARTBEAT = "../../api/uiframe/v1/heartbeat"; +//FrameConst.REST_GETLICENSEINFO = "/web/rest/web-license/getlicensevalueinfo"; +FrameConst.REST_GETLICENSEINFO = "../../api/uiframe/v1/licensevalueinfo"; +//FrameConst.REST_CHECKRIGHT = "/web/rest/web-common/checkRight"; +FrameConst.REST_CHECKRIGHT = "../../api/uiframe/v1/checkRight"; +//FrameConst.REST_LOGIN = "/web/res/web-common/login"; +FrameConst.REST_LOGIN = "../../api/uiframe/v1/login"; +//FrameConst.REST_LOGOUT = "/web/res/web-common/loginOut?SSOAction=SSOLogout"; +FrameConst.REST_LOGOUT = "../../api/uiframe/v1/loginOut?SSOAction=SSOLogout"; +//FrameConst.REST_GET_FRAME_MENUDIRECTION = "/web/rest/web-common/GetConfByKey?key=usf.mainframe.web.navigation.direction"; +FrameConst.REST_GET_FRAME_MENUDIRECTION = "../../api/uiframe/v1/confByKey?key=usf.mainframe.web.navigation.direction"; +//FrameConst.REST_GET_USERNAME = "/web/rest/web-common/common?action=getUserName"; +FrameConst.REST_GET_USERNAME = "../../api/uiframe/v1/userName"; + + +//FrameConst.REST_GET_VERSIONINFO = "/web/rest/web-common/getVersionInfo"; +FrameConst.REST_GET_VERSIONINFO = "../../api/uiframe/v1/versionInfo"; +var zte_http_headers=new Array(); +zte_http_headers.push({"key":"ICTAuthentication","value":"icttka","store":true}); +zte_http_headers.push({"key":"isFromWeb","value":"1","store":false});
\ No newline at end of file diff --git a/openo-portal/portal-common/src/main/webapp/common/js/core/hk.min.js b/openo-portal/portal-common/src/main/webapp/common/js/core/hk.min.js new file mode 100644 index 00000000..73ab7f2c --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/core/hk.min.js @@ -0,0 +1,819 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +;(function(window, define) { + var _ = { + version: "2.3.0", + areas: {}, + apis: {}, + + // utilities + inherit: function(api, o) { + for (var p in api) { + if (!o.hasOwnProperty(p)) { + o[p] = api[p]; + } + } + return o; + }, + stringify: function(d) { + return d === undefined || typeof d === "function" ? d+'' : JSON.stringify(d); + }, + parse: function(s) { + // if it doesn't parse, return as is + try{ return JSON.parse(s); }catch(e){ return s; } + }, + + // extension hooks + fn: function(name, fn) { + _.storeAPI[name] = fn; + for (var api in _.apis) { + _.apis[api][name] = fn; + } + }, + get: function(area, key){ return area.getItem(key); }, + set: function(area, key, string){ area.setItem(key, string); }, + remove: function(area, key){ area.removeItem(key); }, + key: function(area, i){ return area.key(i); }, + length: function(area){ return area.length; }, + clear: function(area){ area.clear(); }, + + // core functions + Store: function(id, area, namespace) { + var store = _.inherit(_.storeAPI, function(key, data, overwrite) { + if (arguments.length === 0){ return store.getAll(); } + if (data !== undefined){ return store.set(key, data, overwrite); } + if (typeof key === "string"){ return store.get(key); } + if (!key){ return store.clear(); } + return store.setAll(key, data);// overwrite=data, data=key + }); + store._id = id; + try { + var testKey = '_safariPrivate_'; + area.setItem(testKey, 'sucks'); + store._area = area; + area.removeItem(testKey); + } catch (e) {} + if (!store._area) { + store._area = _.inherit(_.storageAPI, { items: {}, name: 'fake' }); + } + store._ns = namespace || ''; + if (!_.areas[id]) { + _.areas[id] = store._area; + } + if (!_.apis[store._ns+store._id]) { + _.apis[store._ns+store._id] = store; + } + return store; + }, + storeAPI: { + // admin functions + area: function(id, area) { + var store = this[id]; + if (!store || !store.area) { + store = _.Store(id, area, this._ns);//new area-specific api in this namespace + if (!this[id]){ this[id] = store; } + } + return store; + }, + namespace: function(namespace, noSession) { + if (!namespace){ + return this._ns ? this._ns.substring(0,this._ns.length-1) : ''; + } + var ns = namespace, store = this[ns]; + if (!store || !store.namespace) { + store = _.Store(this._id, this._area, this._ns+ns+'.');//new namespaced api + if (!this[ns]){ this[ns] = store; } + if (!noSession){ store.area('session', _.areas.session); } + } + return store; + }, + isFake: function(){ return this._area.name === 'fake'; }, + toString: function() { + return 'store'+(this._ns?'.'+this.namespace():'')+'['+this._id+']'; + }, + + // storage functions + has: function(key) { + if (this._area.has) { + return this._area.has(this._in(key));//extension hook + } + return !!(this._in(key) in this._area); + }, + size: function(){ return this.keys().length; }, + each: function(fn, and) { + for (var i=0, m=_.length(this._area); i<m; i++) { + var key = this._out(_.key(this._area, i)); + if (key !== undefined) { + if (fn.call(this, key, and || this.get(key)) === false) { + break; + } + } + if (m > _.length(this._area)) { m--; i--; }// in case of removeItem + } + return and || this; + }, + keys: function() { + return this.each(function(k, list){ list.push(k); }, []); + }, + get: function(key, alt) { + var s = _.get(this._area, this._in(key)); + return s !== null ? _.parse(s) : alt || s;// support alt for easy default mgmt + }, + getAll: function() { + return this.each(function(k, all){ all[k] = this.get(k); }, {}); + }, + set: function(key, data, overwrite) { + var d = this.get(key); + if (d != null && overwrite === false) { + return data; + } + return _.set(this._area, this._in(key), _.stringify(data), overwrite) || d; + }, + setAll: function(data, overwrite) { + var changed, val; + for (var key in data) { + val = data[key]; + if (this.set(key, val, overwrite) !== val) { + changed = true; + } + } + return changed; + }, + remove: function(key) { + var d = this.get(key); + _.remove(this._area, this._in(key)); + return d; + }, + clear: function() { + if (!this._ns) { + _.clear(this._area); + } else { + this.each(function(k){ _.remove(this._area, this._in(k)); }, 1); + } + return this; + }, + clearAll: function() { + var area = this._area; + for (var id in _.areas) { + if (_.areas.hasOwnProperty(id)) { + this._area = _.areas[id]; + this.clear(); + } + } + this._area = area; + return this; + }, + + // internal use functions + _in: function(k) { + if (typeof k !== "string"){ k = _.stringify(k); } + return this._ns ? this._ns + k : k; + }, + _out: function(k) { + return this._ns ? + k && k.indexOf(this._ns) === 0 ? + k.substring(this._ns.length) : + undefined : // so each() knows to skip it + k; + } + },// end _.storeAPI + storageAPI: { + length: 0, + has: function(k){ return this.items.hasOwnProperty(k); }, + key: function(i) { + var c = 0; + for (var k in this.items){ + if (this.has(k) && i === c++) { + return k; + } + } + }, + setItem: function(k, v) { + if (!this.has(k)) { + this.length++; + } + this.items[k] = v; + }, + removeItem: function(k) { + if (this.has(k)) { + delete this.items[k]; + this.length--; + } + }, + getItem: function(k){ return this.has(k) ? this.items[k] : null; }, + clear: function(){ for (var k in this.list){ this.removeItem(k); } }, + toString: function(){ return this.length+' items in '+this.name+'Storage'; } + }// end _.storageAPI + }; + + // setup the primary store fn + if (window.store){ _.conflict = window.store; } + var store = + // safely set this up (throws error in IE10/32bit mode for local files) + _.Store("local", (function(){try{ return localStorage; }catch(e){}})()); + store.local = store;// for completeness + store._ = _;// for extenders and debuggers... + // safely setup store.session (throws exception in FF for file:/// urls) + store.area("session", (function(){try{ return sessionStorage; }catch(e){}})()); + + //Expose store to the global object + window.store = store; + + if (typeof define === 'function' && define.amd !== undefined) { + define(function () { + return store; + }); + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = store; + } + +})(this, null); + +// XHook - v1.3.3 - https://github.com/jpillora/xhook +// Jaime Pillora <dev@jpillora.com> - MIT Copyright 2015 +(function(window,undefined) { +var AFTER, BEFORE, COMMON_EVENTS, EventEmitter, FIRE, FormData, NativeFormData, NativeXMLHttp, OFF, ON, READY_STATE, UPLOAD_EVENTS, XHookFormData, XHookHttpRequest, XMLHTTP, convertHeaders, depricatedProp, document, fakeEvent, mergeObjects, msie, proxyEvents, slice, xhook, _base, + __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; + +document = window.document; + +BEFORE = 'before'; + +AFTER = 'after'; + +READY_STATE = 'readyState'; + +ON = 'addEventListener'; + +OFF = 'removeEventListener'; + +FIRE = 'dispatchEvent'; + +XMLHTTP = 'XMLHttpRequest'; + +FormData = 'FormData'; + +UPLOAD_EVENTS = ['load', 'loadend', 'loadstart']; + +COMMON_EVENTS = ['progress', 'abort', 'error', 'timeout']; + +msie = parseInt((/msie (\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]); + +if (isNaN(msie)) { + msie = parseInt((/trident\/.*; rv:(\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]); +} + +(_base = Array.prototype).indexOf || (_base.indexOf = function(item) { + var i, x, _i, _len; + for (i = _i = 0, _len = this.length; _i < _len; i = ++_i) { + x = this[i]; + if (x === item) { + return i; + } + } + return -1; +}); + +slice = function(o, n) { + return Array.prototype.slice.call(o, n); +}; + +depricatedProp = function(p) { + return p === "returnValue" || p === "totalSize" || p === "position"; +}; + +mergeObjects = function(src, dst) { + var k, v; + for (k in src) { + v = src[k]; + if (depricatedProp(k)) { + continue; + } + try { + dst[k] = src[k]; + } catch (_error) {} + } + return dst; +}; + +proxyEvents = function(events, src, dst) { + var event, p, _i, _len; + p = function(event) { + return function(e) { + var clone, k, val; + clone = {}; + for (k in e) { + if (depricatedProp(k)) { + continue; + } + val = e[k]; + clone[k] = val === src ? dst : val; + } + return dst[FIRE](event, clone); + }; + }; + for (_i = 0, _len = events.length; _i < _len; _i++) { + event = events[_i]; + if (dst._has(event)) { + src["on" + event] = p(event); + } + } +}; + +fakeEvent = function(type) { + var msieEventObject; + if (document.createEventObject != null) { + msieEventObject = document.createEventObject(); + msieEventObject.type = type; + return msieEventObject; + } else { + try { + return new Event(type); + } catch (_error) { + return { + type: type + }; + } + } +}; + +EventEmitter = function(nodeStyle) { + var emitter, events, listeners; + events = {}; + listeners = function(event) { + return events[event] || []; + }; + emitter = {}; + emitter[ON] = function(event, callback, i) { + events[event] = listeners(event); + if (events[event].indexOf(callback) >= 0) { + return; + } + i = i === undefined ? events[event].length : i; + events[event].splice(i, 0, callback); + }; + emitter[OFF] = function(event, callback) { + var i; + if (event === undefined) { + events = {}; + return; + } + if (callback === undefined) { + events[event] = []; + } + i = listeners(event).indexOf(callback); + if (i === -1) { + return; + } + listeners(event).splice(i, 1); + }; + emitter[FIRE] = function() { + var args, event, i, legacylistener, listener, _i, _len, _ref; + args = slice(arguments); + event = args.shift(); + if (!nodeStyle) { + args[0] = mergeObjects(args[0], fakeEvent(event)); + } + legacylistener = emitter["on" + event]; + if (legacylistener) { + legacylistener.apply(undefined, args); + } + _ref = listeners(event).concat(listeners("*")); + for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { + listener = _ref[i]; + listener.apply(undefined, args); + } + }; + emitter._has = function(event) { + return !!(events[event] || emitter["on" + event]); + }; + if (nodeStyle) { + emitter.listeners = function(event) { + return slice(listeners(event)); + }; + emitter.on = emitter[ON]; + emitter.off = emitter[OFF]; + emitter.fire = emitter[FIRE]; + emitter.once = function(e, fn) { + var fire; + fire = function() { + emitter.off(e, fire); + return fn.apply(null, arguments); + }; + return emitter.on(e, fire); + }; + emitter.destroy = function() { + return events = {}; + }; + } + return emitter; +}; + +xhook = EventEmitter(true); + +xhook.EventEmitter = EventEmitter; + +xhook[BEFORE] = function(handler, i) { + if (handler.length < 1 || handler.length > 2) { + throw "invalid hook"; + } + return xhook[ON](BEFORE, handler, i); +}; + +xhook[AFTER] = function(handler, i) { + if (handler.length < 2 || handler.length > 3) { + throw "invalid hook"; + } + return xhook[ON](AFTER, handler, i); +}; + +xhook.enable = function() { + window[XMLHTTP] = XHookHttpRequest; + if (NativeFormData) { + window[FormData] = XHookFormData; + } +}; + +xhook.disable = function() { + window[XMLHTTP] = xhook[XMLHTTP]; + window[FormData] = NativeFormData; +}; + +convertHeaders = xhook.headers = function(h, dest) { + var header, headers, k, name, v, value, _i, _len, _ref; + if (dest == null) { + dest = {}; + } + switch (typeof h) { + case "object": + headers = []; + for (k in h) { + v = h[k]; + name = k.toLowerCase(); + headers.push("" + name + ":\t" + v); + } + return headers.join('\n'); + case "string": + headers = h.split('\n'); + for (_i = 0, _len = headers.length; _i < _len; _i++) { + header = headers[_i]; + if (/([^:]+):\s*(.+)/.test(header)) { + name = (_ref = RegExp.$1) != null ? _ref.toLowerCase() : void 0; + value = RegExp.$2; + if (dest[name] == null) { + dest[name] = value; + } + } + } + return dest; + } +}; + +NativeFormData = window[FormData]; + +XHookFormData = function(form) { + var entries; + this.fd = form ? new NativeFormData(form) : new NativeFormData(); + this.form = form; + entries = []; + Object.defineProperty(this, 'entries', { + get: function() { + var fentries; + fentries = !form ? [] : slice(form.querySelectorAll("input,select")).filter(function(e) { + var _ref; + return ((_ref = e.type) !== 'checkbox' && _ref !== 'radio') || e.checked; + }).map(function(e) { + return [e.name, e.type === "file" ? e.files : e.value]; + }); + return fentries.concat(entries); + } + }); + this.append = (function(_this) { + return function() { + var args; + args = slice(arguments); + entries.push(args); + return _this.fd.append.apply(_this.fd, args); + }; + })(this); +}; + +if (NativeFormData) { + xhook[FormData] = NativeFormData; + window[FormData] = XHookFormData; +} + +NativeXMLHttp = window[XMLHTTP]; + +xhook[XMLHTTP] = NativeXMLHttp; + +XHookHttpRequest = window[XMLHTTP] = function() { + var ABORTED, currentState, emitFinal, emitReadyState, facade, hasError, hasErrorHandler, readBody, readHead, request, response, setReadyState, status, transiting, writeBody, writeHead, xhr; + ABORTED = -1; + xhr = new xhook[XMLHTTP](); + request = {}; + status = null; + hasError = void 0; + transiting = void 0; + response = void 0; + readHead = function() { + var key, name, val, _ref; + response.status = status || xhr.status; + if (!(status === ABORTED && msie < 10)) { + response.statusText = xhr.statusText; + } + if (status !== ABORTED) { + _ref = convertHeaders(xhr.getAllResponseHeaders()); + for (key in _ref) { + val = _ref[key]; + if (!response.headers[key]) { + name = key.toLowerCase(); + response.headers[name] = val; + } + } + } + }; + readBody = function() { + if (!xhr.responseType || xhr.responseType === "text") { + response.text = xhr.responseText; + response.data = xhr.responseText; + } else if (xhr.responseType === "document") { + response.xml = xhr.responseXML; + response.data = xhr.responseXML; + } else { + response.data = xhr.response; + } + if ("responseURL" in xhr) { + response.finalUrl = xhr.responseURL; + } + }; + writeHead = function() { + facade.status = response.status; + facade.statusText = response.statusText; + }; + writeBody = function() { + if ('text' in response) { + facade.responseText = response.text; + } + if ('xml' in response) { + facade.responseXML = response.xml; + } + if ('data' in response) { + facade.response = response.data; + } + if ('finalUrl' in response) { + facade.responseURL = response.finalUrl; + } + }; + emitReadyState = function(n) { + while (n > currentState && currentState < 4) { + facade[READY_STATE] = ++currentState; + if (currentState === 1) { + facade[FIRE]("loadstart", {}); + } + if (currentState === 2) { + writeHead(); + } + if (currentState === 4) { + writeHead(); + writeBody(); + } + facade[FIRE]("readystatechange", {}); + if (currentState === 4) { + setTimeout(emitFinal, 0); + } + } + }; + emitFinal = function() { + if (!hasError) { + facade[FIRE]("load", {}); + } + facade[FIRE]("loadend", {}); + if (hasError) { + facade[READY_STATE] = 0; + } + }; + currentState = 0; + setReadyState = function(n) { + var hooks, process; + if (n !== 4) { + emitReadyState(n); + return; + } + hooks = xhook.listeners(AFTER); + process = function() { + var hook; + if (!hooks.length) { + return emitReadyState(4); + } + hook = hooks.shift(); + if (hook.length === 2) { + hook(request, response); + return process(); + } else if (hook.length === 3 && request.async) { + return hook(request, response, process); + } else { + return process(); + } + }; + process(); + }; + facade = request.xhr = EventEmitter(); + xhr.onreadystatechange = function(event) { + try { + if (xhr[READY_STATE] === 2) { + readHead(); + } + } catch (_error) {} + if (xhr[READY_STATE] === 4) { + transiting = false; + readHead(); + readBody(); + } + setReadyState(xhr[READY_STATE]); + }; + hasErrorHandler = function() { + hasError = true; + }; + facade[ON]('error', hasErrorHandler); + facade[ON]('timeout', hasErrorHandler); + facade[ON]('abort', hasErrorHandler); + facade[ON]('progress', function() { + if (currentState < 3) { + setReadyState(3); + } else { + facade[FIRE]("readystatechange", {}); + } + }); + if ('withCredentials' in xhr || xhook.addWithCredentials) { + facade.withCredentials = false; + } + facade.status = 0; + facade.open = function(method, url, async, user, pass) { + currentState = 0; + hasError = false; + transiting = false; + request.headers = {}; + request.headerNames = {}; + request.status = 0; + response = {}; + response.headers = {}; + request.method = method; + request.url = url; + request.async = async !== false; + request.user = user; + request.pass = pass; + setReadyState(1); + }; + facade.send = function(body) { + var hooks, k, modk, process, send, _i, _len, _ref; + _ref = ['type', 'timeout', 'withCredentials']; + if(navigator.userAgent.indexOf("Firefox/") != -1){http://atmosphere-framework.2306103.n4.nabble.com/Atmosphere-js-withCredentials-true-does-not-work-in-Firefox-td4656661.html + _ref = ['type', 'timeout']; + } + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + k = _ref[_i]; + modk = k === "type" ? "responseType" : k; + if (modk in facade) { + request[k] = facade[modk]; + } + } + request.body = body; + send = function() { + var header, value, _j, _len1, _ref1, _ref2; + proxyEvents(COMMON_EVENTS, xhr, facade); + if (facade.upload) { + proxyEvents(COMMON_EVENTS.concat(UPLOAD_EVENTS), xhr.upload, facade.upload); + } + transiting = true; + xhr.open(request.method, request.url, request.async, request.user, request.pass); + _ref1 = ['type', 'timeout', 'withCredentials']; + if(navigator.userAgent.indexOf("Firefox/") != -1){//http://atmosphere-framework.2306103.n4.nabble.com/Atmosphere-js-withCredentials-true-does-not-work-in-Firefox-td4656661.html + _ref1 = ['type', 'timeout']; + } + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + k = _ref1[_j]; + modk = k === "type" ? "responseType" : k; + if (k in request) { + xhr[modk] = request[k]; + } + } + _ref2 = request.headers; + for (header in _ref2) { + value = _ref2[header]; + xhr.setRequestHeader(header, value); + } + if (request.body instanceof XHookFormData) { + request.body = request.body.fd; + } + xhr.send(request.body); + }; + hooks = xhook.listeners(BEFORE); + process = function() { + var done, hook; + if (!hooks.length) { + return send(); + } + done = function(userResponse) { + if (typeof userResponse === 'object' && (typeof userResponse.status === 'number' || typeof response.status === 'number')) { + mergeObjects(userResponse, response); + if (__indexOf.call(userResponse, 'data') < 0) { + userResponse.data = userResponse.response || userResponse.text; + } + setReadyState(4); + return; + } + process(); + }; + done.head = function(userResponse) { + mergeObjects(userResponse, response); + return setReadyState(2); + }; + done.progress = function(userResponse) { + mergeObjects(userResponse, response); + return setReadyState(3); + }; + hook = hooks.shift(); + if (hook.length === 1) { + return done(hook(request)); + } else if (hook.length === 2 && request.async) { + return hook(request, done); + } else { + return done(); + } + }; + process(); + }; + facade.abort = function() { + status = ABORTED; + if (transiting) { + xhr.abort(); + } else { + facade[FIRE]('abort', {}); + } + }; + facade.setRequestHeader = function(header, value) { + var lName, name; + lName = header != null ? header.toLowerCase() : void 0; + name = request.headerNames[lName] = request.headerNames[lName] || header; + if (request.headers[name]) { + value = request.headers[name] + ', ' + value; + } + request.headers[name] = value; + }; + facade.getResponseHeader = function(header) { + var name; + name = header != null ? header.toLowerCase() : void 0; + return response.headers[name]; + }; + facade.getAllResponseHeaders = function() { + return convertHeaders(response.headers); + }; + if (xhr.overrideMimeType) { + facade.overrideMimeType = function() { + return xhr.overrideMimeType.apply(xhr, arguments); + }; + } + if (xhr.upload) { + facade.upload = request.upload = EventEmitter(); + } + return facade; +}; +/* +if (typeof this.define === "function" && this.define.amd) { + define("xhook", [], function() { + return xhook; + }); +} else {*/ + (this.exports || this).xhook = xhook; +//} + +}.call(this,window)); + +xhook.before(function(request) { + var zte_headers = store('zte_http_headers'); + if (zte_headers && zte_headers.length > 0) { + for (i = 0; i < zte_headers.length; i++) { + if (zte_headers[i].store === true) { + if ( !! store(zte_headers[i].value)) { + request.headers[zte_headers[i].key] = store(zte_headers[i].value).toUpperCase() + } + } else { + request.headers[zte_headers[i].key] = zte_headers[i].value + } + } + } +});
\ No newline at end of file diff --git a/openo-portal/portal-common/src/main/webapp/common/js/core/pym.min.js b/openo-portal/portal-common/src/main/webapp/common/js/core/pym.min.js new file mode 100644 index 00000000..78b2f513 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/core/pym.min.js @@ -0,0 +1,16 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +(function(a){if(typeof define==="function"&&define.amd){define("pym",[],a)}else{if(typeof module!=="undefined"&&module.exports){module.exports=a()}else{window.pym=a.call(this)}}window.pym=a.call(this)})(function(){var a="xPYMx";function e(){var k,i;if(window.innerHeight&&window.scrollMaxY){k=window.innerWidth+window.scrollMaxX;i=window.innerHeight+window.scrollMaxY}else{if(document.body.scrollHeight>document.body.offsetHeight){k=document.body.scrollWidth;i=document.body.scrollHeight}else{k=document.body.offsetWidth;i=document.body.offsetHeight}}var j,l;if(self.innerHeight){if(document.documentElement.clientWidth){j=document.documentElement.clientWidth}else{j=self.innerWidth}l=self.innerHeight}else{if(document.documentElement&&document.documentElement.clientHeight){j=document.documentElement.clientWidth;l=document.documentElement.clientHeight}else{if(document.body){j=document.body.clientWidth;l=document.body.clientHeight}}}if(i<l){pageHeight=l}else{pageHeight=i}if(k<j){pageWidth=k}else{pageWidth=j}arrayPageSize=new Array(pageWidth,pageHeight,j,l);return arrayPageSize}var g={};var c=function(i){var k=new RegExp("[\\?&]"+i.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]")+"=([^&#]*)");var j=k.exec(location.search);if(j===null){return""}return decodeURIComponent(j[1].replace(/\+/g," "))};var b=function(j,i){if(i.xdomain!=="*"){if(!j.origin.match(new RegExp(i.xdomain+"$"))){return}}return true};var h=function(l,i,j){var k=["pym",l,i,j];return k.join(a)};var f=function(j){var i=["pym",j,"(\\S+)","(.+)"];return new RegExp("^"+i.join(a)+"$")};var d=function(){var n=document.querySelectorAll("[data-pym-src]:not([data-pym-auto-initialized])");var m=n.length;for(var i=0;i<m;++i){var l=n[i];l.setAttribute("data-pym-auto-initialized","");if(l.id===""){l.id="pym-"+i}var o=l.getAttribute("data-pym-src");var k=l.getAttribute("data-pym-xdomain");var j={};if(k){j.xdomain=k}new g.Parent(l.id,o,j)}};g.Parent=function(m,j,i){this.id=m;this.url=j;this.el=document.getElementById(m);this.iframe=null;this.minHeight="0";this._olddisplay="";this.oldHeight=0;this.childpageType="";this.setMinHeight=function(n){this.minHeight=n;this._onHeightMessage(n)};this.settings={xdomain:"*"};this.messageRegex=f(this.id);this.messageHandlers={};i=(i||{});this._constructIframe=function(){var o=this.el.offsetWidth.toString();this.iframe=document.createElement("iframe");var q="";var n=this.url.indexOf("#");if(n>-1){q=this.url.substring(n,this.url.length);this.url=this.url.substring(0,n)}if(this.url.indexOf("?")<0){this.url+="?"}else{this.url+="&"}this.iframe.src=this.url.trim().indexOf("javascript:")>=0?"":this.url+"initialWidth="+o+"&childId="+this.id;"&parentUrl="+encodeURIComponent(window.location.href)+q;this.iframe.setAttribute("width","100%");this.iframe.setAttribute("scrolling","no");this.iframe.setAttribute("marginheight","0");this.iframe.setAttribute("frameborder","0");this.el.appendChild(this.iframe);var p=this;window.addEventListener("resize",this._onResize)};this._onResize=function(){this.sendWidth()}.bind(this);this._fire=function(o,p){if(o in this.messageHandlers){for(var n=0;n<this.messageHandlers[o].length;n++){this.messageHandlers[o][n].call(this,p)}}};this.remove=function(){window.removeEventListener("message",this._processMessage);window.removeEventListener("resize",this._onResize);this.el.removeChild(this.iframe)};this._processMessage=function(q){if(!b(q,this.settings)){return}if(typeof q.data!=="string"){return}var n=q.data.match(this.messageRegex);if(!n||n.length!==3){return false}var o=n[1];var p=n[2];this._fire(o,p)}.bind(this);this._onHeightMessage=function(o){var n=parseInt(o);n=Math.max(this.minHeight,n);if(this.oldHeight!=n){if(this.childpageType&&this.childpageType.length>0&&this.childpageType==="isc"){console.log("parent window detect that the child iframe page loaded smartclient,the iframe height will ignore the child's Height change message;");if(this.minHeight<n){n=this.minHeight}}this.oldHeight=n;this.iframe.setAttribute("height",n+"px")}};this._onNavigateToMessage=function(n){document.location.href=n};this._onChildpageTypeMessage=function(n){this.childpageType=n};this.onMessage=function(n,o){if(!(n in this.messageHandlers)){this.messageHandlers[n]=[]}this.messageHandlers[n].push(o)};this.sendMessage=function(n,o){this.el.getElementsByTagName("iframe")[0].contentWindow.postMessage(h(this.id,n,o),"*")};this.sendWidth=function(){var n=this.el.offsetWidth.toString();this.sendMessage("width",n)};for(var k in i){this.settings[k]=i[k]}this.onMessage("height",this._onHeightMessage);this.onMessage("navigateTo",this._onNavigateToMessage);this.onMessage("childpageType",this._onChildpageTypeMessage);var l=this;window.addEventListener("message",this._processMessage,false);this._constructIframe();return this};g.Child=function(i){this.parentWidth=null;this.id=null;this.oldHeight=0;this.parentUrl=null;this.settings={renderCallback:null,xdomain:"*",polling:0};this.messageRegex=null;this.messageHandlers={};i=(i||{});this.onMessage=function(m,n){if(!(m in this.messageHandlers)){this.messageHandlers[m]=[]}this.messageHandlers[m].push(n)};this._fire=function(n,o){if(n in this.messageHandlers){for(var m=0;m<this.messageHandlers[n].length;m++){this.messageHandlers[n][m].call(this,o)}}};this._processMessage=function(p){if(!b(p,this.settings)){return}if(typeof p.data!=="string"){return}var m=p.data.match(this.messageRegex);if(!m||m.length!==3){return}var n=m[1];var o=m[2];this._fire(n,o)}.bind(this);this._onWidthMessage=function(n){var m=parseInt(n);if(m!==this.parentWidth){this.parentWidth=m;if(this.settings.renderCallback){this.settings.renderCallback(m)}this.sendHeight()}};this.sendMessage=function(m,n){window.parent.postMessage(h(this.id,m,n),"*")};this.sendHeight=function(){var n=document.getElementsByTagName("body")[0];height=n.offsetHeight;if(typeof isc!="undefined"&&l.oldPageType!="isc"){height=5;console.log("child iframe id="+l.id+" loaded smartclient");l.oldPageType="isc";l.sendMessage("childpageType","isc")}var m=0;if(l.oldHeight>height){m=l.oldHeight-height}else{m=height-l.oldHeight}if(m<=70){return}if(l.oldHeight!=height){l.oldHeight=height;console.log("child iframe id="+l.id+" sedHeight:"+height);l.sendMessage("height",height)}}.bind(this);this.scrollParentTo=function(m){this.sendMessage("navigateTo","#"+m)};this.navigateParentTo=function(m){this.sendMessage("navigateTo",m)};this.id=c("childId")||i.id;this.messageRegex=new RegExp("^pym"+a+this.id+a+"(\\S+)"+a+"(.+)$");var k=parseInt(c("initialWidth"));this.parentUrl=c("parentUrl");this.onMessage("width",this._onWidthMessage);for(var j in i){this.settings[j]=i[j]}var l=this;window.addEventListener("message",this._processMessage,false);if(this.settings.renderCallback){this.settings.renderCallback(k)}this.sendHeight();if(this.settings.polling){window.setInterval(this.sendHeight,this.settings.polling)}return this};d();return g}); diff --git a/openo-portal/portal-common/src/main/webapp/common/js/fm_light.js b/openo-portal/portal-common/src/main/webapp/common/js/fm_light.js new file mode 100644 index 00000000..e31224c5 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/fm_light.js @@ -0,0 +1,169 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +(function($) { + String.prototype.trim = function() { + return this.replace(/(^\s*)|(\s*$)/g, ""); + }; + String.prototype.format=function() { + if(arguments.length==0) return this; + for(var s=this, i=0; i<arguments.length; i++) + s=s.replace(new RegExp("\\{"+i+"\\}","g"), arguments[i]); + return s; + }; + //告警计数点击事件 + $(function(){ + $("#hd_alarmcount_critical_value").parentsUntil('a').parent().click(function() { + openNewPage(1); + }); + + $("#hd_alarmcount_major_value").parentsUntil('a').parent().click(function() { + openNewPage(2); + }); + + $("#hd_alarmcount_minor_value").parentsUntil('a').parent().click(function() { + openNewPage(3); + }); + + $("#hd_alarmcount_warning_value").parentsUntil('a').parent().click(function() { + openNewPage(4); + }); + function openNewPage(severity) + { + window.open("default.html?showNav=false&severity=" + severity + "#_uep-ict-fm-currentAlarm", + "fm_portlet_page_title"); + } + }); + try{ + //base版本不加载告警统计,并在界面隐藏 + $().ready(function(){ + if(typeof(base) == "undefined" || !base){ + if($("#header_notification_bar")&&$("#header_notification_bar").length>0&&$("#header_notification_bar").children().length>0){ + // 对告警灯进行鉴权,如果有当前告警权限,显示告警灯,否则返回? + var operations = new Array(); + operations.push("common.fm.currentview"); + var rightObj = getAllOperCodeRights(operations); + var operation = $("#uep-ict-fm-currentAlarm").attr("operation");; + if (!hasRight(operation, rightObj)) { + $('#header_notification_bar').html("<div>      </div>"); + return; + } + // get total alarm count + $("#hd_heighestAlarmcount_label").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_none_label')); + $("#hd_alarmcount_total_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_total_label')); + $("#hd_alarmcount_critical_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_critical_label')); + $("#hd_alarmcount_major_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_major_label')); + $("#hd_alarmcount_minor_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_minor_label')); + $("#hd_alarmcount_warning_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_warning_label')); + + function alarmLight(alarmcount){ + if (!alarmcount || !alarmcount.unAckedCount || (alarmcount.unAckedCount.length < 4) || !alarmcount.ackedCount || (alarmcount.ackedCount.length < 4)) { + return; + } + var criticalNum = alarmcount.unAckedCount[0] + alarmcount.ackedCount[0]; + var majorNum = alarmcount.unAckedCount[1] + alarmcount.ackedCount[1]; + var minorNum = alarmcount.unAckedCount[2] + alarmcount.ackedCount[2]; + var warningNum = alarmcount.unAckedCount[3] + alarmcount.ackedCount[3]; + var totalNum= criticalNum+ majorNum+ minorNum+ warningNum; + var heighestAlarmcount=0; + var hd_heighestAlarmcount_label=""; + if(criticalNum>0){ + heighestAlarmcount =criticalNum; + hd_heighestAlarmcount_label=$.i18n.prop('com_zte_ums_ict_alarmcount_critical_label'); + // $("#hd_heighestAlarmcount_li").attr("class",$("#hd_alarmcount_critical_li").attr("class")); + }else if(majorNum>0){ + heighestAlarmcount =majorNum; + hd_heighestAlarmcount_label=$.i18n.prop('com_zte_ums_ict_alarmcount_major_label'); + }else if(minorNum>0){ + heighestAlarmcount =minorNum; + hd_heighestAlarmcount_label=$.i18n.prop('com_zte_ums_ict_alarmcount_minor_label'); + }else if(warningNum>0){ + heighestAlarmcount =warningNum; + hd_heighestAlarmcount_label=$.i18n.prop('com_zte_ums_ict_alarmcount_warning_label'); + }else{ + heighestAlarmcount =0; + hd_heighestAlarmcount_label=$.i18n.prop('com_zte_ums_ict_alarmcount_none_label'); + } + + $("#hd_heighestAlarmcount_value").text(heighestAlarmcount); + $("#hd_alarmcount_total_value").text(totalNum); + $("#hd_alarmcount_critical_value").text(criticalNum); + $("#hd_alarmcount_major_value").text(majorNum); + $("#hd_alarmcount_minor_value").text(minorNum); + $("#hd_alarmcount_warning_value").text(warningNum); + + $("#hd_heighestAlarmcount_value").attr("title",hd_heighestAlarmcount_label.format(heighestAlarmcount )); + $("#hd_alarmcount_total_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_total_label').format(totalNum )); + $("#hd_alarmcount_critical_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_critical_label').format( criticalNum )); + $("#hd_alarmcount_major_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_major_label').format(majorNum)); + $("#hd_alarmcount_minor_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_minor_label').format(minorNum)); + $("#hd_alarmcount_warning_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_warning_label').format(warningNum)); + + $("#hd_alarmcount_critical_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_critical_text')); + $("#hd_alarmcount_major_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_major_text')); + $("#hd_alarmcount_minor_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_minor_text')); + $("#hd_alarmcount_warning_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_warning_text')); + + $("#hd_alarmcount_total_before_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_total_before_text')); + $("#hd_alarmcount_total_after_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_total_after_text')); + $("#header_notification_bar").css('display','block'); + } + function queryAlarmTotalCount() { + $.getJSON("/web/rest/web/fm/count/total", function(data) { + //var alarmcount = $.parseJSON(data); + alarmLight(data); + if($("#header_notification_bar")&&$("#header_notification_bar").length>0&&$("#header_notification_bar").children().length>0){ + registerAlarmTotalCountToCometd(); + } + }) + } + if($("#header_notification_bar")&&$("#header_notification_bar").length>0&&$("#header_notification_bar").children().length>0){ + queryAlarmTotalCount(); + } + var registerAlarmTotalCountToCometd = function () { + var self = this; + var cometd = $.cometd; + var cometURL = location.protocol + "//" + location.host + "/web/cometd"; + cometd.configure({ + url: cometURL, + logLevel: 'debug' + }); + cometd.addListener('/meta/handshake', function (handshake){ + if (handshake.successful === true) { + cometd.batch(function () { + cometd.subscribe('/alarm/usercount', function (message) { + var alarmcount =message.data; + alarmLight(alarmcount); + }) + }) + } + }); + cometd.handshake(); + }; + + // if($("#header_notification_bar")&&$("#header_notification_bar").length>0&&$("#header_notification_bar").children().length>0){ + // registerAlarmTotalCountToCometd(); + // } + //setInterval(queryAlarmTotalCount, 30 * 1000); + } + } + else if(base){ + //$("#header_notification_bar").hide(); + //$('#header_notification_bar').empty(); + $('#header_notification_bar').html("<div>      </div>"); + } + }); + }catch(e){} +})(jQuery); diff --git a/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n-login.js b/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n-login.js new file mode 100644 index 00000000..05285709 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n-login.js @@ -0,0 +1,53 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//加载本模块国际化文件并处理静态国际化部分 +function loadProperties_login(lang){ + jQuery.i18n.properties({ + language:lang, + name:'web-portal-login-integration-i18n', + path:'i18n/', + mode:'map', + callback: function() { + var i18nItems = $('[name_i18n=com_zte_ums_ict_framework_ui_i18n_login]'); + for(var i=0;i<i18nItems.length;i++){ + var $item = $(i18nItems.eq(i)); + var itemId = $item.attr('id'); + var itemValue = $.i18n.prop(itemId); + //从老的js文本文件中读取可能包含"和;字样 + if(itemValue.indexOf(';')>0){ + itemValue = itemValue.replace(';', ''); + } + if(/[\'\"]/.test(itemValue)){ + itemValue = itemValue.replace(/\"/g,''); + itemValue = itemValue.replace(/\'/g,''); + } + if(typeof($item.attr("title"))!="undefined"){ + $item.attr("title", itemValue); + }else if(typeof($item.attr("placeholder"))!="undefined"){ + $item.attr("placeholder", itemValue); + }else{ + $item.text(itemValue); + } + } + } + }); +} + +function loadi18n_login(lang){ + loadProperties_login(lang); +} + + diff --git a/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n.js b/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n.js new file mode 100644 index 00000000..d62dbbd9 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n.js @@ -0,0 +1,110 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var lang = getLanguage(); +//lang = 'en-US'; + +//加载主页面head部分国际化 +function loadProperties(lang){ + jQuery.i18n.properties({ + language:lang, + name:'web-framework-integration-i18n', + path:'i18n/', // 资源文件路径 + mode:'map', // 用 Map 的方式使用资源文件中的值 + callback: function() {// 加载成功后设置显示内容 + var i18nItems = $('[name_i18n=com_zte_ums_ict_framework_ui_i18n]'); + for(var i=0;i<i18nItems.length;i++){ + var $item = $(i18nItems.eq(i)); + var itemId = $item.attr('id'); + if(typeof($item.attr("title"))!="undefined"){ + $item.attr("title", $.i18n.prop(itemId)); + }else{ + $item.text($.i18n.prop(itemId)); + } + } + } + }); +} + +function loadi18n_WebFramework_1(){ + $.getScript("js/tools.js", function(){ + var lang = getLanguage(); + loadProperties(lang); + }); +} + +function loadi18n_WebFramework(){ + loadProperties(lang); +} + +/* +function loadPropertiesSideMenu(lang){ + jQuery.i18n.properties({ + language:lang, + name:'web-framework-i18n', + path:'i18n/', // 资源文件路径 + mode:'map', // 用 Map 的方式使用资源文件中的值 + callback: function() {// 加载成功后设置显示内容 + var i18nItems = $('[name=com_zte_ums_ict_framework_ui_i18n]'); + for(var i=0;i<i18nItems.length;i++){ + var $item = $(i18nItems.eq(i)); + var itemId = $item.attr('id'); + if(typeof($item.attr("placeholder"))=="undefined"){ + $item.text($.i18n.prop(itemId)); + }else{ + $item.attr("placeholder", $.i18n.prop(itemId)); + } + } + } + }); +}*/ + +/** +* 国际化资源文件加载函数; +* 相应参数为当前语言(由框架从后端取得),国际化资源文件名前缀,资源文件所在路径。 +*/ +/** +* 国际化资源文件加载函数; +* 相应参数为当前语言(由框架从后端取得),国际化资源文件名前缀,资源文件所在路径。 +*/ +function loadPropertiesSideMenu(lang, propertiesFileNamePrefix, propertiesFilePath , name_I18n){ + console.info('loadPropertiesSideMenu has been called ' + propertiesFilePath); + if(!name_I18n) name_I18n='com_zte_ums_ict_framework_ui_i18n_sideMenu'; + jQuery.i18n.properties({ + language:lang, + name:propertiesFileNamePrefix, + path:propertiesFilePath, // 资源文件路径 + mode:'map', // 用 Map 的方式使用资源文件中的值 + callback: function() {// 加载成功后设置显示内容 + var i18nItems = $('[name_i18n='+ name_I18n + ']'); + for(var i=0;i<i18nItems.length;i++){ + var $item = $(i18nItems.eq(i)); + var itemId = $item.attr('id'); + if(typeof($item.attr("placeholder"))=="undefined"){ + $item.text($.i18n.prop(itemId)); + }else{ + $item.attr("placeholder", $.i18n.prop(itemId)); + } + } + } + }); +} + +function loadi18n_WebFramework_sideMenu(){ + //默认0场景菜单资源文件 + //loadPropertiesSideMenu(lang, 'web-framework-i18n', 'i18n/'); + //加载各应用菜单资源文件 + var srcpath ="i18n/"; + loadPropertiesSideMenu(lang , 'web-framework-integration-i18n', srcpath);} diff --git a/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18nApp_universal.js b/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18nApp_universal.js new file mode 100644 index 00000000..9a6cd48c --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18nApp_universal.js @@ -0,0 +1,24 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +function loadAppPropertiesSideMenu(lang){ + /** + * 调用框架的国际化资源文件加载函数; + * 相应参数为当前语言(由框架从后端取得),国际化资源文件名前缀,资源文件所在路径。 + */ + loadPropertiesSideMenu(lang, 'app-universal-i18n', 'i18n/'); +} +loadAppPropertiesSideMenu(lang);
\ No newline at end of file diff --git a/openo-portal/portal-common/src/main/webapp/common/js/json2.js b/openo-portal/portal-common/src/main/webapp/common/js/json2.js new file mode 100644 index 00000000..a281d22c --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/json2.js @@ -0,0 +1,341 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +if (typeof JSON !== 'object') { + JSON = {}; +} + +(function () { + 'use strict'; + + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + if (typeof Date.prototype.toJSON !== 'function') { + + Date.prototype.toJSON = function (key) { + + return isFinite(this.valueOf()) + ? this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z' + : null; + }; + + String.prototype.toJSON = + Number.prototype.toJSON = + Boolean.prototype.toJSON = function (key) { + return this.valueOf(); + }; + } + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + + function quote(string) { + +// If the string contains no control characters, no quote characters, and no +// backslash characters, then we can safely slap some quotes around it. +// Otherwise we must also replace the offending characters with safe escape +// sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' + ? c + : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + + + function str(key, holder) { + +// Produce a string from holder[key]. + + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + +// If the value has a toJSON method, call it to obtain a replacement value. + + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + +// If we were called with a replacer function, then call the replacer to +// obtain a replacement value. + + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + +// What happens next depends on the value's type. + + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + +// JSON numbers must be finite. Encode non-finite numbers as null. + + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + +// If the value is a boolean or null, convert it to a string. Note: +// typeof null does not produce 'null'. The case is included here in +// the remote chance that this gets fixed someday. + + return String(value); + +// If the type is 'object', we might be dealing with an object or an array or +// null. + + case 'object': + +// Due to a specification blunder in ECMAScript, typeof null is 'object', +// so watch out for that case. + + if (!value) { + return 'null'; + } + +// Make an array to hold the partial results of stringifying this object value. + + gap += indent; + partial = []; + +// Is the value an array? + + if (Object.prototype.toString.apply(value) === '[object Array]') { + +// The value is an array. Stringify every element. Use null as a placeholder +// for non-JSON values. + + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + +// Join all of the elements together, separated with commas, and wrap them in +// brackets. + + v = partial.length === 0 + ? '[]' + : gap + ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' + : '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + +// If the replacer is an array, use it to select the members to be stringified. + + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + if (typeof rep[i] === 'string') { + k = rep[i]; + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + +// Otherwise, iterate through all of the keys in the object. + + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + +// Join all of the member texts together, separated with commas, +// and wrap them in braces. + + v = partial.length === 0 + ? '{}' + : gap + ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' + : '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + +// If the JSON object does not yet have a stringify method, give it one. + + if (typeof JSON.stringify !== 'function') { + JSON.stringify = function (value, replacer, space) { + +// The stringify method takes a value and an optional replacer, and an optional +// space parameter, and returns a JSON text. The replacer can be a function +// that can replace values, or an array of strings that will select the keys. +// A default replacer method can be provided. Use of the space parameter can +// produce text that is more easily readable. + + var i; + gap = ''; + indent = ''; + +// If the space parameter is a number, make an indent string containing that +// many spaces. + + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + +// If the space parameter is a string, it will be used as the indent string. + + } else if (typeof space === 'string') { + indent = space; + } + +// If there is a replacer, it must be a function or an array. +// Otherwise, throw an error. + + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + +// Make a fake root object containing our value under the key of ''. +// Return the result of stringifying the value. + + return str('', {'': value}); + }; + } + + +// If the JSON object does not yet have a parse method, give it one. + + if (typeof JSON.parse !== 'function') { + JSON.parse = function (text, reviver) { + +// The parse method takes a text and an optional reviver function, and returns +// a JavaScript value if the text is a valid JSON text. + + var j; + + function walk(holder, key) { + +// The walk method is used to recursively walk the resulting structure so +// that modifications can be made. + + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + + +// Parsing happens in four stages. In the first stage, we replace certain +// Unicode characters with escape sequences. JavaScript handles many characters +// incorrectly, either silently deleting them, or treating them as line endings. + + text = String(text); + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + +// In the second stage, we run the text against regular expressions that look +// for non-JSON patterns. We are especially concerned with '()' and 'new' +// because they can cause invocation, and '=' because it can cause mutation. +// But just to be safe, we want to reject all unexpected forms. + +// We split the second stage into 4 regexp operations in order to work around +// crippling inefficiencies in IE's and Safari's regexp engines. First we +// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we +// replace all simple value tokens with ']' characters. Third, we delete all +// open brackets that follow a colon or comma or that begin the text. Finally, +// we look to see that the remaining characters are only whitespace or ']' or +// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. + + if (/^[\],:{}\s]*$/ + .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') + .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + +// In the third stage we use the eval function to compile the text into a +// JavaScript structure. The '{' operator is subject to a syntactic ambiguity +// in JavaScript: it can begin a block or an object literal. We wrap the text +// in parens to eliminate the ambiguity. + + j = eval('(' + text + ')'); + +// In the optional fourth stage, we recursively walk the new structure, passing +// each name/value pair to a reviver function for possible transformation. + + return typeof reviver === 'function' + ? walk({'': j}, '') + : j; + } + +// If the text is not JSON parseable, then a SyntaxError is thrown. + + throw new SyntaxError('JSON.parse'); + }; + } +}()); diff --git a/openo-portal/portal-common/src/main/webapp/common/js/login.js b/openo-portal/portal-common/src/main/webapp/common/js/login.js new file mode 100644 index 00000000..6fda2122 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/login.js @@ -0,0 +1,225 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +String.prototype.trim = function() { + return this.replace(/(^\s*)|(\s*$)/g, ""); +}; +function loginSubmitHandler(form) { + var params = {}; + params["username"] =$("#inputUserName").val().trim(); + var sourcePass = $("#inputPassword").val(); + var pass = sourcePass; + if( FrameConst.isEncypt === "true"){ + pass = ict_framework_func1(pass); + } + params["password"] = pass; + params["isEncypted"] = FrameConst.isEncypt; + saveUserInfo(params); + $.ajax({ + url : FrameConst.REST_LOGIN, + type : 'POST', + data : JSON.stringify(params), + dataType : 'json', + contentType : 'application/json; charset=utf-8', + success : function(data, status, xhr) { + if(data.result == 0){ + var epass=CryptoJS.MD5(params.username+sourcePass); + store("icttka", epass.toLocaleString()); + } + processLoginResult(data,params); + }, + Error : function(xhr, error, exception) { + alert( error ); + if( console ){ + console.log( "login fail:" + error ); + console.log( exception ); + } + } + }); +}; + + +var Login = function () { + + var handleLogin = function() { + $('.login-form').validate({ + errorElement: 'span', //default input error message container + errorClass: 'help-block', // default input error message class + focusInvalid: false, // do not focus the last invalid input + rules: { + username: { + required: true + }, + password: { + required: false + }, + remember: { + required: false + } + }, + + messages: { + username: { + required: $.i18n.prop('com_zte_ums_ict_login_inputname').replace(/\"/g,'') + }, + password: { + required: $.i18n.prop('com_zte_ums_ict_login_inputpwd').replace(/\"/g,'') + } + }, + + invalidHandler: function (event, validator) { //display error alert on form submit + $('.alert-danger', $('.login-form')).show(); + }, + + highlight: function (element) { // hightlight error inputs + $(element) + .closest('.form-group').addClass('has-error'); // set error class to the control group + }, + + success: function (label) { + label.closest('.form-group').removeClass('has-error'); + label.remove(); + }, + + errorPlacement: function (error, element) { + error.insertAfter(element.closest('.input-icon')); + }, + + submitHandler: loginSubmitHandler + }); + + $('.login-form input').keypress(function (e) { + $("#nameOrpwdError").hide(); + $("#loginConnError").hide(); + if (e.which == 13) { + if ($('.login-form').validate().form()) { + $('.login-form').submit(); + } + return false; + } + }); + + $("input[name='remember']").bind("click", function () { + saveUserInfo(); + }); + } + + var handleForgetPassword = function () { + $('.forget-form').validate({ + errorElement: 'span', //default input error message container + errorClass: 'help-block', // default input error message class + focusInvalid: false, // do not focus the last invalid input + ignore: "", + rules: { + email: { + required: true, + email: true + } + }, + + messages: { + email: { + required: "Email is required." + } + }, + + invalidHandler: function (event, validator) { //display error alert on form submit + + }, + + highlight: function (element) { // hightlight error inputs + $(element) + .closest('.form-group').addClass('has-error'); // set error class to the control group + }, + + success: function (label) { + label.closest('.form-group').removeClass('has-error'); + label.remove(); + }, + + errorPlacement: function (error, element) { + error.insertAfter(element.closest('.input-icon')); + }, + + submitHandler: function (form) { + form.submit(); + } + }); + + $('.forget-form input').keypress(function (e) { + if (e.which == 13) { + if ($('.forget-form').validate().form()) { + $('.forget-form').submit(); + } + return false; + } + }); + + $('#forget-password').click(function () { + $('.login-form').hide(); + $('.forget-form').show(); + }); + + $('#back-btn').click(function () { + $('.login-form').show(); + $('.forget-form').hide(); + }); + + } + return { + //main function to initiate the module + init: function () { + + handleLogin(); + handleForgetPassword(); + + $.backstretch([ + "img/integration/zte_bg_1.jpg", + "img/integration//zte_bg_2.jpg", + "img/integration//zte_bg_3.jpg" + ], { + fade: 500, + duration: 15000 + }); + } + }; +}(); + + +$(document).ready(function() { + if (store("remember") == "true") { + $("input[name='remember']").attr("checked", "checked"); + $("#inputUserName").val(store("inputUserName")); + $("#inputPassword").val(store("inputPassword")); + } +}); + + +function saveUserInfo(params) { + var rmbcheck=$("input[name='remember']"); + if (rmbcheck.attr("checked")==true||rmbcheck.is(':checked')) { + var userName = $("#inputUserName").val(); + var passWord = $("#inputPassword").val(); + store("remember", "true"); + store("inputUserName", params.username); + store("inputPassword", passWord); + } + else { + store.remove("remember"); + store.remove("inputUserName"); + store.remove("inputPassword"); + } +} + diff --git a/openo-portal/portal-common/src/main/webapp/common/js/mainpage/about.js b/openo-portal/portal-common/src/main/webapp/common/js/mainpage/about.js new file mode 100644 index 00000000..6468440c --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/mainpage/about.js @@ -0,0 +1,142 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var iniAboutInfo = function() { + + //转换colomn + + var divId = "ict_about_table_div"; + var tableId = "abouttable"; + var column = [ + {"mData": "name", name: $.i18n.prop('com_zte_ums_ict_about_ppu_field_name'), "sWidth": '20%'}, + {"mData": "version", name: $.i18n.prop('com_zte_ums_ict_about_ppu_field_version'), "sWidth": '25%'}, + {"mData": "describe", name: $.i18n.prop('com_zte_ums_ict_about_ppu_field_desc'), "sWidth": '25%'}, + {"mData": "time", name: $.i18n.prop('com_zte_ums_ict_about_ppu_field_time'), "sWidth": '30%'} + ]; + //先把原来的表格清空 + $('#' + divId).children().remove(); + var tableEleStr = '<table class="table table-striped table-bordered table-hover" id= ' + tableId + '>' + + '<thead>' + + '<tr role="row" class="heading" >' + + '</tr>' + + '</thead>' + + '<tbody>' + + '</tbody>' + + '</table>'; + $('#' + divId).append(tableEleStr); + var trEle = $('#' + tableId + ' > thead >tr'); + + for (var one in column) { + var th = '<th>' + column[one].name + '</th>'; + trEle.append(th); + } + var table = $("#" + tableId).dataTable({ + "bFilter": false,// 搜索栏 + "bPaginate":false, + "bInfo":false, + "bSort":false, + 'bAutoWidth':true + }); + $.ajax({ + type: "GET", + cache: false, + url: FrameConst.REST_GET_VERSIONINFO, + dataType: "json", + success: function (data) { + console.log(data); + //主版本号 + $(".ict_main_version").append('<span>' + data.mainversion + '</span>'); + //表格数据填充 + for( var i = 0 ; i < data.ppuinfo.length ; i++ ) { + var eachPPU = data.ppuinfo[i]; + $('#'+ tableId).dataTable().fnAddData([eachPPU.name ,eachPPU.version ,eachPPU.describe , eachPPU.time ]); + } + }, + error: function (xhr, ajaxOptions, thrownError) { + + } + }); +}; + +function internationalization(){ + var lang = getLanguage(); + //加载国际化 + jQuery.i18n.properties({ + language:lang, + name:'web-framework-integration-i18n', + path:'i18n/', // 资源文件路径 + mode:'map', // 用 Map 的方式使用资源文件中的值 + callback: function() {// 加载成功后设置显示内容 + var i18nItems = $('[name_i18n=com_zte_ums_ict_framework_ui_i18n]' , '.aboutDlg'); + for(var i=0;i<i18nItems.length;i++){ + var $item = $(i18nItems.eq(i)); + var itemId = $item.attr('id'); + if(typeof($item.attr("title"))!="undefined"){ + $item.attr("title", $.i18n.prop(itemId)); + }else{ + $item.text($.i18n.prop(itemId)); + } + } + } + }); + +} + +function getAboutDlg(url){ + if (url.length<2){ + return; + } + ZteFrameWork.startPageLoading();//加载中.... + var aboutDiv =jQuery('.modal-dialog .aboutDlg'); + aboutDiv.empty(); + $.ajax({ + type: "GET", + cache: false, + url: url, + dataType: "html", + success: function (res) { + jQuery('.modal-dialog .aboutDlg').append(res); + iniAboutInfo(); + internationalization(); + ZteFrameWork.stopPageLoading(); + }, + error: function (xhr, ajaxOptions, thrownError) { + + } + }); +}; + +function iniAboutDlg(){ + var url=jQuery('.modal-dialog .aboutDlg').attr("dlgsrc"); + if(url&&url.length>0){ + getAboutDlg(url); + } +}; + +var ict_about_dlg_close = function(){ + link_click('about'); + console.log("about click close"); + $('#aboutDlg').modal('hide'); +}; +var link_click = function( pageName ){ + console.log("about click change"); + if(pageName === 'info'){ + $('.aboutmain').attr("style" , "display:none"); + $('.aboutinfo').attr("style" , "display:block"); + }else{ + $('.aboutmain').attr("style" , "display:block"); + $('.aboutinfo').attr("style" , "display:none"); + } +}; diff --git a/openo-portal/portal-common/src/main/webapp/common/js/mainpage/ict.main.page.js b/openo-portal/portal-common/src/main/webapp/common/js/mainpage/ict.main.page.js new file mode 100644 index 00000000..3752ac02 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/mainpage/ict.main.page.js @@ -0,0 +1,142 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var initMainPage = function(){ + var modules; + var resConfig; + + var lang = getLanguage(); + var propertiesFileNamePrefix = ""; + //var jsonUrl = "json/main-page-" + lang + ".json"; + //var jsonUrl = mainpagePath; + var jsonUrl = "appRes/json/main-page.json"; + var appResExist = false; + + $.ajax({ + async:false, + "type" : "GET", + url: jsonUrl, + dataType: "json", + "success" : function (res, textStatus, jqXHR) { + resConfig = res; + modules = res.modules; + propertiesFileNamePrefix = res.propertiesFileNamePrefix; + appResExist = true; + }, + "error" : function () { + //alert("Config file load error!"); + } + }); + + if(!appResExist){ + jsonUrl = "json/main-page.json"; + $.ajax({ + async:false, + "type" : "GET", + url: jsonUrl, + dataType: "json", + "success" : function (res, textStatus, jqXHR) { + resConfig = res; + modules = res.modules; + propertiesFileNamePrefix = res.propertiesFileNamePrefix; + }, + "error" : function () { + alert("Config file load error!"); + } + }); + } + + var template = "<div class='brick {image}'>" + + "<a id='{linkId}' href='{url}' class='entranceLink'>" + + "<div class='row'>" + + "<div class='cover contentToggle'>{cover}</div>" + + "<div class='{toolsImage}'></div>" + + "<div class='contentTip contentToggle'>{contentTip}</div>" + + "</div>" + + "</a>" + + "</div>"; + + var templatePic = "<div class='brick {image}'>" + + "<div class='row'>" + + "<div class='cover contentToggle'>{cover}</div>" + + "<div class='{toolsImage}'></div>" + + "<div class='contentTip contentToggle'>{contentTip}</div>" + + "</div>" + + "</div>"; + + for (var i = 0; i < modules.length; ++i) { + + if(!modules[i].background){ + alert("Brick background missed!"); + return; + } + + var temp = ""; + + if(modules[i].linkId){ + temp = template.replace("{linkId}", modules[i].linkId) + .replace("{image}", modules[i].background) + .replace("{toolsImage}", modules[i].toolsImage) + .replace("{url}", modules[i].url) + .replace("{contentTip}", modules[i].contentTip); + }else{ + temp = templatePic.replace("{image}", modules[i].background) + .replace("{url}", modules[i].url) + .replace("{contentTip}", ""); + } + + if(modules[i].cover){ + temp = temp.replace("{cover}", "<span id='" + modules[i].cover + "' name_i18n='com_zte_ums_ict_framework_ui_i18n'></span>"); + }else{ + temp = temp.replace("{cover}",""); + } + + $($(".column")[i % 4]).append(temp); + + } + + + $(function() { + + $("#headerName").html("<img src='" + resConfig.productImage + "' />" ); + + $(".brick").mouseover(function(){ + $(".contentTip", this).fadeTo(1000, 1); + $(".cover", this).fadeOut(1000); + }); + + $(".brick").mouseout(function(){ + $(".contentTip", this).fadeTo(1000, 0); + $(".cover", this).fadeIn(1000); + }); + + //添加模块导航链接 +// var parentPage = window.parent; +// while(!parentPage.ZteFrameWork){ +// parentPage = parentPage.parent; +// } + $("a.entranceLink").click(function(e){ + e.preventDefault(); + if($(this).attr("id") && $(this).attr("id") != "undefined"){ + location.href = "default.html" + "#_" + $(this).attr("id"); + } + }); + + //国际化 + loadPropertiesSideMenu(lang, propertiesFileNamePrefix, "appRes/i18n/" , "com_zte_ums_ict_framework_ui_i18n"); + //loadPropertiesSideMenu(lang, propertiesFileNamePrefix, "i18n/" , "com_zte_ums_ict_framework_ui_i18n"); + loadPropertiesSideMenu(lang, "web-framework-integration-i18n", "i18n/" , "com_zte_ums_ict_framework_ui_i18n"); + }); +}
\ No newline at end of file diff --git a/openo-portal/portal-common/src/main/webapp/common/js/moreOperation.js b/openo-portal/portal-common/src/main/webapp/common/js/moreOperation.js new file mode 100644 index 00000000..70b0862c --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/moreOperation.js @@ -0,0 +1,166 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var resetSelectedItem=function(menuAlink){ + if(menuAlink.children('div.boxOperation').length>0){ + $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected"); + menuAlink.children('div.boxOperation').addClass('moreButtonSelected'); + }else if(menuAlink.parents('div.boxOperation').length>0){ + $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected"); + menuAlink.parents('div.boxOperation').addClass('moreButtonSelected'); + } +} +var reSelected=function(){ + if(ZteFrameWork){ + var menuID = ZteFrameWork.getLocationHash(); + var menuAlink = $('#'+ menuID,$('#pageableDiv')); + if(menuAlink.length>0){ + resetSelectedItem(menuAlink); + }else{ + menuAlink = $('#'+ menuID,$('.hor-menu')); + if(!!menuAlink.attr("defaultchildmenuid")&&menuAlink.attr("defaultchildmenuid").length>0){ + menuAlink = $('#'+ menuAlink.attr("defaultchildmenuid"),$('#pageableDiv')); + if(menuAlink.length>0){ + resetSelectedItem(menuAlink); + } + } + } + } +} +var inter=null; + +var clearMoreOperations=function(){ + $('#pageableDiv').removeClass("moreOpen"); + $('#pageableDiv').addClass("moreClose"); + $('.col-xs-12',$('#pageableDiv')).removeClass("moreOpen"); + $('.col-xs-12',$('#pageableDiv')).addClass("moreClose"); + $(".carousel-inner").children().remove(); + if (inter) { + clearInterval(inter); + }; +} + +var moreOperations = function(html){ + $('#pageableDiv').removeClass("moreClose"); + $('#pageableDiv').addClass("moreOpen"); + $('.col-xs-12',$('#pageableDiv')).removeClass("moreClose"); + $('.col-xs-12',$('#pageableDiv')).addClass("moreOpen"); + showArrow(); + $(".carousel-inner").children().remove(); + inter=setInterval(reSelected, 200); + var moreViewData=[]; + var div = document.createElement('div'); + //div.innerHTML = html; + $(div).append(html); + var liTages =$("ul:first",div).children(); //div.getElementsByTagName('li') + for(var i=0;i<liTages.length;i++){ + if(!$(liTages[i]).hasClass("divider")){ + var aLink = {}; + if($(liTages[i]).hasClass("dropdown")){//??????????? + var _litages=$(liTages[i]); + aLink.html='<div class="box boxOperation">'+_litages.prop("outerHTML")+"</div>"; + }else{ + var aLinkTag = $("a", liTages[i]); + aLink.id = aLinkTag.attr("id"); + var aLinkContent = aLinkTag.html(); + aLinkTag.empty().html('<div class="box boxOperation"></div>'); + $(".box", aLinkTag).html(aLinkContent); + aLink.html = aLinkTag.prop("outerHTML"); + } + moreViewData.push(aLink); + } + } + + var transformQueryViewData = function(queryViewData, pageSize){ + var newData = []; + var pageNo = Math.floor(queryViewData.length / pageSize) + 1; + if(queryViewData.length % pageSize == 0){ + pageNo--; + } + for(var i=0;i<pageNo;i++){ + newData.push({array:[]}); + } + for(var j=0;j<queryViewData.length;j++){ + newData[Math.floor(j/pageSize)].array.push(queryViewData[j]); + } + return newData; + } + + var moreOperationItems = []; + + var generateOperationItems = function(){ + for(var i=0;i<moreOperationItems.length;i++){ + var itemHtml = '<div id="page_' + i + '" class="item moreButtonsTag">' + + '<div class="col-xs-12" style="padding-right: 20px;">' + + "</div>" + + "</div>"; + $(".carousel-inner").append(itemHtml); + } + for(var i=0;i<moreOperationItems.length;i++){ + for(var j=0;j<moreOperationItems[i].array.length;j++){ + var buttonHtml = '<div class="moreButton boxPadding">' + moreOperationItems[i].array[j].html + '</div>'; + $(".col-xs-12", $("#page_" + i + ".item")).append(buttonHtml); + } + } + } + + //moreOperationItems = transformQueryViewData(moreViewData, 14); + + var moreOperationPageSize = 14; + var windowWidth = $(window).width(); + if(windowWidth >= 1367 && windowWidth < 1441){ + moreOperationPageSize = 12; + }else if(windowWidth >= 1281 && windowWidth < 1367){ + moreOperationPageSize = 11; + }else if(windowWidth >= 1025 && windowWidth < 1281){ + moreOperationPageSize = 10; + }else if(windowWidth >= 920 && windowWidth < 1281){ + moreOperationPageSize = 9; + }else if(windowWidth >= 820 && windowWidth < 920){ + moreOperationPageSize = 8; + }else if(windowWidth >= 680 && windowWidth < 820){ + moreOperationPageSize = 7; + }else if(windowWidth >= 540 && windowWidth < 680){ + moreOperationPageSize = 4; + }else if(windowWidth >= 390 && windowWidth < 540){ + moreOperationPageSize = 3; + }else if(windowWidth < 390){ + moreOperationPageSize = 2; + } + + moreOperationItems = transformQueryViewData(moreViewData, moreOperationPageSize); + generateOperationItems(); + + $(".box.boxOperation").click(function(){ + $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected"); + $(this).addClass("moreButtonSelected"); + }); + + $($(".item", $(".carousel-inner"))[0]).addClass("active"); + + if($(".item.moreButtonsTag").length < 2){ + hideArrow(); + } +} + +var showArrow = function(){ + $(".carousel-control").show(); + $(".boxOperation").removeClass("boxOperationOnePage"); +} + +var hideArrow = function(){ + $(".carousel-control").hide(); + $(".boxOperation").addClass("boxOperationOnePage"); +} diff --git a/openo-portal/portal-common/src/main/webapp/common/js/security/aes.js b/openo-portal/portal-common/src/main/webapp/common/js/security/aes.js new file mode 100644 index 00000000..a5dc52b2 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/security/aes.js @@ -0,0 +1,44 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var CryptoJS=CryptoJS||function(u,p){var d={},l=d.lib={},s=function(){},t=l.Base={extend:function(a){s.prototype=this;var c=new s;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}}, +r=l.WordArray=t.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=p?c:4*a.length},toString:function(a){return(a||v).stringify(this)},concat:function(a){var c=this.words,e=a.words,j=this.sigBytes;a=a.sigBytes;this.clamp();if(j%4)for(var k=0;k<a;k++)c[j+k>>>2]|=(e[k>>>2]>>>24-8*(k%4)&255)<<24-8*((j+k)%4);else if(65535<e.length)for(k=0;k<a;k+=4)c[j+k>>>2]=e[k>>>2];else c.push.apply(c,e);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<< +32-8*(c%4);a.length=u.ceil(c/4)},clone:function(){var a=t.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],e=0;e<a;e+=4)c.push(4294967296*u.random()|0);return new r.init(c,a)}}),w=d.enc={},v=w.Hex={stringify:function(a){var c=a.words;a=a.sigBytes;for(var e=[],j=0;j<a;j++){var k=c[j>>>2]>>>24-8*(j%4)&255;e.push((k>>>4).toString(16));e.push((k&15).toString(16))}return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j<c;j+=2)e[j>>>3]|=parseInt(a.substr(j, +2),16)<<24-4*(j%8);return new r.init(e,c/2)}},b=w.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var e=[],j=0;j<a;j++)e.push(String.fromCharCode(c[j>>>2]>>>24-8*(j%4)&255));return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j<c;j++)e[j>>>2]|=(a.charCodeAt(j)&255)<<24-8*(j%4);return new r.init(e,c)}},x=w.Utf8={stringify:function(a){try{return decodeURIComponent(escape(b.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return b.parse(unescape(encodeURIComponent(a)))}}, +q=l.BufferedBlockAlgorithm=t.extend({reset:function(){this._data=new r.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=x.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,e=c.words,j=c.sigBytes,k=this.blockSize,b=j/(4*k),b=a?u.ceil(b):u.max((b|0)-this._minBufferSize,0);a=b*k;j=u.min(4*a,j);if(a){for(var q=0;q<a;q+=k)this._doProcessBlock(e,q);q=e.splice(0,a);c.sigBytes-=j}return new r.init(q,j)},clone:function(){var a=t.clone.call(this); +a._data=this._data.clone();return a},_minBufferSize:0});l.Hasher=q.extend({cfg:t.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){q.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,e){return(new a.init(e)).finalize(b)}},_createHmacHelper:function(a){return function(b,e){return(new n.HMAC.init(a, +e)).finalize(b)}}});var n=d.algo={};return d}(Math); +(function(){var u=CryptoJS,p=u.lib.WordArray;u.enc.Base64={stringify:function(d){var l=d.words,p=d.sigBytes,t=this._map;d.clamp();d=[];for(var r=0;r<p;r+=3)for(var w=(l[r>>>2]>>>24-8*(r%4)&255)<<16|(l[r+1>>>2]>>>24-8*((r+1)%4)&255)<<8|l[r+2>>>2]>>>24-8*((r+2)%4)&255,v=0;4>v&&r+0.75*v<p;v++)d.push(t.charAt(w>>>6*(3-v)&63));if(l=t.charAt(64))for(;d.length%4;)d.push(l);return d.join("")},parse:function(d){var l=d.length,s=this._map,t=s.charAt(64);t&&(t=d.indexOf(t),-1!=t&&(l=t));for(var t=[],r=0,w=0;w< +l;w++)if(w%4){var v=s.indexOf(d.charAt(w-1))<<2*(w%4),b=s.indexOf(d.charAt(w))>>>6-2*(w%4);t[r>>>2]|=(v|b)<<24-8*(r%4);r++}return p.create(t,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); +(function(u){function p(b,n,a,c,e,j,k){b=b+(n&a|~n&c)+e+k;return(b<<j|b>>>32-j)+n}function d(b,n,a,c,e,j,k){b=b+(n&c|a&~c)+e+k;return(b<<j|b>>>32-j)+n}function l(b,n,a,c,e,j,k){b=b+(n^a^c)+e+k;return(b<<j|b>>>32-j)+n}function s(b,n,a,c,e,j,k){b=b+(a^(n|~c))+e+k;return(b<<j|b>>>32-j)+n}for(var t=CryptoJS,r=t.lib,w=r.WordArray,v=r.Hasher,r=t.algo,b=[],x=0;64>x;x++)b[x]=4294967296*u.abs(u.sin(x+1))|0;r=r.MD5=v.extend({_doReset:function(){this._hash=new w.init([1732584193,4023233417,2562383102,271733878])}, +_doProcessBlock:function(q,n){for(var a=0;16>a;a++){var c=n+a,e=q[c];q[c]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360}var a=this._hash.words,c=q[n+0],e=q[n+1],j=q[n+2],k=q[n+3],z=q[n+4],r=q[n+5],t=q[n+6],w=q[n+7],v=q[n+8],A=q[n+9],B=q[n+10],C=q[n+11],u=q[n+12],D=q[n+13],E=q[n+14],x=q[n+15],f=a[0],m=a[1],g=a[2],h=a[3],f=p(f,m,g,h,c,7,b[0]),h=p(h,f,m,g,e,12,b[1]),g=p(g,h,f,m,j,17,b[2]),m=p(m,g,h,f,k,22,b[3]),f=p(f,m,g,h,z,7,b[4]),h=p(h,f,m,g,r,12,b[5]),g=p(g,h,f,m,t,17,b[6]),m=p(m,g,h,f,w,22,b[7]), +f=p(f,m,g,h,v,7,b[8]),h=p(h,f,m,g,A,12,b[9]),g=p(g,h,f,m,B,17,b[10]),m=p(m,g,h,f,C,22,b[11]),f=p(f,m,g,h,u,7,b[12]),h=p(h,f,m,g,D,12,b[13]),g=p(g,h,f,m,E,17,b[14]),m=p(m,g,h,f,x,22,b[15]),f=d(f,m,g,h,e,5,b[16]),h=d(h,f,m,g,t,9,b[17]),g=d(g,h,f,m,C,14,b[18]),m=d(m,g,h,f,c,20,b[19]),f=d(f,m,g,h,r,5,b[20]),h=d(h,f,m,g,B,9,b[21]),g=d(g,h,f,m,x,14,b[22]),m=d(m,g,h,f,z,20,b[23]),f=d(f,m,g,h,A,5,b[24]),h=d(h,f,m,g,E,9,b[25]),g=d(g,h,f,m,k,14,b[26]),m=d(m,g,h,f,v,20,b[27]),f=d(f,m,g,h,D,5,b[28]),h=d(h,f, +m,g,j,9,b[29]),g=d(g,h,f,m,w,14,b[30]),m=d(m,g,h,f,u,20,b[31]),f=l(f,m,g,h,r,4,b[32]),h=l(h,f,m,g,v,11,b[33]),g=l(g,h,f,m,C,16,b[34]),m=l(m,g,h,f,E,23,b[35]),f=l(f,m,g,h,e,4,b[36]),h=l(h,f,m,g,z,11,b[37]),g=l(g,h,f,m,w,16,b[38]),m=l(m,g,h,f,B,23,b[39]),f=l(f,m,g,h,D,4,b[40]),h=l(h,f,m,g,c,11,b[41]),g=l(g,h,f,m,k,16,b[42]),m=l(m,g,h,f,t,23,b[43]),f=l(f,m,g,h,A,4,b[44]),h=l(h,f,m,g,u,11,b[45]),g=l(g,h,f,m,x,16,b[46]),m=l(m,g,h,f,j,23,b[47]),f=s(f,m,g,h,c,6,b[48]),h=s(h,f,m,g,w,10,b[49]),g=s(g,h,f,m, +E,15,b[50]),m=s(m,g,h,f,r,21,b[51]),f=s(f,m,g,h,u,6,b[52]),h=s(h,f,m,g,k,10,b[53]),g=s(g,h,f,m,B,15,b[54]),m=s(m,g,h,f,e,21,b[55]),f=s(f,m,g,h,v,6,b[56]),h=s(h,f,m,g,x,10,b[57]),g=s(g,h,f,m,t,15,b[58]),m=s(m,g,h,f,D,21,b[59]),f=s(f,m,g,h,z,6,b[60]),h=s(h,f,m,g,C,10,b[61]),g=s(g,h,f,m,j,15,b[62]),m=s(m,g,h,f,A,21,b[63]);a[0]=a[0]+f|0;a[1]=a[1]+m|0;a[2]=a[2]+g|0;a[3]=a[3]+h|0},_doFinalize:function(){var b=this._data,n=b.words,a=8*this._nDataBytes,c=8*b.sigBytes;n[c>>>5]|=128<<24-c%32;var e=u.floor(a/ +4294967296);n[(c+64>>>9<<4)+15]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360;n[(c+64>>>9<<4)+14]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;b.sigBytes=4*(n.length+1);this._process();b=this._hash;n=b.words;for(a=0;4>a;a++)c=n[a],n[a]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return b},clone:function(){var b=v.clone.call(this);b._hash=this._hash.clone();return b}});t.MD5=v._createHelper(r);t.HmacMD5=v._createHmacHelper(r)})(Math); +(function(){var u=CryptoJS,p=u.lib,d=p.Base,l=p.WordArray,p=u.algo,s=p.EvpKDF=d.extend({cfg:d.extend({keySize:4,hasher:p.MD5,iterations:1}),init:function(d){this.cfg=this.cfg.extend(d)},compute:function(d,r){for(var p=this.cfg,s=p.hasher.create(),b=l.create(),u=b.words,q=p.keySize,p=p.iterations;u.length<q;){n&&s.update(n);var n=s.update(d).finalize(r);s.reset();for(var a=1;a<p;a++)n=s.finalize(n),s.reset();b.concat(n)}b.sigBytes=4*q;return b}});u.EvpKDF=function(d,l,p){return s.create(p).compute(d, +l)}})(); +CryptoJS.lib.Cipher||function(u){var p=CryptoJS,d=p.lib,l=d.Base,s=d.WordArray,t=d.BufferedBlockAlgorithm,r=p.enc.Base64,w=p.algo.EvpKDF,v=d.Cipher=t.extend({cfg:l.extend(),createEncryptor:function(e,a){return this.create(this._ENC_XFORM_MODE,e,a)},createDecryptor:function(e,a){return this.create(this._DEC_XFORM_MODE,e,a)},init:function(e,a,b){this.cfg=this.cfg.extend(b);this._xformMode=e;this._key=a;this.reset()},reset:function(){t.reset.call(this);this._doReset()},process:function(e){this._append(e);return this._process()}, +finalize:function(e){e&&this._append(e);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(e){return{encrypt:function(b,k,d){return("string"==typeof k?c:a).encrypt(e,b,k,d)},decrypt:function(b,k,d){return("string"==typeof k?c:a).decrypt(e,b,k,d)}}}});d.StreamCipher=v.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var b=p.mode={},x=function(e,a,b){var c=this._iv;c?this._iv=u:c=this._prevBlock;for(var d=0;d<b;d++)e[a+d]^= +c[d]},q=(d.BlockCipherMode=l.extend({createEncryptor:function(e,a){return this.Encryptor.create(e,a)},createDecryptor:function(e,a){return this.Decryptor.create(e,a)},init:function(e,a){this._cipher=e;this._iv=a}})).extend();q.Encryptor=q.extend({processBlock:function(e,a){var b=this._cipher,c=b.blockSize;x.call(this,e,a,c);b.encryptBlock(e,a);this._prevBlock=e.slice(a,a+c)}});q.Decryptor=q.extend({processBlock:function(e,a){var b=this._cipher,c=b.blockSize,d=e.slice(a,a+c);b.decryptBlock(e,a);x.call(this, +e,a,c);this._prevBlock=d}});b=b.CBC=q;q=(p.pad={}).Pkcs7={pad:function(a,b){for(var c=4*b,c=c-a.sigBytes%c,d=c<<24|c<<16|c<<8|c,l=[],n=0;n<c;n+=4)l.push(d);c=s.create(l,c);a.concat(c)},unpad:function(a){a.sigBytes-=a.words[a.sigBytes-1>>>2]&255}};d.BlockCipher=v.extend({cfg:v.cfg.extend({mode:b,padding:q}),reset:function(){v.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;this._mode=c.call(a, +this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var n=d.CipherParams=l.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),b=(p.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;return(a?s.create([1398893684, +1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=s.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return n.create({ciphertext:a,salt:c})}},a=d.SerializableCipher=l.extend({cfg:l.extend({format:b}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var l=a.createEncryptor(c,d);b=l.finalize(b);l=l.cfg;return n.create({ciphertext:b,key:c,iv:l.iv,algorithm:a,mode:l.mode,padding:l.padding,blockSize:a.blockSize,formatter:d.format})}, +decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a,this):a}}),p=(p.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=s.random(8));a=w.create({keySize:b+c}).compute(a,d);c=s.create(a.words.slice(b),4*c);a.sigBytes=4*b;return n.create({key:a,iv:c,salt:d})}},c=d.PasswordBasedCipher=a.extend({cfg:a.cfg.extend({kdf:p}),encrypt:function(b,c,d,l){l=this.cfg.extend(l);d=l.kdf.execute(d, +b.keySize,b.ivSize);l.iv=d.iv;b=a.encrypt.call(this,b,c,d.key,l);b.mixIn(d);return b},decrypt:function(b,c,d,l){l=this.cfg.extend(l);c=this._parse(c,l.format);d=l.kdf.execute(d,b.keySize,b.ivSize,c.salt);l.iv=d.iv;return a.decrypt.call(this,b,c,d.key,l)}})}(); +(function(){for(var u=CryptoJS,p=u.lib.BlockCipher,d=u.algo,l=[],s=[],t=[],r=[],w=[],v=[],b=[],x=[],q=[],n=[],a=[],c=0;256>c;c++)a[c]=128>c?c<<1:c<<1^283;for(var e=0,j=0,c=0;256>c;c++){var k=j^j<<1^j<<2^j<<3^j<<4,k=k>>>8^k&255^99;l[e]=k;s[k]=e;var z=a[e],F=a[z],G=a[F],y=257*a[k]^16843008*k;t[e]=y<<24|y>>>8;r[e]=y<<16|y>>>16;w[e]=y<<8|y>>>24;v[e]=y;y=16843009*G^65537*F^257*z^16843008*e;b[k]=y<<24|y>>>8;x[k]=y<<16|y>>>16;q[k]=y<<8|y>>>24;n[k]=y;e?(e=z^a[a[a[G^z]]],j^=a[a[j]]):e=j=1}var H=[0,1,2,4,8, +16,32,64,128,27,54],d=d.AES=p.extend({_doReset:function(){for(var a=this._key,c=a.words,d=a.sigBytes/4,a=4*((this._nRounds=d+6)+1),e=this._keySchedule=[],j=0;j<a;j++)if(j<d)e[j]=c[j];else{var k=e[j-1];j%d?6<d&&4==j%d&&(k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255]):(k=k<<8|k>>>24,k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255],k^=H[j/d|0]<<24);e[j]=e[j-d]^k}c=this._invKeySchedule=[];for(d=0;d<a;d++)j=a-d,k=d%4?e[j]:e[j-4],c[d]=4>d||4>=j?k:b[l[k>>>24]]^x[l[k>>>16&255]]^q[l[k>>> +8&255]]^n[l[k&255]]},encryptBlock:function(a,b){this._doCryptBlock(a,b,this._keySchedule,t,r,w,v,l)},decryptBlock:function(a,c){var d=a[c+1];a[c+1]=a[c+3];a[c+3]=d;this._doCryptBlock(a,c,this._invKeySchedule,b,x,q,n,s);d=a[c+1];a[c+1]=a[c+3];a[c+3]=d},_doCryptBlock:function(a,b,c,d,e,j,l,f){for(var m=this._nRounds,g=a[b]^c[0],h=a[b+1]^c[1],k=a[b+2]^c[2],n=a[b+3]^c[3],p=4,r=1;r<m;r++)var q=d[g>>>24]^e[h>>>16&255]^j[k>>>8&255]^l[n&255]^c[p++],s=d[h>>>24]^e[k>>>16&255]^j[n>>>8&255]^l[g&255]^c[p++],t= +d[k>>>24]^e[n>>>16&255]^j[g>>>8&255]^l[h&255]^c[p++],n=d[n>>>24]^e[g>>>16&255]^j[h>>>8&255]^l[k&255]^c[p++],g=q,h=s,k=t;q=(f[g>>>24]<<24|f[h>>>16&255]<<16|f[k>>>8&255]<<8|f[n&255])^c[p++];s=(f[h>>>24]<<24|f[k>>>16&255]<<16|f[n>>>8&255]<<8|f[g&255])^c[p++];t=(f[k>>>24]<<24|f[n>>>16&255]<<16|f[g>>>8&255]<<8|f[h&255])^c[p++];n=(f[n>>>24]<<24|f[g>>>16&255]<<16|f[h>>>8&255]<<8|f[k&255])^c[p++];a[b]=q;a[b+1]=s;a[b+2]=t;a[b+3]=n},keySize:8});u.AES=p._createHelper(d)})(); diff --git a/openo-portal/portal-common/src/main/webapp/common/js/security/changepwd.js b/openo-portal/portal-common/src/main/webapp/common/js/security/changepwd.js new file mode 100644 index 00000000..29a4096d --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/security/changepwd.js @@ -0,0 +1,191 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var ChangePWD = function () { + $.validator.addMethod("passwordCheck", function() { + if( $('#password').attr('type') == 'text' && $('#rpassword').attr('type') == 'text'){ + return true; + } + if( $('#password').attr('type') == 'password' && $('#rpassword').attr('type') == 'password' ){ + if($('#password').val() == $('#rpassword').val() ){ + return true; + } + } + if($('#password').val() =='' && $('#rpassword').attr('type') == 'text' || $('#rpassword').val() =='' && $('#password').attr('type')){ + return true; + } + return false; + }); + var handleLogin = function () { + $('.login-form').validate({ + errorElement : 'span', //default input error message container + errorClass : 'help-block', // default input error message class + focusInvalid : true, // do not focus the last invalid input + onfocusout : function (element) { + $(element).valid(); + }, + rules : { + oldpassword : { + required : false + }, + password : { + required : false + }, + rpassword : { + required : false, + passwordCheck : true + } + }, + + messages : { + oldpassword : { + required : $.i18n.prop('com_zte_ums_ict_sm_user_inputoldpwd') + }, + password : { + required : $.i18n.prop('com_zte_ums_ict_sm_user_inputnewpwd') + }, + rpassword : { + required : $.i18n.prop('com_zte_ums_ict_sm_user_inputnewpwdagain'), + equalTo : $.i18n.prop('com_zte_ums_ict_sm_password_confirm_not_consistent'), + passwordCheck : $.i18n.prop('com_zte_ums_ict_sm_password_confirm_not_consistent'), + } + }, + + invalidHandler : function (event, validator) { //display error alert on form submit + $('.alert-danger', $('.login-form')).show(); + }, + + highlight : function (element) { // hightlight error inputs + $(element) + .closest('.form-group').addClass('has-error'); // set error class to the control group + }, + + success : function (label) { + label.closest('.form-group').removeClass('has-error'); + label.remove(); + }, + + errorPlacement : function (error, element) { + error.insertAfter(element.closest('.input-icon')); + }, + + submitHandler : function (form) { + // form.submit(); + var params = {}; + var currentUser = httpRequest("GET", FrameConst.REST_GET_USERNAME, ""); + params["userName"] = currentUser; + params["password"] = $("#oldpassword").attr('type')=='password' ? $("#oldpassword").val() : ''; + params["newPassword"] = $("#password").attr('type')=='password' ? $("#password").val() : ''; + params["confirmPassword"] = $("#rpassword").attr('type')=='password' ? $("#rpassword").val() : ''; + + + jQuery('#submitBtn').prop("disabled", true); + $.ajax({ + type : "POST", + url : "/web/rest/sm/user/modifyCurrentPassword", + data : params, + dataType : "json", + success : function (data) { + var returnValue = data; + + if (returnValue && returnValue.result == 1) { + bootbox.alert($.i18n.prop('com_zte_ums_ict_sm_user_op_ok'), function () { + window.closeModal('changepwdDlg'); + }); + } else { + bootbox.alert(returnValue.response.data); + } + jQuery('#submitBtn').prop("disabled", false); + }, + error : function (xhr, ajaxOptions, thrownError) { + jQuery('#submitBtn').prop("disabled", false); + } + }); + + } + }); + + $('.login-form input').keypress(function (e) { + $("#nameOrpwdError").hide(); + if (e.which == 13) { + if ($('.login-form').validate().form()) { + $('.login-form').submit(); + } + return false; + } + }); + } + var handleI18n = function () { + $("#com_zte_ums_ict_sm_user_modify_current_password").text($.i18n.prop('com_zte_ums_ict_sm_user_modify_current_password')); + $("#com_zte_ums_ict_sm_user_old_password").text($.i18n.prop('com_zte_ums_ict_sm_user_old_password')); + $("#com_zte_ums_ict_sm_user_password").text($.i18n.prop('com_zte_ums_ict_sm_user_password')); + $("#com_zte_ums_ict_sm_user_confirmpassword").text($.i18n.prop('com_zte_ums_ict_sm_user_confirmpassword')); + + $("#oldpassword").attr("placeholder", $.i18n.prop('com_zte_ums_ict_sm_user_old_password')); + $("#password").attr("placeholder", $.i18n.prop('com_zte_ums_ict_sm_user_password')); + $("#rpassword").attr("placeholder", $.i18n.prop('com_zte_ums_ict_sm_user_confirmpassword')); + + $("#com_zte_ums_ict_sm_user_ok").text($.i18n.prop('com_zte_ums_ict_sm_user_ok')); + $("#com_zte_ums_ict_sm_user_cancel_button").text($.i18n.prop('com_zte_ums_ict_sm_user_cancel_button')); + + } + var handleShowModalEvent = function () { + $('#changepwdDlg').on('show.bs.modal', function (e) { + $("#oldpassword").val(""); + $("#password").val(""); + $("#rpassword").val(""); + $(".has-error", this).removeClass("has-error"); + $("span.help-block", this).hide(); + + if(!('placeholder' in document.createElement('input'))){ // �ж�������Ƿ�֧�� placeholder,ie9��֧�֣���Ҫ����� + $("#rpassword").rules("remove", "equalTo"); + $('[placeholder]').focus(function() { + var input = $(this); + input.attr('type','password'); + $("#rpassword").rules("add", { + passwordCheck :true + }); + if (input.val() == input.attr('placeholder')) { + input.val(''); + + } + }).blur(function() { + var input = $(this); + if (input.val() == '' || input.val() == input.attr('placeholder')) { + input.attr('type','text'); + $("#rpassword").rules("remove", "passwordCheck"); + + input.val(input.attr('placeholder')); + + } + }).blur(); + + + // + }; + + + }); + } + return { + //main function to initiate the module + init : function () { + handleI18n(); + handleShowModalEvent(); + handleLogin(); + } + }; +} +(); diff --git a/openo-portal/portal-common/src/main/webapp/common/js/security/framework-util.js b/openo-portal/portal-common/src/main/webapp/common/js/security/framework-util.js new file mode 100644 index 00000000..8939a281 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/security/framework-util.js @@ -0,0 +1,38 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function ict_framework_func1(word){ + var a1 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a1); + var a2 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a2); + var srcs = CryptoJS.enc.Utf8.parse(word); + var encrypted = CryptoJS.AES.encrypt(srcs, a1, { iv: a2,mode:CryptoJS.mode.CBC}); + return encrypted.toString(); +} + +function ict_framework_func2(word){ + var a1 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a1); + var a2 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a2); + var decrypt = CryptoJS.AES.decrypt(word, a1, { iv: a2,mode:CryptoJS.mode.CBC}); + return CryptoJS.enc.Utf8.stringify(decrypt).toString(); +} + + + + + + + +var ict_framework_aes_a1 = "9763853428462486"; +var ict_framework_aes_a2 = "9763853428462486";
\ No newline at end of file diff --git a/openo-portal/portal-common/src/main/webapp/common/js/security/security.js b/openo-portal/portal-common/src/main/webapp/common/js/security/security.js new file mode 100644 index 00000000..521130c4 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/security/security.js @@ -0,0 +1,127 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var ErrResult_LOGIN_SUCCESS = 0; +var ErrResult_LOGIN_FAILURE = 4; +var ErrResult_LOGIN_SUCCESS_WARN = 1; +var ErrResult_LOGIN_SUCCESS_PASSWORD_WARN = 2; +var ErrResult_LOGIN_SUCCESS_PASSWORD_MUSTCHANGE = 3; +var ErrResult_LOGIN_SERV_ERROR = -1; + +function processLoginResult(data,params){ + if(data.home="web/res/web-framework/index.html"||data.home.indexOf("index.html")>0){ + data.home=FrameConst.DEFAULT_LOGINSKIP_PAGE; + //下面这部分是为了演示需要临时增加的自动切换 + /*if(params.username=="admin1"){ + data.home="/web/res/web-framework/default.html?menu=1"; + }else if(params.username=="admin2"){ + data.home="/web/res/web-framework/default.html?menu=2"; + }else if(params.username=="admin3"){ + data.home="/web/res/web-framework/default.html?menu=3"; + }else if(params.username=="admin4"){ + data.home="/web/res/web-framework/default.html?menu=4"; + }else if(params.username=="admin5"){ + data.home="/web/res/web-framework/default.html?menu=5"; + }else if(params.username=="admin6"){ + data.home="/web/res/web-framework/default.html?menu=6"; + }else if(params.username=="admin7"){ + data.home="/web/res/web-framework/default.html?menu=7"; + }*/ + } + var toHomePage = function(){ + location.href = data.home; + } + + var loginHander = function(inParams){ + if(inParams != undefined){ + login(inParams); + } + else{ + login(params); + } + } + + var errors = data.detail; + if(data.result == 0){ + store('username',params.username); + if(errors){ + if(errors.code==ErrResult_LOGIN_SUCCESS_PASSWORD_WARN){ + + com_zte_ums_aos_portal_PasswordDialog.create({ + ID : "LOGIN_MODIFY_PASSWORD", + username : params.username, + oldPassword : ict_framework_func2(params.password), + descLabel : errors[ErrResult_LOGIN_SUCCESS_PASSWORD_WARN], + cancelHander : toHomePage, + confirmHander : toHomePage + }); + LOGIN_MODIFY_PASSWORD.show(); + } + else if(errors.code==ErrResult_LOGIN_SUCCESS_WARN){ + window.alert(errors[ErrResult_LOGIN_SUCCESS_WARN],toHomePage); + } + else { + location.href = data.home; + } + } + else { + location.href = data.home; + } + } + else { + if(errors.code==ErrResult_LOGIN_SUCCESS_PASSWORD_MUSTCHANGE){ + com_zte_ums_aos_portal_PasswordDialog.create({ + ID : "LOGIN_MODIFY_PASSWORD", + username : params.username, + oldPassword : ict_framework_func2(params.password), + descLabel : errors[ErrResult_LOGIN_SUCCESS_PASSWORD_MUSTCHANGE], + confirmHander : loginHander + + }); + LOGIN_MODIFY_PASSWORD.show(); + } + else if(errors.code==ErrResult_LOGIN_FAILURE){ + $("#nameOrpwdError").addClass('alert-danger'); + $("#com_zte_ums_ict_portal_login_userPassword").html(errors[ErrResult_LOGIN_FAILURE]); + var tip = $("#nameOrpwdError"); + if (tip.attr("tipstatus") == "normal") { + tip.show(); + } else if (tip.attr("tipstatus") == "close") { + tip.attr("tipstatus", "normal"); + } + // if(0 < $("#inputPassword").length){ + // $("#inputPassword")[0].value = ""; + // } + } + else if(errors.code==ErrResult_LOGIN_SERV_ERROR){ + $("#loginConnError").addClass('alert-danger'); + var tip = $("#loginConnError"); + if (tip.attr("tipstatus") == "normal") { + tip.show(); + } else if (tip.attr("tipstatus") == "close") { + tip.attr("tipstatus", "normal"); + } + } + } +} +function login(params){ + $.post("login",{ + username : params.username, + password : params.password, + isEncypted:true + },function(data){ + processLoginResult(data,params); + },"json"); +} diff --git a/openo-portal/portal-common/src/main/webapp/common/js/tools.js b/openo-portal/portal-common/src/main/webapp/common/js/tools.js new file mode 100644 index 00000000..e65233ef --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/js/tools.js @@ -0,0 +1,1036 @@ +/* + * Copyright 2016, CMCC Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +;(function(window, define) { + var _ = { + version: "2.3.0", + areas: {}, + apis: {}, + + // utilities + inherit: function(api, o) { + for (var p in api) { + if (!o.hasOwnProperty(p)) { + o[p] = api[p]; + } + } + return o; + }, + stringify: function(d) { + return d === undefined || typeof d === "function" ? d+'' : JSON.stringify(d); + }, + parse: function(s) { + // if it doesn't parse, return as is + try{ return JSON.parse(s); }catch(e){ return s; } + }, + + // extension hooks + fn: function(name, fn) { + _.storeAPI[name] = fn; + for (var api in _.apis) { + _.apis[api][name] = fn; + } + }, + get: function(area, key){ return area.getItem(key); }, + set: function(area, key, string){ area.setItem(key, string); }, + remove: function(area, key){ area.removeItem(key); }, + key: function(area, i){ return area.key(i); }, + length: function(area){ return area.length; }, + clear: function(area){ area.clear(); }, + + // core functions + Store: function(id, area, namespace) { + var store = _.inherit(_.storeAPI, function(key, data, overwrite) { + if (arguments.length === 0){ return store.getAll(); } + if (data !== undefined){ return store.set(key, data, overwrite); } + if (typeof key === "string"){ return store.get(key); } + if (!key){ return store.clear(); } + return store.setAll(key, data);// overwrite=data, data=key + }); + store._id = id; + try { + var testKey = '_safariPrivate_'; + area.setItem(testKey, 'sucks'); + store._area = area; + area.removeItem(testKey); + } catch (e) {} + if (!store._area) { + store._area = _.inherit(_.storageAPI, { items: {}, name: 'fake' }); + } + store._ns = namespace || ''; + if (!_.areas[id]) { + _.areas[id] = store._area; + } + if (!_.apis[store._ns+store._id]) { + _.apis[store._ns+store._id] = store; + } + return store; + }, + storeAPI: { + // admin functions + area: function(id, area) { + var store = this[id]; + if (!store || !store.area) { + store = _.Store(id, area, this._ns);//new area-specific api in this namespace + if (!this[id]){ this[id] = store; } + } + return store; + }, + namespace: function(namespace, noSession) { + if (!namespace){ + return this._ns ? this._ns.substring(0,this._ns.length-1) : ''; + } + var ns = namespace, store = this[ns]; + if (!store || !store.namespace) { + store = _.Store(this._id, this._area, this._ns+ns+'.');//new namespaced api + if (!this[ns]){ this[ns] = store; } + if (!noSession){ store.area('session', _.areas.session); } + } + return store; + }, + isFake: function(){ return this._area.name === 'fake'; }, + toString: function() { + return 'store'+(this._ns?'.'+this.namespace():'')+'['+this._id+']'; + }, + + // storage functions + has: function(key) { + if (this._area.has) { + return this._area.has(this._in(key));//extension hook + } + return !!(this._in(key) in this._area); + }, + size: function(){ return this.keys().length; }, + each: function(fn, and) { + for (var i=0, m=_.length(this._area); i<m; i++) { + var key = this._out(_.key(this._area, i)); + if (key !== undefined) { + if (fn.call(this, key, and || this.get(key)) === false) { + break; + } + } + if (m > _.length(this._area)) { m--; i--; }// in case of removeItem + } + return and || this; + }, + keys: function() { + return this.each(function(k, list){ list.push(k); }, []); + }, + get: function(key, alt) { + var s = _.get(this._area, this._in(key)); + return s !== null ? _.parse(s) : alt || s;// support alt for easy default mgmt + }, + getAll: function() { + return this.each(function(k, all){ all[k] = this.get(k); }, {}); + }, + set: function(key, data, overwrite) { + var d = this.get(key); + if (d != null && overwrite === false) { + return data; + } + return _.set(this._area, this._in(key), _.stringify(data), overwrite) || d; + }, + setAll: function(data, overwrite) { + var changed, val; + for (var key in data) { + val = data[key]; + if (this.set(key, val, overwrite) !== val) { + changed = true; + } + } + return changed; + }, + remove: function(key) { + var d = this.get(key); + _.remove(this._area, this._in(key)); + return d; + }, + clear: function() { + if (!this._ns) { + _.clear(this._area); + } else { + this.each(function(k){ _.remove(this._area, this._in(k)); }, 1); + } + return this; + }, + clearAll: function() { + var area = this._area; + for (var id in _.areas) { + if (_.areas.hasOwnProperty(id)) { + this._area = _.areas[id]; + this.clear(); + } + } + this._area = area; + return this; + }, + + // internal use functions + _in: function(k) { + if (typeof k !== "string"){ k = _.stringify(k); } + return this._ns ? this._ns + k : k; + }, + _out: function(k) { + return this._ns ? + k && k.indexOf(this._ns) === 0 ? + k.substring(this._ns.length) : + undefined : // so each() knows to skip it + k; + } + },// end _.storeAPI + storageAPI: { + length: 0, + has: function(k){ return this.items.hasOwnProperty(k); }, + key: function(i) { + var c = 0; + for (var k in this.items){ + if (this.has(k) && i === c++) { + return k; + } + } + }, + setItem: function(k, v) { + if (!this.has(k)) { + this.length++; + } + this.items[k] = v; + }, + removeItem: function(k) { + if (this.has(k)) { + delete this.items[k]; + this.length--; + } + }, + getItem: function(k){ return this.has(k) ? this.items[k] : null; }, + clear: function(){ for (var k in this.list){ this.removeItem(k); } }, + toString: function(){ return this.length+' items in '+this.name+'Storage'; } + }// end _.storageAPI + }; + + // setup the primary store fn + if (window.store){ _.conflict = window.store; } + var store = + // safely set this up (throws error in IE10/32bit mode for local files) + _.Store("local", (function(){try{ return localStorage; }catch(e){}})()); + store.local = store;// for completeness + store._ = _;// for extenders and debuggers... + // safely setup store.session (throws exception in FF for file:/// urls) + store.area("session", (function(){try{ return sessionStorage; }catch(e){}})()); + + //Expose store to the global object + window.store = store; + + if (typeof define === 'function' && define.amd !== undefined) { + define(function () { + return store; + }); + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = store; + } + +})(this, null); + +// XHook - v1.3.3 - https://github.com/jpillora/xhook +// Jaime Pillora <dev@jpillora.com> - MIT Copyright 2015 +(function(window,undefined) { +var AFTER, BEFORE, COMMON_EVENTS, EventEmitter, FIRE, FormData, NativeFormData, NativeXMLHttp, OFF, ON, READY_STATE, UPLOAD_EVENTS, XHookFormData, XHookHttpRequest, XMLHTTP, convertHeaders, depricatedProp, document, fakeEvent, mergeObjects, msie, proxyEvents, slice, xhook, _base, + __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; + +document = window.document; + +BEFORE = 'before'; + +AFTER = 'after'; + +READY_STATE = 'readyState'; + +ON = 'addEventListener'; + +OFF = 'removeEventListener'; + +FIRE = 'dispatchEvent'; + +XMLHTTP = 'XMLHttpRequest'; + +FormData = 'FormData'; + +UPLOAD_EVENTS = ['load', 'loadend', 'loadstart']; + +COMMON_EVENTS = ['progress', 'abort', 'error', 'timeout']; + +msie = parseInt((/msie (\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]); + +if (isNaN(msie)) { + msie = parseInt((/trident\/.*; rv:(\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]); +} + +(_base = Array.prototype).indexOf || (_base.indexOf = function(item) { + var i, x, _i, _len; + for (i = _i = 0, _len = this.length; _i < _len; i = ++_i) { + x = this[i]; + if (x === item) { + return i; + } + } + return -1; +}); + +slice = function(o, n) { + return Array.prototype.slice.call(o, n); +}; + +depricatedProp = function(p) { + return p === "returnValue" || p === "totalSize" || p === "position"; +}; + +mergeObjects = function(src, dst) { + var k, v; + for (k in src) { + v = src[k]; + if (depricatedProp(k)) { + continue; + } + try { + dst[k] = src[k]; + } catch (_error) {} + } + return dst; +}; + +proxyEvents = function(events, src, dst) { + var event, p, _i, _len; + p = function(event) { + return function(e) { + var clone, k, val; + clone = {}; + for (k in e) { + if (depricatedProp(k)) { + continue; + } + val = e[k]; + clone[k] = val === src ? dst : val; + } + return dst[FIRE](event, clone); + }; + }; + for (_i = 0, _len = events.length; _i < _len; _i++) { + event = events[_i]; + if (dst._has(event)) { + src["on" + event] = p(event); + } + } +}; + +fakeEvent = function(type) { + var msieEventObject; + if (document.createEventObject != null) { + msieEventObject = document.createEventObject(); + msieEventObject.type = type; + return msieEventObject; + } else { + try { + return new Event(type); + } catch (_error) { + return { + type: type + }; + } + } +}; + +EventEmitter = function(nodeStyle) { + var emitter, events, listeners; + events = {}; + listeners = function(event) { + return events[event] || []; + }; + emitter = {}; + emitter[ON] = function(event, callback, i) { + events[event] = listeners(event); + if (events[event].indexOf(callback) >= 0) { + return; + } + i = i === undefined ? events[event].length : i; + events[event].splice(i, 0, callback); + }; + emitter[OFF] = function(event, callback) { + var i; + if (event === undefined) { + events = {}; + return; + } + if (callback === undefined) { + events[event] = []; + } + i = listeners(event).indexOf(callback); + if (i === -1) { + return; + } + listeners(event).splice(i, 1); + }; + emitter[FIRE] = function() { + var args, event, i, legacylistener, listener, _i, _len, _ref; + args = slice(arguments); + event = args.shift(); + if (!nodeStyle) { + args[0] = mergeObjects(args[0], fakeEvent(event)); + } + legacylistener = emitter["on" + event]; + if (legacylistener) { + legacylistener.apply(undefined, args); + } + _ref = listeners(event).concat(listeners("*")); + for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { + listener = _ref[i]; + listener.apply(undefined, args); + } + }; + emitter._has = function(event) { + return !!(events[event] || emitter["on" + event]); + }; + if (nodeStyle) { + emitter.listeners = function(event) { + return slice(listeners(event)); + }; + emitter.on = emitter[ON]; + emitter.off = emitter[OFF]; + emitter.fire = emitter[FIRE]; + emitter.once = function(e, fn) { + var fire; + fire = function() { + emitter.off(e, fire); + return fn.apply(null, arguments); + }; + return emitter.on(e, fire); + }; + emitter.destroy = function() { + return events = {}; + }; + } + return emitter; +}; + +xhook = EventEmitter(true); + +xhook.EventEmitter = EventEmitter; + +xhook[BEFORE] = function(handler, i) { + if (handler.length < 1 || handler.length > 2) { + throw "invalid hook"; + } + return xhook[ON](BEFORE, handler, i); +}; + +xhook[AFTER] = function(handler, i) { + if (handler.length < 2 || handler.length > 3) { + throw "invalid hook"; + } + return xhook[ON](AFTER, handler, i); +}; + +xhook.enable = function() { + window[XMLHTTP] = XHookHttpRequest; + if (NativeFormData) { + window[FormData] = XHookFormData; + } +}; + +xhook.disable = function() { + window[XMLHTTP] = xhook[XMLHTTP]; + window[FormData] = NativeFormData; +}; + +convertHeaders = xhook.headers = function(h, dest) { + var header, headers, k, name, v, value, _i, _len, _ref; + if (dest == null) { + dest = {}; + } + switch (typeof h) { + case "object": + headers = []; + for (k in h) { + v = h[k]; + name = k.toLowerCase(); + headers.push("" + name + ":\t" + v); + } + return headers.join('\n'); + case "string": + headers = h.split('\n'); + for (_i = 0, _len = headers.length; _i < _len; _i++) { + header = headers[_i]; + if (/([^:]+):\s*(.+)/.test(header)) { + name = (_ref = RegExp.$1) != null ? _ref.toLowerCase() : void 0; + value = RegExp.$2; + if (dest[name] == null) { + dest[name] = value; + } + } + } + return dest; + } +}; + +NativeFormData = window[FormData]; + +XHookFormData = function(form) { + var entries; + this.fd = form ? new NativeFormData(form) : new NativeFormData(); + this.form = form; + entries = []; + Object.defineProperty(this, 'entries', { + get: function() { + var fentries; + fentries = !form ? [] : slice(form.querySelectorAll("input,select")).filter(function(e) { + var _ref; + return ((_ref = e.type) !== 'checkbox' && _ref !== 'radio') || e.checked; + }).map(function(e) { + return [e.name, e.type === "file" ? e.files : e.value]; + }); + return fentries.concat(entries); + } + }); + this.append = (function(_this) { + return function() { + var args; + args = slice(arguments); + entries.push(args); + return _this.fd.append.apply(_this.fd, args); + }; + })(this); +}; + +if (NativeFormData) { + xhook[FormData] = NativeFormData; + window[FormData] = XHookFormData; +} + +NativeXMLHttp = window[XMLHTTP]; + +xhook[XMLHTTP] = NativeXMLHttp; + +XHookHttpRequest = window[XMLHTTP] = function() { + var ABORTED, currentState, emitFinal, emitReadyState, facade, hasError, hasErrorHandler, readBody, readHead, request, response, setReadyState, status, transiting, writeBody, writeHead, xhr; + ABORTED = -1; + xhr = new xhook[XMLHTTP](); + request = {}; + status = null; + hasError = void 0; + transiting = void 0; + response = void 0; + readHead = function() { + var key, name, val, _ref; + response.status = status || xhr.status; + if (!(status === ABORTED && msie < 10)) { + response.statusText = xhr.statusText; + } + if (status !== ABORTED) { + _ref = convertHeaders(xhr.getAllResponseHeaders()); + for (key in _ref) { + val = _ref[key]; + if (!response.headers[key]) { + name = key.toLowerCase(); + response.headers[name] = val; + } + } + } + }; + readBody = function() { + if (!xhr.responseType || xhr.responseType === "text") { + response.text = xhr.responseText; + response.data = xhr.responseText; + } else if (xhr.responseType === "document") { + response.xml = xhr.responseXML; + response.data = xhr.responseXML; + } else { + response.data = xhr.response; + } + if ("responseURL" in xhr) { + response.finalUrl = xhr.responseURL; + } + }; + writeHead = function() { + facade.status = response.status; + facade.statusText = response.statusText; + }; + writeBody = function() { + if ('text' in response) { + facade.responseText = response.text; + } + if ('xml' in response) { + facade.responseXML = response.xml; + } + if ('data' in response) { + facade.response = response.data; + } + if ('finalUrl' in response) { + facade.responseURL = response.finalUrl; + } + }; + emitReadyState = function(n) { + while (n > currentState && currentState < 4) { + facade[READY_STATE] = ++currentState; + if (currentState === 1) { + facade[FIRE]("loadstart", {}); + } + if (currentState === 2) { + writeHead(); + } + if (currentState === 4) { + writeHead(); + writeBody(); + } + facade[FIRE]("readystatechange", {}); + if (currentState === 4) { + setTimeout(emitFinal, 0); + } + } + }; + emitFinal = function() { + if (!hasError) { + facade[FIRE]("load", {}); + } + facade[FIRE]("loadend", {}); + if (hasError) { + facade[READY_STATE] = 0; + } + }; + currentState = 0; + setReadyState = function(n) { + var hooks, process; + if (n !== 4) { + emitReadyState(n); + return; + } + hooks = xhook.listeners(AFTER); + process = function() { + var hook; + if (!hooks.length) { + return emitReadyState(4); + } + hook = hooks.shift(); + if (hook.length === 2) { + hook(request, response); + return process(); + } else if (hook.length === 3 && request.async) { + return hook(request, response, process); + } else { + return process(); + } + }; + process(); + }; + facade = request.xhr = EventEmitter(); + xhr.onreadystatechange = function(event) { + try { + if (xhr[READY_STATE] === 2) { + readHead(); + } + } catch (_error) {} + if (xhr[READY_STATE] === 4) { + transiting = false; + readHead(); + readBody(); + } + setReadyState(xhr[READY_STATE]); + }; + hasErrorHandler = function() { + hasError = true; + }; + facade[ON]('error', hasErrorHandler); + facade[ON]('timeout', hasErrorHandler); + facade[ON]('abort', hasErrorHandler); + facade[ON]('progress', function() { + if (currentState < 3) { + setReadyState(3); + } else { + facade[FIRE]("readystatechange", {}); + } + }); + if ('withCredentials' in xhr || xhook.addWithCredentials) { + facade.withCredentials = false; + } + facade.status = 0; + facade.open = function(method, url, async, user, pass) { + currentState = 0; + hasError = false; + transiting = false; + request.headers = {}; + request.headerNames = {}; + request.status = 0; + response = {}; + response.headers = {}; + request.method = method; + request.url = url; + request.async = async !== false; + request.user = user; + request.pass = pass; + setReadyState(1); + }; + facade.send = function(body) { + var hooks, k, modk, process, send, _i, _len, _ref; + _ref = ['type', 'timeout', 'withCredentials']; + if(navigator.userAgent.indexOf("Firefox/") != -1){http://atmosphere-framework.2306103.n4.nabble.com/Atmosphere-js-withCredentials-true-does-not-work-in-Firefox-td4656661.html + _ref = ['type', 'timeout']; + } + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + k = _ref[_i]; + modk = k === "type" ? "responseType" : k; + if (modk in facade) { + request[k] = facade[modk]; + } + } + request.body = body; + send = function() { + var header, value, _j, _len1, _ref1, _ref2; + proxyEvents(COMMON_EVENTS, xhr, facade); + if (facade.upload) { + proxyEvents(COMMON_EVENTS.concat(UPLOAD_EVENTS), xhr.upload, facade.upload); + } + transiting = true; + xhr.open(request.method, request.url, request.async, request.user, request.pass); + _ref1 = ['type', 'timeout', 'withCredentials']; + if(navigator.userAgent.indexOf("Firefox/") != -1){//http://atmosphere-framework.2306103.n4.nabble.com/Atmosphere-js-withCredentials-true-does-not-work-in-Firefox-td4656661.html + _ref1 = ['type', 'timeout']; + } + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + k = _ref1[_j]; + modk = k === "type" ? "responseType" : k; + if (k in request) { + xhr[modk] = request[k]; + } + } + _ref2 = request.headers; + for (header in _ref2) { + value = _ref2[header]; + xhr.setRequestHeader(header, value); + } + if (request.body instanceof XHookFormData) { + request.body = request.body.fd; + } + xhr.send(request.body); + }; + hooks = xhook.listeners(BEFORE); + process = function() { + var done, hook; + if (!hooks.length) { + return send(); + } + done = function(userResponse) { + if (typeof userResponse === 'object' && (typeof userResponse.status === 'number' || typeof response.status === 'number')) { + mergeObjects(userResponse, response); + if (__indexOf.call(userResponse, 'data') < 0) { + userResponse.data = userResponse.response || userResponse.text; + } + setReadyState(4); + return; + } + process(); + }; + done.head = function(userResponse) { + mergeObjects(userResponse, response); + return setReadyState(2); + }; + done.progress = function(userResponse) { + mergeObjects(userResponse, response); + return setReadyState(3); + }; + hook = hooks.shift(); + if (hook.length === 1) { + return done(hook(request)); + } else if (hook.length === 2 && request.async) { + return hook(request, done); + } else { + return done(); + } + }; + process(); + }; + facade.abort = function() { + status = ABORTED; + if (transiting) { + xhr.abort(); + } else { + facade[FIRE]('abort', {}); + } + }; + facade.setRequestHeader = function(header, value) { + var lName, name; + lName = header != null ? header.toLowerCase() : void 0; + name = request.headerNames[lName] = request.headerNames[lName] || header; + if (request.headers[name]) { + value = request.headers[name] + ', ' + value; + } + request.headers[name] = value; + }; + facade.getResponseHeader = function(header) { + var name; + name = header != null ? header.toLowerCase() : void 0; + return response.headers[name]; + }; + facade.getAllResponseHeaders = function() { + return convertHeaders(response.headers); + }; + if (xhr.overrideMimeType) { + facade.overrideMimeType = function() { + return xhr.overrideMimeType.apply(xhr, arguments); + }; + } + if (xhr.upload) { + facade.upload = request.upload = EventEmitter(); + } + return facade; +}; +/* +if (typeof this.define === "function" && this.define.amd) { + define("xhook", [], function() { + return xhook; + }); +} else {*/ + (this.exports || this).xhook = xhook; +//} + +}.call(this,window)); + +xhook.before(function(request) { + var zte_headers = store('zte_http_headers'); + if (zte_headers && zte_headers.length > 0) { + for (i = 0; i < zte_headers.length; i++) { + if (zte_headers[i].store === true) { + if ( !! store(zte_headers[i].value)) { + request.headers[zte_headers[i].key] = store(zte_headers[i].value).toUpperCase() + } + } else { + request.headers[zte_headers[i].key] = zte_headers[i].value + } + } + } +}); +/** + * 初始化脚本文件装载工具 + * zongying 2010.12 + * modify: + */ +$Boot = {}; + +/** + * 创建命名空间 + * @param {Object} name + * @param {Object} object + */ +$Boot.createNamespace = function(name, object) { + var splits = name.split("."); + var parent = window; + //document.window浏览器内置对象 + var part = splits[0]; + for (var i = 0, len = splits.length - 1; i < len; i++, part = splits[i]) { + if (!parent[part]) { + parent = parent[part] = {}; + } else { + parent = parent[part]; + } + } + // 存放对象 + parent[part] = object; + // 返回 last part name (例如:classname) + return part; +} + +$Boot.isDefined = function(o) { + return typeof (o) != "undefined" +} +/** + * 启动配置类 + */ +$Boot.Config = function() { + + function isDefined(o) { + return typeof (o) != "undefined" + } + + //用户应用当前目录 + if (!isDefined(window.$userAppDir)) { + window.$userAppDir = './' + } + //组件库目录 + if (!isDefined(window.$userFrameDir)) { + window.$userFrameDir = '/common/' + } + //用户i18文件目录 + if (!isDefined(window.$userI18nDir)) { + window.$userI18nDir = './' + } + + //当前语言 默认为英语 + var language = "zh-CN"; + //var languageList = ['ar', 'ba', 'cr', 'cs', 'de', 'el', 'es', 'fi', 'fr', 'fr-FR', 'hu-HU', 'id', 'it', 'ja', 'nb-NO', 'nl', 'pl', 'pl-PL', 'pt', 'pt-BR', 'ro-RO', 'ru-RU', 'sk', 'sr', 'sr-Latn', 'sv-SE', 'en-US','uk-UA', 'zh-CN', 'zh-TW']; + var languageList = ['en-US', 'zh-CN']; + + //从服务端取客户端接受语言类型 + var getAcceptLangFromServer = true; + + + /** + * 创建XMLHttpRequest对象 + */ + function createXMLHttpRequest() { + if (window.ActiveXObject) { + return new ActiveXObject("Microsoft.XMLHTTP"); + } else if (window.XMLHttpRequest) { + return new XMLHttpRequest(); + } else { + throw new Error("This Brower do not support XMLHTTP!!"); + } + } + + + /** + * 同步发送xml http 请求 + * @param {Object} url + * @param {Object} data + * @param {Object} method + */ + function httpRequest(method, url, data) { + var xmlhttp; + xmlhttp = createXMLHttpRequest(); + var sendData = null; + if (method == "get") { + url = url + "?" + data; + + } else if (method == "post") { + sendData = data; + } + xmlhttp.open(method, url, false); + xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + xmlhttp.setRequestHeader("If-Modified-Since", "0"); + xmlhttp.send(sendData); + if (xmlhttp.status == 200) + return xmlhttp.responseText; + } + + /** + * 同步发送xml http 请求(给外部调用) + * @param {Object} url + * @param {Object} data + * @param {Object} method + */ + this.httpRequestStatic = function(method, url, data) { + var xmlhttp; + xmlhttp = createXMLHttpRequest(); + var sendData = null; + if (method == "get") { + url = url + "?" + data; + + } else if (method == "post") { + sendData = data; + } + xmlhttp.open(method, url, false); + xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + xmlhttp.setRequestHeader("If-Modified-Since", "0"); + xmlhttp.send(sendData); + if (xmlhttp.status == 200) + return xmlhttp.responseText; + } + + function inArray(array, obj) { + for (var i = 0; i < array.length; i++) { + if (array[i] == obj) { + return true; + } + } + return false; + + } + + /** + * 取得浏览器语言信息 + */ + this.getLanguage = function() { + var rtnLanguage = localStorage.getItem("language-option"); + if( rtnLanguage == "null" || rtnLanguage == null ){ + rtnLanguage = window.navigator.userLanguage||window.navigator.language; + } + if( rtnLanguage == '"zh-CN"' || rtnLanguage == "zh-CN" ){ + return "zh-CN"; + }else{ + return "en-US"; + } + //return "en-US"; + } + + this.getUrlParam=function(name){ + var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 + var search =decodeURIComponent(location.search.substring(1)); //decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。 + var r =search.match(reg); //匹配目标参数 + if (r != null) return unescape(r[2]); //unescape() 函数可对通过 escape() 编码的字符串进行解码。 + return null; //返回参数值 + } + + +} + +//创建命名空间 +$Boot.createNamespace("com.zte.ums.aos.framework.BootConfig", $Boot.Config); +//创建基础配置对象实例 +$Boot.bootConfig = new com.zte.ums.aos.framework.BootConfig(); + +function getLanguage(){ + return $Boot.bootConfig.getLanguage(); +} + +function getStringWidth(text,fontSize) +{ + var span = document.getElementById("_ictframework_getwidth"); + if (span == null) { + span = document.createElement("span"); + span.id = "_ictframework_getwidth"; + document.body.appendChild(span); + } + span.innerText = text; + span.style.whiteSpace = "nowrap"; + $("#_ictframework_getwidth").attr('style','font-size:'+fontSize+'px;'); + var width = span.offsetWidth; + $("#_ictframework_getwidth").attr('style','display:none'); + return width; +} + +function getUrlParam(name){ + return $Boot.bootConfig.getUrlParam(name); +} + +function httpRequest(method, url, data) { + return $Boot.bootConfig.httpRequestStatic(method, url, data) +} + +// 定义JQUERY AJAX 完成函数,判断返回状态,如果状态正常,但HEADER头里有session超时信息,则刷新重登录 +// 如果状态为 401, 也刷新重登录 +// 注意如果在$.ajax() 函数中定义了 complete,则覆盖了这里预定义complete内容,以$.ajax()函数中定义的为准,这里预定义的函数则失效,如果 +// 要继续判断session超时,则需要在 $.ajax()函数中定义的complete函数中加入这里预定义内容。 +if (jQuery) { + $.ajaxSetup({ + complete:function(XMLHttpRequest,textStatus){ + if (XMLHttpRequest.status == 401) { + window.location.replace("login.html"); + } + // if (XMLHttpRequest.status == 200) { + // var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); ////通过XMLHttpRequest取得响应头,sessionstatus, + // if(sessionstatus=="timeout"){ + // window.location.replace("/"); + // } + // } else if (XMLHttpRequest.status == 401) { + // window.location.replace("/"); + // } + } + }); +} |