mirror of
https://github.com/ONLYOFFICE/sdkjs-forms.git
synced 2026-03-31 10:23:35 +08:00
Compare commits
8 Commits
v9.2.0.101
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 1c278e5c95 | |||
| c27936c5c8 | |||
| 7178e3065c | |||
| 3fb5b65794 | |||
| c9279dcdd8 | |||
| e53ddb9003 | |||
| 29c2f86cb8 | |||
| d1f67dce0d |
15
api.js
15
api.js
@ -309,7 +309,7 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
oLogicDocument.RemoveTextSelection();
|
||||
if (!oLogicDocument.IsSelectionLocked(AscCommon.changestype_Paragraph_Content))
|
||||
{
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlList, undefined, undefined, isComboBox);
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlList);
|
||||
|
||||
var oCC;
|
||||
if (isComboBox)
|
||||
@ -327,6 +327,7 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
if (oCC && oCommonPr)
|
||||
oCC.SetContentControlPr(oCommonPr);
|
||||
|
||||
oLogicDocument.AddMacroData(AscDFH.historydescription_Document_AddContentControlList, {isComboBox : isComboBox});
|
||||
oLogicDocument.Recalculate();
|
||||
oLogicDocument.UpdateInterface();
|
||||
oLogicDocument.UpdateSelection();
|
||||
@ -344,14 +345,14 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
oLogicDocument.RemoveTextSelection();
|
||||
if (!oLogicDocument.IsSelectionLocked(AscCommon.changestype_Paragraph_Content))
|
||||
{
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlList, undefined, undefined, true);
|
||||
oLogicDocument.StartAction(AscDFH.historydescription_Document_AddContentControlDatePicker, undefined, undefined, true);
|
||||
|
||||
let dateTimePr = null;
|
||||
let formPr = null;
|
||||
let ccPr = null;
|
||||
|
||||
// Пока для совместимости со старым форматом оставляем, чтобы настройки могли приходить по старому (oPr, oCommonPr)
|
||||
// но в будущем надо перейти на новый вариант contentPr (AscCommon.CContentControlPr)
|
||||
// For now, keeping compatibility with the old format so settings can come in the old way (oPr, oCommonPr)
|
||||
// but in the future we need to switch to the new contentPr variant (AscCommon.CContentControlPr)
|
||||
if (oPr && (oPr instanceof AscCommon.CContentControlPr))
|
||||
{
|
||||
dateTimePr = oPr.DateTimePr;
|
||||
@ -540,8 +541,8 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
|| !oForm.IsForm())
|
||||
return;
|
||||
|
||||
// При проверке лока внутри параграфа мы ориентируемся на выделение внутри этого параграфа
|
||||
// поэтому нужно выделить форму
|
||||
// When checking lock inside a paragraph, we rely on the selection within that paragraph
|
||||
// so we need to select the form
|
||||
let state = oLogicDocument.SaveDocumentState();
|
||||
oForm.SelectContentControl();
|
||||
|
||||
@ -633,7 +634,7 @@ window["AscOForm"] = window.AscOForm = AscOForm;
|
||||
else
|
||||
oForm.SetInnerText(sValue);
|
||||
|
||||
// TODO: Надо FullDate попытаться выставить по заданному значение. Сейчас мы всегда сбрасываем на текущую дату
|
||||
// TODO: Need to try setting FullDate to the given value. Currently we always reset to the current date
|
||||
let datePickerPr = oForm.GetDatePickerPr().Copy();
|
||||
datePickerPr.SetFullDate(null);
|
||||
oForm.SetDatePickerPr(datePickerPr);
|
||||
|
||||
@ -53,7 +53,7 @@
|
||||
* @class
|
||||
* @name Api
|
||||
*/
|
||||
var Api = window["Asc"]["asc_docs_api"] || window["Asc"]["spreadsheet_api"];
|
||||
var Api = AscBuilder.Word.Api;
|
||||
|
||||
/**
|
||||
* Common form properties.
|
||||
@ -189,7 +189,7 @@
|
||||
* @returns {ApiTextForm}
|
||||
* @see office-js-api/Examples/Forms/Api/Methods/CreateTextForm.js
|
||||
*/
|
||||
Api.prototype.CreateTextForm = function(formPr)
|
||||
Api.CreateTextForm = function(formPr)
|
||||
{
|
||||
return executeNoFormLockCheck(function()
|
||||
{
|
||||
@ -210,7 +210,7 @@
|
||||
* @returns {ApiCheckBoxForm}
|
||||
* @see office-js-api/Examples/Forms/Api/Methods/CreateCheckBoxForm.js
|
||||
*/
|
||||
Api.prototype.CreateCheckBoxForm = function(formPr)
|
||||
Api.CreateCheckBoxForm = function(formPr)
|
||||
{
|
||||
return executeNoFormLockCheck(function()
|
||||
{
|
||||
@ -285,7 +285,7 @@
|
||||
* @returns {ApiComboBoxForm}
|
||||
* @see office-js-api/Examples/Forms/Api/Methods/CreateComboBoxForm.js
|
||||
*/
|
||||
Api.prototype.CreateComboBoxForm = function(formPr)
|
||||
Api.CreateComboBoxForm = function(formPr)
|
||||
{
|
||||
return executeNoFormLockCheck(function()
|
||||
{
|
||||
@ -355,7 +355,7 @@
|
||||
* @returns {ApiPictureForm}
|
||||
* @see office-js-api/Examples/Forms/Api/Methods/CreatePictureForm.js
|
||||
*/
|
||||
Api.prototype.CreatePictureForm = function(formPr)
|
||||
Api.CreatePictureForm = function(formPr)
|
||||
{
|
||||
return executeNoFormLockCheck(function()
|
||||
{
|
||||
@ -407,7 +407,7 @@
|
||||
* @returns {ApiDateForm}
|
||||
* @see office-js-api/Examples/Forms/Api/Methods/CreateDateForm.js
|
||||
*/
|
||||
Api.prototype.CreateDateForm = function(formPr)
|
||||
Api.CreateDateForm = function(formPr)
|
||||
{
|
||||
return executeNoFormLockCheck(function()
|
||||
{
|
||||
@ -428,7 +428,7 @@
|
||||
* @returns {ApiComplexForm}
|
||||
* @see office-js-api/Examples/Forms/Api/Methods/CreateComplexForm.js
|
||||
*/
|
||||
Api.prototype.CreateComplexForm = function(formPr)
|
||||
Api.CreateComplexForm = function(formPr)
|
||||
{
|
||||
return executeNoFormLockCheck(function()
|
||||
{
|
||||
@ -800,12 +800,12 @@
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Export
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Api.prototype["CreateTextForm"] = Api.prototype.CreateTextForm;
|
||||
Api.prototype["CreatePictureForm"] = Api.prototype.CreatePictureForm;
|
||||
Api.prototype["CreateDateForm"] = Api.prototype.CreateDateForm;
|
||||
Api.prototype["CreateCheckBoxForm"] = Api.prototype.CreateCheckBoxForm;
|
||||
Api.prototype["CreateComboBoxForm"] = Api.prototype.CreateComboBoxForm;
|
||||
Api.prototype["CreateComplexForm"] = Api.prototype.CreateComplexForm;
|
||||
Api["CreateTextForm"] = Api.CreateTextForm;
|
||||
Api["CreatePictureForm"] = Api.CreatePictureForm;
|
||||
Api["CreateDateForm"] = Api.CreateDateForm;
|
||||
Api["CreateCheckBoxForm"] = Api.CreateCheckBoxForm;
|
||||
Api["CreateComboBoxForm"] = Api.CreateComboBoxForm;
|
||||
Api["CreateComplexForm"] = Api.CreateComplexForm;
|
||||
|
||||
ApiDocument.prototype["InsertTextForm"] = ApiDocument.prototype.InsertTextForm;
|
||||
ApiDocument.prototype["GetFormRoles"] = ApiDocument.prototype.GetFormRoles;
|
||||
|
||||
@ -168,6 +168,29 @@
|
||||
|
||||
return "";
|
||||
};
|
||||
/**
|
||||
* Checks whether the specified form has been digitally signed.
|
||||
* @memberof Api
|
||||
* @typeofeditors ["CDE"]
|
||||
* @alias IsFormSigned
|
||||
* @returns {boolean} Returns true if the form is signed, false otherwise.
|
||||
* @since 9.3.0
|
||||
* @see office-js-api/Examples/Plugins/Forms/Api/Methods/IsFormSigned.js
|
||||
*/
|
||||
Api.prototype["pluginMethod_IsFormSigned"] = function()
|
||||
{
|
||||
let signatures = this.signatures;
|
||||
if (!signatures || !Array.isArray(signatures))
|
||||
return false;
|
||||
|
||||
for (let i = 0; i < signatures.length; ++i)
|
||||
{
|
||||
if (signatures[i].isForm)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
})(window);
|
||||
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
(function(window)
|
||||
{
|
||||
/**
|
||||
* Основной класс для работы с форматом oform
|
||||
* Main class for working with the oform format
|
||||
* @param document {AscWord.CDocument}
|
||||
* @constructor
|
||||
*/
|
||||
@ -45,7 +45,7 @@
|
||||
this.Document = document;
|
||||
this.CurrentUser = null;
|
||||
|
||||
// Сейчас у нас роль - это ровно один userMaster и ровно одна группа полей
|
||||
// Currently, a role is exactly one userMaster and exactly one field group
|
||||
this.Roles = [];
|
||||
this.NeedUpdateRoles = true;
|
||||
this.NeedRedraw = true;
|
||||
@ -78,7 +78,7 @@
|
||||
writer.context = xmlPkg.getContext();
|
||||
this.Format.toPkg(xmlPkg, opt_fieldMastersPartMap);
|
||||
|
||||
// Наш XmlPackage работает в общей папке, а нам нужно запихнуть в zip подпапку oform
|
||||
// Our XmlPackage works in the shared folder, but we need to put the oform subfolder into zip
|
||||
zip.getPaths().forEach(function(path)
|
||||
{
|
||||
let fileData = zip.getFile(path);
|
||||
@ -177,7 +177,7 @@
|
||||
|
||||
let delegateIndex = this.getRoleIndex(delegateName);
|
||||
|
||||
// На самом деле можно убрать эту проверку, но тогда мы просто удалим группу по умолчнию и заново её добавим
|
||||
// Actually, we can remove this check, but then we would just delete the default group and add it again
|
||||
if (this.Roles.length <= 1
|
||||
&& this.Roles[roleIndex].getUserMaster() === this.Format.getDefaultUserMaster()
|
||||
&& -1 === delegateIndex)
|
||||
@ -528,7 +528,7 @@
|
||||
let user = fieldGroup.getFirstUser();
|
||||
if (!user)
|
||||
{
|
||||
// TODO: Разобраться с такими группами
|
||||
// TODO: Handle such groups
|
||||
}
|
||||
|
||||
let haveRole = false;
|
||||
@ -543,7 +543,7 @@
|
||||
|
||||
if (haveRole)
|
||||
{
|
||||
// TODO: Разобраться с такими ситуациями
|
||||
// TODO: Handle such situations
|
||||
}
|
||||
|
||||
let weight = fieldGroup.getWeight();
|
||||
@ -569,7 +569,7 @@
|
||||
};
|
||||
OForm.prototype.correctFieldGroups = function()
|
||||
{
|
||||
// Проверяем есть ли хоть одна группа с заданной ролью (где указан userMaster)
|
||||
// Check if there is at least one group with a specified role (where userMaster is set)
|
||||
for (let fgIndex = 0, fgCount = this.Format.getFieldGroupsCount(); fgIndex < fgCount; ++fgIndex)
|
||||
{
|
||||
let fieldGroup = this.Format.getFieldGroup(fgIndex);
|
||||
@ -580,7 +580,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
// Нельзя, чтобы групп не было вообще
|
||||
// There must be at least one group
|
||||
let defaultGroup = new AscOForm.CFieldGroup();
|
||||
defaultGroup.setWeight(this.Format.getMaxWeight() + 1);
|
||||
this.Format.addFieldGroup(defaultGroup);
|
||||
@ -718,8 +718,6 @@
|
||||
if (!logicDocument)
|
||||
return;
|
||||
|
||||
this.onEndAction();
|
||||
|
||||
logicDocument.UpdateInterface();
|
||||
logicDocument.FinalizeAction();
|
||||
};
|
||||
|
||||
@ -35,8 +35,8 @@
|
||||
(function(window)
|
||||
{
|
||||
/**
|
||||
* Класс представляющий роль при заполнении формы. В данный момент роль - это ровно один userMaster
|
||||
* и группа полей связанные с данным userMaster
|
||||
* Class representing a role when filling out a form. Currently, a role is exactly one userMaster
|
||||
* and a field group associated with this userMaster
|
||||
* @param fieldGroup
|
||||
* @param userMaster
|
||||
* @constructor
|
||||
@ -107,7 +107,7 @@
|
||||
};
|
||||
|
||||
/**
|
||||
* Класс для задания настроек роли из интерфейса
|
||||
* Class for setting role configuration from the interface
|
||||
* @constructor
|
||||
*/
|
||||
function CRoleSettings()
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
|
||||
|
||||
/**
|
||||
* Базовый класс для всех форматных классов в oform
|
||||
* Base class for all format classes in oform
|
||||
* @constructor
|
||||
*/
|
||||
function CBaseFormatObject()
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
(function(window)
|
||||
{
|
||||
/**
|
||||
* Основной класс для работы с форматом oform
|
||||
* Main class for working with the oform format
|
||||
* @param oform {AscOForm.OForm}
|
||||
* @constructor
|
||||
* @extends AscOForm.CBaseFormatObject
|
||||
@ -50,7 +50,7 @@
|
||||
this.DefaultUser.initDefaultUser();
|
||||
this.DefaultUser.setParent(this);
|
||||
|
||||
// Форматная часть
|
||||
// Format properties
|
||||
this.Author = null;
|
||||
this.Date = null;
|
||||
this.Description = null;
|
||||
@ -60,7 +60,7 @@
|
||||
this.Final = false;
|
||||
this.FieldGroups = [];
|
||||
|
||||
// Массивы всех имеющихся пользователей и полей
|
||||
// Arrays of all existing users and fields
|
||||
this.Users = [];
|
||||
this.UserMasters = [];
|
||||
this.FieldMasters = [];
|
||||
@ -617,8 +617,8 @@
|
||||
let fieldMaster = form.GetFieldMaster();
|
||||
if (!fieldMaster)
|
||||
{
|
||||
// TODO: Мы не можем здесь генерировать id, т.к. данная функция вызывается на открытии
|
||||
// и тогда у разных клиентов будут разные id. Поэтому, пока лучше вообще такие поля будут без id
|
||||
// TODO: We cannot generate id here because this function is called on document open
|
||||
// and then different clients would have different ids. So for now, it's better to leave such fields without id
|
||||
fieldMaster = new AscOForm.CFieldMaster(false);
|
||||
this.addFieldMaster(fieldMaster);
|
||||
fieldMaster.addUser(this.getDefaultUserMaster());
|
||||
|
||||
@ -155,7 +155,7 @@
|
||||
};
|
||||
CUserMaster.prototype.initDefaultUser = function()
|
||||
{
|
||||
// TODO: Возможно стоит придумать уникальный id общий для дефолтовой роли
|
||||
// TODO: Consider creating a unique id common for the default role
|
||||
this.setRole("Anyone");
|
||||
this.setColor(255, 239, 191);
|
||||
};
|
||||
|
||||
@ -35,8 +35,7 @@
|
||||
(function(window)
|
||||
{
|
||||
/**
|
||||
* Базовое изменение для работы с каким-либо контейнером, в который по ключу-key (string)
|
||||
* добавляют/удаляют значение
|
||||
* Base change for working with a container where values are added/removed by string key
|
||||
* @constructor
|
||||
* @extends {window['AscDFH'].CChangesBase}
|
||||
*/
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
const PATH_FIELD_MASTERS = "/fieldMasters/";
|
||||
|
||||
/**
|
||||
* Класс для работы с ссылками внутри xml структуры во время чтения
|
||||
* Class for working with references inside xml structure during reading
|
||||
* @constructor
|
||||
*/
|
||||
function XmlReaderContext(pkg)
|
||||
@ -184,7 +184,7 @@
|
||||
|
||||
|
||||
/**
|
||||
* Класс для работы с ссылками внутри xml структуры во время записи
|
||||
* Class for working with references inside xml structure during writing
|
||||
* @constructor
|
||||
*/
|
||||
function XmlWriterContext(pkg)
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
(function(window)
|
||||
{
|
||||
/**
|
||||
* Класс для работы с форматом oform в xml
|
||||
* Class for working with the oform format in xml
|
||||
* @constructor
|
||||
* @extends {AscCommon.openXml.OpenXmlPackage}
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user