Main.js 40 KB

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