Tab.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. MWF.xApplication.cms.FormDesigner.Module = MWF.xApplication.cms.FormDesigner.Module || {};
  2. MWF.xDesktop.requireApp("cms.FormDesigner", "Module.$Component", null, false);
  3. MWF.xDesktop.requireApp("cms.FormDesigner", "Module.Tab$Page", null, false);
  4. MWF.xDesktop.requireApp("cms.FormDesigner", "Module.Tab$Content", null, false);
  5. MWF.require("MWF.widget.Tab", null, false);
  6. MWF.xApplication.cms.FormDesigner.Module.Tab = MWF.CMSFCTab = new Class({
  7. Extends: MWF.CMSFC$Component,
  8. Implements: [Options, Events],
  9. options: {
  10. "style": "default",
  11. "propertyPath": "/x_component_cms_FormDesigner/Module/Tab/tab.html",
  12. "actions": [
  13. {
  14. "name": "move",
  15. "icon": "move1.png",
  16. "event": "mousedown",
  17. "action": "move",
  18. "title": MWF.CMSFD.LP.formAction.move
  19. },
  20. {
  21. "name": "copy",
  22. "icon": "copy1.png",
  23. "event": "mousedown",
  24. "action": "copy",
  25. "title": MWF.CMSFD.LP.formAction.copy
  26. },
  27. {
  28. "name": "add",
  29. "icon": "add.png",
  30. "event": "click",
  31. "action": "addPage",
  32. "title": MWF.CMSFD.LP.formAction.add
  33. },
  34. {
  35. "name": "delete",
  36. "icon": "delete1.png",
  37. "event": "click",
  38. "action": "delete",
  39. "title": MWF.CMSFD.LP.formAction["delete"]
  40. }
  41. ]
  42. },
  43. initialize: function(form, options){
  44. this.setOptions(options);
  45. this.path = "/x_component_cms_FormDesigner/Module/Tab/";
  46. this.cssPath = "/x_component_cms_FormDesigner/Module/Tab/"+this.options.style+"/css.wcss";
  47. this._loadCss();
  48. this.moduleType = "component";
  49. this.moduleName = "tab";
  50. this.form = form;
  51. this.container = null;
  52. this.containerNode = null;
  53. this.containers = [];
  54. this.elements = [];
  55. },
  56. _createMoveNode: function(){
  57. this.moveNode = new Element("div", {
  58. "styles": this.css.moduleNodeMove
  59. }).inject(this.form.container);
  60. var divTab1 = new Element("div", {
  61. "styles": this.css.moduleNodeMove_tab_current
  62. });
  63. var divTab2 = new Element("div", {
  64. "styles": this.css.moduleNodeMove_tab
  65. });
  66. var divContent = new Element("div", {
  67. "styles": this.css.moduleNodeMove_content
  68. });
  69. divTab1.inject(this.moveNode);
  70. divTab2.inject(this.moveNode);
  71. divContent.inject(this.moveNode);
  72. },
  73. _createNode: function(callback){
  74. this.node = new Element("div", {
  75. "id": this.json.id,
  76. "MWFType": "tab",
  77. "styles": this.css.moduleNode,
  78. "events": {
  79. "selectstart": function(e){
  80. e.preventDefault();
  81. }
  82. }
  83. }).inject(this.form.node);
  84. var style = "form"
  85. if (this.form.options.mode=="Mobile") style = "formMobile";
  86. this.tabWidget = new MWF.widget.Tab(this.node, {"style": style});
  87. this._loadPageStyle();
  88. this.tabWidget.load();
  89. var tabNode = new Element("div");
  90. this.tabWidget.addTab(tabNode, "page1", false);
  91. tabNode = new Element("div");
  92. this.tabWidget.addTab(tabNode, "page2", false);
  93. tabNode = new Element("div");
  94. this.tabWidget.addTab(tabNode, "page3", false);
  95. tabNode = new Element("div");
  96. this.tabWidget.addTab(tabNode, "page4", false);
  97. },
  98. _createTabWidget: function(){
  99. var style = "form"
  100. if (this.form.options.mode=="Mobile") style = "formMobile";
  101. this.tabWidget = new MWF.widget.Tab(this.node, {"style": style});
  102. this._setTabWidgetStyles();
  103. this.tabWidget.tabNodeContainer = this.node.getFirst();
  104. this.tabWidget.contentNodeContainer = this.node.getLast();
  105. this.tabWidget.load();
  106. var tmpContentDivs = this.tabWidget.contentNodeContainer.getChildren();
  107. var tmpTabDivs = this.tabWidget.tabNodeContainer.getChildren();
  108. tmpContentDivs.each(function(tmpContentDiv, idx){
  109. var tmpTabDiv = tmpTabDivs[idx];
  110. var tabPage = new MWF.widget.TabPage(tmpContentDiv.getFirst(), "", this.tabWidget, {"isClose": false});
  111. tabPage.contentNodeArea = tmpContentDiv;
  112. if (tmpTabDiv){
  113. tabPage.tabNode = tmpTabDiv;
  114. tabPage.textNode = tmpTabDiv.getFirst();
  115. tabPage.closeNode = tabPage.textNode.getFirst();
  116. }
  117. tabPage.load();
  118. this.tabWidget.pages.push(tabPage);
  119. }.bind(this));
  120. },
  121. _loadPageStyle: function(){
  122. this.json.tabStyles = Object.clone(this.tabWidget.css.tabNode);
  123. this.json.tabTextStyles = Object.clone(this.tabWidget.css.tabTextNode);
  124. this.json.tabCurrentStyles = Object.clone(this.tabWidget.css.tabNodeCurrent);
  125. this.json.tabTextCurrentStyles = Object.clone(this.tabWidget.css.tabTextNodeCurrent);
  126. this._setTabWidgetStyles();
  127. },
  128. _setTabWidgetStyles: function(){
  129. this.tabWidget.css.tabNode = this.json.tabStyles;
  130. this.tabWidget.css.tabTextNode = this.json.tabTextStyles;
  131. this.tabWidget.css.tabNodeCurrent = this.json.tabCurrentStyles;
  132. this.tabWidget.css.tabTextNodeCurrent = this.json.tabTextCurrentStyles;
  133. },
  134. _getElements: function(){
  135. //this.elements.push(this);
  136. if (!this.tabWidget) this._createTabWidget();
  137. this.form.getTemplateData("Tab$Page", function(data){
  138. this.tabWidget.pages.each(function(page){
  139. var tabPage = null;
  140. var json = this.form.getDomjson(page.tabNode);
  141. if (!json){
  142. var moduleData = Object.clone(data);
  143. moduleData.name = page.tabNode.get("text");
  144. tabPage = new MWF.CMSFCTab$Page(this, page);
  145. tabPage.page = page;
  146. tabPage.load(moduleData, page.tabNode, this);
  147. }else{
  148. tabPage = new MWF.CMSFCTab$Page(this, page);
  149. tabPage.page = page;
  150. tabPage.load(json, page.tabNode, this);
  151. }
  152. if (tabPage) this.elements.push(tabPage);
  153. }.bind(this));
  154. }.bind(this));
  155. if (!this.tabWidget.showPage) this.tabWidget.pages[0].showTabIm();
  156. },
  157. _getContainers: function(){
  158. if (!this.tabWidget) this._createTabWidget();
  159. this.form.getTemplateData("Tab$Content", function(data){
  160. this.tabWidget.pages.each(function(page){
  161. var tabContent = null;
  162. var json = this.form.getDomjson(page.contentNode);
  163. if (!json){
  164. var moduleData = Object.clone(data);
  165. tabContent = new MWF.CMSFCTab$Content(this, page);
  166. tabContent.page = page;
  167. tabContent.load(moduleData, page.contentNode, this);
  168. }else{
  169. tabContent = new MWF.CMSFCTab$Content(this, page);
  170. tabContent.page = page;
  171. tabContent.load(json, page.contentNode, this);
  172. }
  173. if (tabContent) this.containers.push(tabContent);
  174. }.bind(this));
  175. }.bind(this));
  176. },
  177. _setEditStyle_custom: function(name){
  178. if (name=="tabStyles"){
  179. this.tabWidget.pages.each(function(page){
  180. if (!page.isShow){
  181. page.tabNode.clearStyles();
  182. page.tabNode.setStyles(this.json.tabStyles);
  183. }
  184. }.bind(this));
  185. this._setTabWidgetStyles();
  186. }
  187. if (name=="tabTextStyles"){
  188. this.tabWidget.pages.each(function(page){
  189. if (!page.isShow){
  190. page.textNode.clearStyles();
  191. page.textNode.setStyles(this.json.tabTextStyles);
  192. }
  193. }.bind(this));
  194. this._setTabWidgetStyles();
  195. }
  196. if (name=="tabCurrentStyles"){
  197. this.tabWidget.pages.each(function(page){
  198. if (page.isShow){
  199. page.tabNode.clearStyles();
  200. page.tabNode.setStyles(this.json.tabCurrentStyles);
  201. }
  202. }.bind(this));
  203. this._setTabWidgetStyles();
  204. }
  205. if (name=="tabTextCurrentStyles"){
  206. this.tabWidget.pages.each(function(page){
  207. if (page.isShow){
  208. page.textNode.clearStyles();
  209. page.textNode.setStyles(this.json.tabTextCurrentStyles);
  210. }
  211. }.bind(this));
  212. this._setTabWidgetStyles();
  213. }
  214. },
  215. addPage: function(){
  216. tabNode = new Element("div");
  217. var page = this.tabWidget.addTab(tabNode, "page", false);
  218. this.form.getTemplateData("Tab$Page", function(data){
  219. var moduleData = Object.clone(data);
  220. moduleData.name = page.tabNode.get("text");
  221. var tabPage = new MWF.CMSFCTab$Page(this, page);
  222. tabPage.load(moduleData, page.tabNode, this);
  223. this.elements.push(tabPage);
  224. }.bind(this));
  225. this.form.getTemplateData("Tab$Content", function(data){
  226. var moduleData = Object.clone(data);
  227. var tabContent = new MWF.CMSFCTab$Content(this, page);
  228. tabContent.load(moduleData, page.contentNode, this);
  229. this.containers.push(tabContent);
  230. }.bind(this));
  231. page.showTabIm();
  232. return page;
  233. },
  234. copyComponentJsonData: function(newNode, pid){
  235. var tabNodeContainer = newNode.getFirst();
  236. var contentNodeContainer = newNode.getLast();
  237. var tmpContentDivs = contentNodeContainer.getChildren();
  238. var tmpTabDivs = tabNodeContainer.getChildren();
  239. tmpContentDivs.each(function(tmpContentDiv, idx){
  240. var newContainerJson = Object.clone(this.containers[idx].json);
  241. var newElementJson = Object.clone(this.elements[idx].json);
  242. var tmpTabDiv = tmpTabDivs[idx];
  243. newContainerJson.id = this.containers[idx]._getNewId(pid);
  244. this.form.json.moduleList[newContainerJson.id] = newContainerJson;
  245. tmpContentDiv.getFirst().set("id", newContainerJson.id);
  246. newElementJson.id = this.elements[idx]._getNewId(pid);
  247. this.form.json.moduleList[newElementJson.id] = newElementJson;
  248. tmpTabDiv.set("id", newElementJson.id);
  249. }.bind(this));
  250. }
  251. });