From 22b94b07f8e41962cd76b8030d49a92f43609e4d Mon Sep 17 00:00:00 2001 From: KirillovIlya Date: Fri, 23 Dec 2022 19:50:04 +0300 Subject: [PATCH] [oform] Fix writing to xml a field master class --- oform/format/FieldMaster.js | 79 +++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 43 deletions(-) diff --git a/oform/format/FieldMaster.js b/oform/format/FieldMaster.js index 890728a..5f9d865 100644 --- a/oform/format/FieldMaster.js +++ b/oform/format/FieldMaster.js @@ -180,55 +180,48 @@ }; CFieldMaster.prototype.toXml = function(writer) { - return; - writer.WriteXmlString(AscCommonWord.g_sXmlHeader); - writer.WriteXmlNodeStart("FieldMaster"); - writer.WriteXmlAttributeString("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); - writer.WriteXmlNullableAttributeString("id", this.FieldId); + let context = writer.context; + + writer.WriteXmlHeader(); + writer.WriteXmlNodeStart("fieldMaster"); + writer.WriteXmlRelationshipsNS(); + if (this.FieldId) + writer.WriteXmlNullableAttributeString("id", this.FieldId); writer.WriteXmlAttributesEnd(); - - writer.WriteXmlNodeStart("Users"); + + writer.WriteXmlNodeStart("users"); writer.WriteXmlAttributesEnd(); - let oContext = writer.context; - let oUserMasterPartMap = oContext.userMasterPartMap; - let oUsersIdMap = {}; - for (let nUser = 0; nUser < this.Users.length; ++nUser) + + for (let index = 0, count = this.Users.length; index < count; ++index) { - let oUser = this.Users[nUser]; - let oPart = oUserMasterPartMap[oUser.Id]; - if (!oPart) - { - oPart = writer.context.part.addPart(AscCommon.openXml.Types.userMaster); - let oUserMemory = new AscCommon.CMemory(); - oUserMemory.context = writer.context; - oPart.part.setDataXml(oUser, oUserMemory); - oUserMasterPartMap[oUser.Id] = oPart; - } - let oNode = new CT_XmlNode(); - let sRId = oContext.part.addRelationship(AscCommon.openXml.Types.userMaster.relationType, oPart.uri); - oNode.attributes["r:id"] = sRId - oUsersIdMap[oUser.Id] = sRId; - oNode.toXml(writer, "User"); + let user = this.Users[index]; + let part = context.getUserMasterPart(user); + if (!part) + continue; + + writer.WriteXmlNodeStart("user"); + writer.WriteXmlNullableAttributeString("r:id", context.getRId(part)); + writer.WriteXmlAttributesEnd(true); } - writer.WriteXmlNodeEnd("Users"); - if (this.SignRequest) + writer.WriteXmlNodeEnd("users"); + + writer.WriteXmlNodeStart("signRequest"); + writer.WriteXmlAttributesEnd(); + + for (let index = 0, count = this.Signers.length; index < count; ++index) { - this.SignRequest.toXml(writer, oUsersIdMap); - } - writer.WriteXmlNodeEnd("FieldMaster"); - - if (writer.context.fileType === Asc.c_oAscFileType.OFORM) - { - if (this.Field) - { - let oPart = writer.context.docPart.part.addPartWithoutRels(AscCommon.openXml.Types.field); - let oMemory = new AscCommon.CMemory(); - oMemory.context = writer.context; - oPart.setDataXml(this.Field, oMemory); - oMemory.Seek(0); - oPart.addRelationship(AscCommon.openXml.Types.fieldMaster.relationType, oContext.part.uri) - } + let user = this.Signers[index]; + let part = context.getUserMasterPart(user); + if (!part) + continue; + + writer.WriteXmlNodeStart("user"); + writer.WriteXmlNullableAttributeString("r:id", context.getRId(part)); + writer.WriteXmlAttributesEnd(true); } + writer.WriteXmlNodeEnd("signRequest"); + + writer.WriteXmlNodeEnd("fieldMaster"); }; CFieldMaster.fromXml = function(reader) {