Compare commits

...

6 Commits

Author SHA1 Message Date
0ae117891d Merge branch release/v7.3.0 into master 2023-01-31 08:01:17 +00:00
77cad58384 [oform] Fix field count in case of complex forms 2023-01-27 02:27:31 +05:00
a908a16e95 [oform] Add event to handle undo/redo 2023-01-19 19:59:29 +05:00
72139c5780 Fix bug #60651
Add translation for default role
2023-01-19 18:40:36 +05:00
366f847ba3 Fix bug #60326
Add ability to add date-time content control with form properties
2023-01-13 17:22:39 +03:00
6171e936a3 Hide oform context from public access 2023-01-12 19:04:17 +03:00
7 changed files with 84 additions and 12 deletions

31
api.js
View File

@ -298,10 +298,35 @@ window["AscOForm"] = window.AscOForm = AscOForm;
if (!oLogicDocument.IsSelectionLocked(AscCommon.changestype_Paragraph_Content))
{
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlList);
var oCC = oLogicDocument.AddContentControlDatePicker(oPr, oCommonPr);
let dateTimePr = null;
let formPr = null;
let ccPr = null;
// Пока для совместимости со старым форматом оставляем, чтобы настройки могли приходить по старому (oPr, oCommonPr)
// но в будущем надо перейти на новый вариант contentPr (AscCommon.CContentControlPr)
if (oPr && (oPr instanceof AscCommon.CContentControlPr))
{
dateTimePr = oPr.DateTimePr;
ccPr = oPr;
formPr = oPr.FormPr;
}
else if (oPr && (oPr instanceof AscWord.CSdtDatePickerPr))
{
dateTimePr = oPr;
ccPr = oCommonPr ? oCommonPr : null;
}
var oCC = oLogicDocument.AddContentControlDatePicker(dateTimePr);
if (oCC && oCommonPr)
oCC.SetContentControlPr(oCommonPr);
if (oCC && ccPr)
oCC.SetContentControlPr(ccPr);
if (oCC && formPr)
{
private_ApplyFormPr(oCC, formPr, oLogicDocument);
private_CheckFormKey(oCC, oLogicDocument);
}
oLogicDocument.Recalculate();
oLogicDocument.UpdateInterface();

View File

@ -170,7 +170,22 @@
if (this.Roles.length <= 1
&& this.Roles[roleIndex].getUserMaster() === this.Format.getDefaultUserMaster()
&& -1 === delegateIndex)
{
let defaultUserMaster = this.Format.getDefaultUserMaster();
if (!defaultUserMaster.isDefaultUserProps())
{
if (!this.startAction(AscDFH.historydescription_OForm_RemoveRole))
return false;
defaultUserMaster.initDefaultUser();
this.NeedRedraw = true;
this.endAction();
return true;
}
return false;
}
if (!this.startAction(AscDFH.historydescription_OForm_RemoveRole))
return false;
@ -445,7 +460,7 @@
{
if (!this.NeedUpdateRoles)
return;
this.NeedUpdateRoles = false;
this.Roles = [];
@ -537,6 +552,11 @@
this.updateRoles();
this.checkRedraw();
};
OForm.prototype.onUndoRedo = function()
{
this.updateRoles();
this.checkRedraw();
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Private area
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -202,7 +202,7 @@
if (mainContent)
{
let xmlParserContext = new AscCommon.XmlParserContext();
xmlParserContext.xmlReaderContext = xmlContext;
xmlParserContext.setOformContext(xmlContext);
let reader = new AscCommon.StaxParser(mainContent, mainPart, xmlParserContext);
this.fromXml(reader);
}
@ -320,7 +320,7 @@
{
if ("r:id" === reader.GetName())
{
let xmlReaderContext = reader.GetContext().xmlReaderContext;
let xmlReaderContext = reader.GetOformContext();
let rId = reader.GetValueDecodeXml();
let rel = reader.rels.getRelationship(rId);
let userMaster = xmlReaderContext.getUserMaster(rel.getFullPath());

View File

@ -149,8 +149,11 @@
let fields = [];
for (let fieldIndex = 0, fieldCount = this.Fields.length; fieldIndex < fieldCount; ++fieldIndex)
{
if (this.Fields[fieldIndex].isUseInDocument())
if (this.Fields[fieldIndex].isUseInDocument()
&& this.Fields[fieldIndex].isMainField())
{
fields.push(this.Fields[fieldIndex]);
}
}
if (this.Users.length && this.Parent)
@ -160,8 +163,12 @@
let userFields = this.Parent.getAllFieldsByUserMaster(this.Users[index]);
for (let fieldIndex = 0, fieldCount = userFields.length; fieldIndex < fieldCount; ++fieldIndex)
{
if (-1 === fields.indexOf(userFields[fieldIndex]) && userFields[fieldIndex].isUseInDocument())
if (-1 === fields.indexOf(userFields[fieldIndex])
&& userFields[fieldIndex].isUseInDocument()
&& userFields[fieldIndex].isMainField())
{
fields.push(userFields[fieldIndex]);
}
}
}
}
@ -231,7 +238,7 @@
fG.setWeight(reader.GetValueInt());
}
let xmlReaderContext = reader.GetContext().xmlReaderContext;
let xmlReaderContext = reader.GetOformContext();
let depth = reader.GetDepth();
while (reader.ReadNextSiblingNode(depth))
{

View File

@ -178,6 +178,10 @@
&& this.Field.IsUseInDocument()
&& this === this.Field.GetFieldMaster());
};
CFieldMaster.prototype.isMainField = function()
{
return (this.Field && this.Field.IsMainForm());
};
CFieldMaster.prototype.toXml = function(writer)
{
let context = writer.context;
@ -270,7 +274,7 @@
function readUsersFromXml(reader)
{
let xmlReaderContext = reader.GetContext().xmlReaderContext;
let xmlReaderContext = reader.GetOformContext();
let users = [];
let depth = reader.GetDepth();
while (reader.ReadNextSiblingNode(depth))

View File

@ -102,7 +102,7 @@
CUserMaster.prototype.initDefaultUser = function()
{
// TODO: Возможно стоит придумать уникальный id общий для дефолтовой роли
this.setRole("Anyone");
this.setRole(AscCommon.translateManager.getValue("Anyone"));
this.setColor(255, 239, 191);
};
CUserMaster.prototype.compare = function(user)
@ -142,6 +142,18 @@
{
return (0 === this.compare(user));
};
CUserMaster.prototype.isDefaultUserProps = function()
{
let result = false;
let u = this;
AscCommon.ExecuteNoHistory(function()
{
let defaultUser = new CUserMaster();
defaultUser.initDefaultUser();
result = defaultUser.isEqual(u);
});
return result;
};
CUserMaster.prototype.onChange = function()
{
if (!this.Parent)

View File

@ -52,6 +52,10 @@
this.pathToField = {};
this.pathToFieldMaster = {};
}
XmlReaderContext.prototype.getOformContext = function()
{
return this;
};
XmlReaderContext.prototype.getUser = function(path)
{
let user = this.pathToUser[path];
@ -143,7 +147,7 @@
return null;
let xmlParserContext = new AscCommon.XmlParserContext();
xmlParserContext.xmlReaderContext = this;
xmlParserContext.setOformContext(this);
return new AscCommon.StaxParser(partContent, part, xmlParserContext);
};
XmlReaderContext.prototype.getAllByMapAndPath = function(map, path, fromXml)