MWF.xApplication.portal.PageDesigner.Module=MWF.xApplication.portal.PageDesigner.Module||{};MWF.require("MWF.widget.Common",null,false);MWF.xApplication.portal.PageDesigner.Module.Page=MWF.PCPage=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default",propertyPath:"/x_component_portal_PageDesigner/Module/Page/page.html",mode:"PC",fields:["Calendar","Checkbox","Datagrid","Datagrid$Title","Datagrid$Data","Htmleditor","Number","Office","Orgfield","Personfield","Radio","Select","Textarea","Textfield"]},initializeBase:function(options){this.setOptions(options);this.path="/x_component_portal_PageDesigner/Module/Page/";this.cssPath="/x_component_portal_PageDesigner/Module/Page/"+this.options.style+"/css.wcss";this._loadCss()},initialize:function(designer,container,options){this.initializeBase(options);this.container=null;this.page=this;this.form=this;this.moduleType="page";this.moduleList=[];this.moduleNodeList=[];this.moduleContainerNodeList=[];this.moduleElementNodeList=[];this.moduleComponentNodeList=[];this.dataTemplate={};this.designer=designer;this.container=container;this.selectedModules=[]},reload:function(data){this.moduleList.each(function(module){if(module.property){module.property.destroy()}}.bind(this));if(this.property)this.property.destroy();this.property=null;this.moduleList=[];this.moduleNodeList=[];this.moduleContainerNodeList=[];this.moduleElementNodeList=[];this.moduleComponentNodeList=[];this.dataTemplate={};this.selectedModules=[];this.container.empty();if(this.treeNode){this.domTree.empty();this.domTree.node.destroy();this.domTree=null;this.treeNode=null}this.currentSelectedModule=null;this.propertyMultiTd=null;if(this.autoSaveTimerID)window.clearInterval(this.autoSaveTimerID);this.load(data)},load:function(data){this.data=data;this.json=data.json;this.html=data.html;this.json.mode=this.options.mode;this.isNewPage=this.json.id?false:true;if(this.isNewPage)this.checkUUID();if(this.designer.application)this.data.json.applicationName=this.designer.application.name;if(this.designer.application)this.data.json.application=this.designer.application.id;this.container.set("html",this.html);this.loadStylesList(function(){var oldStyleValue="";if(!this.json.pageStyleType||!this.stylesList[this.json.pageStyleType])this.json.pageStyleType="blue-simple";if(this.options.mode=="Mobile"){if(this.json.pageStyleType!="defaultMobile"){oldStyleValue=this.json.pageStyleType;this.json.pageStyleType="defaultMobile"}}this.templateStyles=this.stylesList&&this.json.pageStyleType?this.stylesList[this.json.pageStyleType]:null;this.loadDomModules();if(this.json.pageStyleType){if(this.stylesList[this.json.pageStyleType]){if(this.stylesList[this.json.pageStyleType]["page"]){this.setTemplateStyles(this.stylesList[this.json.pageStyleType]["page"])}}}this.setCustomStyles();this.node.setProperties(this.json.properties);this.setNodeEvents();if(this.options.mode=="Mobile"){if(oldStyleValue)this._setEditStyle("pageStyleType",null,oldStyleValue)}this.selected();this.autoSave();this.designer.addEvent("queryClose",function(){if(this.autoSaveTimerID)window.clearInterval(this.autoSaveTimerID)}.bind(this))}.bind(this))},removeStyles:function(from,to){if(this.json[to]){Object.each(from,function(style,key){if(this.json[to][key]&&this.json[to][key]==style){delete this.json[to][key]}}.bind(this))}},copyStyles:function(from,to){if(!this.json[to])this.json[to]={};Object.each(from,function(style,key){if(!this.json[to][key])this.json[to][key]=style}.bind(this))},clearTemplateStyles:function(styles){if(styles){if(styles.styles)this.removeStyles(styles.styles,"styles");if(styles.properties)this.removeStyles(styles.properties,"properties")}},setTemplateStyles:function(styles){if(styles.styles)this.copyStyles(styles.styles,"styles");if(styles.properties)this.copyStyles(styles.properties,"properties")},loadStylesList:function(callback){var stylesUrl="/x_component_portal_PageDesigner/Module/Page/template/"+(this.options.mode=="Mobile"?"styles":"styles")+".json";MWF.getJSON(stylesUrl,{onSuccess:function(responseJSON){this.stylesList=responseJSON;if(callback)callback(this.stylesList)}.bind(this),onRequestFailure:function(){this.stylesList={};if(callback)callback(this.stylesList)}.bind(this),onError:function(){this.stylesList={};if(callback)callback(this.stylesList)}.bind(this)})},autoSave:function(){this.autoSaveCheckNode=this.designer.pageToolbarNode.getElement("#MWFPageAutoSaveCheck");if(this.autoSaveCheckNode){this.autoSaveTimerID=window.setInterval(function(){if(this.autoSaveCheckNode.get("checked")){this.save()}}.bind(this),6e4)}},checkUUID:function(){this.designer.actions.getUUID(function(id){this.json.id=id}.bind(this))},loadDomModules:function(){this.node=this.container.getFirst();this.node.set("id",this.json.id);this.node.setStyles(this.css.pageNode);this.node.store("module",this);var size=this.container.getSize();var y=size.y-2;var x=size.x-2;this.node.setStyle("min-height",""+y+"px");this.node.setStyle("min-width",""+x+"px");this.designer.addEvent("resize",function(){var size=this.container.getSize();var y=size.y-2;var x=size.x-2;this.node.setStyle("min-height",""+y+"px");this.node.setStyle("min-width",""+x+"px")}.bind(this));this.loadDomTree()},loadDomTree:function(){MWF.require("MWF.widget.Tree",function(){this.domTree=new MWF.widget.Tree(this.designer.propertyDomArea,{style:"domtree"});this.domTree.load();this.createPageTreeNode();this.parseModules(this,this.node)}.bind(this))},createPageTreeNode:function(){var text="<"+this.json.type+"> "+this.json.name+" ["+this.options.mode+"] ";var o={expand:true,title:this.json.id,text:"<"+this.json.type+"> "+this.json.name+" ["+this.options.mode+"] ",icon:this.options.mode=="Mobile"?"mobile.png":"pc.png"};o.action=function(){if(this.module)this.module.selected()};this.treeNode=this.domTree.appendChild(o);this.treeNode.setText(text);this.treeNode.module=this},parseModules:function(parent,dom){var tmpDom=null;var subDom=dom.getFirst();while(subDom){if(subDom.get("MWFtype")){var json=this.getDomjson(subDom);if(json)module=this.loadModule(json,subDom,parent)}if(!json)tmpDom=subDom;subDom=subDom.getNext();if(tmpDom){tmpDom.destroy();tmpDom=null}}},getDomjson:function(dom){var mwfType=dom.get("MWFtype");switch(mwfType){case"page":return this.json;case"":return null;default:var id=dom.get("id");if(id){return this.json.moduleList[id]}else{return null}}},loadModule:function(json,dom,parent){if(json){var module=new MWF["PC"+json.type](this);module.load(json,dom,parent);return module}},setNodeEvents:function(){this.node.addEvent("click",function(e){this.selected()}.bind(this))},createModule:function(className,e){this.getTemplateData(className,function(data){var moduleData=Object.clone(data);var newTool=new MWF["PC"+className](this);newTool.create(moduleData,e)}.bind(this))},getTemplateData:function(className,callback){if(this.dataTemplate[className]){if(callback)callback(this.dataTemplate[className])}else{var templateUrl="/x_component_portal_PageDesigner/Module/"+className+"/template.json";MWF.getJSON(templateUrl,function(responseJSON,responseText){this.dataTemplate[className]=responseJSON;if(callback)callback(responseJSON)}.bind(this))}},selected:function(){if(this.currentSelectedModule){if(this.currentSelectedModule==this){return true}else{this.currentSelectedModule.unSelected()}}if(this.propertyMultiTd){this.propertyMultiTd.hide();this.propertyMultiTd=null}this.unSelectedMulti();this.currentSelectedModule=this;if(this.treeNode){this.treeNode.selectNode()}this.showProperty()},unSelectedMulti:function(){while(this.selectedModules.length){this.selectedModules[0].unSelectedMulti()}if(this.multimoduleActionsArea)this.multimoduleActionsArea.setStyle("display","none")},unSelectAll:function(){},_beginSelectMulti:function(){if(this.currentSelectedModule)this.currentSelectedModule.unSelected();this.unSelectedMulti();this.noSelected=true},_completeSelectMulti:function(){if(this.selectedModules.length<2){this.selectedModules[0].selected()}else{this._showMultiActions()}},createMultimoduleActionsArea:function(){this.multimoduleActionsArea=new Element("div",{styles:{display:"none",position:"absolute","background-color":"#F1F1F1",padding:"1px","padding-right":"0px",border:"1px solid #AAA","box-shadow":"0px 2px 5px #999","z-index":10001}}).inject(this.page.container,"after")},_showMultiActions:function(){if(!this.multimoduleActionsArea)this.createMultimoduleActionsArea();var firstModule=this._getFirstMultiSelectedModule();if(firstModule){var y=firstModule.position.y-25;var x=firstModule.position.x;this.multimoduleActionsArea.setPosition({x:x,y:y});this.multimoduleActionsArea.setStyle("display","block")}},_getFirstMultiSelectedModule:function(){var firstModule=null;this.selectedModules.each(function(module){var position=module.node.getPosition(module.form.node.getOffsetParent());if(!firstModule){firstModule={module:module,position:position}}else{if(position.y "+title+" ["+this.options.mode+"] ")}if(name=="id"){if(!this.json.name)this.treeNode.setText("<"+this.json.type+"> "+this.json.id+" ["+this.options.mode+"] ");this.treeNode.setTitle(this.json.id);this.node.set("id",this.json.id)}if(name=="pageStyleType"){debugger;this.templateStyles=this.stylesList&&this.json.pageStyleType?this.stylesList[this.json.pageStyleType]:null;if(oldValue){var oldTemplateStyles=this.stylesList[oldValue];if(oldTemplateStyles){if(oldTemplateStyles["page"])this.clearTemplateStyles(oldTemplateStyles["page"])}}if(this.templateStyles){if(this.templateStyles["page"])this.setTemplateStyles(this.templateStyles["page"])}this.setAllStyles();this.moduleList.each(function(module){if(oldTemplateStyles){module.clearTemplateStyles(oldTemplateStyles[module.moduleName])}module.setStyleTemplate();module.setAllStyles()}.bind(this))}this._setEditStyle_custom(name,obj,oldValue)},setAllStyles:function(){this.setPropertiesOrStyles("styles");this.setPropertiesOrStyles("properties");this.reloadMaplist()},reloadMaplist:function(){if(this.property)Object.each(this.property.maplists,function(map,name){map.reload(this.json[name])}.bind(this))},_setEditStyle_custom:function(){},saveAsTemplete:function(){},checkModuleId:function(id,type,currentSubform){var fieldConflict=false;var elementConflict=false;if(this.json.moduleList[id]){elementConflict=true;if(this.options.fields.indexOf(type)!=-1||this.options.fields.indexOf(this.json.moduleList[id].type)!=-1){fieldConflict=true}return{fieldConflict:fieldConflict,elementConflict:elementConflict}}return{fieldConflict:fieldConflict,elementConflict:elementConflict}}});