Main.js 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923
  1. MWF.xApplication.AppCenter.Main = new Class({
  2. Extends: MWF.xApplication.Common.Main,
  3. Implements: [Options, Events],
  4. options: {
  5. "style": "default",
  6. "name": "AppCenter",
  7. "icon": "icon.png",
  8. "width": "1000",
  9. "height": "700",
  10. "title": MWF.xApplication.AppCenter.LP.title
  11. },
  12. onQueryLoad: function(){
  13. this.lp = MWF.xApplication.AppCenter.LP;
  14. this.actions = MWF.Actions.get("x_program_center");
  15. },
  16. loadApplication: function(callback){
  17. this.components = [];
  18. //this.node = new Element("div", {"styles": {"width": "100%", "height": "100%", "overflow": "hidden"}}).inject(this.content);
  19. this.loadTitle();
  20. this.contentNode = new Element("div", {"styles": this.css.contentNode}).inject(this.content);
  21. this.contentModuleArea = new Element("div", {"styles": this.css.contentModuleArea}).inject(this.contentNode);
  22. this.setContentSize();
  23. this.addEvent("resize", this.setContentSize);
  24. this.loadModuleContent();
  25. },
  26. loadTitle: function(){
  27. this.titleBar = new Element("div", {"styles": this.css.titleBar}).inject(this.content);
  28. if (MWF.AC.isProcessPlatformCreator()){
  29. this.createApplicationNode = new Element("div", {
  30. "styles": this.css.createApplicationNode,
  31. "title": this.lp.export
  32. }).inject(this.titleBar);
  33. this.createApplicationNode.addEvent("click", function(){
  34. this.createApplication();
  35. }.bind(this));
  36. }
  37. this.taskTitleTextNode = new Element("div", {"styles": this.css.titleTextNode,"text": this.lp.title}).inject(this.titleBar);
  38. },
  39. setContentSize: function(){
  40. var size = this.content.getSize();
  41. var titleSize = this.titleBar.getSize();
  42. var height = size.y-titleSize.y;
  43. this.contentNode.setStyles({"height": ""+height+"px", "overflow": "auto"});
  44. var max = size.x*0.98;
  45. var n = (size.x/320).toInt();
  46. var x = n*320;
  47. while (x>max){
  48. n--;
  49. x = n*320;
  50. }
  51. this.contentModuleArea.setStyle("width", ""+x+"px");
  52. },
  53. loadModuleContent: function(){
  54. this.actions.listStructure(function(json){
  55. this.moduleList = json.data;
  56. if (this.moduleList.length){
  57. this.moduleList.each(function(module){
  58. new MWF.xApplication.AppCenter.Module(this, module);
  59. }.bind(this));
  60. }else{
  61. this.createEmptyElement();
  62. }
  63. }.bind(this));
  64. },
  65. createEmptyElement: function(){
  66. this.emptyNode = new Element("div", {"styles": this.css.emptyNode}).inject(this.contentModuleArea);
  67. if (MWF.AC.isProcessPlatformCreator()){
  68. this.emptyNode.set("text", this.lp.emptyModuleManagerInfo);
  69. this.emptyNode.addEvent("click", function(){
  70. this.createApplication();
  71. }.bind(this));
  72. }else{
  73. this.emptyNode.set("text", this.lp.emptyModuleInfo);
  74. }
  75. },
  76. createApplication: function(){
  77. new MWF.xApplication.AppCenter.Exporter(this);
  78. }
  79. });
  80. MWF.xApplication.AppCenter.Module = new Class({
  81. initialize: function(app, data){
  82. this.app = app;
  83. this.data = data;
  84. this.json = JSON.decode(this.data.data);
  85. this.json.structure = this.data.id;
  86. this.lp = this.app.lp;
  87. this.css = this.app.css;
  88. this.content = this.app.contentModuleArea;
  89. this.load();
  90. },
  91. load: function(){
  92. this.node = new Element("div", {"styles": this.css.moduleNode}).inject(this.content);
  93. this.iconNode = new Element("div", {"styles": this.css.moduleIconNode}).inject(this.node);
  94. this.contentNode = new Element("div", {"styles": this.css.moduleContentNode}).inject(this.node);
  95. this.nameNode = new Element("div", {"styles": this.css.moduleNameNode}).inject(this.contentNode);
  96. this.categoryNode = new Element("div", {"styles": this.css.moduleCategoryNode}).inject(this.contentNode);
  97. this.descriptionNode = new Element("div", {"styles": this.css.moduleDescriptionNode}).inject(this.contentNode);
  98. this.actionNode = new Element("div", {"styles": this.css.moduleActionNode}).inject(this.contentNode);
  99. this.nameNode.set("text", this.data.name);
  100. this.categoryNode.set("text", this.json.category);
  101. this.descriptionNode.set("text", this.data.description);
  102. this.actionNode.set("text", this.lp.output);
  103. this.loadEvent();
  104. },
  105. loadEvent: function(){
  106. this.actionNode.addEvent("click", function(e){
  107. this.outputApp();
  108. e.stopPropagation();
  109. }.bind(this));
  110. this.node.addEvent("click", function(){
  111. this.openApp();
  112. }.bind(this));
  113. },
  114. outputApp: function(){
  115. new MWF.xApplication.AppCenter.Exporter(this.app, this.json)
  116. },
  117. openApp: function(){
  118. }
  119. });
  120. MWF.xApplication.AppCenter.Exporter = new Class({
  121. initialize: function(app, selectData){
  122. this.app = app;
  123. this.lp = this.app.lp;
  124. this.css = this.app.css;
  125. this.structure = null;
  126. this.dlg = null;
  127. this.selectData = selectData || {
  128. "structure": "",
  129. "name": "",
  130. "description": "",
  131. "processPlatformList": [],
  132. "portalList": [],
  133. "queryList": [],
  134. "cmsList": []
  135. };
  136. this.setp = 1;
  137. this.load();
  138. },
  139. loadStructure: function(){
  140. this.structureRes = this.app.actions.outputStructure(function(json){
  141. this.structure = json.data;
  142. this.createContent();
  143. }.bind(this));
  144. },
  145. showDlg: function(callback){
  146. var position = this.app.createApplicationNode.getPosition(this.app.content);
  147. var size = this.app.contentNode.getSize();
  148. var width = size.x*0.9;
  149. if (width>600) width = 600;
  150. var height = size.y*0.9;
  151. var x = (size.x-width)/2;
  152. var y = (size.y-height)/2;
  153. var _self = this;
  154. MWF.require("MWF.xDesktop.Dialog", function(){
  155. this.dlg = new MWF.xDesktop.Dialog({
  156. "title": this.lp.exportTitle,
  157. "style": "appCenter",
  158. "top": y+20,
  159. "left": x,
  160. "fromTop":position.y,
  161. "fromLeft": position.x,
  162. "width": width,
  163. "height": height,
  164. "html": "",
  165. "maskNode": this.app.content,
  166. "container": this.app.content,
  167. "buttonList": [
  168. {
  169. "text": this.lp.next,
  170. "action": function(){
  171. _self.next();
  172. //this.close();
  173. }
  174. },
  175. {
  176. "text": this.lp.prev,
  177. "action": function(){
  178. _self.prev();
  179. //this.close();
  180. }
  181. },
  182. {
  183. "text": this.lp.ok,
  184. "action": function(){
  185. _self.output();
  186. //this.close();
  187. }
  188. },
  189. {
  190. "text": this.lp.cancel,
  191. "action": function(){
  192. this.close();
  193. if (_self.structureRes){
  194. if (_self.structureRes.isRunning()){_self.structureRes.cancel();}
  195. _self.structureRes = null;
  196. }
  197. MWF.release(_self);
  198. }
  199. }
  200. ],
  201. "onPostShow": function(){
  202. if (callback) callback();
  203. }.bind(this)
  204. });
  205. this.dlg.show();
  206. }.bind(this));
  207. },
  208. checkInput: function(){
  209. var name = this.moduleNameInput.get("value");
  210. var category = this.moduleCategoryInput.get("value");
  211. var description = this.moduleDescriptionInput.get("value");
  212. if (!name){
  213. this.app.notice(this.lp.noNameError, "error");
  214. return false;
  215. }
  216. if (!this.selectData.processPlatformList.length &&
  217. !this.selectData.portalList.length &&
  218. !this.selectData.queryList.length &&
  219. !this.selectData.cmsList.length){
  220. this.app.notice(this.lp.noModuleError, "error");
  221. return false;
  222. }
  223. this.selectData.name = name;
  224. this.selectData.category = category;
  225. this.selectData.description = description;
  226. return true;
  227. },
  228. next: function(){
  229. if (this.setp==1){
  230. if (this.checkInput()) this.showStatus();
  231. }
  232. },
  233. prev: function(){
  234. if (this.step==2){
  235. if (this.statusContentNode){
  236. this.statusContentNode.destroy();
  237. this.statusContentNode = null;
  238. }
  239. this.contentNode.setStyle("display", "block");
  240. this.okBut.setStyle("display", "none");
  241. this.prevBut.setStyle("display", "nonde");
  242. this.nextBut.setStyle("display", "inline");
  243. }
  244. },
  245. output: function(){
  246. if (this.step==2){
  247. if (this.checkInput()){
  248. this.app.actions.output(this.selectData, function(json){
  249. var uri = this.app.actions.action.actions["download"].uri;
  250. uri = uri.replace("{flag}", json.data.flag);
  251. this.dlg.close();
  252. window.open(this.app.actions.action.address+uri);
  253. MWF.release(this);
  254. }.bind(this));
  255. }
  256. }
  257. },
  258. showStatus: function(){
  259. this.statusContentNode = new Element("div", {"styles": this.css.moduleSelectContentAreaNode}).inject(this.contentNode, "after");
  260. this.statusTitleNode = new Element("div", {"styles": this.css.moduleSelectTitleNode, "text": this.lp.selected}).inject(this.statusContentNode);
  261. this.statusInfoNode = new Element("div", {"styles": this.css.moduleSelectContentNode}).inject(this.statusContentNode);
  262. var size = this.contentNode.getSize();
  263. var position = this.contentNode.getPosition(this.contentNode.getOffsetParent());
  264. var css = {
  265. "height": ""+size.y+"px",
  266. "width": ""+size.x+"px",
  267. "top": ""+position.y+"px",
  268. "left": ""+position.x+"px",
  269. "background-color": "#eeeeee"
  270. };
  271. this.statusContentNode.setStyles(css);
  272. var titleSize = this.statusTitleNode.getSize();
  273. var h = size.y-titleSize.y-20;
  274. this.statusInfoNode.setStyle("height", ""+h+"px");
  275. this.showStatusList();
  276. this.contentNode.setStyle("display", "none");
  277. this.okBut.setStyle("display", "inline");
  278. this.prevBut.setStyle("display", "inline");
  279. this.nextBut.setStyle("display", "none");
  280. this.step = 2;
  281. },
  282. showStatusList: function(){
  283. this.showStatusItemList("processPlatformList", ["processList", "formList", "applicationDictList", "scriptList"]);
  284. this.showStatusItemList("portalList", ["pageList", "scriptList", "widgetList"]);
  285. this.showStatusItemList("cmsList", ["categoryInfoList", "formList", "appDictList", "scriptList"]);
  286. this.showStatusItemList("queryList", ["viewList", "statList", "revealList"]);
  287. },
  288. showStatusItemList: function(listName, subList){
  289. this.selectData[listName].each(function(app){
  290. new Element("div", {"styles": this.css.moduleStatusInforNode1, "text": "["+this.lp[listName]+"] "+(app.name || app.appName)}).inject(this.statusInfoNode);
  291. subList.each(function(name){
  292. if (app[name] && app[name].length) app[name].each(function(process){
  293. new Element("div", {"styles": this.css.moduleStatusInforNode2, "text": "["+this.lp[name]+"] "+(process.name || process.categoryName)}).inject(this.statusInfoNode);
  294. }.bind(this));
  295. }.bind(this));
  296. }.bind(this));
  297. },
  298. load: function(){
  299. this.showDlg(function(){
  300. this.createLayout();
  301. this.loadStructure();
  302. }.bind(this));
  303. },
  304. createLayout: function(){
  305. this.nextBut = this.dlg.button.getFirst("input");
  306. this.prevBut = this.nextBut.getNext("input");
  307. this.okBut = this.prevBut.getNext("input");
  308. if (this.setp==1){
  309. this.okBut.setStyle("display", "none");
  310. this.prevBut.setStyle("display", "none");
  311. }
  312. this.node = new Element("div", {"styles": this.css.moduleSetupContentNode}).inject(this.dlg.content);
  313. this.titleNode = new Element("div", {"styles": this.css.moduleSetupTitleNode}).inject(this.node);
  314. var iconNode = new Element("div", {"styles": this.css.moduleIconNode}).inject(this.titleNode);
  315. var contentNode = new Element("div", {"styles": this.css.moduleSetupTitleContentNode}).inject(this.titleNode);
  316. var nameNode = new Element("div", {"styles": this.css.moduleSetupNameNode}).inject(contentNode);
  317. var categoryNode = new Element("div", {"styles": this.css.moduleSetupCategoryNode}).inject(contentNode);
  318. var descriptionNode = new Element("div", {"styles": this.css.moduleSetupDescriptionNode}).inject(contentNode);
  319. var nameTitleNode = new Element("div", {"styles": this.css.moduleInputTitleNode, "text": this.lp.moduleName}).inject(nameNode);
  320. var nameContentNode = new Element("div", {"styles": this.css.moduleInputContentNode}).inject(nameNode);
  321. this.moduleNameInput = new Element("input", {"styles": this.css.moduleInputNode}).inject(nameContentNode);
  322. var categoryTitleNode = new Element("div", {"styles": this.css.moduleInputTitleNode, "text": this.lp.moduleCategory}).inject(categoryNode);
  323. var categoryContentNode = new Element("div", {"styles": this.css.moduleInputContentNode}).inject(categoryNode);
  324. this.moduleCategoryInput = new Element("input", {"styles": this.css.moduleInputNode}).inject(categoryContentNode);
  325. var descriptionTitleNode = new Element("div", {"styles": this.css.moduleInputTitleNode, "text": this.lp.moduleDescription}).inject(descriptionNode);
  326. var descriptionContentNode = new Element("div", {"styles": this.css.moduleInputContentNode}).inject(descriptionNode);
  327. this.moduleDescriptionInput = new Element("input", {"styles": this.css.moduleInputNode}).inject(descriptionContentNode);
  328. this.moduleNameInput.set("value", this.selectData.name);
  329. this.moduleCategoryInput.set("value", this.selectData.category);
  330. this.moduleDescriptionInput.set("value", this.selectData.description);
  331. this.contentNode = new Element("div", {"styles": this.css.moduleSetupCompareContentNode}).inject(this.node);
  332. this.setListContentSize();
  333. this.createLoading(this.contentNode);
  334. },
  335. setListContentSize: function(){
  336. var size = this.dlg.content.getSize();
  337. var h = size.y;
  338. var titleH = this.titleNode.getSize().y+10;
  339. var contentH = h-titleH-10;
  340. this.contentNode.setStyle("height", ""+contentH+"px");
  341. },
  342. createLoading: function(node){
  343. //this.okBut.setStyle("display", "none");
  344. this.nextBut.setStyle("display", "none");
  345. this.loadingAreaNode = new Element("div", {"styles": this.css.moduleLoadingAreaNode}).inject(node);
  346. var img = new Element("img", {
  347. "styles": this.css.moduleLoadingImgNode,
  348. "src": this.app.path+this.app.options.style+"/icon/loading.gif"
  349. }).inject(this.loadingAreaNode);
  350. },
  351. clearLoading: function(){
  352. if (this.loadingAreaNode){
  353. this.loadingAreaNode.destroy();
  354. this.loadingAreaNode = null;
  355. }
  356. //this.okBut.setStyle("display", "inline");
  357. this.nextBut.setStyle("display", "inline");
  358. },
  359. createContent: function(){
  360. this.clearLoading();
  361. this.createListArea();
  362. this.loadProcessList();
  363. this.loadPortalList();
  364. this.loadCMSList();
  365. this.loadQueryList();
  366. //this.structure
  367. },
  368. createListArea: function(){
  369. this.contentAreaNode = new Element("div").inject(this.contentNode);
  370. // this.contentInforNode = new Element("div", {"styles": this.css.moduleSetupContentInforNode, "text": this.lp.selectModules}).inject(this.contentAreaNode);
  371. // //this.processArea = new Element("div", {"styles": this.css.moduleSetupListAreaNode}).inject(this.contentNode);
  372. //
  373. // this.listAreaNode = new Element("div").inject(this.contentAreaNode);
  374. this.processAreaTitle = new Element("div", {"styles": this.css.moduleSetupListAreaTitleNode, "text": this.lp.process}).inject(this.contentAreaNode);
  375. this.processAreaContent = new Element("div", {"styles": this.css.moduleSetupListAreaContentNode}).inject(this.contentAreaNode);
  376. this.portalAreaTitle = new Element("div", {"styles": this.css.moduleSetupListAreaTitleNode, "text": this.lp.portal}).inject(this.contentAreaNode);
  377. this.portalAreaContent = new Element("div", {"styles": this.css.moduleSetupListAreaContentNode}).inject(this.contentAreaNode);
  378. this.cmsAreaTitle = new Element("div", {"styles": this.css.moduleSetupListAreaTitleNode, "text": this.lp.cms}).inject(this.contentAreaNode);
  379. this.cmsAreaContent = new Element("div", {"styles": this.css.moduleSetupListAreaContentNode}).inject(this.contentAreaNode);
  380. this.queryAreaTitle = new Element("div", {"styles": this.css.moduleSetupListAreaTitleNode, "text": this.lp.query}).inject(this.contentAreaNode);
  381. this.queryAreaContent = new Element("div", {"styles": this.css.moduleSetupListAreaContentNode}).inject(this.contentAreaNode);
  382. },
  383. loadProcessList: function(){
  384. this.processListNodes = [];
  385. this.structure.processPlatformList.each(function(item){
  386. var postData = null;
  387. for (var i=0; i<this.selectData.processPlatformList.length; i++){
  388. if (this.selectData.processPlatformList[i].id == item.id){
  389. postData = this.selectData.processPlatformList[i];
  390. break;
  391. }
  392. }
  393. this.processListNodes.push(new MWF.xApplication.AppCenter.Exporter.ProcessElement(this, this.processAreaContent, item, postData));
  394. }.bind(this));
  395. },
  396. loadPortalList: function(){
  397. this.portalListNodes = [];
  398. this.structure.portalList.each(function(item){
  399. this.portalListNodes.push(new MWF.xApplication.AppCenter.Exporter.PortalElement(this, this.portalAreaContent, item));
  400. }.bind(this));
  401. },
  402. loadCMSList: function(){
  403. this.cmsListNodes = [];
  404. this.structure.cmsList.each(function(item){
  405. this.cmsListNodes.push(new MWF.xApplication.AppCenter.Exporter.CmsElement(this, this.cmsAreaContent, item));
  406. }.bind(this));
  407. },
  408. loadQueryList: function(){
  409. this.queryListNodes = [];
  410. this.structure.queryList.each(function(item){
  411. this.queryListNodes.push(new MWF.xApplication.AppCenter.Exporter.QueryElement(this, this.queryAreaContent, item));
  412. }.bind(this));
  413. }
  414. });
  415. MWF.xApplication.AppCenter.Exporter.Element = new Class({
  416. initialize: function(exporter, content, data, postData){
  417. this.exporter = exporter;
  418. this.app = this.exporter.app;
  419. this.data = data;
  420. this.lp = this.app.lp;
  421. this.css = this.app.css;
  422. this.content = content;
  423. this.initPostData(postData);
  424. //this.selectStatus = selectStatus || "none";
  425. this.load();
  426. },
  427. initPostData: function(postData){
  428. this.postData = postData || {
  429. "id": this.data.id,
  430. "name": this.data.name || this.data.appName,
  431. "alias": this.data.alias,
  432. "description": this.data.description,
  433. "processList": [],
  434. "formList": [],
  435. "applicationDictList": [],
  436. "scriptList": []
  437. };
  438. },
  439. load: function(){
  440. this.contentNode = new Element("div", {"styles": this.css.moduleSetupListContentNode}).inject(this.content);
  441. this.iconNode = new Element("div", {"styles": this.css.moduleSetupListIconNode}).inject(this.contentNode);
  442. this.actionNode = new Element("div", {"styles": this.css.moduleSetupListActionNode}).inject(this.contentNode);
  443. this.inforNode = new Element("div", {"styles": this.css.moduleSetupListInforNode}).inject(this.contentNode);
  444. this.nameNode = new Element("div", {"styles": this.css.moduleSetupListNameNode}).inject(this.contentNode);
  445. this.nameNode.set(this.getNameContent());
  446. // switch (this.selectStatus){
  447. // case "all":
  448. // this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_all.png) center center no-repeat");
  449. // break;
  450. // case "part":
  451. // this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_part.png) center center no-repeat");
  452. // break;
  453. // default:
  454. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_none.png) center center no-repeat");
  455. //}
  456. this.action = new Element("div", {"styles": this.css.moduleSelectActionNode, "text": this.lp.select}).inject(this.actionNode);
  457. this.setEvent();
  458. this.checkSelect(this.postData);
  459. },
  460. setEvent: function(){
  461. this.contentNode.addEvents({
  462. "mouseover": function(){this.contentNode.setStyles(this.css.moduleSetupListContentNode_over);}.bind(this),
  463. "mouseout": function(){this.contentNode.setStyles(this.css.moduleSetupListContentNode);}.bind(this)
  464. });
  465. this.action.addEvent("click", function(){
  466. this.selectElements();
  467. }.bind(this));
  468. this.nameNode.addEvent("click", function(){
  469. this.selectElements();
  470. }.bind(this));
  471. },
  472. getNameContent: function(){
  473. return {
  474. "title": this.lp.name+": "+this.data.name+" "+this.lp.id+": "+this.data.id,
  475. "text": this.data.name
  476. }
  477. },
  478. selectElements: function(){
  479. new MWF.xApplication.AppCenter.Exporter.Element.Selector(this, this.data);
  480. },
  481. checkSelect: function(selectData){
  482. this.postData.processList = selectData.processList;
  483. this.postData.formList = selectData.formList;
  484. this.postData.applicationDictList = selectData.applicationDictList;
  485. this.postData.scriptList = selectData.scriptList;
  486. this.exporter.selectData.processPlatformList.erase(this.postData);
  487. if (selectData.processList.length || selectData.formList.length || selectData.applicationDictList.length || selectData.scriptList.length){
  488. this.exporter.selectData.processPlatformList.push(this.postData);
  489. if (selectData.processList.length==this.data.processList.length &&
  490. selectData.formList.length==this.data.formList.length &&
  491. selectData.applicationDictList.length==this.data.applicationDictList.length &&
  492. selectData.scriptList.length==this.data.scriptList.length){
  493. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_all.png) center center no-repeat");
  494. }else{
  495. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_part.png) center center no-repeat");
  496. }
  497. }else{
  498. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_none.png) center center no-repeat");
  499. }
  500. }
  501. });
  502. MWF.xApplication.AppCenter.Exporter.ProcessElement = new Class({
  503. Extends: MWF.xApplication.AppCenter.Exporter.Element
  504. });
  505. MWF.xApplication.AppCenter.Exporter.PortalElement = new Class({
  506. Extends: MWF.xApplication.AppCenter.Exporter.Element,
  507. initPostData: function(postData){
  508. this.postData = postData || {
  509. "id": this.data.id,
  510. "name": this.data.name || this.data.appName,
  511. "alias": this.data.alias,
  512. "description": this.data.description,
  513. "pageList": [],
  514. "scriptList": [],
  515. "widgetList": []
  516. };
  517. },
  518. selectElements: function(){
  519. new MWF.xApplication.AppCenter.Exporter.Element.PortalSelector(this, this.data);
  520. },
  521. checkSelect: function(selectData){
  522. this.postData.pageList = selectData.pageList;
  523. this.postData.scriptList = selectData.scriptList;
  524. this.postData.widgetList = selectData.widgetList;
  525. if (selectData.pageList.length || selectData.scriptList.length || selectData.widgetList.length){
  526. this.exporter.selectData.portalList.push(this.postData);
  527. if (selectData.pageList.length==this.data.pageList.length &&
  528. selectData.scriptList.length==this.data.scriptList.length &&
  529. selectData.widgetList.length==this.data.widgetList.length){
  530. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_all.png) center center no-repeat");
  531. }else{
  532. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_part.png) center center no-repeat");
  533. }
  534. }else{
  535. this.exporter.selectData.portalList.erase(this.postData);
  536. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_none.png) center center no-repeat");
  537. }
  538. }
  539. });
  540. MWF.xApplication.AppCenter.Exporter.CmsElement = new Class({
  541. Extends: MWF.xApplication.AppCenter.Exporter.Element,
  542. getNameContent: function(){
  543. return {
  544. "title": this.lp.name+": "+this.data.appName+" "+this.lp.id+": "+this.data.id,
  545. "text": this.data.appName
  546. }
  547. },
  548. initPostData: function(postData){
  549. this.postData = postData || {
  550. "id": this.data.id,
  551. "name": this.data.name || this.data.appName,
  552. "alias": this.data.alias,
  553. "description": this.data.description,
  554. "categoryInfoList": [],
  555. "formList": [],
  556. "appDictList": [],
  557. "scriptList": []
  558. };
  559. },
  560. selectElements: function(){
  561. new MWF.xApplication.AppCenter.Exporter.Element.CmsSelector(this, this.data);
  562. },
  563. checkSelect: function(selectData){
  564. this.postData.categoryInfoList = selectData.categoryInfoList;
  565. this.postData.formList = selectData.formList;
  566. this.postData.appDictList = selectData.appDictList;
  567. this.postData.scriptList = selectData.scriptList;
  568. if (selectData.categoryInfoList.length || selectData.formList.length || selectData.appDictList.length || selectData.scriptList.length){
  569. this.exporter.selectData.cmsList.push(this.postData);
  570. if (selectData.categoryInfoList.length==this.data.categoryInfoList.length &&
  571. selectData.formList.length==this.data.formList.length &&
  572. selectData.appDictList.length==this.data.appDictList.length &&
  573. selectData.scriptList.length==this.data.scriptList.length){
  574. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_all.png) center center no-repeat");
  575. }else{
  576. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_part.png) center center no-repeat");
  577. }
  578. }else{
  579. this.exporter.selectData.cmsList.erase(this.postData);
  580. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_none.png) center center no-repeat");
  581. }
  582. }
  583. });
  584. MWF.xApplication.AppCenter.Exporter.QueryElement = new Class({
  585. Extends: MWF.xApplication.AppCenter.Exporter.Element,
  586. initPostData: function(postData){
  587. this.postData = postData || {
  588. "id": this.data.id,
  589. "name": this.data.name || this.data.appName,
  590. "alias": this.data.alias,
  591. "description": this.data.description,
  592. "viewList": [],
  593. "statList": [],
  594. "revealList": []
  595. };
  596. },
  597. selectElements: function(){
  598. new MWF.xApplication.AppCenter.Exporter.Element.QuerySelector(this, this.data);
  599. },
  600. checkSelect: function(selectData){
  601. this.postData.viewList = selectData.viewList;
  602. this.postData.statList = selectData.statList;
  603. this.postData.revealList = selectData.revealList;
  604. if (selectData.viewList.length || selectData.statList.length || selectData.revealList.length){
  605. this.exporter.selectData.queryList.push(this.postData);
  606. if (selectData.viewList.length==this.data.viewList.length &&
  607. selectData.statList.length==this.data.statList.length &&
  608. selectData.revealList.length==this.data.revealList.length){
  609. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_all.png) center center no-repeat");
  610. }else{
  611. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_part.png) center center no-repeat");
  612. }
  613. }else{
  614. this.exporter.selectData.queryList.erase(this.postData);
  615. this.iconNode.setStyle("background", "url("+this.app.path+this.app.options.style+"/icon/sel_none.png) center center no-repeat");
  616. }
  617. }
  618. });
  619. MWF.xApplication.AppCenter.Exporter.Element.Selector = new Class({
  620. initialize: function(element, data){
  621. this.element = element;
  622. this.app = this.element.app;
  623. this.data = data;
  624. this.lp = this.app.lp;
  625. this.css = this.app.css;
  626. this.content = this.element.contentNode;
  627. this.areaNode = this.element.exporter.contentNode;
  628. this.selectData = this.initData();
  629. this.load();
  630. },
  631. initData: function(){
  632. return {
  633. "processList": [],
  634. "formList": [],
  635. "applicationDictList": [],
  636. "scriptList": []
  637. }
  638. },
  639. load: function(){
  640. this.node = new Element("div", {"styles": this.css.moduleSelectContentAreaNode}).inject(this.areaNode, "after");
  641. this.titleNode = new Element("div", {"styles": this.css.moduleSelectTitleNode, "text": this.data.name}).inject(this.node);
  642. var size = this.content.getSize();
  643. this.node.setStyle("width", ""+size.x+"px");
  644. this.node.position({
  645. "relativeTo": this.content,
  646. "position": "topLeft",
  647. "edge": "topLeft"
  648. });
  649. this.element.exporter.dlg.button.setStyle("display", "none");
  650. this.show();
  651. },
  652. show: function(){
  653. var size = this.areaNode.getSize();
  654. var height = size.y+40;
  655. var width = size.x;
  656. var position = this.areaNode.getPosition(this.areaNode.getOffsetParent());
  657. //var oStyles = this.node.getStyles("height", "width", "top", "left", "background-color");
  658. //this.node.store("ostyles", oStyles);
  659. var css = {
  660. "height": ""+height+"px",
  661. "width": ""+width+"px",
  662. "top": ""+position.y+"px",
  663. "left": ""+position.x+"px",
  664. "background-color": "#eeeeee"
  665. };
  666. this.morph = new Fx.Morph(this.node, {"duration": 100});
  667. this.morph.start(css).chain(function(){
  668. this.loadContent();
  669. }.bind(this));
  670. },
  671. hide: function(){
  672. if (!this.morph) this.morph = new Fx.Morph(this.node, {"duration": 100});
  673. this.areaNode.setStyle("display", "block");
  674. this.element.exporter.dlg.button.setStyle("display", "block");
  675. var size = this.content.getSize();
  676. var height = size.y;
  677. var width = size.x;
  678. var position = this.content.getPosition(this.areaNode);
  679. var thisPosition = this.node.getPosition(this.node.getOffsetParent());
  680. var x = thisPosition.x+position.x;
  681. var y = thisPosition.y+position.y;
  682. var css = {
  683. "height": ""+height+"px",
  684. "width": ""+width+"px",
  685. "top": ""+y+"px",
  686. "left": ""+x+"px"
  687. };
  688. this.contentNode.destroy();
  689. this.morph.start(css).chain(function(){
  690. this.node.destroy();
  691. MWF.release(this);
  692. }.bind(this));
  693. },
  694. loadContent: function(){
  695. this.areaNode.setStyle("display", "none");
  696. this.contentNode = new Element("div", {"styles": this.css.moduleSelectContentNode}).inject(this.node);
  697. this.buttonNode = new Element("div", {"styles": this.css.moduleSelectButtonNode}).inject(this.node);
  698. this.cancelButton = new Element("div", {"styles": this.css.moduleSelectButtonActionNode, "text": this.lp.cancel}).inject(this.buttonNode);
  699. this.okButton = new Element("div", {"styles": this.css.moduleSelectButtonActionNode, "text": this.lp.ok}).inject(this.buttonNode);
  700. this.setContentHeight();
  701. this.loadContentList();
  702. this.cancelButton.addEvent("click", function(){
  703. this.hide();
  704. }.bind(this));
  705. this.okButton.addEvent("click", function(){
  706. this.checkSelect();
  707. }.bind(this));
  708. },
  709. checkSelect: function() {
  710. this.selectData.processList = this.getCheckedList(this.listProcessContent);
  711. this.selectData.formList = this.getCheckedList(this.listFormContent);
  712. this.selectData.applicationDictList = this.getCheckedList(this.listDictContent);
  713. this.selectData.scriptList = this.getCheckedList(this.listScriptContent);
  714. this.element.checkSelect(this.selectData);
  715. this.hide();
  716. },
  717. getCheckedList: function(node){
  718. var list = [];
  719. node.getElements("input").each(function(input){
  720. if (input.checked){
  721. list.push(input.retrieve("data"));
  722. }
  723. }.bind());
  724. return list;
  725. },
  726. setContentHeight: function(){
  727. var size = this.node.getSize();
  728. var titleSize = this.titleNode.getSize();
  729. var buttonSize = this.buttonNode.getSize();
  730. var h = size.y-titleSize.y-buttonSize.y;
  731. this.contentNode.setStyle("height", ""+h+"px");
  732. },
  733. loadContentList: function(){
  734. this.contentAreaNode = new Element("div", {"styles": {"overflow": "hidden"}}).inject(this.contentNode);
  735. this.listProcessContent = this.listProcess("processList");
  736. this.listFormContent = this.listProcess("formList");
  737. this.listDictContent = this.listProcess("applicationDictList");
  738. this.listScriptContent = this.listProcess("scriptList");
  739. },
  740. listProcess: function(name){
  741. var title = new Element("div", {"styles": this.css.moduleSelectContentTitleNode}).inject(this.contentAreaNode);
  742. var titleActionNode = new Element("div", {"styles": this.css.moduleSelectContentTitleButtonNode}).inject(title);
  743. var inverseAction = new Element("div", {"styles": this.css.moduleSelectContentTitleButtonActionNode, "text": this.lp.inverse}).inject(titleActionNode);
  744. var selectAllAction = new Element("div", {"styles": this.css.moduleSelectContentTitleButtonActionNode, "text": this.lp.selectAll}).inject(titleActionNode);
  745. var titleText = new Element("div", {"styles": this.css.moduleSelectContentTitleTextNode, "text": this.lp[name]}).inject(title);
  746. //moduleSelectContentTitleButtonActionNode
  747. var listContent = new Element("div", {"styles": this.css.moduleSelectContentListNode}).inject(this.contentAreaNode);
  748. this.listProcessItems(name, listContent);
  749. inverseAction.addEvent("click", function(){
  750. inputs = listContent.getElements("input");
  751. inputs.each(function(checkbox){
  752. checkbox.set("checked", !checkbox.get("checked"));
  753. });
  754. });
  755. selectAllAction.addEvent("click", function(){
  756. inputs = listContent.getElements("input");
  757. inputs.each(function(checkbox){
  758. checkbox.set("checked", true);
  759. });
  760. });
  761. return listContent;
  762. },
  763. listProcessItems: function(name, listContent){
  764. this.data[name].each(function(item){
  765. var div = new Element("div", {"styles": this.css.moduleSelectContentListItemNode}).inject(listContent);
  766. var flag = false;
  767. var selectedList = this.element.postData[name];
  768. if (selectedList){
  769. for (var i=0; i<selectedList.length; i++){
  770. if (selectedList[i].id==item.id){
  771. flag = true;
  772. break;
  773. }
  774. }
  775. }
  776. var checkNode = new Element("input", {
  777. "styles": {"float": "left"},
  778. "type": "checkbox",
  779. //"checked": (this.element.postData[name] && this.element.postData[name].indexOf(item)!=-1),
  780. "checked": flag,
  781. "value": item.id
  782. }).inject(div);
  783. new Element("div", {
  784. "styles": {"float": "left"},
  785. "text": this.getItemName(item),
  786. "events": {
  787. "click": function(){checkNode.click();}
  788. }
  789. }).inject(div);
  790. checkNode.store("data", item);
  791. }.bind(this));
  792. },
  793. getItemName: function(item){
  794. return item.name;
  795. }
  796. });
  797. MWF.xApplication.AppCenter.Exporter.Element.ProcessSelector = new Class({
  798. Extends: MWF.xApplication.AppCenter.Exporter.Element.Selector
  799. });
  800. MWF.xApplication.AppCenter.Exporter.Element.PortalSelector = new Class({
  801. Extends: MWF.xApplication.AppCenter.Exporter.Element.Selector,
  802. initData: function(){
  803. return {
  804. "pageList": [],
  805. "scriptList": [],
  806. "widgetList": []
  807. }
  808. },
  809. checkSelect: function() {
  810. this.selectData.pageList = this.getCheckedList(this.listPageContent);
  811. this.selectData.scriptList = this.getCheckedList(this.listScriptContent);
  812. this.selectData.widgetList = this.getCheckedList(this.listWidgetContent);
  813. this.element.checkSelect(this.selectData);
  814. this.hide();
  815. },
  816. loadContentList: function(){
  817. this.contentAreaNode = new Element("div", {"styles": {"overflow": "hidden"}}).inject(this.contentNode);
  818. this.listPageContent = this.listProcess("pageList");
  819. this.listScriptContent = this.listProcess("scriptList");
  820. this.listWidgetContent = this.listProcess("widgetList");
  821. }
  822. });
  823. MWF.xApplication.AppCenter.Exporter.Element.CmsSelector = new Class({
  824. Extends: MWF.xApplication.AppCenter.Exporter.Element.Selector,
  825. initData: function(){
  826. return {
  827. "categoryInfoList": [],
  828. "formList": [],
  829. "appDictList": [],
  830. "scriptList": []
  831. }
  832. },
  833. checkSelect: function() {
  834. this.selectData.categoryInfoList = this.getCheckedList(this.listCategoryInfoContent);
  835. this.selectData.formList = this.getCheckedList(this.listFormContent);
  836. this.selectData.appDictList = this.getCheckedList(this.listDictContent);
  837. this.selectData.scriptList = this.getCheckedList(this.listScriptContent);
  838. this.element.checkSelect(this.selectData);
  839. this.hide();
  840. },
  841. loadContentList: function(){
  842. this.contentAreaNode = new Element("div", {"styles": {"overflow": "hidden"}}).inject(this.contentNode);
  843. this.listCategoryInfoContent = this.listProcess("categoryInfoList");
  844. this.listFormContent = this.listProcess("formList");
  845. this.listDictContent = this.listProcess("appDictList");
  846. this.listScriptContent = this.listProcess("scriptList");
  847. },
  848. getItemName: function(item){
  849. return item.name || item.categoryName;
  850. }
  851. });
  852. MWF.xApplication.AppCenter.Exporter.Element.QuerySelector = new Class({
  853. Extends: MWF.xApplication.AppCenter.Exporter.Element.Selector,
  854. initData: function(){
  855. return {
  856. "viewList": [],
  857. "statList": [],
  858. "revealList": []
  859. }
  860. },
  861. checkSelect: function() {
  862. this.selectData.viewList = this.getCheckedList(this.listViewContent);
  863. this.selectData.statList = this.getCheckedList(this.listStatContent);
  864. this.selectData.revealList = this.getCheckedList(this.listRevealContent);
  865. this.element.checkSelect(this.selectData);
  866. this.hide();
  867. },
  868. loadContentList: function(){
  869. this.contentAreaNode = new Element("div", {"styles": {"overflow": "hidden"}}).inject(this.contentNode);
  870. this.listViewContent = this.listProcess("viewList");
  871. this.listStatContent = this.listProcess("statList");
  872. this.listRevealContent = this.listProcess("revealList");
  873. }
  874. });