MWF.xApplication.AppCenter.Main = new Class({ Extends: MWF.xApplication.Common.Main, Implements: [Options, Events], options: { "style": "default", "name": "AppCenter", "icon": "icon.png", "width": "1000", "height": "700", "title": MWF.xApplication.AppCenter.LP.title }, onQueryLoad: function(){ this.lp = MWF.xApplication.AppCenter.LP; this.actions = MWF.Actions.get("x_program_center"); }, loadApplication: function(callback){ this.components = []; //this.node = new Element("div", {"styles": {"width": "100%", "height": "100%", "overflow": "hidden"}}).inject(this.content); this.loadTitle(); this.contentNode = new Element("div", {"styles": this.css.contentNode}).inject(this.content); this.contentModuleArea = new Element("div", {"styles": this.css.contentModuleArea}).inject(this.contentNode); this.setContentSize(); this.addEvent("resize", this.setContentSize); this.loadModuleContent(); }, loadTitle: function(){ this.titleBar = new Element("div", {"styles": this.css.titleBar}).inject(this.content); if (MWF.AC.isProcessPlatformCreator()){ this.createApplicationNode = new Element("div", { "styles": this.css.createApplicationNode, "title": this.lp.export }).inject(this.titleBar); this.createApplicationNode.addEvent("click", function(){ this.createApplication(); }.bind(this)); } this.taskTitleTextNode = new Element("div", {"styles": this.css.titleTextNode,"text": this.lp.title}).inject(this.titleBar); }, setContentSize: function(){ var size = this.content.getSize(); var titleSize = this.titleBar.getSize(); var height = size.y-titleSize.y; this.contentNode.setStyles({"height": ""+height+"px", "overflow": "auto"}); var max = size.x*0.98; var n = (size.x/320).toInt(); var x = n*320; while (x>max){ n--; x = n*320; } this.contentModuleArea.setStyle("width", ""+x+"px"); }, loadModuleContent: function(){ this.actions.listStructure(function(json){ this.moduleList = json.data; if (this.moduleList.length){ this.moduleList.each(function(module){ new MWF.xApplication.AppCenter.Module(this, module); }.bind(this)); }else{ this.createEmptyElement(); } }.bind(this)); }, createEmptyElement: function(){ this.emptyNode = new Element("div", {"styles": this.css.emptyNode}).inject(this.contentModuleArea); if (MWF.AC.isProcessPlatformCreator()){ this.emptyNode.set("text", this.lp.emptyModuleManagerInfo); this.emptyNode.addEvent("click", function(){ this.createApplication(); }.bind(this)); }else{ this.emptyNode.set("text", this.lp.emptyModuleInfo); } }, createApplication: function(){ new MWF.xApplication.AppCenter.Exporter(this); } }); MWF.xApplication.AppCenter.Module = new Class({ initialize: function(app, data){ this.app = app; this.data = data; this.json = JSON.decode(this.data.data); this.json.structure = this.data.id; this.lp = this.app.lp; this.css = this.app.css; this.content = this.app.contentModuleArea; this.load(); }, load: function(){ this.node = new Element("div", {"styles": this.css.moduleNode}).inject(this.content); this.iconNode = new Element("div", {"styles": this.css.moduleIconNode}).inject(this.node); this.contentNode = new Element("div", {"styles": this.css.moduleContentNode}).inject(this.node); this.nameNode = new Element("div", {"styles": this.css.moduleNameNode}).inject(this.contentNode); this.categoryNode = new Element("div", {"styles": this.css.moduleCategoryNode}).inject(this.contentNode); this.descriptionNode = new Element("div", {"styles": this.css.moduleDescriptionNode}).inject(this.contentNode); this.actionNode = new Element("div", {"styles": this.css.moduleActionNode}).inject(this.contentNode); this.nameNode.set("text", this.data.name); this.categoryNode.set("text", this.json.category); this.descriptionNode.set("text", this.data.description); this.actionNode.set("text", this.lp.output); this.loadEvent(); }, loadEvent: function(){ this.actionNode.addEvent("click", function(e){ this.outputApp(); e.stopPropagation(); }.bind(this)); this.node.addEvent("click", function(){ this.openApp(); }.bind(this)); }, outputApp: function(){ new MWF.xApplication.AppCenter.Exporter(this.app, this.json) }, openApp: function(){ } }); MWF.xApplication.AppCenter.Exporter = new Class({ initialize: function(app, selectData){ this.app = app; this.lp = this.app.lp; this.css = this.app.css; this.structure = null; this.dlg = null; this.selectData = selectData || { "structure": "", "name": "", "description": "", "processPlatformList": [], "portalList": [], "queryList": [], "cmsList": [] }; this.setp = 1; this.load(); }, loadStructure: function(){ this.structureRes = this.app.actions.outputStructure(function(json){ this.structure = json.data; this.createContent(); }.bind(this)); }, showDlg: function(callback){ var position = this.app.createApplicationNode.getPosition(this.app.content); var size = this.app.contentNode.getSize(); var width = size.x*0.9; if (width>600) width = 600; var height = size.y*0.9; var x = (size.x-width)/2; var y = (size.y-height)/2; if (y<80) y = 80; var _self = this; MWF.require("MWF.xDesktop.Dialog", function(){ this.dlg = new MWF.xDesktop.Dialog({ "title": this.lp.exportTitle, "style": "appCenter", "top": y+20, "left": x, "fromTop":position.y, "fromLeft": position.x, "width": width, "height": height, "html": "", "maskNode": this.app.content, "container": this.app.content, "buttonList": [ { "text": this.lp.next, "action": function(){ _self.next(); //this.close(); } }, { "text": this.lp.prev, "action": function(){ _self.prev(); //this.close(); } }, { "text": this.lp.ok, "action": function(){ _self.output(); //this.close(); } }, { "text": this.lp.cancel, "action": function(){ this.close(); if (_self.structureRes){ if (_self.structureRes.isRunning()){_self.structureRes.cancel();} _self.structureRes = null; } MWF.release(_self); } } ], "onPostShow": function(){ if (callback) callback(); }.bind(this) }); this.dlg.show(); }.bind(this)); }, checkInput: function(){ var name = this.moduleNameInput.get("value"); var category = this.moduleCategoryInput.get("value"); var description = this.moduleDescriptionInput.get("value"); if (!name){ this.app.notice(this.lp.noNameError, "error"); return false; } if (!this.selectData.processPlatformList.length && !this.selectData.portalList.length && !this.selectData.queryList.length && !this.selectData.cmsList.length){ this.app.notice(this.lp.noModuleError, "error"); return false; } this.selectData.name = name; this.selectData.category = category; this.selectData.description = description; return true; }, next: function(){ if (this.setp==1){ if (this.checkInput()) this.showStatus(); } }, prev: function(){ if (this.step==2){ if (this.statusContentNode){ this.statusContentNode.destroy(); this.statusContentNode = null; } this.contentNode.setStyle("display", "block"); this.okBut.setStyle("display", "none"); this.prevBut.setStyle("display", "nonde"); this.nextBut.setStyle("display", "inline"); } }, output: function(){ if (this.step==2){ if (this.checkInput()){ this.app.actions.output(this.selectData, function(json){ var uri = this.app.actions.action.actions["download"].uri; uri = uri.replace("{flag}", json.data.flag); this.dlg.close(); window.open(this.app.actions.action.address+uri); MWF.release(this); }.bind(this)); } } }, showStatus: function(){ this.statusContentNode = new Element("div", {"styles": this.css.moduleSelectContentAreaNode}).inject(this.contentNode, "after"); this.statusTitleNode = new Element("div", {"styles": this.css.moduleSelectTitleNode, "text": this.lp.selected}).inject(this.statusContentNode); this.statusInfoNode = new Element("div", {"styles": this.css.moduleSelectContentNode}).inject(this.statusContentNode); var size = this.contentNode.getSize(); var position = this.contentNode.getPosition(this.contentNode.getOffsetParent()); var css = { "height": ""+size.y+"px", "width": ""+size.x+"px", "top": ""+position.y+"px", "left": ""+position.x+"px", "background-color": "#eeeeee" }; this.statusContentNode.setStyles(css); var titleSize = this.statusTitleNode.getSize(); var h = size.y-titleSize.y-20; this.statusInfoNode.setStyle("height", ""+h+"px"); this.showStatusList(); this.contentNode.setStyle("display", "none"); this.okBut.setStyle("display", "inline"); this.prevBut.setStyle("display", "inline"); this.nextBut.setStyle("display", "none"); this.step = 2; }, showStatusList: function(){ this.showStatusItemList("processPlatformList", ["processList", "formList", "applicationDictList", "scriptList", "fileList"]); this.showStatusItemList("portalList", ["pageList", "scriptList", "widgetList", "fileList"]); this.showStatusItemList("cmsList", ["categoryInfoList", "formList", "appDictList", "scriptList"]); this.showStatusItemList("queryList", ["viewList", "statList", "revealList"]); }, showStatusItemList: function(listName, subList){ this.selectData[listName].each(function(app){ new Element("div", {"styles": this.css.moduleStatusInforNode1, "text": "["+this.lp[listName]+"] "+(app.name || app.appName)}).inject(this.statusInfoNode); subList.each(function(name){ if (app[name] && app[name].length) app[name].each(function(process){ new Element("div", {"styles": this.css.moduleStatusInforNode2, "text": "["+this.lp[name]+"] "+(process.name || process.categoryName)}).inject(this.statusInfoNode); }.bind(this)); }.bind(this)); }.bind(this)); }, load: function(){ this.showDlg(function(){ this.createLayout(); this.loadStructure(); }.bind(this)); }, createLayout: function(){ this.nextBut = this.dlg.button.getFirst("input"); this.prevBut = this.nextBut.getNext("input"); this.okBut = this.prevBut.getNext("input"); if (this.setp==1){ this.okBut.setStyle("display", "none"); this.prevBut.setStyle("display", "none"); } this.node = new Element("div", {"styles": this.css.moduleSetupContentNode}).inject(this.dlg.content); this.titleNode = new Element("div", {"styles": this.css.moduleSetupTitleNode}).inject(this.node); var iconNode = new Element("div", {"styles": this.css.moduleIconNode}).inject(this.titleNode); var contentNode = new Element("div", {"styles": this.css.moduleSetupTitleContentNode}).inject(this.titleNode); var nameNode = new Element("div", {"styles": this.css.moduleSetupNameNode}).inject(contentNode); var categoryNode = new Element("div", {"styles": this.css.moduleSetupCategoryNode}).inject(contentNode); var descriptionNode = new Element("div", {"styles": this.css.moduleSetupDescriptionNode}).inject(contentNode); var nameTitleNode = new Element("div", {"styles": this.css.moduleInputTitleNode, "text": this.lp.moduleName}).inject(nameNode); var nameContentNode = new Element("div", {"styles": this.css.moduleInputContentNode}).inject(nameNode); this.moduleNameInput = new Element("input", {"styles": this.css.moduleInputNode}).inject(nameContentNode); var categoryTitleNode = new Element("div", {"styles": this.css.moduleInputTitleNode, "text": this.lp.moduleCategory}).inject(categoryNode); var categoryContentNode = new Element("div", {"styles": this.css.moduleInputContentNode}).inject(categoryNode); this.moduleCategoryInput = new Element("input", {"styles": this.css.moduleInputNode}).inject(categoryContentNode); var descriptionTitleNode = new Element("div", {"styles": this.css.moduleInputTitleNode, "text": this.lp.moduleDescription}).inject(descriptionNode); var descriptionContentNode = new Element("div", {"styles": this.css.moduleInputContentNode}).inject(descriptionNode); this.moduleDescriptionInput = new Element("input", {"styles": this.css.moduleInputNode}).inject(descriptionContentNode); this.moduleNameInput.set("value", this.selectData.name); this.moduleCategoryInput.set("value", this.selectData.category); this.moduleDescriptionInput.set("value", this.selectData.description); this.contentNode = new Element("div", {"styles": this.css.moduleSetupCompareContentNode}).inject(this.node); this.setListContentSize(); this.createLoading(this.contentNode); }, setListContentSize: function(){ var size = this.dlg.content.getSize(); var h = size.y; var titleH = this.titleNode.getSize().y+10; var contentH = h-titleH-10; this.contentNode.setStyle("height", ""+contentH+"px"); }, createLoading: function(node){ //this.okBut.setStyle("display", "none"); this.nextBut.setStyle("display", "none"); this.loadingAreaNode = new Element("div", {"styles": this.css.moduleLoadingAreaNode}).inject(node); var img = new Element("img", { "styles": this.css.moduleLoadingImgNode, "src": this.app.path+this.app.options.style+"/icon/loading.gif" }).inject(this.loadingAreaNode); }, clearLoading: function(){ if (this.loadingAreaNode){ this.loadingAreaNode.destroy(); this.loadingAreaNode = null; } //this.okBut.setStyle("display", "inline"); this.nextBut.setStyle("display", "inline"); }, createContent: function(){ this.clearLoading(); this.createListArea(); this.loadProcessList(); this.loadPortalList(); this.loadCMSList(); this.loadQueryList(); //this.structure }, createListArea: function(){ this.contentAreaNode = new Element("div").inject(this.contentNode); // this.contentInforNode = new Element("div", {"styles": this.css.moduleSetupContentInforNode, "text": this.lp.selectModules}).inject(this.contentAreaNode); // //this.processArea = new Element("div", {"styles": this.css.moduleSetupListAreaNode}).inject(this.contentNode); // // this.listAreaNode = new Element("div").inject(this.contentAreaNode); this.processAreaTitle = new Element("div", {"styles": this.css.moduleSetupListAreaTitleNode, "text": this.lp.process}).inject(this.contentAreaNode); this.processAreaContent = new Element("div", {"styles": this.css.moduleSetupListAreaContentNode}).inject(this.contentAreaNode); this.portalAreaTitle = new Element("div", {"styles": this.css.moduleSetupListAreaTitleNode, "text": this.lp.portal}).inject(this.contentAreaNode); this.portalAreaContent = new Element("div", {"styles": this.css.moduleSetupListAreaContentNode}).inject(this.contentAreaNode); this.cmsAreaTitle = new Element("div", {"styles": this.css.moduleSetupListAreaTitleNode, "text": this.lp.cms}).inject(this.contentAreaNode); this.cmsAreaContent = new Element("div", {"styles": this.css.moduleSetupListAreaContentNode}).inject(this.contentAreaNode); this.queryAreaTitle = new Element("div", {"styles": this.css.moduleSetupListAreaTitleNode, "text": this.lp.query}).inject(this.contentAreaNode); this.queryAreaContent = new Element("div", {"styles": this.css.moduleSetupListAreaContentNode}).inject(this.contentAreaNode); }, loadProcessList: function(){ this.processListNodes = []; this.structure.processPlatformList.each(function(item){ var postData = null; for (var i=0; i