mirror of
https://github.com/ONLYOFFICE/sdkjs-forms.git
synced 2026-03-31 10:23:35 +08:00
[de] Add XmlReaderContext to xmlParserContext; Add oform opening from bin; For bug 60341
This commit is contained in:
@ -64,19 +64,19 @@
|
||||
{
|
||||
return this.Format;
|
||||
};
|
||||
OForm.prototype.fromZip = function(zip)
|
||||
OForm.prototype.fromZip = function(zip, opt_sdtPrWithFieldPath)
|
||||
{
|
||||
let xmlPkg = new AscOForm.XmlPackage(zip);
|
||||
xmlPkg.setContext(new AscOForm.XmlReaderContext(xmlPkg));
|
||||
this.Format.fromPkg(xmlPkg);
|
||||
this.Format.fromPkg(xmlPkg, opt_sdtPrWithFieldPath);
|
||||
};
|
||||
OForm.prototype.toZip = function(zip)
|
||||
OForm.prototype.toZip = function(zip, opt_fieldMastersPartMap)
|
||||
{
|
||||
let writer = new AscCommon.CMemory();
|
||||
let xmlPkg = new AscOForm.XmlPackage(zip, writer);
|
||||
xmlPkg.setContext(new AscOForm.XmlWriterContext(xmlPkg));
|
||||
writer.context = xmlPkg.getContext();
|
||||
this.Format.toPkg(xmlPkg);
|
||||
this.Format.toPkg(xmlPkg, opt_fieldMastersPartMap);
|
||||
|
||||
// Наш XmlPackage работает в общей папке, а нам нужно запихнуть в zip подпапку oform
|
||||
zip.getPaths().forEach(function(path)
|
||||
|
||||
@ -194,14 +194,16 @@
|
||||
|
||||
return this.FieldGroups[index];
|
||||
};
|
||||
CDocument.prototype.fromPkg = function(xmlPkg)
|
||||
CDocument.prototype.fromPkg = function(xmlPkg, opt_sdtPrWithFieldPath)
|
||||
{
|
||||
let xmlContext = xmlPkg.getContext();
|
||||
let mainPart = xmlPkg.getMainPart();
|
||||
let mainContent = mainPart ? mainPart.getDocumentContent() : null;
|
||||
if (mainContent)
|
||||
{
|
||||
let reader = new AscCommon.StaxParser(mainContent, mainPart, xmlContext);
|
||||
let xmlParserContext = new AscCommon.XmlParserContext();
|
||||
xmlParserContext.xmlReaderContext = xmlContext;
|
||||
let reader = new AscCommon.StaxParser(mainContent, mainPart, xmlParserContext);
|
||||
this.fromXml(reader);
|
||||
}
|
||||
|
||||
@ -218,8 +220,19 @@
|
||||
{
|
||||
document.addFieldMaster(fieldMaster);
|
||||
});
|
||||
//todo unite with XmlParserContext.prototype.assignFieldsToSdt
|
||||
if (opt_sdtPrWithFieldPath) {
|
||||
for (let nSdt = 0; nSdt < opt_sdtPrWithFieldPath.length; ++nSdt) {
|
||||
let oPair = opt_sdtPrWithFieldPath[nSdt];
|
||||
// let oFieldMaster = xmlContext.pathToFieldMaster[oPair.target];
|
||||
let oFieldMaster = xmlContext.getFieldMaster(oPair.target);
|
||||
if (oFieldMaster && oPair.sdt.SetFieldMaster) {
|
||||
oPair.sdt.SetFieldMaster(oFieldMaster);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
CDocument.prototype.toPkg = function(xmlPkg)
|
||||
CDocument.prototype.toPkg = function(xmlPkg, opt_fieldMastersPartMap)
|
||||
{
|
||||
let xmlContext = xmlPkg.getContext();
|
||||
let xmlWriter = xmlPkg.getXmlWriter();
|
||||
@ -258,7 +271,14 @@
|
||||
xmlWriter.Seek(0);
|
||||
let part = xmlPkg.addPart(AscCommon.openXml.Types.oformFieldMaster);
|
||||
if (part)
|
||||
{
|
||||
part.part.setDataXml(fieldMaster, xmlWriter);
|
||||
if (opt_fieldMastersPartMap)
|
||||
{
|
||||
//todo remove path manipulation
|
||||
opt_fieldMastersPartMap[fieldMaster.Id] = '..'+part.part.uri;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
@ -300,10 +320,10 @@
|
||||
{
|
||||
if ("r:id" === reader.GetName())
|
||||
{
|
||||
let xmlContext = reader.GetContext();
|
||||
let xmlReaderContext = reader.GetContext().xmlReaderContext;
|
||||
let rId = reader.GetValueDecodeXml();
|
||||
let rel = reader.rels.getRelationship(rId);
|
||||
let userMaster = xmlContext.getUserMaster(rel.getFullPath());
|
||||
let userMaster = xmlReaderContext.getUserMaster(rel.getFullPath());
|
||||
if (userMaster)
|
||||
this.setDefaultUser(userMaster);
|
||||
}
|
||||
|
||||
@ -231,7 +231,7 @@
|
||||
fG.setWeight(reader.GetValueInt());
|
||||
}
|
||||
|
||||
let xmlContext = reader.GetContext();
|
||||
let xmlReaderContext = reader.GetContext().xmlReaderContext;
|
||||
let depth = reader.GetDepth();
|
||||
while (reader.ReadNextSiblingNode(depth))
|
||||
{
|
||||
@ -245,7 +245,7 @@
|
||||
{
|
||||
let rId = reader.GetValueDecodeXml();
|
||||
let rel = reader.rels.getRelationship(rId);
|
||||
let userMaster = xmlContext.getUserMaster(rel.getFullPath());
|
||||
let userMaster = xmlReaderContext && xmlReaderContext.getUserMaster(rel.getFullPath());
|
||||
if (userMaster)
|
||||
fG.addUser(userMaster);
|
||||
}
|
||||
@ -260,7 +260,7 @@
|
||||
{
|
||||
let rId = reader.GetValueDecodeXml();
|
||||
let rel = reader.rels.getRelationship(rId);
|
||||
let fieldMaster = xmlContext.getFieldMaster(rel.getFullPath());
|
||||
let fieldMaster = xmlReaderContext && xmlReaderContext.getFieldMaster(rel.getFullPath());
|
||||
if (fieldMaster)
|
||||
fG.addField(fieldMaster);
|
||||
}
|
||||
|
||||
@ -270,7 +270,7 @@
|
||||
|
||||
function readUsersFromXml(reader)
|
||||
{
|
||||
let xmlContext = reader.GetContext();
|
||||
let xmlReaderContext = reader.GetContext().xmlReaderContext;
|
||||
let users = [];
|
||||
let depth = reader.GetDepth();
|
||||
while (reader.ReadNextSiblingNode(depth))
|
||||
@ -283,7 +283,7 @@
|
||||
{
|
||||
let rId = reader.GetValueDecodeXml();
|
||||
let rel = reader.rels.getRelationship(rId);
|
||||
let userMaster = xmlContext.getUserMaster(rel.getFullPath());
|
||||
let userMaster = xmlReaderContext && xmlReaderContext.getUserMaster(rel.getFullPath());
|
||||
if (userMaster)
|
||||
users.push(userMaster);
|
||||
}
|
||||
|
||||
@ -141,8 +141,10 @@
|
||||
let partContent = part.getDocumentContent();
|
||||
if (!partContent)
|
||||
return null;
|
||||
|
||||
return new AscCommon.StaxParser(partContent, part, this);
|
||||
|
||||
let xmlParserContext = new AscCommon.XmlParserContext();
|
||||
xmlParserContext.xmlReaderContext = this;
|
||||
return new AscCommon.StaxParser(partContent, part, xmlParserContext);
|
||||
};
|
||||
XmlReaderContext.prototype.getAllByMapAndPath = function(map, path, fromXml)
|
||||
{
|
||||
@ -164,7 +166,10 @@
|
||||
|
||||
let element = fromXml(reader);
|
||||
if (element)
|
||||
{
|
||||
map[uri] = element;
|
||||
result.push(element);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user