Merge pull request #1923 from ONLYOFFICE/feature/complex-forms

Feature/complex forms
This commit is contained in:
Julia Radzhabova 2022-08-31 19:02:20 +03:00 committed by GitHub
commit b58e53f3fa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 300 additions and 38 deletions

View file

@ -144,11 +144,12 @@ define([
(lock_type===undefined) && (lock_type = Asc.c_oAscSdtLockType.Unlocked);
var content_locked = lock_type==Asc.c_oAscSdtLockType.SdtContentLocked || lock_type==Asc.c_oAscSdtLockType.ContentLocked;
var arr = [ this.view.btnTextField, this.view.btnComboBox, this.view.btnDropDown, this.view.btnCheckBox,
this.view.btnRadioBox, this.view.btnImageField ];
this.view.btnRadioBox, this.view.btnImageField, this.view.btnEmailField, this.view.btnPhoneField, this.view.btnComplexField ];
Common.Utils.lockControls(Common.enumLock.paragraphLock, paragraph_locked, {array: arr});
Common.Utils.lockControls(Common.enumLock.headerLock, header_locked, {array: arr});
Common.Utils.lockControls(Common.enumLock.controlPlain, control_plain, {array: arr});
Common.Utils.lockControls(Common.enumLock.contentLock, content_locked, {array: arr});
Common.Utils.lockControls(Common.enumLock.complexForm, in_control && !!control_props && !!control_props.get_ComplexFormPr(), {array: [this.view.btnComplexField, this.view.btnImageField]});
},
onChangeSpecialFormsGlobalSettings: function() {
@ -166,7 +167,7 @@ define([
}
},
onControlsSelect: function(type) {
onControlsSelect: function(type, options) {
if (!(this.toolbar.mode && this.toolbar.mode.canFeatureContentControl && this.toolbar.mode.canFeatureForms)) return;
var oPr,
@ -182,7 +183,15 @@ define([
this.api.asc_AddContentControlList(type == 'combobox', oPr, oFormPr);
else if (type == 'text') {
oPr = new AscCommon.CSdtTextFormPr();
if (options) {
if (options.reg)
oPr.put_RegExpFormat(options.reg);
else if (options.mask)
oPr.put_MaskFormat(options.mask);
}
this.api.asc_AddContentControlTextForm(oPr, oFormPr);
} else if (type == 'complex') {
this.api.asc_AddComplexForm();
}
var me = this;

View file

@ -1971,6 +1971,10 @@ define([
config.msg = this.errorNoTOC;
break;
case Asc.c_oAscError.ID.TextFormWrongFormat:
config.msg = this.errorTextFormWrongFormat;
break;
default:
config.msg = (typeof id == 'string') ? id : this.errorDefaultMessage.replace('%1', id);
break;
@ -3252,7 +3256,8 @@ define([
errorEmptyTOC: 'Start creating a table of contents by applying a heading style from the Styles gallery to the selected text.',
errorNoTOC: 'There\'s no table of contents to update. You can insert one from the References tab.',
textRequestMacros: 'A macro makes a request to URL. Do you want to allow the request to the %1?',
textRememberMacros: 'Remember my choice for all macros'
textRememberMacros: 'Remember my choice for all macros',
errorTextFormWrongFormat: 'The value entered does not match the format of the field.'
}
})(), DE.Controllers.Main || {}))
});

View file

@ -28,18 +28,37 @@
<div id="form-txt-pholder"></div>
</td>
</tr>
<tr>
<tr class="form-not-in-complex">
<td class="padding-small">
<label class="input-label"><%= scope.textTag %></label>
<div id="form-txt-tag"></div>
</td>
</tr>
<tr>
<td class="padding-large">
<td class="padding-small">
<label class="input-label"><%= scope.textTip %></label>
<div id="form-txt-help"></div>
</td>
</tr>
<tr class="form-textfield">
<td class="padding-small">
<label class="input-label"><%= scope.textFormat %></label>
<div id="form-combo-format" style="width: 100%;"></div>
</td>
</tr>
<tr class="form-textfield-mask">
<td class="padding-small">
<div id="form-txt-mask"></div>
</td>
</tr>
<tr class="form-textfield">
<td class="padding-small">
<label class="input-label"><%= scope.textFormatSymbols %></label>
<div id="form-txt-format-symbols"></div>
</td>
</tr>
</table>
<table cols="2">
<tr class="form-list">
<td colspan="2" class="padding-small">
<label class="input-label"><%= scope.textValue %></label>
@ -47,7 +66,7 @@
</tr>
<tr class="form-list" style="vertical-align: top;">
<td class="padding-small">
<div id="form-txt-new-value" style="margin-right: 5px;"></div>
<div id="form-txt-new-value" style="width:164px; margin-right: 5px;"></div>
</td>
<td class="padding-small">
<div id="form-list-add" style="margin-left: 5px;"></div>
@ -55,7 +74,7 @@
</tr>
<tr class="form-list" style="vertical-align: top;">
<td class="padding-large">
<div id="form-list-list" style="width:162px; height: 95px;margin-right: 5px;"></div>
<div id="form-list-list" style="width:164px; height: 95px;margin-right: 5px;"></div>
</td>
<td class="padding-large">
<div id="form-list-delete" style="margin-bottom: 5px;margin-left: 5px;"></div>
@ -63,22 +82,24 @@
<div id="form-list-down" style="margin-left: 5px;"></div>
</td>
</tr>
<tr class="form-not-image">
</table>
<table cols="1">
<tr class="form-fixed">
<td class="padding-small">
<div id="form-chb-fixed"></div>
</td>
</tr>
<tr class="form-textfield">
<tr class="form-textfield-simple">
<td class="padding-small">
<div id="form-chb-autofit"></div>
</td>
</tr>
<tr class="form-textfield">
<tr class="form-textfield-simple">
<td class="padding-small">
<div id="form-chb-multiline"></div>
</td>
</tr>
<tr class="form-textfield">
<tr class="form-textfield-simple">
<td class="padding-small">
<div class="separator horizontal"></div>
</td>
@ -97,16 +118,16 @@
</table>
<table cols="2">
<tr class="form-textfield">
<td colspan=2>
<td colspan=2 style="padding-left: 22px;">
<label class="input-label"><%= scope.textWidth %></label>
</td>
</tr>
<tr class="form-textfield">
<td class="padding-small" width="50%">
<div id="form-combo-width-rule" style="width: 85px;"></div>
<td class="padding-small" style="padding-left: 22px;">
<div id="form-combo-width-rule" style="width: 82px;"></div>
</td>
<td class="padding-small" width="50%">
<div id="form-spin-width"></div>
<td class="padding-small">
<div id="form-spin-width" style="float:right;"></div>
</td>
</tr>
<tr class="form-textfield">
@ -157,7 +178,7 @@
</td>
</tr>
<tr>
<td class="padding-large">
<td class="padding-small">
<label class="input-label" style="margin-top: 4px;"><%= scope.textBackgroundColor %></label>
<div id="form-background-color-btn" style="display: inline-block; float: right;"></div>
</td>
@ -169,12 +190,12 @@
<div class="separator horizontal"></div>
</td>
</tr>
<tr>
<tr class="form-not-in-complex">
<td class="padding-small">
<div id="form-chb-required"></div>
</td>
</tr>
<tr>
<tr class="form-not-in-complex">
<td class="padding-small">
<div class="separator horizontal"></div>
</td>
@ -184,7 +205,7 @@
<div id="form-btn-delete"></div>
</td>
</tr>
<tr>
<tr class="form-not-in-complex">
<td class="padding-small">
<div id="form-btn-lock"></div>
</td>

View file

@ -96,6 +96,8 @@ define([
}));
this.TextOnlySettings = el.find('.form-textfield');
this.TextOnlySimpleSettings = el.find('.form-textfield-simple'); // text field not in complex form
this.TextOnlySettingsMask = el.find('.form-textfield-mask');
this.PlaceholderSettings = el.find('.form-placeholder');
this.KeySettings = el.find('.form-keyfield');
this.KeySettingsTd = this.KeySettings.find('td');
@ -104,7 +106,8 @@ define([
this.ListOnlySettings = el.find('.form-list');
this.ImageOnlySettings = el.find('.form-image');
this.ConnectedSettings = el.find('.form-connected');
this.NotImageSettings = el.find('.form-not-image');
this.FixedSettings = el.find('.form-fixed');
this.NotInComplexSettings = el.find('.form-not-in-complex');
},
createDelayedElements: function() {
@ -173,7 +176,7 @@ define([
this.textareaHelp = new Common.UI.TextareaField({
el : $markup.findById('#form-txt-help'),
style : 'width: 100%; height: 60px;',
style : 'width: 100%; height: 36px;',
value : '',
dataHint : '1',
dataHintDirection: 'left',
@ -223,7 +226,7 @@ define([
this.cmbWidthRule = new Common.UI.ComboBox({
el: $markup.findById('#form-combo-width-rule'),
cls: 'input-group-nr',
menuStyle: 'min-width: 85px;',
menuStyle: 'min-width: 82px;',
editable: false,
data: this._arrWidthRule,
dataHint: '1',
@ -236,7 +239,7 @@ define([
this.spnWidth = new Common.UI.MetricSpinner({
el: $markup.findById('#form-spin-width'),
step: .1,
width: 85,
width: 82,
defaultUnit : "cm",
value: '',
allowAuto: false,
@ -500,6 +503,60 @@ define([
yValue = this.sldrPreviewPositionY.getValue();
this.imagePositionLabel.text(xValue + ',' + yValue);
this.cmbFormat = new Common.UI.ComboBox({
el: $markup.findById('#form-combo-format'),
cls: 'input-group-nr',
menuStyle: 'min-width: 100%;',
editable: false,
data: [{ displayValue: this.textNone, value: Asc.TextFormFormatType.None },
{ displayValue: this.textDigits, value: Asc.TextFormFormatType.Digit },
{ displayValue: this.textLetters, value: Asc.TextFormFormatType.Letter },
{ displayValue: this.textMask, value: Asc.TextFormFormatType.Mask },
{ displayValue: this.textReg, value: Asc.TextFormFormatType.RegExp }],
dataHint: '1',
dataHintDirection: 'bottom',
dataHintOffset: 'big'
});
this.lockedControls.push(this.cmbFormat);
this.cmbFormat.setValue(Asc.TextFormFormatType.None);
this.cmbFormat.on('selected', this.onFormatSelect.bind(this));
this.txtMask = new Common.UI.InputField({
el : $markup.findById('#form-txt-mask'),
allowBlank : true,
validateOnChange: false,
validateOnBlur: false,
style : 'width: 100%;',
value : '',
dataHint : '1',
dataHintDirection: 'left',
dataHintOffset: 'small'
});
this.lockedControls.push(this.txtMask);
this.txtMask.on('changed:after', this.onMaskChanged.bind(this));
this.txtMask.on('inputleave', function(){ me.fireEvent('editcomplete', me);});
this.txtMask.cmpEl.on('focus', 'input.form-control', function() {
setTimeout(function(){me.txtMask._input && me.txtMask._input.select();}, 1);
});
this.txtFormatSymbols = new Common.UI.InputField({
el : $markup.findById('#form-txt-format-symbols'),
allowBlank : true,
validateOnChange: false,
validateOnBlur: false,
style : 'width: 100%;',
value : '',
dataHint : '1',
dataHintDirection: 'left',
dataHintOffset: 'small'
});
this.lockedControls.push(this.txtFormatSymbols);
this.txtFormatSymbols.on('changed:after', this.onFormatSymbolsChanged.bind(this));
this.txtFormatSymbols.on('inputleave', function(){ me.fireEvent('editcomplete', me);});
this.txtFormatSymbols.cmpEl.on('focus', 'input.form-control', function() {
setTimeout(function(){me.txtFormatSymbols._input && me.txtFormatSymbols._input.select();}, 1);
});
this.updateMetricUnit();
this.UpdateThemeColors();
},
@ -562,7 +619,7 @@ define([
onChMaxCharsChanged: function(field, newValue, oldValue, eOpts){
var checked = (field.getValue()=='checked');
this.spnMaxChars.setDisabled(!checked || this._state.DisabledControls);
this.spnMaxChars.setDisabled(!checked || this._state.FormatType===Asc.TextFormFormatType.Mask || this._state.DisabledControls);
if (!checked) {
this.chComb.setValue(false, true);
this.spnWidth.setDisabled(true);
@ -594,7 +651,7 @@ define([
var checked = (field.getValue()=='checked');
if (checked) {
this.chMaxChars.setValue(true, true);
this.spnMaxChars.setDisabled(false || this._state.DisabledControls);
this.spnMaxChars.setDisabled(false || this._state.FormatType===Asc.TextFormFormatType.Mask || this._state.DisabledControls);
}
this.cmbWidthRule.setDisabled(!checked || this._state.Fixed || this._state.DisabledControls);
this.spnWidth.setDisabled(!checked || this._state.WidthRule===Asc.CombFormWidthRule.Auto || this._state.DisabledControls);
@ -878,6 +935,63 @@ define([
}
},
onFormatSelect: function(combo, record) {
if (this.api && !this._noApply) {
var props = this._originalProps || new AscCommon.CContentControlPr();
var formTextPr = this._originalTextFormProps || new AscCommon.CSdtTextFormPr();
switch (record.value) {
case Asc.TextFormFormatType.None:
formTextPr.put_NoneFormat();
break;
case Asc.TextFormFormatType.Digit:
formTextPr.put_DigitFormat();
break;
case Asc.TextFormFormatType.Letter:
formTextPr.put_LetterFormat();
break;
case Asc.TextFormFormatType.Mask:
this.txtMask.setValue('*');
formTextPr.put_MaskFormat(this.txtMask.getValue());
break;
case Asc.TextFormFormatType.RegExp:
this.txtMask.setValue('.');
formTextPr.put_RegExpFormat(this.txtMask.getValue());
break;
}
props.put_TextFormPr(formTextPr);
this.api.asc_SetContentControlProperties(props, this.internalId);
this.fireEvent('editcomplete', this);
}
},
onMaskChanged: function(input, newValue, oldValue, e) {
if (this.api && !this._noApply && (newValue!==oldValue)) {
var props = this._originalProps || new AscCommon.CContentControlPr();
var formTextPr = this._originalTextFormProps || new AscCommon.CSdtTextFormPr();
if (this.cmbFormat.getValue()===Asc.TextFormFormatType.Mask) {
formTextPr.put_MaskFormat(newValue);
} else if (this.cmbFormat.getValue()===Asc.TextFormFormatType.RegExp) {
formTextPr.put_RegExpFormat(newValue);
}
props.put_TextFormPr(formTextPr);
this.api.asc_SetContentControlProperties(props, this.internalId);
if (!e.relatedTarget || (e.relatedTarget.localName != 'input' && e.relatedTarget.localName != 'textarea') || !/form-control/.test(e.relatedTarget.className))
this.fireEvent('editcomplete', this);
}
},
onFormatSymbolsChanged: function(input, newValue, oldValue, e) {
if (this.api && !this._noApply && (newValue!==oldValue)) {
var props = this._originalProps || new AscCommon.CContentControlPr();
var formTextPr = this._originalTextFormProps || new AscCommon.CSdtTextFormPr();
formTextPr.put_FormatSymbols(newValue);
props.put_TextFormPr(formTextPr);
this.api.asc_SetContentControlProperties(props, this.internalId);
if (!e.relatedTarget || (e.relatedTarget.localName != 'input' && e.relatedTarget.localName != 'textarea') || !/form-control/.test(e.relatedTarget.className))
this.fireEvent('editcomplete', this);
}
},
ChangeSettings: function(props) {
if (this._initSettings)
this.createDelayedElements();
@ -1131,6 +1245,7 @@ define([
}
var formTextPr = props.get_TextFormPr();
var needUpdateTextControls = !!formTextPr && !this._originalTextFormProps || !formTextPr && !!this._originalTextFormProps;
if (formTextPr) {
this._originalTextFormProps = formTextPr;
@ -1176,22 +1291,50 @@ define([
this._state.Width=val;
}
val = formTextPr.get_FormatType();
if ( this._state.FormatType!==val ) {
this.cmbFormat.setValue((val !== null && val !== undefined) ? val : Asc.TextFormFormatType.None);
this._state.FormatType=val;
}
if ( this._state.FormatType===Asc.TextFormFormatType.Mask || this._state.FormatType===Asc.TextFormFormatType.RegExp ) {
val = (this._state.FormatType===Asc.TextFormFormatType.Mask) ? formTextPr.get_MaskFormat() : formTextPr.get_RegExpFormat();
this.txtMask.setValue((val !== null && val !== undefined) ? val : '');
this._state.Mask=val;
}
val = formTextPr.get_FormatSymbols();
if ( this._state.FormatSymbols!==val ) {
this.txtFormatSymbols.setValue((val !== null && val !== undefined) ? val : '');
this._state.FormatSymbols=val;
}
val = formTextPr.get_MaxCharacters();
this.chMaxChars.setValue(val && val>=0);
this.spnMaxChars.setDisabled(!val || val<0 || this._state.DisabledControls);
this.chMaxChars.setDisabled(this._state.FormatType===Asc.TextFormFormatType.Mask || this._state.DisabledControls);
this.spnMaxChars.setDisabled(!val || val<0 || this._state.FormatType===Asc.TextFormFormatType.Mask || this._state.DisabledControls);
if ( (val===undefined || this._state.MaxChars===undefined)&&(this._state.MaxChars!==val) || Math.abs(this._state.MaxChars-val)>0.1) {
this.spnMaxChars.setValue(val && val>=0 ? val : 10, true);
this._state.MaxChars=val;
}
}
} else
this._originalTextFormProps = null;
var isComplex = !!props.get_ComplexFormPr(), // is complex form
isSimpleInsideComplex = !!this.api.asc_GetCurrentComplexForm() && !isComplex;
if (isComplex) {
this.labelFormName.text(this.textComplex);
}
this._noApply = false;
this.KeySettingsTd.toggleClass('padding-small', !connected);
this.ConnectedSettings.toggleClass('hidden', !connected);
if (this.type !== type || type == Asc.c_oAscContentControlSpecificType.CheckBox)
this.showHideControls(type, formTextPr, specProps);
this.TextOnlySettingsMask.toggleClass('hidden', !(type === Asc.c_oAscContentControlSpecificType.None && !!formTextPr) || !(this._state.FormatType===Asc.TextFormFormatType.Mask || this._state.FormatType===Asc.TextFormFormatType.RegExp));
if (this.type !== type || this.isSimpleInsideComplex !== isSimpleInsideComplex || needUpdateTextControls || type == Asc.c_oAscContentControlSpecificType.CheckBox)
this.showHideControls(type, formTextPr, specProps, isSimpleInsideComplex);
this.type = type;
this._state.isSimpleInsideComplex = isSimpleInsideComplex;
this._state.internalId = this.internalId;
}
@ -1274,7 +1417,8 @@ define([
item.setDisabled(me._state.DisabledControls);
});
}
this.spnMaxChars.setDisabled(this.chMaxChars.getValue()!=='checked' || this._state.DisabledControls);
this.chMaxChars.setDisabled(this._state.FormatType===Asc.TextFormFormatType.Mask || this._state.DisabledControls);
this.spnMaxChars.setDisabled(this.chMaxChars.getValue()!=='checked' || this._state.FormatType===Asc.TextFormFormatType.Mask || this._state.DisabledControls);
this.cmbWidthRule.setDisabled(!this._state.Comb || this._state.Fixed || this._state.DisabledControls);
this.spnWidth.setDisabled(!this._state.Comb || this._state.WidthRule===Asc.CombFormWidthRule.Auto || this._state.DisabledControls);
this.chMulti.setDisabled(!this._state.Fixed || this._state.Comb || this._state.DisabledControls);
@ -1287,7 +1431,7 @@ define([
this.btnLockForm.setDisabled(disable);
},
showHideControls: function(type, textProps, specProps) {
showHideControls: function(type, textProps, specProps, isSimpleInsideComplex) {
var textOnly = false,
checkboxOnly = false,
radioboxOnly = false,
@ -1306,14 +1450,16 @@ define([
textOnly = !!textProps;
}
this.TextOnlySettings.toggleClass('hidden', !textOnly);
this.TextOnlySimpleSettings.toggleClass('hidden', !textOnly || isSimpleInsideComplex);
this.ListOnlySettings.toggleClass('hidden', !listOnly);
this.ImageOnlySettings.toggleClass('hidden', !imageOnly);
this.RadioOnlySettings.toggleClass('hidden', !radioboxOnly);
this.KeySettings.toggleClass('hidden', radioboxOnly);
this.KeySettings.toggleClass('hidden', radioboxOnly || isSimpleInsideComplex);
var value = (checkboxOnly || radioboxOnly);
this.PlaceholderSettings.toggleClass('hidden', value);
this.CheckOnlySettings.toggleClass('hidden', !value);
this.NotImageSettings.toggleClass('hidden', imageOnly);
this.FixedSettings.toggleClass('hidden', imageOnly || isSimpleInsideComplex);
this.NotInComplexSettings.toggleClass('hidden', isSimpleInsideComplex);
},
onSelectItem: function(listView, itemView, record) {
@ -1425,7 +1571,15 @@ define([
textTag: 'Tag',
textAuto: 'Auto',
textAtLeast: 'At least',
textExact: 'Exactly'
textExact: 'Exactly',
textFormat: 'Format',
textMask: 'Arbitrary Mask',
textReg: 'Regular Expression',
textFormatSymbols: 'Allowed Symbols',
textLetters: 'Letters',
textDigits: 'Digits',
textNone: 'None',
textComplex: 'Complex Field'
}, DE.Views.FormSettings || {}));
});

View file

@ -56,6 +56,9 @@ define([
'<span class="btn-slot text x-huge" id="slot-btn-form-checkbox"></span>' +
'<span class="btn-slot text x-huge" id="slot-btn-form-radiobox"></span>' +
'<span class="btn-slot text x-huge" id="slot-btn-form-image"></span>' +
'<span class="btn-slot text x-huge" id="slot-btn-form-email"></span>' +
'<span class="btn-slot text x-huge" id="slot-btn-form-phone"></span>' +
'<span class="btn-slot text x-huge" id="slot-btn-form-complex"></span>' +
'</div>' +
'<div class="separator long forms" style="display: none;"></div>' +
'<div class="group no-group-mask inner-elset small" style="display: none;">' +
@ -99,6 +102,15 @@ define([
this.btnImageField && this.btnImageField.on('click', function (b, e) {
me.fireEvent('forms:insert', ['picture']);
});
this.btnComplexField && this.btnComplexField.on('click', function (b, e) {
me.fireEvent('forms:insert', ['complex']);
});
this.btnEmailField && this.btnEmailField.on('click', function (b, e) {
me.fireEvent('forms:insert', ['text', {reg: "\\S+@\\S+\\.\\S+"}]);
});
this.btnPhoneField && this.btnPhoneField.on('click', function (b, e) {
me.fireEvent('forms:insert', ['text', {mask: "(999)999-9999"}]);
});
this.btnViewForm && this.btnViewForm.on('click', function (b, e) {
me.fireEvent('forms:mode', [b.pressed]);
});
@ -209,7 +221,7 @@ define([
this.btnImageField = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
iconCls: 'toolbar__icon btn-insertimage',
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.complexForm, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
caption: this.capBtnImage,
dataHint: '1',
dataHintDirection: 'bottom',
@ -217,6 +229,39 @@ define([
});
this.paragraphControls.push(this.btnImageField);
this.btnEmailField = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
iconCls: 'toolbar__icon btn-email',
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
caption: this.capBtnEmail,
dataHint: '1',
dataHintDirection: 'bottom',
dataHintOffset: 'small'
});
this.paragraphControls.push(this.btnEmailField);
this.btnPhoneField = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
iconCls: 'toolbar__icon btn-phone',
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
caption: this.capBtnPhone,
dataHint: '1',
dataHintDirection: 'bottom',
dataHintOffset: 'small'
});
this.paragraphControls.push(this.btnPhoneField);
this.btnComplexField = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
iconCls: 'toolbar__icon сomplex-field',
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.complexForm, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
caption: this.capBtnComplex,
dataHint: '1',
dataHintDirection: 'bottom',
dataHintOffset: 'small'
});
this.paragraphControls.push(this.btnComplexField);
this.btnViewForm = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
iconCls: 'toolbar__icon btn-sheet-view',
@ -349,6 +394,9 @@ define([
me.btnRadioBox.updateHint(me.tipRadioBox);
me.btnImageField.updateHint(me.tipImageField);
me.btnViewForm.updateHint(me.tipViewForm);
me.btnEmailField.updateHint(me.tipEmailField);
me.btnPhoneField.updateHint(me.tipPhoneField);
me.btnComplexField.updateHint(me.tipComplexField);
} else {
me.btnClear.updateHint(me.textClearFields);
}
@ -381,6 +429,9 @@ define([
this.btnViewForm.render($host.find('#slot-btn-form-view'));
this.btnClearFields.render($host.find('#slot-form-clear-fields'));
this.btnHighlight.render($host.find('#slot-form-highlight'));
this.btnEmailField.render($host.find('#slot-btn-form-email'));
this.btnPhoneField.render($host.find('#slot-btn-form-phone'));
this.btnComplexField.render($host.find('#slot-btn-form-complex'));
var separator_forms = $host.find('.separator.forms');
separator_forms.prev('.group').show();
@ -443,7 +494,13 @@ define([
textCreateForm: 'Add fields and create a fillable OFORM document',
textGotIt: 'Got it',
capBtnDownloadForm: 'Download as oform',
tipDownloadForm: 'Download a file as a fillable OFORM document'
tipDownloadForm: 'Download a file as a fillable OFORM document',
capBtnEmail: 'Email Address',
capBtnPhone: 'Phone Number',
capBtnComplex: 'Complex Field',
tipEmailField: 'Insert email address',
tipPhoneField: 'Insert phone number',
tipComplexField: 'Insert complex field'
}
}()), DE.Views.FormsTab || {}));
});

View file

@ -115,7 +115,8 @@ define([
cantArrange: 'cant-arrange',
noObjectSelected: 'no-object',
lostConnect: 'disconnect',
disableOnStart: 'on-start'
disableOnStart: 'on-start',
complexForm: 'complex-form'
};
for (var key in enumLock) {
if (enumLock.hasOwnProperty(key)) {

View file

@ -606,6 +606,7 @@
"DE.Controllers.Main.errorUserDrop": "The file cannot be accessed right now.",
"DE.Controllers.Main.errorUsersExceed": "The number of users allowed by the pricing plan was exceeded",
"DE.Controllers.Main.errorViewerDisconnect": "Connection is lost. You can still view the document,<br>but will not be able to download or print it until the connection is restored and page is reloaded.",
"DE.Controllers.Main.errorTextFormWrongFormat": "The value entered does not match the format of the field.",
"DE.Controllers.Main.leavePageText": "You have unsaved changes in this document. Click \"Stay on This Page\", then \"Save\" to save them. Click \"Leave This Page\" to discard all the unsaved changes.",
"DE.Controllers.Main.leavePageTextOnClose": "All unsaved changes in this document will be lost.<br> Click \"Cancel\" then \"Save\" to save them. Click \"OK\" to discard all the unsaved changes.",
"DE.Controllers.Main.loadFontsTextText": "Loading data...",
@ -1880,6 +1881,14 @@
"DE.Views.FormSettings.textUnlock": "Unlock",
"DE.Views.FormSettings.textValue": "Value Options",
"DE.Views.FormSettings.textWidth": "Cell width",
"DE.Views.FormSettings.textFormat": "Format",
"DE.Views.FormSettings.textMask": "Arbitrary Mask",
"DE.Views.FormSettings.textReg": "Regular Expression",
"DE.Views.FormSettings.textFormatSymbols": "Allowed Symbols",
"DE.Views.FormSettings.textLetters": "Letters",
"DE.Views.FormSettings.textDigits": "Digits",
"DE.Views.FormSettings.textNone": "None",
"DE.Views.FormSettings.textComplex": "Complex Field",
"DE.Views.FormsTab.capBtnCheckBox": "Checkbox",
"DE.Views.FormsTab.capBtnComboBox": "Combo Box",
"DE.Views.FormsTab.capBtnDownloadForm": "Download as oform",
@ -1913,6 +1922,12 @@
"DE.Views.FormsTab.tipTextField": "Insert text field",
"DE.Views.FormsTab.tipViewForm": "View form",
"DE.Views.FormsTab.txtUntitled": "Untitled",
"DE.Views.FormsTab.capBtnEmail": "Email Address",
"DE.Views.FormsTab.capBtnPhone": "Phone Number",
"DE.Views.FormsTab.capBtnComplex": "Complex Field",
"DE.Views.FormsTab.tipEmailField": "Insert email address",
"DE.Views.FormsTab.tipPhoneField": "Insert phone number",
"DE.Views.FormsTab.tipComplexField": "Insert complex field",
"DE.Views.HeaderFooterSettings.textBottomCenter": "Bottom center",
"DE.Views.HeaderFooterSettings.textBottomLeft": "Bottom left",
"DE.Views.HeaderFooterSettings.textBottomPage": "Bottom of Page",

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 931 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 832 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B