Widgetmodules.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  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. var wrapDiv = "yes";
  57. dlg.node.getElements(".wrapDiv").each( function (el) {
  58. if( el.get("checked") )wrapDiv = el.get("value");
  59. });
  60. module.appendWidgetModules( widgetid, relativeNode, position, wrapDiv );
  61. this.close();
  62. }
  63. },
  64. {
  65. "text": MWF.APPFD.LP.button.cancel,
  66. "action": function(){
  67. module._clearDragComplete();
  68. this.close();
  69. }
  70. }
  71. ],
  72. "onPostShow": function(){
  73. var td = dlg.node.getElementById("MWFWidgetSelectTd");
  74. this.form.designer.actions.listWidget(this.form.designer.application.id, function(json){
  75. var select = this.widgetSelect = new Element("select").inject(td);
  76. var option = new Element("option", {"text": "none"}).inject(select);
  77. json.data.each(function(widget){
  78. var option = new Element("option", {
  79. "text": widget.name,
  80. "value": widget.id
  81. }).inject(select);
  82. }.bind(this));
  83. }.bind(this));
  84. }.bind(this)
  85. });
  86. dlg.show();
  87. }.bind(this));
  88. },
  89. _dragComplete: function(relativeNode, position){
  90. if (!this.node){
  91. this._createNode(relativeNode, position );
  92. }else{
  93. this._clearDragComplete();
  94. }
  95. },
  96. //_dragMoveComplete: function( relativeNode, position ){
  97. // //this.setStyleTemplate();
  98. //
  99. // if( this.injectNoticeNode )this.injectNoticeNode.destroy();
  100. // //var overflow = this.moveNode.retrieve("overflow");
  101. // //if( overflow ){
  102. // // this.moveNode.setStyle("overflow",overflow);
  103. // // this.moveNode.eliminate("overflow");
  104. // //}
  105. //
  106. // //if (!this.node){
  107. // // this._createNode();
  108. // //}
  109. // //this._resetTreeNode();
  110. //
  111. // //if( relativeNode && position ){
  112. // // this.node.inject( relativeNode, position );
  113. // //}else{
  114. // // this.node.inject(this.copyNode, "before");
  115. // //}
  116. //
  117. // //this._initModule();
  118. //
  119. // //var thisDisplay = this.node.retrieve("thisDisplay");
  120. // //if (thisDisplay){
  121. // // this.node.setStyle("display", thisDisplay);
  122. // //}
  123. //
  124. // this._clearDragComplete();
  125. //
  126. // //this.form.json.moduleList[this.json.id] = this.json;
  127. // //if (this.form.scriptDesigner) this.form.scriptDesigner.createModuleScript(this.json);
  128. //
  129. // //this.selected();
  130. //},
  131. _clearDragComplete : function(){
  132. if( this.injectNoticeNode )this.injectNoticeNode.destroy();
  133. if (this.copyNode) this.copyNode.destroy();
  134. if (this.moveNode) this.moveNode.destroy();
  135. this.moveNode = null;
  136. this.copyNode = null;
  137. this.nextModule = null;
  138. this.form.moveModule = null;
  139. delete this;
  140. },
  141. appendWidgetModules: function( widgetid, relativeNode, position, wrapDiv ){
  142. MWF.Actions.get("x_portal_assemble_designer").getWidget(widgetid, function(json){
  143. var parentModule = this.parentContainer || this.inContainer || this.onDragModule;
  144. this.containerModule = this.page.createModuleImmediately("Div", parentModule, relativeNode || this.copyNode, position || "before", false, false);
  145. this.node = this.containerModule.node;
  146. var data = this.getWidgetData( json.data );
  147. var moduleList = this.page.json.moduleList;
  148. var tmpNode = new Element("div").inject( this.page.container );
  149. tmpNode.set("html", data.html);
  150. var html = tmpNode.getFirst().get("html");
  151. tmpNode.destroy();
  152. this.node.set("html", html );
  153. Object.each(data.json.moduleList, function (moduleJson) {
  154. var oid = moduleJson.id;
  155. var id = moduleJson.id;
  156. var idx = 1;
  157. while (this.page.json.moduleList[id]) {
  158. id = oid + "_" + idx;
  159. idx++;
  160. }
  161. if (oid != id) {
  162. moduleJson.id = id;
  163. var moduleNode = this.node.getElementById(oid);
  164. if (moduleNode) moduleNode.set("id", id);
  165. }
  166. this.page.json.moduleList[moduleJson.id] = moduleJson;
  167. }.bind(this));
  168. if( wrapDiv === "no" ){
  169. this.node.getChildren().each( function (el) {
  170. if( el.get("MWFType") && el.get("id")){
  171. var id = el.get("id");
  172. el.inject( relativeNode || this.copyNode, position || "before" );
  173. }
  174. }.bind(this));
  175. this.page.parseModules( parentModule, parentModule.node);
  176. //this.containerModule.delete();
  177. this.page.selected();
  178. this.containerModule.destroy();
  179. }else{
  180. this.page.parseModules(this.containerModule, this.node);
  181. }
  182. //var copyModuleNode = this.node.getFirst();
  183. //while (copyModuleNode) {
  184. // //copyModuleNode.inject(injectNode, where);
  185. // var copyModuleJson = this.page.getDomjson(copyModuleNode);
  186. // var module = this.page.loadModule(copyModuleJson, copyModuleNode, this.containerModule);
  187. // module._setEditStyle_custom("id");
  188. // module.selected();
  189. // //loadModule: function(json, dom, parent)
  190. //
  191. // copyModuleNode = copyModuleNode.getNext();
  192. //}
  193. this._clearDragComplete();
  194. //this.setCustomStyles();
  195. //this.node.setProperties(this.json.properties);
  196. //this.setNodeEvents();
  197. //if (this.options.mode==="Mobile"){
  198. // if (oldStyleValue) this._setEditStyle("pageStyleType", null, oldStyleValue);
  199. //}
  200. }.bind(this), null, false);
  201. },
  202. getWidgetData: function(data){
  203. var widgetDataStr = null;
  204. if (this.page.options.mode !== "Mobile"){
  205. widgetDataStr = data.data;
  206. }else{
  207. widgetDataStr = data.mobileData;
  208. }
  209. var d = null;
  210. if (widgetDataStr){
  211. d = JSON.decode(MWF.decodeJsonString(widgetDataStr));
  212. d.updateTime = data.updateTime;
  213. }
  214. return d;
  215. }
  216. });