MWF.xDesktop.requireApp("process.Xform", "$Module", null, false); MWF.xApplication.process.Xform.OfficeOnline = MWF.APPOfficeOnline = new Class({ Extends: MWF.APP$Module, isActive: false, options:{ "moduleEvents": ["queryLoad","beforeOpen", "afterOpen", "afterSave" ] }, initialize: function(node, json, form, options){ this.node = $(node); this.node.store("module", this); this.json = json; this.form = form; this.documentId = ""; this.mode = "write"; this.appToken = "x_processplatform_assemble_surface"; this.workId = this.form.businessData.work.id; }, _loadUserInterface: function(){ this.node.empty(); this.node.setStyles({ "min-height": "800px" }); }, _afterLoaded: function(){ this.fireEvent("queryLoad"); if(!layout.serviceAddressList["x_officeonline_assemble_control"]){ this.node.set("html","

"+MWF.xApplication.process.Xform.LP.officeonline.noInstall+"

"); return false; } if (this.isReadonly()){ this.mode = "view"; }else{ if (this.json.readScript && this.json.readScript.code){ var flag = this.form.Macro.exec(this.json.readScript.code, this); if (flag){ this.mode = "view"; } } } if(this.mode !== "read" && this.json.allowUpload){ this.createUpload(); } this.action = o2.Actions.load("x_officeonline_assemble_control"); if (!this.json.isNotLoadNow){ this.data = this.getData(); if(this.data.documentId === ""){ if (this.json.officeType === "other" && this.json.templateType === "script"){ this.json.template = this.form.Macro.exec(this.json.templeteScript.code, this); } this[this.json.officeType === "other"&&this.json.template !== ""? "createDocumentByTemplate":"createDocument"](function (){ this.loadDocument(); }.bind(this)); }else { this.documentId = this.data.documentId; this.loadDocument(); } } }, createDocument : function (callback){ var data = { "fileName" : MWF.xApplication.process.Xform.LP.officeonline.filetext + "." + this.json.officeType, "fileType" : this.json.officeType, "appToken" : this.appToken, "workId" : this.workId, "site" : "filetext" }; this.action.OnlineAction.createForO2(data, function( json ){ this.documentId = json.data.fileId; this.setData(); if (callback) callback(); }.bind(this),null, false ); }, createDocumentByTemplate : function (callback){ this.action.OnlineAction.getInfo(this.json.template).then(function(json) { var data = { "fileName": MWF.xApplication.process.Xform.LP.officeonline.filetext + "." + json.data.extension, "fileType": json.data.extension, "appToken" : this.appToken, "workId" : this.workId, "site" : "filetext", "tempId": this.json.template }; this.action.OnlineAction.createForO2(data, function( json ){ this.documentId = json.data.fileId; this.setData(); if (callback) callback(); }.bind(this),null, false ); }.bind(this)) }, createUpload : function (){ this.uploadNode = new Element("div",{"style":"margin:10px;"}).inject(this.node); var uploadBtn = new Element("button",{"text":MWF.xApplication.process.Xform.LP.ofdview.upload,"style":"margin-left: 15px; color: rgb(255, 255, 255); cursor: pointer; height: 26px; line-height: 26px; padding: 0px 10px; min-width: 40px; background-color: rgb(74, 144, 226); border: 1px solid rgb(82, 139, 204); border-radius: 15px;"}).inject(this.uploadNode); uploadBtn.addEvent("click",function (){ o2.require("o2.widget.Upload", null, false); var upload = new o2.widget.Upload(this.content, { "action": o2.Actions.get(this.appToken).action, "method": "uploadAttachment", "accept" : ".docx,.xlsx,.pptx,.pdf", "parameter": { "id": this.workId }, "data":{ "site": "filetext" }, "onCompleted": function(data){ o2.Actions.load(this.appToken).AttachmentAction.delete(this.documentId,function( json ){ }.bind(this)); this.documentId = data.id; this.reload(); }.bind(this) }); upload.load(); }.bind(this)); }, reload : function (){ this.setData(); this.node.empty(); this.createUpload(); this.loadDocument(); }, loadDocument: function () { this.loadApi(function () { this.getEditor(function (){ this.loadEditor(); }.bind(this)); }.bind(this)); }, loadApi : function (callback){ this.officeAPI = { "pdf" : { "view" : "/wv/wordviewerframe.aspx?PdfMode=1", "write" : "/wv/wordviewerframe.aspx?PdfMode=1" }, "docx" : { "view" : "/wv/wordviewerframe.aspx?1=1", "write" : "/we/wordeditorframe.aspx?1=1" }, "doc" : { "view" : "/wv/wordviewerframe.aspx?1=1", "write" : "/we/wordeditorframe.aspx?1=1" }, "xlsx" : { "view" : "/x/_layouts/xlviewerinternal.aspx?ui=zh-CN&rs=zh-CN", "write" : "/x/_layouts/xlviewerinternal.aspx?edit=1" }, "xls" : { "view" : "/x/_layouts/xlviewerinternal.aspx?ui=zh-CN&rs=zh-CN", "write" : "/x/_layouts/xlviewerinternal.aspx?edit=1" }, "pptx" : { "view" : "/p/PowerPointFrame.aspx?PowerPointView=ReadingView", "write" : "/p/PowerPointFrame.aspx?PowerPointView=EditView" }, "ppt" : { "view" : "/p/PowerPointFrame.aspx?PowerPointView=ReadingView", "write" : "/p/PowerPointFrame.aspx?PowerPointView=EditView" } }; this.action.ConfigAction.getCallBackUrl().then(function (json){ this.WOPISrc = json.data.value; if(this.WOPISrc === ""){ this.WOPISrc = o2.Actions.getHost( "x_officeonline_assemble_control" ); } if (callback) callback(); }.bind(this)); }, getEditor: function (callback) { var action = o2.Actions.load(this.appToken); action.AttachmentAction.getOnlineInfo(this.documentId, function( json ){ this.document = json.data; this.fileName = this.document.name; var extension = this.document.extension; var WOPISrc = this.WOPISrc +"/x_officeonline_assemble_control/jaxrs/wopi/files/" + this.documentId + "?mode=" + this.mode; console.log(WOPISrc); WOPISrc = WOPISrc + "&appToken=" + this.appToken; this.action.ConfigAction.getOfficeOnlineUrl().then(function (json){ console.log(json) this.officeOnlineUrl = json.data.value; this.fileUrl = this.officeOnlineUrl + this.officeAPI[extension][this.mode] + "&WOPISrc=" + encodeURIComponent(WOPISrc); console.log(WOPISrc); console.log(this.fileUrl ); if (callback) callback(); }.bind(this)); }.bind(this),null,false); }, loadEditor: function () { this.fireEvent("beforeOpen"); this.officeNode = new Element("div#_" + this.documentId,{"style":"height:100%;overflow:hidden"}).inject(this.node); var form = new Element("form",{"target" : "office_frame_"+this.documentId,"action":this.fileUrl,"type":"hidden","method":"post"}).inject(this.officeNode); new Element("input",{"name":"access_token","value":layout.session.token,"type":"hidden"}).inject(form); var iframe = new Element("iframe#office_frame_"+this.documentId,{"name":"office_frame_"+this.documentId}).inject(this.officeNode); // iframe.set("src",this.fileUrl); iframe.set("scrolling","no"); iframe.set("frameborder",0); iframe.setStyles({ "height" : "95%", "width" : "100%" }); form.submit(); }, hide: function(){ this.node.hide(); }, show: function(){ this.node.show(); }, isEmpty : function(){ var data = this.getData(); if(data.documentId === ""){ return true; }else { return false; } }, getData: function(){ var data = { "documentId" : "" } if(this.form.businessData.data[this.json.id]){ data = this.form.businessData.data[this.json.id] } if(!data.documentId) data.documentId = ""; return data; }, setData: function() { var data = { "documentId": this.documentId, "appToken": this.appToken } this.data = data; this._setBusinessData(data); var jsonData = {} jsonData[this.json.id] = data; o2.Actions.load(this.appToken).DataAction.updateWithJob(this.form.businessData.work.job, jsonData, function (json) { data = json.data; }) } });