Widgetmodules.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. MWF.xApplication.portal.PageDesigner.Module.Widgetmodules = MWF.PCWidgetmodules = new Class({
  2. Extends: MWF.FC$Module,
  3. Implements: [Options, Events],
  4. options: {
  5. "style": "default"
  6. //"propertyPath": "/x_component_portal_PageDesigner/Module/Radio/radio.html"
  7. },
  8. initialize: function(form, options){
  9. this.setOptions(options);
  10. this.path = "/x_component_portal_PageDesigner/Module/Widgetmodules/";
  11. this.cssPath = "/x_component_portal_PageDesigner/Module/Widgetmodules/"+this.options.style+"/css.wcss";
  12. this._loadCss();
  13. //this.moduleType = "element";
  14. //this.moduleName = "radio";
  15. this.form = form;
  16. this.page = form;
  17. this.container = null;
  18. this.containerNode = null;
  19. },
  20. _createMoveNode: function(){
  21. this.moveNode = new Element("div", {
  22. "styles": this.css.moduleNodeMove,
  23. "events": {
  24. "selectstart": function(){
  25. return false;
  26. }
  27. }
  28. }).inject(this.form.container);
  29. },
  30. _createNode: function(relativeNode, position){
  31. var module = this;
  32. var url = this.path+"widgetSelect.html";
  33. MWF.require("MWF.widget.Dialog", function(){
  34. var size = $(document.body).getSize();
  35. var x = size.x/2-180;
  36. var y = size.y/2-100;
  37. var dlg = new MWF.DL({
  38. "title": "Insert",
  39. "style": "property",
  40. "top": y,
  41. "left": x-40,
  42. "fromTop":size.y/2-65,
  43. "fromLeft": size.x/2,
  44. "width": 360,
  45. "height": 200,
  46. "url": url,
  47. "buttonList": [
  48. {
  49. "text": MWF.APPFD.LP.button.ok,
  50. "action": function(){
  51. var widgetid = module.widgetSelect.options[module.widgetSelect.selectedIndex].value;
  52. if( !widgetid || widgetid==="none" ){
  53. module.page.designer.notice(module.page.designer.lp.notice.selectWidget, "error");
  54. return;
  55. }
  56. module.appendWidgetModules( widgetid, relativeNode, position );
  57. this.close();
  58. }
  59. },
  60. {
  61. "text": MWF.APPFD.LP.button.cancel,
  62. "action": function(){
  63. module._clearDragComplete();
  64. this.close();
  65. }
  66. }
  67. ],
  68. "onPostShow": function(){
  69. var td = dlg.node.getElementById("MWFWidgetSelectTd");
  70. this.form.designer.actions.listWidget(this.form.designer.application.id, function(json){
  71. var select = this.widgetSelect = new Element("select").inject(td);
  72. var option = new Element("option", {"text": "none"}).inject(select);
  73. json.data.each(function(widget){
  74. var option = new Element("option", {
  75. "text": widget.name,
  76. "value": widget.id
  77. }).inject(select);
  78. }.bind(this));
  79. }.bind(this));
  80. }.bind(this)
  81. });
  82. dlg.show();
  83. }.bind(this));
  84. },
  85. _dragComplete: function(relativeNode, position){
  86. if (!this.node){
  87. this._createNode(relativeNode, position );
  88. }else{
  89. this._clearDragComplete();
  90. }
  91. },
  92. //_dragMoveComplete: function( relativeNode, position ){
  93. // //this.setStyleTemplate();
  94. //
  95. // if( this.injectNoticeNode )this.injectNoticeNode.destroy();
  96. // //var overflow = this.moveNode.retrieve("overflow");
  97. // //if( overflow ){
  98. // // this.moveNode.setStyle("overflow",overflow);
  99. // // this.moveNode.eliminate("overflow");
  100. // //}
  101. //
  102. // //if (!this.node){
  103. // // this._createNode();
  104. // //}
  105. // //this._resetTreeNode();
  106. //
  107. // //if( relativeNode && position ){
  108. // // this.node.inject( relativeNode, position );
  109. // //}else{
  110. // // this.node.inject(this.copyNode, "before");
  111. // //}
  112. //
  113. // //this._initModule();
  114. //
  115. // //var thisDisplay = this.node.retrieve("thisDisplay");
  116. // //if (thisDisplay){
  117. // // this.node.setStyle("display", thisDisplay);
  118. // //}
  119. //
  120. // this._clearDragComplete();
  121. //
  122. // //this.form.json.moduleList[this.json.id] = this.json;
  123. // //if (this.form.scriptDesigner) this.form.scriptDesigner.createModuleScript(this.json);
  124. //
  125. // //this.selected();
  126. //},
  127. _clearDragComplete : function(){
  128. if( this.injectNoticeNode )this.injectNoticeNode.destroy();
  129. if (this.copyNode) this.copyNode.destroy();
  130. if (this.moveNode) this.moveNode.destroy();
  131. this.moveNode = null;
  132. this.copyNode = null;
  133. this.nextModule = null;
  134. this.form.moveModule = null;
  135. delete this;
  136. },
  137. appendWidgetModules: function( widgetid, relativeNode, position ){
  138. MWF.Actions.get("x_portal_assemble_designer").getWidget(widgetid, function(json){
  139. var parentModule = this.parentContainer || this.inContainer || this.onDragModule;
  140. this.containerModule = this.page.createModuleImmediately("Div", parentModule, relativeNode || this.copyNode, position || "before", false, false);
  141. this.node = this.containerModule.node;
  142. var data = this.getWidgetData( json.data );
  143. var moduleList = this.page.json.moduleList;
  144. var tmpNode = new Element("div").inject( this.page.container );
  145. tmpNode.set("html", data.html);
  146. var html = tmpNode.getFirst().get("html");
  147. tmpNode.destroy();
  148. this.node.set("html", html );
  149. Object.each(data.json.moduleList, function (moduleJson) {
  150. var oid = moduleJson.id;
  151. var id = moduleJson.id;
  152. var idx = 1;
  153. while (this.page.json.moduleList[id]) {
  154. id = oid + "_" + idx;
  155. idx++;
  156. }
  157. if (oid != id) {
  158. moduleJson.id = id;
  159. var moduleNode = this.node.getElementById(oid);
  160. if (moduleNode) moduleNode.set("id", id);
  161. }
  162. this.page.json.moduleList[moduleJson.id] = moduleJson;
  163. }.bind(this));
  164. debugger;
  165. this.page.parseModules(this.containerModule, this.node);
  166. //var copyModuleNode = this.node.getFirst();
  167. //while (copyModuleNode) {
  168. // //copyModuleNode.inject(injectNode, where);
  169. // var copyModuleJson = this.page.getDomjson(copyModuleNode);
  170. // var module = this.page.loadModule(copyModuleJson, copyModuleNode, this.containerModule);
  171. // module._setEditStyle_custom("id");
  172. // module.selected();
  173. // //loadModule: function(json, dom, parent)
  174. //
  175. // copyModuleNode = copyModuleNode.getNext();
  176. //}
  177. this._clearDragComplete();
  178. //this.setCustomStyles();
  179. //this.node.setProperties(this.json.properties);
  180. //this.setNodeEvents();
  181. //if (this.options.mode==="Mobile"){
  182. // if (oldStyleValue) this._setEditStyle("pageStyleType", null, oldStyleValue);
  183. //}
  184. }.bind(this), null, false);
  185. },
  186. getWidgetData: function(data){
  187. var widgetDataStr = null;
  188. if (this.page.options.mode !== "Mobile"){
  189. widgetDataStr = data.data;
  190. }else{
  191. widgetDataStr = data.mobileData;
  192. }
  193. var d = null;
  194. if (widgetDataStr){
  195. d = JSON.decode(MWF.decodeJsonString(widgetDataStr));
  196. d.updateTime = data.updateTime;
  197. }
  198. return d;
  199. }
  200. });