$Container.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. MWF.xApplication.cms.FormDesigner.Module = MWF.xApplication.cms.FormDesigner.Module || {};
  2. MWF.xDesktop.requireApp("cms.FormDesigner", "Module.$Module", null, false);
  3. MWF.xApplication.cms.FormDesigner.Module.$Container = MWF.CMSFC$Container = new Class({
  4. Extends: MWF.CMSFC$Module,
  5. Implements: [Options, Events],
  6. _setNodeProperty: function(){
  7. this.node.store("module", this);
  8. if (this.form.moduleList.indexOf(this)==-1) this.form.moduleList.push(this);
  9. if (this.form.moduleNodeList.indexOf(this.node)==-1) this.form.moduleNodeList.push(this.node);
  10. if (this.form.moduleContainerNodeList.indexOf(this.node)==-1) this.form.moduleContainerNodeList.push(this.node);
  11. this.node.store("module", this);
  12. },
  13. _dragIn: function(module){
  14. if (!this.Component) module.inContainer = this;
  15. module.parentContainer = this;
  16. module.nextModule = null;
  17. this.node.setStyles({"border": "1px solid #ffa200"});
  18. var copyNode = module._getCopyNode();
  19. copyNode.inject(this.node);
  20. },
  21. _dragOut: function(module){
  22. module.inContainer = null;
  23. module.parentContainer = null;
  24. module.nextModule = null;
  25. this.node.setStyles(this.css.moduleNode);
  26. // this.node.setStyles(this.json.styles);
  27. this.setCustomStyles();
  28. var copyNode = module._getCopyNode();
  29. copyNode.setStyle("display", "none");
  30. },
  31. _dragDrop: function(module){
  32. this.node.setStyles(this.css.moduleNode);
  33. //this.node.setStyles(this.json.styles);
  34. this.setCustomStyles();
  35. this.parentContainer.node.setStyles(this.css.moduleNode);
  36. //this.node.setStyles(this.json.styles);
  37. this.parentContainer.setCustomStyles();
  38. },
  39. _dragInLikeElement: function(module){
  40. module.parentContainer = this.parentContainer;
  41. module.nextModule = this;
  42. this.parentContainer.node.setStyles({"border": "1px solid #ffa200"});
  43. var copyNode = module._getCopyNode();
  44. copyNode.inject(this.node, "before");
  45. },
  46. _getSubModule: function(){
  47. var modules = [];
  48. var subNode = this.node.getFirst();
  49. while (subNode){
  50. var module = subNode.retrieve("module");
  51. if (module) {
  52. modules.push(module);
  53. // if (module.moduleType=="container"){
  54. // modules = modules.concat(module._getSubModule());
  55. // }
  56. }
  57. subNode = subNode.getNext();
  58. }
  59. return modules;
  60. },
  61. load : function(json, node, parent){
  62. this.json = json;
  63. this.node= node;
  64. this.node.store("module", this);
  65. this.node.setStyles(this.css.moduleNode);
  66. this._loadNodeStyles();
  67. this._loadNodeCustomStyles();
  68. this._initModule();
  69. this._loadTreeNode(parent);
  70. this.parseModules();
  71. this.parentContainer = this.treeNode.parentNode.module;
  72. this._setEditStyle_custom("id");
  73. },
  74. parseModules: function(){
  75. var subDom = this.node.getFirst();
  76. while (subDom){
  77. if (subDom.get("MWFtype")){
  78. var json = this.form.getDomjson(subDom);
  79. module = this.form.loadModule(json, subDom, this);
  80. }
  81. subDom = subDom.getNext();
  82. }
  83. },
  84. destroy: function(){
  85. var modules = this._getSubModule();
  86. modules.each(function(module){
  87. //module._deleteModule();
  88. module.destroy();
  89. });
  90. this._deleteModule();
  91. },
  92. _deleteModule: function(){
  93. this.form.moduleList.erase(this);
  94. this.form.moduleNodeList.erase(this.node);
  95. this.form.moduleElementNodeList.erase(this.node);
  96. this.node.destroy();
  97. this.actionArea.destroy();
  98. delete this.form.json.moduleList[this.json.id];
  99. this.json = null;
  100. delete this.json;
  101. this.treeNode.destroy();
  102. },
  103. copy: function(e){
  104. //var newNode = this.node.clone(true, true);
  105. //var newModuleJson = Object.clone(this.json);
  106. //
  107. //var className = this.moduleName.capitalize();
  108. //var newTool = new MWF["CMSFC"+className](this.form);
  109. //newModuleJson.id = newTool._getNewId();
  110. //newNode.set("id", newModuleJson.id);
  111. this.copySubModule().move(e);
  112. //newTool.load(newModuleJson, newNode, this.form);
  113. //
  114. //newTool.move(e);
  115. },
  116. copyTo: function(node){
  117. if (!node) node = this.form;
  118. var newNode = this.node.clone(false, true);
  119. var newModuleJson = Object.clone(this.json);
  120. newNode.inject(node.node);
  121. var className = this.moduleName.capitalize();
  122. var newTool = new MWF["CMSFC"+className](this.form);
  123. newModuleJson.id = newTool._getNewId();
  124. newNode.set("id", newModuleJson.id);
  125. this.form.json.moduleList[newModuleJson.id] = newModuleJson;
  126. newTool.load(newModuleJson, newNode, node);
  127. return newTool;
  128. },
  129. copySubModule: function(node){
  130. var newModule = this.copyTo(node);
  131. var modules = this._getSubModule();
  132. modules.each(function(module){
  133. //module._deleteModule();
  134. if (module.moduleType=="container"){
  135. module.copySubModule(newModule);
  136. }
  137. if (module.moduleType=="element"){
  138. module.copyTo(newModule);
  139. }
  140. if (module.moduleType=="component"){
  141. module.copyTo(newModule);
  142. }
  143. });
  144. return newModule
  145. //var subNode = node.getFirst();
  146. //while (subNode){
  147. //
  148. // var type = subNode.get("MWFType");
  149. // if (type){
  150. // var newModuleJson = Object.clone(this.form.getDomjson(subNode));
  151. // newModuleJson.id = this._getNewId("", newModuleJson.type.toLowerCase());
  152. // subNode.set("id", newModuleJson.id);
  153. // this.form.json.moduleList[newModuleJson.id] = newModuleJson;
  154. //
  155. // //subNode.eliminate("module");
  156. //
  157. // // if (module.moduleType=="container"){
  158. // this.copySubModule(subNode);
  159. // // }
  160. // }
  161. // subNode = subNode.getNext();
  162. //}
  163. }
  164. });