mirror of
https://github.com/ONLYOFFICE/sdkjs-forms.git
synced 2026-03-31 10:23:35 +08:00
Compare commits
22 Commits
v9.0.3.25
...
fix/bug-77
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e93e32ed4 | |||
| 4c31ee1427 | |||
| 1daac752fa | |||
| 22cbda0f3a | |||
| 8b80309475 | |||
| 72b33b253a | |||
| 7bbcacc622 | |||
| a0bfe66f9c | |||
| db6cd158d0 | |||
| 528997cc88 | |||
| 5e6a7c5867 | |||
| 8b8364fd48 | |||
| bdf97bf2f4 | |||
| 71dc14ae55 | |||
| 0cc7cdc5af | |||
| b8170a57d7 | |||
| 3fd132911e | |||
| 9274d360c0 | |||
| 2d1cac6992 | |||
| cb5cb83eb2 | |||
| e1a98f8f4a | |||
| 58060100c9 |
24
api.js
24
api.js
@ -80,7 +80,7 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
AscFonts.FontPickerByCharacter.getFontBySymbol(nUncheckedSymbol);
|
||||
}
|
||||
|
||||
function private_ApplyPrToCheckBox(oCC)
|
||||
function private_ApplyPrToCheckBox(oCC, checkBoxPr)
|
||||
{
|
||||
if (!oCC)
|
||||
return;
|
||||
@ -94,7 +94,7 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
else
|
||||
private_CheckFormKey(oCC, oLogicDocument);
|
||||
}
|
||||
|
||||
|
||||
if (oCommonPr)
|
||||
oCC.SetContentControlPr(oCommonPr);
|
||||
}
|
||||
@ -122,13 +122,13 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
CheckType : AscCommon.changestype_Paragraph_Content
|
||||
}))
|
||||
{
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlCheckBox);
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlCheckBox, undefined, undefined, true);
|
||||
oLogicDocument.RemoveSelection();
|
||||
|
||||
for (let nIndex = 0, nCount = arrSelectedParagraphs.length; nIndex < nCount; ++nIndex)
|
||||
{
|
||||
let oCC = arrSelectedParagraphs[nIndex].AddCheckBoxToStartPos(oPr);
|
||||
private_ApplyPrToCheckBox(oCC);
|
||||
private_ApplyPrToCheckBox(oCC, oPr);
|
||||
}
|
||||
|
||||
oLogicDocument.LoadDocumentState(oState);
|
||||
@ -146,10 +146,10 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
oLogicDocument.RemoveTextSelection();
|
||||
if (!oLogicDocument.IsSelectionLocked(AscCommon.changestype_Paragraph_Content))
|
||||
{
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlCheckBox);
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlCheckBox, undefined, undefined, true);
|
||||
|
||||
var oCC = oLogicDocument.AddContentControlCheckBox(oPr);
|
||||
private_ApplyPrToCheckBox(oCC);
|
||||
private_ApplyPrToCheckBox(oCC, oPr);
|
||||
|
||||
oLogicDocument.UpdateInterface();
|
||||
oLogicDocument.Recalculate();
|
||||
@ -182,7 +182,7 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
oLogicDocument.RemoveTextSelection();
|
||||
if (!oLogicDocument.IsSelectionLocked(AscCommon.changestype_Paragraph_Content))
|
||||
{
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlPicture);
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlPicture, undefined, undefined, true);
|
||||
|
||||
// 150x32pt for Signature
|
||||
let w = isSignature ? 150 / 72 * 25.4 : undefined;
|
||||
@ -309,7 +309,7 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
oLogicDocument.RemoveTextSelection();
|
||||
if (!oLogicDocument.IsSelectionLocked(AscCommon.changestype_Paragraph_Content))
|
||||
{
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlList);
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlList, undefined, undefined, isComboBox);
|
||||
|
||||
var oCC;
|
||||
if (isComboBox)
|
||||
@ -344,7 +344,7 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
oLogicDocument.RemoveTextSelection();
|
||||
if (!oLogicDocument.IsSelectionLocked(AscCommon.changestype_Paragraph_Content))
|
||||
{
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlList);
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlList, undefined, undefined, true);
|
||||
|
||||
let dateTimePr = null;
|
||||
let formPr = null;
|
||||
@ -464,8 +464,10 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
return null;
|
||||
|
||||
let mainForm = form.GetMainForm();
|
||||
if (!mainForm || !mainForm.IsComplexForm() || mainForm.IsLabeledCheckBox())
|
||||
return null;
|
||||
|
||||
return (mainForm.IsComplexForm() ? mainForm : null);
|
||||
return mainForm;
|
||||
};
|
||||
window['Asc']['asc_docs_api'].prototype['asc_ConvertFormToJson'] = window['Asc']['asc_docs_api'].prototype.asc_ConvertFormToJson = function(form)
|
||||
{
|
||||
@ -669,6 +671,8 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
let formManager = logicDocument.GetFormsManager();
|
||||
let keyGenerator = formManager.GetKeyGenerator();
|
||||
|
||||
form.SetFormRequired(formManager.IsRadioGroupRequired(groupKey));
|
||||
|
||||
let formPr = form.GetFormPr().Copy();
|
||||
if (!formPr)
|
||||
return;
|
||||
|
||||
@ -175,7 +175,6 @@
|
||||
|
||||
let fields = fieldGroup.getAllFields();
|
||||
|
||||
|
||||
let delegateIndex = this.getRoleIndex(delegateName);
|
||||
|
||||
// На самом деле можно убрать эту проверку, но тогда мы просто удалим группу по умолчнию и заново её добавим
|
||||
@ -188,14 +187,14 @@
|
||||
{
|
||||
if (!this.startAction(AscDFH.historydescription_OForm_RemoveRole))
|
||||
return false;
|
||||
|
||||
|
||||
defaultUserMaster.initDefaultUser();
|
||||
|
||||
|
||||
this.NeedRedraw = true;
|
||||
this.endAction();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -243,6 +242,38 @@
|
||||
|
||||
delegateFieldGroup.addUser(delegateUserMaster);
|
||||
this.Format.addFieldGroup(delegateFieldGroup);
|
||||
|
||||
if (!this.getDefaultRole() && delegateUserMaster)
|
||||
this.Format.setDefaultUser(delegateUserMaster);
|
||||
}
|
||||
|
||||
if (!this.getDefaultRole())
|
||||
{
|
||||
let delegateUserMaster;
|
||||
if (-1 === delegateIndex || delegateIndex === roleIndex)
|
||||
{
|
||||
this.updateRoles();
|
||||
if (this.Roles.length <= 0)
|
||||
{
|
||||
let defaultGroup = new AscOForm.CFieldGroup();
|
||||
defaultGroup.setWeight(this.Format.getMaxWeight() + 1);
|
||||
this.Format.addFieldGroup(defaultGroup);
|
||||
defaultGroup.addUser(this.Format.getDefaultUserMaster());
|
||||
delegateUserMaster = this.Format.getDefaultUserMaster();
|
||||
delegateUserMaster.initDefaultUser();
|
||||
}
|
||||
else
|
||||
{
|
||||
delegateUserMaster = this.Roles[0].getUserMaster();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
delegateUserMaster = this.Roles[delegateIndex].getUserMaster();
|
||||
}
|
||||
|
||||
if (delegateUserMaster)
|
||||
this.Format.setDefaultUser(delegateUserMaster);
|
||||
}
|
||||
|
||||
this.NeedRedraw = true;
|
||||
@ -658,6 +689,14 @@
|
||||
}
|
||||
return true;
|
||||
};
|
||||
OForm.prototype.isFinal = function()
|
||||
{
|
||||
return this.Format.isFinal();
|
||||
};
|
||||
OForm.prototype.setFinal = function(isFinal)
|
||||
{
|
||||
return this.Format.setFinal(isFinal);
|
||||
};
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Private area
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -684,6 +723,15 @@
|
||||
logicDocument.UpdateInterface();
|
||||
logicDocument.FinalizeAction();
|
||||
};
|
||||
OForm.prototype.sendEvent = function()
|
||||
{
|
||||
let logicDocument = this.getDocument();
|
||||
let api;
|
||||
if (!logicDocument || !(api = logicDocument.GetApi()))
|
||||
return;
|
||||
|
||||
api.sendEvent.apply(api, arguments);
|
||||
};
|
||||
//--------------------------------------------------------export----------------------------------------------------
|
||||
AscOForm.OForm = OForm;
|
||||
//---------------------------------------------interface export-----------------------------------------------------
|
||||
|
||||
@ -57,6 +57,7 @@
|
||||
this.Type = null;
|
||||
this.Application = null;
|
||||
this.DocumentId = null;
|
||||
this.Final = false;
|
||||
this.FieldGroups = [];
|
||||
|
||||
// Массивы всех имеющихся пользователей и полей
|
||||
@ -64,7 +65,7 @@
|
||||
this.UserMasters = [];
|
||||
this.FieldMasters = [];
|
||||
}
|
||||
AscFormat.InitClass(CDocument, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_Document);
|
||||
AscCommon.InitClass(CDocument, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_Document);
|
||||
CDocument.prototype.clear = function()
|
||||
{
|
||||
// TODO: fields?
|
||||
@ -153,6 +154,19 @@
|
||||
{
|
||||
return this.DocumentId;
|
||||
};
|
||||
CDocument.prototype.setFinal = function(isFinal)
|
||||
{
|
||||
if (this.Final === isFinal)
|
||||
return;
|
||||
|
||||
AscCommon.History.Add(new AscDFH.CChangesOFormDocumentFinal(this, this.Final, isFinal));
|
||||
this.Final = isFinal;
|
||||
this.onChangeFinal();
|
||||
};
|
||||
CDocument.prototype.isFinal = function()
|
||||
{
|
||||
return this.Final;
|
||||
};
|
||||
CDocument.prototype.addFieldGroup = function(fieldGroup)
|
||||
{
|
||||
if (-1 !== this.FieldGroups.indexOf(fieldGroup))
|
||||
@ -303,6 +317,9 @@
|
||||
case "description":
|
||||
this.setDescription(reader.GetTextDecodeXml());
|
||||
break;
|
||||
case "final":
|
||||
this.setFinal(reader.GetTextBool());
|
||||
break
|
||||
case "type":
|
||||
this.setType(reader.GetTextDecodeXml());
|
||||
break;
|
||||
@ -357,6 +374,9 @@
|
||||
if (application)
|
||||
writer.WriteXmlNodeWithText("application", application);
|
||||
|
||||
if (this.isFinal())
|
||||
writer.WriteXmlNodeWithText("final", "1");
|
||||
|
||||
let documentId = this.getDocumentId();
|
||||
if (documentId)
|
||||
writer.WriteXmlNodeWithText("id", documentId);
|
||||
@ -625,6 +645,13 @@
|
||||
this.removeFieldMasterByIndex(fieldIndex);
|
||||
}
|
||||
};
|
||||
CDocument.prototype.onChangeFinal = function()
|
||||
{
|
||||
if (!this.OForm)
|
||||
return;
|
||||
|
||||
this.OForm.sendEvent("asc_onOFormChangeFinal", this.isFinal());
|
||||
};
|
||||
|
||||
//--------------------------------------------------------export----------------------------------------------------
|
||||
AscOForm.CDocument = CDocument;
|
||||
|
||||
@ -50,7 +50,7 @@
|
||||
|
||||
this.Parent = null;
|
||||
}
|
||||
AscFormat.InitClass(CFieldGroup, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_FieldGroup);
|
||||
AscCommon.InitClass(CFieldGroup, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_FieldGroup);
|
||||
CFieldGroup.prototype.setParent = function(parent)
|
||||
{
|
||||
if (this.Parent === parent)
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
if (true === generateId)
|
||||
this.setFieldId(AscCommon.CreateGUID());
|
||||
}
|
||||
AscFormat.InitClass(CFieldMaster, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_FieldMaster);
|
||||
AscCommon.InitClass(CFieldMaster, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_FieldMaster);
|
||||
CFieldMaster.prototype.setLogicField = function(logicField)
|
||||
{
|
||||
this.Field = logicField;
|
||||
|
||||
@ -50,7 +50,7 @@
|
||||
if (userMaster)
|
||||
this.setUserMaster(userMaster);
|
||||
}
|
||||
AscFormat.InitClass(CUser, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_User);
|
||||
AscCommon.InitClass(CUser, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_User);
|
||||
CUser.prototype.setUserMaster = function(userMaster)
|
||||
{
|
||||
if (this.UserMaster === userMaster)
|
||||
|
||||
@ -71,7 +71,7 @@
|
||||
|
||||
this.Parent = null;
|
||||
}
|
||||
AscFormat.InitClass(CUserMaster, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_UserMaster);
|
||||
AscCommon.InitClass(CUserMaster, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_UserMaster);
|
||||
CUserMaster.prototype.setParent = function(parent)
|
||||
{
|
||||
if (this.Parent === parent)
|
||||
@ -134,6 +134,10 @@
|
||||
{
|
||||
return this.Role ? this.Role : "";
|
||||
};
|
||||
CUserMaster.prototype.isNoRole = function()
|
||||
{
|
||||
return (this === AscOForm.getNoRole());
|
||||
};
|
||||
CUserMaster.prototype.setColor = function(r, g, b)
|
||||
{
|
||||
let newColor = undefined !== r && null !== r ? new AscWord.CDocumentColor(r, g, b) : undefined;
|
||||
|
||||
@ -45,6 +45,7 @@
|
||||
window['AscDFH'].historyitem_OForm_Document_UserMaster = window['AscDFH'].historyitem_type_OForm_Document | 9;
|
||||
window['AscDFH'].historyitem_OForm_Document_FieldMaster = window['AscDFH'].historyitem_type_OForm_Document | 10;
|
||||
window['AscDFH'].historyitem_OForm_Document_DefaultUser = window['AscDFH'].historyitem_type_OForm_Document | 11;
|
||||
window['AscDFH'].historyitem_OForm_Document_Final = window['AscDFH'].historyitem_type_OForm_Document | 12;
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
@ -325,5 +326,26 @@
|
||||
false
|
||||
);
|
||||
window['AscDFH'].CChangesOFormDocumentDefaultUser = CChangesOFormDocumentDefaultUser;
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {window['AscDFH'].CChangesBaseBoolProperty}
|
||||
*/
|
||||
function CChangesOFormDocumentFinal(Class, Old, New)
|
||||
{
|
||||
window['AscDFH'].CChangesBaseBoolProperty.call(this, Class, Old, New);
|
||||
}
|
||||
window['AscDFH'].InheritPropertyChange(
|
||||
CChangesOFormDocumentFinal,
|
||||
window['AscDFH'].CChangesBaseBoolProperty,
|
||||
window['AscDFH'].historyitem_OForm_Document_Final,
|
||||
function(value)
|
||||
{
|
||||
this.Class.Final = value;
|
||||
this.Class.onChangeFinal();
|
||||
},
|
||||
false
|
||||
);
|
||||
window['AscDFH'].CChangesOFormDocumentFinal = CChangesOFormDocumentFinal;
|
||||
|
||||
})(window);
|
||||
|
||||
43
plugin-events.js
Normal file
43
plugin-events.js
Normal file
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2024
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
|
||||
* street, Riga, Latvia, EU, LV-1050.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Event: onSubmitForm
|
||||
* @event Plugin#onSubmitForm
|
||||
* @memberof Plugin
|
||||
* @typeofeditors ["CDE", "CFE"]
|
||||
* @alias onSubmitForm
|
||||
* @description The function called when the user clicks the "Complete & Submit" button.
|
||||
* @see office-js-api/Examples/Plugins/{Editor}/Plugin/Events/onSubmitForm.js
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
Reference in New Issue
Block a user