📄 menu.js
字号:
var FileURL = "",parames = "";
FileURL = G.ActionURL.PageDataURL;
parames = "Type=Feed&Action=FeedNew&Code=" + menufeed.Code;
parames = "module=xml&action=" + G.ActionURL.SaveData + "&" + parames;
G_RequestObj.send(FileURL,parames,null,"get");
// var FileURL = "",parames = "";
// FileURL = G.ActionURL.PageDataURL;
parames = "Type=Menu&Code="+ this.menubaseinfo.Code +"&IsHaveAdded=1";
parames = "module=xml&action=" + G.ActionURL.SaveData + "&" + parames;
G_RequestObj.send(FileURL,parames,null,"get");
//增加完成后关闭Feed容器框(调用关闭处理方法)
G_DMFeed.MouseClickEventHandler();
},
//需要改变经过时的样式,并且可能需要弹出提示框
MenuMouseoverEventHandler: function()
{
var oEvent = G.EventUtil.getEvent();
//如果需要提示则弹出提示框
if(this.menubaseinfo.IsDisDescription&&this.menubaseinfo.Description != null&&this.menubaseinfo.Description != "")
{
if((this.menubaseinfo.Type=="Module"&&(G_DMFeed.CurMenu==null||G_DMFeed.CurMenu != this))||this.menubaseinfo.Type=="Menu")
{
G.HiddenODisplayFrame(G.PageObj.Div_Info,oEvent.type);
//用来美化信息弹出框
var divSpace = document.createElement("div");
var table = new Array();
table.push("<table cellpadding='0px' cellspacing='0px' border='0px' width='100%' height='100%'><td><div style='margin:10px 6px 6px 10px'></div></td></tr></table>");
divSpace.innerHTML = table.join("");
var divMessage = divSpace.getElementsByTagName("div");
divMessage[0].innerHTML = this.menubaseinfo.Description;
var PageObj = $(G.PageObj.Div_Info);
if(PageObj)
{
PageObj.appendChild(divSpace);
//把指定对象定位到指定指定的父亲对象旁边几个像素位置
G.PosToFather(PageObj,this.menuup,this.Frame);
}
}
}
},
//移出事件,要改变外观和处理后续动作
//当已经点击了有附件的Module类型菜单时,
MenuMouseoutEventHandler: function()
{
var oEvent = G.EventUtil.getEvent();
G.HiddenODisplayFrame(G.PageObj.Div_Info,oEvent.type);
} ,
//装载子菜单,处理菜单读取的回发,
LoadSubMenuSuccess: function(response)
{
//根据返回值来完成子菜单基本信息的创建,然后调用自身方法,把所有的子菜单加载出来。
G_BLLFeed.CreateSubMenuByResponse(response,this);
if(this.menubaseinfo.SubMenuInfo.length !=0)
{
this.AddSubMenu(this.menubaseinfo.SubMenuInfo);
}
},
//创建基子菜单的基本信息,并装载子菜单
//传入参数:response=请求返回字符串
//原理如下:父亲菜单发出请求,然后处理请求为子菜单基本信息,最后再增加为子菜单
CreateSubBaseInfoLoadSubMenu:function(response)
{
//清空隔时对象
var rootNode = G_XML.XmlDom.createDomFromResponse(response);
var MenuItemNodes = rootNode.getElementsByTagName("Item");
for(var i=0; i<MenuItemNodes.length; i++)
{
var MBInfo = G_BLLFeed.CreateAllMenubaseInfoToMenu(MenuItemNodes[i]);
this.menubaseinfo.AddSubMenuInfo(MBInfo);
}
//生成子菜单
this.MenuSubPart.setPromptc("");
if(this.menubaseinfo.SubMenuInfo.length != 0)
{
this.AddSubMenu(this.menubaseinfo.SubMenuInfo);
}
else
{
//提示装载失败
this.MenuSubPart.setPromptc("failure,Try again!");
}
}
}
}
//------------------------------------------------MenuBaseInfo--------------------------------------------------------//
/*
名称:菜单基本描述信息
功能及构成描述: 这些描述是一个完整的菜单项必须具有的.一个菜单要包括的东西比Feed多
初始化参数:
Code = 菜单的代号(是在数据库中产生的唯一代号,可以用来生成模块号)
TeamNum = 组号。菜单在生成时按组可以分开不同的功能区
Title-菜单标题,
IsDisDescription=是否显示描述,有的在后台定义为不用显示,当有这个参数时,就不会触发shubiao的那个MouseOver事件了.
Description-描述,这是对所加菜单意图的解析说明,以便用户可以更清晰的理解菜单功能.
Type = 是导航菜单还是模块生成菜单,Menu,Module.如要是Menu则继续读取下一子菜单,如果是Module则显示要编辑的模块
Pos = 其显示的序号,序号越小,显示位置越靠上
IsExpand = 菜单是否是展开的.如果有子菜单可以设定菜单是否是默认展开
FatherMenuCode= 父亲菜单代号, 如果是最高级则代号为0,只能在同一级菜单才有用
IsHaveSub = 是否有子菜单项,如果有则菜单样式是不一样的.其点击菜单的行为也是有区别的,主要是为了区别这两种菜单的区别
//一个完整的菜单包含的内容要大于Feed,最后要根据菜单基本信息在菜单对象中要完成Feed(在点击是Module发生事件后才创建)的创建.
XSL = 数据显示模板,用来显示数据的
DUrl = 数据加载的URL.可以静态指定,也可以动态生成
EditTMP = 编辑所使用的模板
DCount = 数据显示的条数
ColumnNum = 生成Feed时所在的列号.如在第一列就是1,依次类推.
ContentJSTMP = 生成内容区的JS编辑模板,例如在设计中首页的栏目我的配置中心就是很特别的栏目,就需要单独创建一个Feed的内容区
arySubFeed = 内容区中各子栏目的定义数组,在当点击菜单时要生成一个完整的Feed. 生成一个复杂Feed的必备数据
level = 菜单的级别 一级菜单为1,其它级别依次类推.
IsHaveAdded = 是否增加到了页面,如果用户已经增加了该模块则该菜单是作灰色显示
IsHaveIcon = Module类菜单前是否有小图标
IconFileName = 指定小图标的名字
*/
MenuBaseInfo = Class.create();
MenuBaseInfo.prototype = { //现共15个参数,如有不够以后再扩充.2006-12-1
initialize: function(Code,FatherMenuCode,TeamNum,Title,IsDisDescription,Description,Type,Pos,IsExpand,level,IsHaveAdded,IsHaveIcon,IsUseFNL,IconFileName,MenuFeedBaseInfo)
{
this.Code = Code;
this.FatherMenuCode = FatherMenuCode;
this.TeamNum = TeamNum;
this.Title = Title;
this.IsDisDescription;
this.Description = Description;
this.Type = Type;
this.Pos = Pos;
this.IsExpand = IsExpand; //是否默认展开状态,如果是则要获取下级菜单显示出来.
this.Level = level;
this.IsHaveAdded = IsHaveAdded;
this.MenuFeedBaseInfo = MenuFeedBaseInfo;
this.IsHaveIcon = IsHaveIcon;
this.IsUseFNL = IsUseFNL;
this.IconFileName = IconFileName;
//容纳子菜单信息
this.SubMenuInfo = new Array();
},
//增加其子菜单信息,最多保存两级
AddSubMenuInfo: function(MenuBaseInfo)
{
this.SubMenuInfo.push(MenuBaseInfo);
}
}
//-------------------------------------------------MenuSubPartFrame-------------------------------------------------------//
/*
名称:每个子菜单外观框架生成类
功能及构成描述:定义了每个子菜单的基本的外观,其行为还是要在菜单创建内容赋予,通过自身方法赋予
一个菜单外观的默认值:1.子菜单区隐藏,2.没有加载任何图标 3.图标区未隐藏
初始化参数:
*/
MenuSubPartFrame = Class.create();
MenuSubPartFrame.prototype = {
initialize: function()
{
//不用div来组织菜单, 全部改为table来组织要强一点
//其格式为:
// <table>
// <tbody>
// <tr name="MenuUpFrame">
// <td>
// <div name='MenuIconArea'></div>
// </td>
// <td>
// <div name='MenuTitle'></div>
// </td>
// </tr>
// <tr>
// <td></td>
// <td>
// <div name='SubMenuArea'>
// </div>
// </td>
// </tr>
// </tbody>
// </table>
var tableMenu = GCO.$("table");
var tbody = GCO.$("tbody");
tableMenu.appendChild(tbody);
tbody.insertRow(0);
var rowsMenuup = tbody.rows[0];
tbody.insertRow(1);
var rowsSubmenu = tbody.rows[1]; rowsSubmenu.style.display = "none";
rowsMenuup.insertCell(0);
var cellIcon = rowsMenuup.cells[0]; var divMenuIcon = GCO.$("div"); cellIcon.appendChild(divMenuIcon);cellIcon.align = "center";
rowsMenuup.insertCell(1);
var cellTitle = rowsMenuup.cells[1];var divMenuTitle = GCO.$("div"); cellTitle.appendChild(divMenuTitle);
rowsSubmenu.insertCell(0);
rowsSubmenu.insertCell(1);
var cellSubmenu = rowsSubmenu.cells[1];var divSubmenu = GCO.$("div"); cellSubmenu.appendChild(divSubmenu); divSubmenu.innerHTML = "loading.....";
cellSubmenu.align = "left";
//样式
tableMenu.className = "TableMenu";
rowsMenuup.className = "rowsMenuup";
rowsSubmenu.className = "rowsSubmenu";
cellIcon.className = "cellIcon";
cellTitle.className = "cellTitle";
divMenuIcon.className = "divMenuIcon";
divMenuTitle.className = "divMenuTitle";
divSubmenu.className = "divSubmenu";
//公开对象
//最外框架部分
this.TableMenu = tableMenu;
//第一行部分,有点击事件
this.RowsMenuup = rowsMenuup;
//子菜单行 有隐藏责任
this.RowsSubmenu = rowsSubmenu;
//图标附加对象
this.divMenuIcon = divMenuIcon;
//标题附加对象
this.divMenuTitle = divMenuTitle;
this.divSubMenu = divSubmenu;
},
//增加标题
//传入参数:text=标题文本(必要参数)Level=菜单等级(非必要参数)
AddTitle: function(Text,Level,IsHaveAdded,MenuType){
this.divMenuTitle.innerHTML = "<a href='javascript:void(0);'>" + Text + "</a>";
if(typeof Level != "undefined"&&Level != null)
{
//如果是一级菜单,则菜单文本的样式是不一样的
if(Level == "1"&&MenuType == "Menu")
{
//this.divMenuTitle.className = G.Style.Menu.MenuTitleForLevel1;
this.setTitleStyle(G.Style.Menu.MenuTitleForLevel1);
this.RowsMenuup.className = "rowsMenuupLevel1";
}
if(IsHaveAdded&&MenuType=="Module")
{
//this.divMenuTitle.className = G.Style.Menu.ModuleForbid;
this.setTitleForbid(true);
}
}
},
//增加菜单前方图标
//传入参数: IconFileName=图标文件名称
AddMenuIcon: function(IconFileName){
this.divMenuIcon.innerHTML = "<a href='javascript:void(0);'><img src='" + G.SysPicture.MenuIconPath + IconFileName + "' border='0px' /></a>" ;
//this.divMenuIcon.style.marginRight = "5px";
},
//增加菜单折叠和展开图标
//传入参数: EOCObj=折叠和展开对象
AddECIcon: function(EOCObj){
if(typeof this.divMenuIcon.firstChild != "undefined")
{
var firstChild = this.divMenuIcon.firstChild;
if(firstChild != null)
firstChild.removeNode(true);
}
this.divMenuIcon.appendChild(EOCObj);
},
//菜单上半部分的点击事件
AddMenuupCE:function(EHandler){
G.EventUtil.$ADE(this.RowsMenuup,"click",EHandler);
},
showSubmenu:function(IsShow){
this.RowsSubmenu.style.display = IsShow?"block":"none";
},
setPromptc:function(text){
this.divSubMenu.innerHTML = text;
},
//增加子菜单到框架
appendSubMenuFrame:function(frame){
this.divSubMenu.appendChild(frame);
},
//设定标题样式, 所有和标题有关的全在这里管理
setTitleStyle:function(stylename){
this.divMenuTitle.className = stylename;
},
//设定禁用
setTitleForbid:function(IsForbid){
this.setTitleStyle(IsForbid?"ModuleForbid":"MenuTitle");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -