o2.require("o2.xDesktop.Default", null, false);
o2.xApplication.Setting.ModuleMenuDocument = new Class({
Extends: MWF.xApplication.Common.Main,
Implements: [Options, Events],
options: {
"style": "default"
},
initialize: function(explorer, content, options){
this.setOptions(options);
this.content = content;
this.explorer = explorer;
this.app = this.explorer.app;
this.css = this.app.css;
this.lp = this.app.lp.module;
this.load();
},
"destroy": function(){
// this.appDeploymentContent.destroy();
// this.content.empty();
// if (this.setContentHeightFun) this.app.removeEvent("resize", this.setContentHeightFun);
MWF.release(this);
},
load: function(){
this.menuShowArea = new Element("div", {
styles: {
"height": "100%",
"overflow": "hidden",
"width": "400px",
"float": "left"
}
}).inject(this.content);
this.actionsArea = new Element("div", {
styles: {
"height": "calc( 100% - 40px )",
"overflow": "hidden",
"margin-left": "420px",
"padding": "20px 20px"
}
}).inject(this.content);
this.startMenu = new o2.xApplication.Setting.ModuleMenuDocument.StartMenu(this);
this.startMenu.addEvents({
// "onHide": function(){
// this.startMenuNode.removeClass("overColor_bg");
// }.bind(this),
"onLoad": function(){
if (!this.startMenu.isShow){
this.startMenu.show();
}
this.createDefaultMenuDataActions();
this.createForceMenuDataActions();
this.createCustomMenuDataActions();
}.bind(this)
});
this.startMenu.load();
},
createDefaultMenuDataActions: function(){
var node = new Element("div", {"styles": {"margin-bottom": "40px", "overflow": "hidden"}}).inject(this.actionsArea);
new Element("div", {"styles": this.css.menuDataInfor,"text": this.app.lp.saveDefaultMenuDataInfor}).inject(node);
this.createButton(this.app.lp.saveDefaultMenuData, this.saveDefaultMenuData.bind(this)).inject(node);
this.createButton(this.app.lp.clearDefaultMenuData, this.clearDefaultMenuData.bind(this), "grayColor_bg", "grayColor_bg", "grayColor_bg").inject(node)
if (this.startMenu.defaultData){
this.createButton(this.app.lp.loadDefaultMenuData, this.loadDefaultMenuData.bind(this), "grayColor_bg", "grayColor_bg", "grayColor_bg").inject(node)
}
},
createForceMenuDataActions: function(){
var node = new Element("div", {"styles": {"margin-bottom": "40px", "overflow": "hidden"}}).inject(this.actionsArea);
new Element("div", {"styles": this.css.menuDataInfor,"text": this.app.lp.saveForceMenuDataInfor}).inject(node);
this.createButton(this.app.lp.saveForceMenuData, this.saveForceMenuData.bind(this)).inject(node);
this.createButton(this.app.lp.clearForceMenuData, this.clearForceMenuData.bind(this), "grayColor_bg", "grayColor_bg", "grayColor_bg").inject(node)
if (this.startMenu.forceData){
this.createButton(this.app.lp.loadForceMenuData, this.loadForceMenuData.bind(this), "grayColor_bg", "grayColor_bg", "grayColor_bg").inject(node)
}
},
createCustomMenuDataActions: function(){
var node = new Element("div", {"styles": {"margin-bottom": "40px", "overflow": "hidden"}}).inject(this.actionsArea);
new Element("div", {"styles": this.css.menuDataInfor,"text": this.app.lp.clearCustomMenuDataInfor}).inject(node);
this.createButton(this.app.lp.clearCustomMenuData, this.clearCustomMenuData.bind(this), "grayColor_bg", "grayColor_bg", "grayColor_bg").inject(node)
},
createButton: function(text, action, main, over, down){
var mainClass = main || "mainColor_bg";
var overClass = over || "overColor_bg";
var downClass = down || "deepColor_bg";
var button = new Element("div."+mainClass, {"type": "button", "styles": this.css.buttonNode, "text": text});
button.addEvents({
"click": function(){
if (action) action(button);
}.bind(this),
"mouseover": function(){this.removeClass(mainClass); this.removeClass(downClass); this.addClass(overClass);},
"mouseout": function(){this.removeClass(overClass); this.removeClass(downClass); this.addClass(mainClass);},
"mousedown": function(){this.removeClass(mainClass); this.removeClass(overClass); this.addClass(downClass);},
"mouseup": function(){this.removeClass(mainClass); this.removeClass(downClass); this.addClass(overClass);}
});
return button
},
saveDefaultMenuData: function(){
if (this.startMenu){
this.startMenu.resetMenuData();
if (this.startMenu.menuData){
o2.UD.putPublicData("defaultMainMenuData", this.startMenu.menuData, function(){
this.app.notice(this.app.lp.saveDefaultMenuDataSuccess, "success");
}.bind(this));
}
}
},
clearDefaultMenuData: function(bt){
var _self = this;
this.app.confirm("warn", bt, this.app.lp.clearDefaultMenuData, this.app.lp.clearDefaultMenuDataConfirm, 380, 120, function(){
o2.UD.deletePublicData("defaultMainMenuData", function(){
_self.app.notice(_self.app.lp.clearDefaultMenuDataSuccess, "success");
});
this.close();
}, function(){
this.close();
});
},
saveForceMenuData: function(){
if (this.startMenu){
this.startMenu.resetMenuData();
if (this.startMenu.menuData){
o2.UD.putPublicData("forceMainMenuData", this.startMenu.menuData, function(){
this.app.notice(this.app.lp.saveForceMenuDataSuccess, "success");
}.bind(this));
}
}
},
clearForceMenuData: function(bt){
var _self = this;
this.app.confirm("warn", bt, this.app.lp.clearForceMenuData, this.app.lp.clearForceMenuDataConfirm, 380, 120, function(){
o2.UD.deletePublicData("forceMainMenuData", function(){
_self.app.notice(_self.app.lp.clearForceMenuDataSuccess, "success");
});
this.close();
}, function(){
this.close();
});
},
clearCustomMenuData: function(bt){
var _self = this;
this.app.confirm("warn", bt, this.app.lp.clearForceMenuData, this.app.lp.clearCustomMenuDataConfirm, 380, 120, function(){
o2.require("o2.widget.UUID", function(){
var id = new o2.widget.UUID();
o2.UD.putPublicData("clearCustomMenuDataFlag", {"id": id.toString()}, function(){
_self.app.notice(_self.app.lp.clearForceMenuDataSuccess, "success");
});
this.close();
}.bind(this));
}, function(){
this.close();
});
},
loadForceMenuData: function(){
if (this.startMenu){
this.startMenu.reload(this.startMenu.forceData);
}
},
loadDefaultMenuData: function(){
if (this.startMenu){
this.startMenu.reload(this.startMenu.defaultData);
}
}
});
o2.xApplication.Setting.ModuleMenuDocument.StartMenu = new Class({
Extends: o2.xDesktop.Default.StartMenu,
Implements: [Events],
initialize: function (setting) {
this.layout = layout.desktop;
this.setting = setting;
this.container = this.setting.menuShowArea;
//this.actionNode = this.setting.startMenuNode;
this.isLoaded = false;
this.isShow = false;
this.isMorph = false;
this.items = [];
// this.menuData = (this.layout.status && this.layout.status.menuData) ? Object.clone(this.layout.status.menuData) : {
// "appList": [],
// "processList": [],
// "inforList": [],
// "queryList": []
// };
this.itemTempletedHtml = "" +
"
" +
" " +
" ";
this.checkLayout();
},
loadMenuData: function(callback){
debugger;
this.menuData = (this.layout.status && this.layout.status.menuData) ? Object.clone(this.layout.status.menuData) : {
"appList": [],
"processList": [],
"inforList": [],
"queryList": []
};
var forceData = null, defaultData = null;
var forceLoaded = false, defaultLoaded = false;
var check = function(){
if (forceLoaded && defaultLoaded){
this.forceData = forceData;
this.defaultData = defaultData;
if (forceData){
this.menuData=forceData;
}else if (defaultData){
this.menuData=defaultData;
}
if (callback) callback();
}
}.bind(this)
o2.UD.getPublicData("forceMainMenuData", function(fData){
forceData = fData;
forceLoaded = true;
check();
}.bind(this));
o2.UD.getPublicData("defaultMainMenuData", function(dData){
defaultData = dData;
defaultLoaded = true;
check();
}.bind(this));
},
load: function(){
this.loadMenuData(function(){
var view = this.layout.path+this.layout.options.style+((o2.session.isMobile || layout.mobile) ? "/layout-menu-mobile.html" : "/layout-menu-pc.html");
this.container.loadHtml(view, {"module": this}, function(){
this.maskNode.destroy();
this.node.setStyle("z-index", o2.xDesktop.zIndexPool.applyZindex());
//this.layout.menuNode.setStyle("z-index", o2.xDesktop.zIndexPool.applyZindex());
this.node.addEvent("mousedown", function(e){
e.stopPropagation();
e.preventDefault();
});
// this.triangleNode = new Element("div.layout_menu_start_triangle").inject(this.layout.menuNode, "after");
// this.hideMessage = function(){ this.hide(); }.bind(this);
//this.fireEvent("load");
this.layout.addEvent("resize", this.setSize.bind(this));
this.loadTitle();
this.loadLnks();
this.setSize();
this.isLoaded = true;
this.fireEvent("load");
}.bind(this));
}.bind(this));
},
setSize: function(){
if (this.appScrollBar && this.appScrollBar.scrollVNode) this.appScrollBar.scrollVNode.setStyle("margin-top", "0px");
var isLnk = false;
if (false && this.layout.lnks && this.layout.lnks.length){
this.lnkAreaNode.show();
this.lineNode.show();
var h = 100*3;
this.lnkScrollNode.setStyle("height", ""+h+"px");
isLnk = true;
}else{
this.lnkAreaNode.hide();
this.lineNode.hide();
}
debugger;
if( !this.node.offsetParent )this.node.show();
var size = this.node.getSize();
var lnkSizeY = (isLnk) ? this.lnkAreaNode.getSize().y : 0;
var lineSizeY = (isLnk) ? this.lineNode.getSize().y : 0;
var mt = (isLnk) ? (this.lineNode.getStyle("margin-top").toInt() || 0) : 0;
var mb = (isLnk) ? (this.lineNode.getStyle("margin-bottom").toInt() || 0) : 0;
var titleSize = this.appTitleNode.getSize();
var y = size.y-lnkSizeY-lineSizeY-mt-mb-titleSize.y - 40;
this.appScrollNode.setStyle("height", ""+y+"px");
},
checkLayout: function(){
if( !this.layout.path )this.layout.path = o2.session.path+"/xDesktop/$Default/";
if( !this.layout.options )this.layout.options = {};
if( !this.layout.options.style )this.layout.options.style = "blue";
},
reload: function(menuData){
this.menuData = menuData || {
"appList": [],
"processList": [],
"inforList": [],
"queryList": []
};
this.container.empty();
var view = this.layout.path+this.layout.options.style+((o2.session.isMobile || layout.mobile) ? "/layout-menu-mobile.html" : "/layout-menu-pc.html");
this.container.loadHtml(view, {"module": this}, function(){
if (this.maskNode) this.maskNode.destroy();
this.node.addEvent("mousedown", function(e){
e.stopPropagation();
e.preventDefault();
});
this.loadTitle();
this.loadLnks();
this.node.setStyles({
"display": "block",
"position": "relative",
"left": "0",
"top": "0"
});
this.loadJsons(function(){
(this.currentTab || this.appCategoryTab).click();
}.bind(this));
this.isShow = true;
this.setScroll();
this.isLoaded = true;
}.bind(this));
},
show: function(){
this.node.setStyles({
"display": "block",
"position": "relative",
"left": "0",
"top": "0"
});
this.appAreaNode.setStyles({ "filter": "" });
this.loadJsons(function(){
(this.currentTab || this.appCategoryTab).click();
}.bind(this));
this.isShow = true;
this.isMorph = false;
this.setScroll();
},
hide: function(){
},
createApplicationMenuItem: function(value){
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.Item(this, this.appContentNode, value));
},
createPortalMenuItem: function(value){
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.PortalItem(this, this.appContentNode, value));
},
createProcessMenuItem: function(value){
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.ProcessItem(this, this.appContentNode, value));
},
createInforMenuItem: function(value){
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.InforItem(this, this.appContentNode, value));
},
createQueryMenuItem: function(value){
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.QueryItem(this, this.appContentNode, value));
},
createGroupMenuItem: function(value){
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.GroupItem(this, this.appContentNode, value));
},
resetMenuData: function(){
if (!this.menuData) this.menuData = {
"appList": [],
"processList": [],
"inforList": [],
"queryList": []
}
var nodes = this.appContentNode.getChildren();
var data = [];
nodes.each(function(node){
var item = node.retrieve("item");
if (item){
if (item.data.type==="group"){
var d = {
"id": item.data.id,
"name": item.data.name,
"type": item.data.type,
"itemDataList": []
}
if (item.data.itemDataList) item.data.itemDataList.each(function(i){
d.itemDataList.push(i);
});
data.push(d);
}else{
data.push({
"id": item.data.id,
"name": item.data.name,
"type": item.data.type,
});
}
}
}.bind(this));
if (this.currentTab === this.appCategoryTab){
this.menuData.appList = data;
}else if (this.currentTab === this.processCategoryTab){
this.menuData.processList = data;
}else if (this.currentTab === this.inforCategoryTab){
this.menuData.inforList = data;
}else if (this.currentTab === this.queryCategoryTab){
this.menuData.queryList = data;
}
//this.layout.menuData = this.menuData;
},
defaultMenu: function(){
this.menuData = null;
this.reload();
}
});
o2.xApplication.Setting.ModuleMenuDocument.StartMenu.Item = new Class({
Extends: o2.xDesktop.Default.StartMenu.Item,
loadBadge: function(){
this.badgeNode.hide();
},
_drag_drag: function(dragging, e){
if (this.dragStatus == "group"){
if (!this.onGroup) this.checkDargOver(dragging);
if (!this.overItem){
this.checkDargPosition(dragging);
}
}
}
});
o2.xApplication.Setting.ModuleMenuDocument.StartMenu.GroupItem = new Class({
Extends: o2.xDesktop.Default.StartMenu.GroupItem,
loadBadge: function(){
this.badgeNode.hide();
},
_drag_drag: function(dragging, e){
if (this.dragStatus == "group"){
if (!this.onGroup) this.checkDargOver(dragging);
if (!this.overItem){
this.checkDargPosition(dragging);
}
}
},
loadItems: function(){
if (!this.items) this.items = [];
this.data.itemDataList.each(function(data){
var item = this.items.find(function(i){
return i.data.id == data.id;
});
if (!item){
switch (data.type){
case "portal":
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.PortalItem(this, this.menuContentNode, data));
break;
case "process":
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.ProcessItem(this, this.menuContentNode, data));
break;
case "cms":
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.InforItem(this, this.menuContentNode, data));
break;
case "query":
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.QueryItem(this, this.menuContentNode, data));
break;
default:
this.items.push(new o2.xApplication.Setting.ModuleMenuDocument.StartMenu.Item(this, this.menuContentNode, data));
}
}
}.bind(this));
},
});
o2.xApplication.Setting.ModuleMenuDocument.StartMenu.PortalItem = new Class({
Extends: o2.xDesktop.Default.StartMenu.PortalItem,
loadBadge: function(){
this.badgeNode.hide();
},
_drag_drag: function(dragging, e){
if (this.dragStatus == "group"){
if (!this.onGroup) this.checkDargOver(dragging);
if (!this.overItem){
this.checkDargPosition(dragging);
}
}
}
});
o2.xApplication.Setting.ModuleMenuDocument.StartMenu.ProcessItem = new Class({
Extends: o2.xDesktop.Default.StartMenu.ProcessItem,
loadBadge: function(){
this.badgeNode.hide();
},
_drag_drag: function(dragging, e){
if (this.dragStatus == "group"){
if (!this.onGroup) this.checkDargOver(dragging);
if (!this.overItem){
this.checkDargPosition(dragging);
}
}
}
});
o2.xApplication.Setting.ModuleMenuDocument.StartMenu.InforItem = new Class({
Extends: o2.xDesktop.Default.StartMenu.InforItem,
loadBadge: function(){
this.badgeNode.hide();
},
_drag_drag: function(dragging, e){
if (this.dragStatus == "group"){
if (!this.onGroup) this.checkDargOver(dragging);
if (!this.overItem){
this.checkDargPosition(dragging);
}
}
}
});
o2.xApplication.Setting.ModuleMenuDocument.StartMenu.QueryItem = new Class({
Extends: o2.xDesktop.Default.StartMenu.QueryItem,
loadBadge: function(){
this.badgeNode.hide();
},
_drag_drag: function(dragging, e){
if (this.dragStatus == "group"){
if (!this.onGroup) this.checkDargOver(dragging);
if (!this.overItem){
this.checkDargPosition(dragging);
}
}
}
});