aboutsummaryrefslogtreecommitdiffstats
path: root/openo-portal/portal-common/src/main/webapp/common/js
diff options
context:
space:
mode:
author“shentao” <shentao@chinamobile.com>2016-09-20 20:23:38 +0800
committer“shentao” <shentao@chinamobile.com>2016-09-20 20:23:38 +0800
commitda0d4d81e5ddf347a71d341af18c3c42ea6bc3ab (patch)
treeb7dc889174edd9bba7456d1d2ce42f1e680cb7e5 /openo-portal/portal-common/src/main/webapp/common/js
parent9f7095cc0c1f83ebe18e19da7733b7b0a0412632 (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')
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/Main2moreMenu.js17
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/core/ZteFrameWork.js4008
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/core/ZteFrameWork.min.js165
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/core/const.js56
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/core/hk.min.js819
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/core/pym.min.js16
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/fm_light.js169
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n-login.js53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n.js110
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/international/loadi18nApp_universal.js24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/json2.js341
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/login.js225
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/mainpage/about.js142
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/mainpage/ict.main.page.js142
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/moreOperation.js166
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/security/aes.js44
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/security/changepwd.js191
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/security/framework-util.js38
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/security/security.js127
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/tools.js1036
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>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</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 +'"/>&nbsp;&nbsp;<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>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</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>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</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+'"/>&nbsp;&nbsp;<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>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</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>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</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>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</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("/");
+ // }
+ }
+ });
+}