diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js index e689381f5c..4764619edc 100644 --- a/apps/api/documents/api.js +++ b/apps/api/documents/api.js @@ -477,7 +477,7 @@ } } - var type = /^(?:(pdf|djvu|xps|oxps))$/.exec(_config.document.fileType); + var type = /^(?:(djvu|xps|oxps))$/.exec(_config.document.fileType); if (type && typeof type[1] === 'string') { _config.editorConfig.canUseHistory = false; } @@ -960,46 +960,53 @@ 'word': 'documenteditor', 'cell': 'spreadsheeteditor', 'slide': 'presentationeditor', - 'pdf': 'pdfeditor' + 'pdf': 'pdfeditor', + 'common': 'common' }, - appType = 'word'; - - if (typeof config.documentType === 'string') { - appType = config.documentType.toLowerCase(); - if (config.type !== 'mobile' && config.type !== 'embedded' && !!config.document && typeof config.document.fileType === 'string') { - var type = /^(?:(pdf|djvu|xps|oxps))$/.exec(config.document.fileType); - if (type && typeof type[1] === 'string') - appType = 'pdf'; - } - } else - if (!!config.document && typeof config.document.fileType === 'string') { - var type = /^(?:(xls|xlsx|ods|csv|xlst|xlsy|gsheet|xlsm|xlt|xltm|xltx|fods|ots|xlsb)|(pps|ppsx|ppt|pptx|odp|pptt|ppty|gslides|pot|potm|potx|ppsm|pptm|fodp|otp)|(pdf|djvu|xps|oxps))$/ - .exec(config.document.fileType); - if (type) { - if (typeof type[1] === 'string') appType = 'cell'; else - if (typeof type[2] === 'string') appType = 'slide'; else - if (typeof type[3] === 'string' && config.type !== 'mobile' && config.type !== 'embedded') appType = 'pdf'; - } + appType = 'word', + type, + fillForms = false, + isForm = false; + if (config.document) { + if (typeof config.document.fileType === 'string') + type = /^(?:(pdf)|(djvu|xps|oxps)|(xls|xlsx|ods|csv|xlst|xlsy|gsheet|xlsm|xlt|xltm|xltx|fods|ots|xlsb)|(pps|ppsx|ppt|pptx|odp|pptt|ppty|gslides|pot|potm|potx|ppsm|pptm|fodp|otp))$/ + .exec(config.document.fileType); + + if (config.document.permissions) + fillForms = (config.document.permissions.fillForms===undefined ? config.document.permissions.edit !== false : config.document.permissions.fillForms) && + config.editorConfig && (config.editorConfig.mode !== 'view'); } - if (appType === 'pdf' && (config.type === 'mobile' || config.type === 'embedded')) { - appType = 'word'; + if (type && typeof type[2] === 'string') { // djvu|xps|oxps + appType = config.type === 'mobile' || config.type === 'embedded' ? 'word' : 'pdf'; + } else if (type && typeof type[1] === 'string') { // pdf - need check + isForm = config.document ? config.document.isForm : undefined; + if (config.type === 'embedded') + appType = fillForms && isForm===undefined ? 'common' : 'word'; + else if (config.type !== 'mobile') + appType = isForm===undefined ? 'common' : isForm ? 'word' : 'pdf'; + } else { + if (typeof config.documentType === 'string') + appType = config.documentType.toLowerCase(); + else { + if (type && typeof type[3] === 'string') appType = 'cell'; else + if (type && typeof type[4] === 'string') appType = 'slide'; + } } + path += appMap[appType]; - path += appMap[appType] + "/"; - const path_type = config.type === "mobile" - ? "mobile" : (config.type === "embedded") - ? "embed" : "main"; + const path_type = config.type === "mobile" ? "mobile" : + config.type === "embedded" ? (fillForms && isForm ? "forms" : "embed") : "main"; + if (appType !== 'common') + path += "/" + path_type; - path += path_type; var index = "/index.html"; - if (config.editorConfig && path_type!=="forms") { + if (config.editorConfig && path_type!=="forms" && appType!=='common') { var customization = config.editorConfig.customization; if ( typeof(customization) == 'object' && ( customization.toolbarNoTabs || - (config.editorConfig.targetApp!=='desktop') && (customization.loaderName || customization.loaderLogo))) { + (config.editorConfig.targetApp!=='desktop') && (customization.loaderName || customization.loaderLogo))) { index = "/index_loader.html"; } else if (config.editorConfig.mode === 'editdiagram' || config.editorConfig.mode === 'editmerge' || config.editorConfig.mode === 'editole') index = "/index_internal.html"; - } path += index; return path; @@ -1036,6 +1043,9 @@ if (config.editorConfig && (config.editorConfig.mode == 'editdiagram' || config.editorConfig.mode == 'editmerge' || config.editorConfig.mode == 'editole')) params += "&internal=true"; + if (config.type) + params += "&type=" + config.type; + if (config.frameEditorId) params += "&frameEditorId=" + config.frameEditorId; @@ -1064,6 +1074,12 @@ if (config.document && config.document.fileType) params += "&fileType=" + config.document.fileType; + if (config.editorConfig) { + var customization = config.editorConfig.customization; + if ( customization && typeof(customization) == 'object' && ( customization.toolbarNoTabs || (config.editorConfig.targetApp!=='desktop') && (customization.loaderName || customization.loaderLogo))) { + params += "&indexPostfix=_loader"; + } + } return params; } diff --git a/apps/common/index.html b/apps/common/index.html new file mode 100644 index 0000000000..0a15bcbaab --- /dev/null +++ b/apps/common/index.html @@ -0,0 +1,62 @@ + + + + ONLYOFFICE Documents + + + + + + + + + + + +
+ + + diff --git a/apps/common/index.html.deploy b/apps/common/index.html.deploy new file mode 100644 index 0000000000..444d04e20e --- /dev/null +++ b/apps/common/index.html.deploy @@ -0,0 +1,62 @@ + + + + ONLYOFFICE Documents + + + + + + + + + + + +
+ + + diff --git a/apps/common/main/lib/view/Header.js b/apps/common/main/lib/view/Header.js index 2152728c54..13b5840449 100644 --- a/apps/common/main/lib/view/Header.js +++ b/apps/common/main/lib/view/Header.js @@ -203,13 +203,13 @@ define([ } else { $panelUsers['hide'](); } - updateDocNamePosition(appConfig); + updateDocNamePosition(); } function onLostEditRights() { _readonlyRights = true; this.btnShare && this.btnShare.setVisible(false); - updateDocNamePosition(appConfig); + updateDocNamePosition(); } function onUsersClick(e) { @@ -223,14 +223,15 @@ define([ } function updateDocNamePosition(config) { + config = config || appConfig; if ( $labelDocName && config) { var $parent = $labelDocName.parent(); - if (!(config.isEdit || isPDFEditor && config.isRestrictedEdit)) { + if (!config.twoLevelHeader) { var _left_width = $parent.position().left, _right_width = $parent.next().outerWidth(); $parent.css('padding-left', _left_width < _right_width ? Math.max(2, _right_width - _left_width) : 2); $parent.css('padding-right', _left_width < _right_width ? 2 : Math.max(2, _left_width - _right_width)); - } else if (!(config.customization && config.customization.compactHeader)) { + } else if (!config.compactHeader) { var _left_width = $parent.position().left, _right_width = $parent.next().outerWidth(), outerWidth = $labelDocName.outerWidth(), @@ -245,7 +246,7 @@ define([ } } - if (!(config.customization && config.customization.toolbarHideFileName) && (!(config.isEdit || isPDFEditor && config.isRestrictedEdit) || config.customization && config.customization.compactHeader)) { + if (!(config.customization && config.customization.toolbarHideFileName) && (!config.twoLevelHeader || config.compactHeader)) { var basis = parseFloat($parent.css('padding-left') || 0) + parseFloat($parent.css('padding-right') || 0) + parseInt($labelDocName.css('min-width') || 50); // 2px - box-shadow config.isCrypted && (basis += 20); $parent.css('flex-basis', Math.ceil(basis) + 'px'); @@ -285,9 +286,8 @@ define([ } function onResize() { - if (appConfig && (appConfig.isEdit || isPDFEditor && appConfig.isRestrictedEdit) && !(appConfig.customization && appConfig.customization.compactHeader)) { - updateDocNamePosition(appConfig); - } + if (appConfig && appConfig.twoLevelHeader && !appConfig.compactHeader) + updateDocNamePosition(); } function onAppShowed(config) { @@ -336,7 +336,7 @@ define([ }); me.btnShare.updateHint(me.tipAccessRights); me.btnShare.setVisible(!_readonlyRights && appConfig && (appConfig.sharingSettingsUrl && appConfig.sharingSettingsUrl.length || appConfig.canRequestSharingSettings)); - updateDocNamePosition(appConfig); + updateDocNamePosition(); } if ( me.logo ) @@ -367,7 +367,7 @@ define([ }); $btnUsers.on('click', onUsersClick.bind(me)); $panelUsers[(appConfig && (editingUsers > 1 && (appConfig.isEdit || appConfig.isRestrictedEdit) || editingUsers > 0 && appConfig.canLiveView)) ? 'show' : 'hide'](); - updateDocNamePosition(appConfig); + updateDocNamePosition(); } if (appConfig.user.guest && appConfig.canRenameAnonymous) { @@ -413,7 +413,7 @@ define([ }); } - if ( !(mode.isEdit || isPDFEditor && mode.isRestrictedEdit) ) { + if ( !appConfig.twoLevelHeader ) { if ( me.btnDownload ) { me.btnDownload.updateHint(me.tipDownload); me.btnDownload.on('click', function (e) { @@ -505,7 +505,7 @@ define([ Common.NotificationCenter.trigger('doc:mode-apply', item.value, true); }); } - if ((appConfig.isEdit || isPDFEditor && appConfig.isRestrictedEdit) && !(appConfig.customization && appConfig.customization.compactHeader)) + if (appConfig.twoLevelHeader && !appConfig.compactHeader) Common.NotificationCenter.on('window:resize', onResize); } @@ -629,7 +629,7 @@ define([ Common.NotificationCenter.on({ 'app:ready': function(mode) {Common.Utils.asyncCall(onAppReady, me, mode);}, 'app:face': function(mode) {Common.Utils.asyncCall(onAppShowed, me, mode);}, - 'tab:visible': function() {Common.Utils.asyncCall(updateDocNamePosition, me, appConfig);}, + 'tab:visible': function() {Common.Utils.asyncCall(updateDocNamePosition, me);}, 'collaboration:sharingdeny': function(mode) {Common.Utils.asyncCall(onLostEditRights, me, mode);} }); Common.NotificationCenter.on('uitheme:changed', this.changeLogo.bind(this)); @@ -706,7 +706,7 @@ define([ $html.find('#slot-btn-favorite').hide(); } - if ( !(config.isEdit || isPDFEditor && config.isRestrictedEdit)) { + if ( !config.twoLevelHeader) { if ( (config.canDownload || config.canDownloadOrigin) && !config.isOffline ) this.btnDownload = createTitleButton('toolbar__icon icon--inverse btn-download', $html.findById('#slot-hbtn-download'), undefined, 'bottom', 'big'); @@ -721,7 +721,7 @@ define([ } me.btnSearch.render($html.find('#slot-btn-search')); - if (!(config.isEdit || isPDFEditor && config.isRestrictedEdit) || config.customization && !!config.customization.compactHeader) { + if (!config.twoLevelHeader || config.compactHeader) { if (config.user.guest && config.canRenameAnonymous) { me.btnUserName = new Common.UI.Button({ el: $html.findById('.slot-btn-user-name'), @@ -823,13 +823,13 @@ define([ if ( config.canCloseEditor ) me.btnClose = createTitleButton('toolbar__icon icon--inverse btn-close', $html.findById('#slot-btn-close'), false, 'left', '10, 10'); - if ( config.canPrint && (config.isEdit || isPDFEditor && config.isRestrictedEdit) ) { + if ( config.canPrint && config.twoLevelHeader ) { me.btnPrint = createTitleButton('toolbar__icon icon--inverse btn-print', $html.findById('#slot-btn-dt-print'), true, undefined, undefined, 'P'); } - if ( config.canQuickPrint && (config.isEdit || isPDFEditor && config.isRestrictedEdit) ) + if ( config.canQuickPrint && config.twoLevelHeader ) me.btnPrintQuick = createTitleButton('toolbar__icon icon--inverse btn-quick-print', $html.findById('#slot-btn-dt-print-quick'), true, undefined, undefined, 'Q'); - if (!isPDFEditor || !config.isForm) + if (!isPDFEditor && !(config.isPDFForm && config.canFillForms && config.isRestrictedEdit) || isPDFEditor && !config.isForm) me.btnSave = createTitleButton('toolbar__icon icon--inverse btn-save', $html.findById('#slot-btn-dt-save'), true, undefined, undefined, 'S'); me.btnUndo = createTitleButton('toolbar__icon icon--inverse btn-undo', $html.findById('#slot-btn-dt-undo'), true, undefined, undefined, 'Z', [Common.enumLock.undoLock, Common.enumLock.fileMenuOpened]); @@ -901,7 +901,7 @@ define([ this.btnGoBack[value ? 'show' : 'hide'](); if (value) this.btnGoBack.updateHint((text && typeof text == 'string') ? text : this.textBack); - updateDocNamePosition(appConfig); + updateDocNamePosition(); return this; }, @@ -914,7 +914,7 @@ define([ this.btnFavorite[value!==undefined && value!==null ? 'show' : 'hide'](); this.btnFavorite.changeIcon(!!value ? {next: 'btn-in-favorite', curr: 'btn-favorite'} : {next: 'btn-favorite', curr: 'btn-in-favorite'}); this.btnFavorite.updateHint(!value ? this.textAddFavorite : this.textRemoveFavorite); - updateDocNamePosition(appConfig); + updateDocNamePosition(); return this; }, diff --git a/apps/common/main/resources/less/asc-mixins.less b/apps/common/main/resources/less/asc-mixins.less index cedc33457b..07d7a9a666 100644 --- a/apps/common/main/resources/less/asc-mixins.less +++ b/apps/common/main/resources/less/asc-mixins.less @@ -844,3 +844,23 @@ // } // } //} + +.header-background-color { + background-color: @header-background-color-ie; + background-color: @header-background-color; + + .pdf-form & { + background-color: @header-background-color-pdf-ie; + background-color: @header-background-color-pdf; + } +} + +.header-border-color { + border-color: @header-background-color-ie !important; + border-color: @header-background-color !important; + + .pdf-form & { + border-color: @header-background-color-pdf-ie !important; + border-color: @header-background-color-pdf !important; + } +} diff --git a/apps/common/main/resources/less/calendar.less b/apps/common/main/resources/less/calendar.less index 97fe8653b2..57e3b47873 100644 --- a/apps/common/main/resources/less/calendar.less +++ b/apps/common/main/resources/less/calendar.less @@ -1,6 +1,3 @@ -@calendar-bg-color: @header-background-color-ie; -@calendar-bg-color: @header-background-color; - .calendar-window { border-radius: 0; box-shadow: none; diff --git a/apps/common/main/resources/less/header.less b/apps/common/main/resources/less/header.less index fd5e028c57..078a0f7035 100644 --- a/apps/common/main/resources/less/header.less +++ b/apps/common/main/resources/less/header.less @@ -403,6 +403,10 @@ background-color: @icon-toolbar-header; color: @toolbar-header-text-on-background-ie; color: @toolbar-header-text-on-background; + .pdf-form & { + color: @toolbar-header-text-on-background-pdf-ie; + color: @toolbar-header-text-on-background-pdf; + } vertical-align: middle; background-size: cover; background-position: center; @@ -517,8 +521,7 @@ } #box-document-title { - background-color: @header-background-color-ie; - background-color: @header-background-color; + .header-background-color(); display: flex; height: 100%; color: @text-toolbar-header-ie; diff --git a/apps/common/main/resources/less/synchronize-tip.less b/apps/common/main/resources/less/synchronize-tip.less index 2300df36c6..5154cda520 100644 --- a/apps/common/main/resources/less/synchronize-tip.less +++ b/apps/common/main/resources/less/synchronize-tip.less @@ -29,13 +29,10 @@ &.theme-color { .asc-synchronizetip { - background-color: @header-background-color-ie; - background-color: @header-background-color; + .header-background-color(); color: @text-toolbar-header-ie; color: @text-toolbar-header; - border-color: @header-background-color-ie; - border-color: @header-background-color; - + .header-border-color(); .close { &:before, &:after { background-color: @text-toolbar-header-ie; @@ -45,14 +42,11 @@ } .tip-arrow:before { - background-color: @header-background-color-ie; - background-color: @header-background-color; - border-color: @header-background-color-ie !important; - border-color: @header-background-color !important; + .header-background-color(); + .header-border-color(); } .tip-arrow:after { - border-color: @header-background-color-ie !important; - border-color: @header-background-color !important; + .header-border-color(); } } diff --git a/apps/common/main/resources/less/toolbar.less b/apps/common/main/resources/less/toolbar.less index 249778a258..8b19f96f98 100644 --- a/apps/common/main/resources/less/toolbar.less +++ b/apps/common/main/resources/less/toolbar.less @@ -38,9 +38,7 @@ align-items: stretch; .extra { - background-color: @header-background-color-ie; - background-color: @header-background-color; - + .header-background-color(); box-shadow: inset 0 @minus-px 0 0 @border-toolbar-active-panel-top; } @@ -60,8 +58,7 @@ .tabs { //flex-grow: 1; - background-color: @header-background-color-ie; - background-color: @header-background-color; + .header-background-color(); position: relative; overflow: hidden; display: flex; @@ -174,6 +171,10 @@ &.left{ box-shadow: 5px 0 20px 5px @header-background-color-ie; box-shadow: 18px calc(@tabs-scroller-height - @scaled-one-px-value) 0 10px @border-toolbar-active-panel-top, 5px 0 20px 5px @header-background-color; + .pdf-form & { + box-shadow: 5px 0 20px 5px @header-background-color-pdf-ie; + box-shadow: 18px calc(@tabs-scroller-height - @scaled-one-px-value) 0 10px @border-toolbar-active-panel-top, 5px 0 20px 5px @header-background-color-pdf; + } &:after { transform: rotate(135deg); @@ -188,6 +189,10 @@ &.right{ box-shadow: -5px 0 20px 5px @header-background-color-ie; box-shadow: -10px calc(@tabs-scroller-height - @scaled-one-px-value) 0 10px @border-toolbar-active-panel-top, -5px 0 20px 5px @header-background-color; + .pdf-form & { + box-shadow: -5px 0 20px 5px @header-background-color-pdf-ie; + box-shadow: -10px calc(@tabs-scroller-height - @scaled-one-px-value) 0 10px @border-toolbar-active-panel-top, -5px 0 20px 5px @header-background-color-pdf; + } &:after { transform: rotate(-45deg); @@ -466,7 +471,7 @@ .toolbar { @underscore_height: 3px; - .tabs, .extra { + .tabs, .box-tabs .extra { background-color: transparent; box-shadow: inset 0 -1px 0 0 @border-regular-control-ie; box-shadow: inset 0 -1px 0 0 @border-regular-control; @@ -652,8 +657,7 @@ &.editor-native-color { .tabs li:after { - border-color: @header-background-color-ie; - border-color: @header-background-color; + .header-border-color(); } } } diff --git a/apps/common/main/resources/less/variables.less b/apps/common/main/resources/less/variables.less index d02a0fef86..2d03274209 100644 --- a/apps/common/main/resources/less/variables.less +++ b/apps/common/main/resources/less/variables.less @@ -40,6 +40,11 @@ @brand-danger: #d9534f; @brand-info: #5bc0de; +@header-background-color-pdf-ie: @toolbar-header-pdf-ie; +@header-background-color-pdf: var(--toolbar-header-pdf); +@toolbar-header-text-on-background-pdf-ie: @text-toolbar-header-on-background-pdf-ie; +@toolbar-header-text-on-background-pdf: var(--text-toolbar-header-on-background-pdf); + // Scaffolding // ------------------------- diff --git a/apps/documenteditor/main/app/controller/DocumentHolder.js b/apps/documenteditor/main/app/controller/DocumentHolder.js index c0fa8ad4a3..dd6d84316f 100644 --- a/apps/documenteditor/main/app/controller/DocumentHolder.js +++ b/apps/documenteditor/main/app/controller/DocumentHolder.js @@ -265,7 +265,7 @@ define([ var me = this, view = me.documentHolder; - if (type=='view') { + if (type==='view') { view.menuViewCopy.on('click', _.bind(me.onCutCopyPaste, me)); view.menuViewPaste.on('click', _.bind(me.onCutCopyPaste, me)); view.menuViewCut.on('click', _.bind(me.onCutCopyPaste, me)); @@ -277,9 +277,17 @@ define([ view.menuSignatureRemove.on('click', _.bind(me.onSignatureClick, me)); view.menuViewPrint.on('click', _.bind(me.onPrintSelection, me)); return; - } else if (type=='pdf') { + } else if (type==='pdf') { view.menuPDFViewCopy.on('click', _.bind(me.onCutCopyPaste, me)); return; + } else if (type==='forms') { + view.menuPDFFormsUndo.on('click', _.bind(me.onUndo, me)); + view.menuPDFFormsRedo.on('click', _.bind(me.onRedo, me)); + view.menuPDFFormsClear.on('click', _.bind(me.onClear, me)); + view.menuPDFFormsCut.on('click', _.bind(me.onCutCopyPaste, me)); + view.menuPDFFormsCopy.on('click', _.bind(me.onCutCopyPaste, me)); + view.menuPDFFormsPaste.on('click', _.bind(me.onCutCopyPaste, me)); + return; } // type == 'edit' @@ -605,12 +613,50 @@ define([ return (!noobject) ? {menu_to_show: menu_to_show, menu_props: menu_props} : null; }, + fillFormsMenuProps: function(selectedElements) { + if (!selectedElements || !_.isArray(selectedElements)) return; + + var documentHolder = this.documentHolder; + if (!documentHolder.formsPDFMenu) + documentHolder.createDelayedElementsPDFForms(); + var menu_props = {}, + menu_to_show = documentHolder.formsPDFMenu, + noobject = true; + for (var i = 0; i ' + '' + '' + + '' + + '' + + '
' + '' + '' + '
' + @@ -393,7 +409,7 @@ define([ cls: 'btn-toolbar x-huge icon-top', iconCls: 'toolbar__icon btn-clear-style', caption: this.textClear, - visible: false, + visible: this.appConfig.isRestrictedEdit && this.appConfig.canFillForms && this.appConfig.isPDFForm, dataHint: '1', dataHintDirection: 'bottom', dataHintOffset: 'small' @@ -404,7 +420,7 @@ define([ iconCls: 'toolbar__icon btn-previous-field', lock: [ _set.previewReviewMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockComments, _set.viewMode], caption: this.capBtnPrev, - visible: false, + visible: this.appConfig.isRestrictedEdit && this.appConfig.canFillForms && this.appConfig.isPDFForm, // disabled: this.appConfig.isEdit && this.appConfig.canFeatureContentControl && this.appConfig.canFeatureForms, // disable only for edit mode dataHint: '1', dataHintDirection: 'bottom', @@ -417,7 +433,7 @@ define([ iconCls: 'toolbar__icon btn-next-field', lock: [ _set.previewReviewMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockComments, _set.viewMode], caption: this.capBtnNext, - visible: false, + visible: this.appConfig.isRestrictedEdit && this.appConfig.canFillForms && this.appConfig.isPDFForm, // disabled: this.appConfig.isEdit && this.appConfig.canFeatureContentControl && this.appConfig.canFeatureForms, // disable only for edit mode, dataHint: '1', dataHintDirection: 'bottom', @@ -429,7 +445,7 @@ define([ this.btnSubmit = new Common.UI.Button({ cls: 'btn-toolbar x-huge icon-top', iconCls: 'toolbar__icon btn-submit-form', - lock: [_set.lostConnect, _set.disableOnStart], + lock: [_set.lostConnect, _set.disableOnStart, _set.requiredNotFilled, _set.submit], caption: this.capBtnSubmit, // disabled: this.appConfig.isEdit && this.appConfig.canFeatureContentControl && this.appConfig.canFeatureForms, // disable only for edit mode, dataHint: '1', @@ -437,13 +453,12 @@ define([ dataHintOffset: 'small' }); !(this.appConfig.isRestrictedEdit && this.appConfig.canFillForms) && this.paragraphControls.push(this.btnSubmit); - } - if (this.appConfig.canDownloadForms) { + } else if (this.appConfig.canDownloadForms) { this.btnSaveForm = new Common.UI.Button({ cls: 'btn-toolbar x-huge icon-top', lock: [_set.lostConnect, _set.disableOnStart], iconCls: 'toolbar__icon btn-save-form', - caption: this.appConfig.canRequestSaveAs || !!this.appConfig.saveAsUrl || this.appConfig.isOffline ? this.capBtnSaveForm : this.capBtnDownloadForm, + caption: this.appConfig.canRequestSaveAs || !!this.appConfig.saveAsUrl ? this.capBtnSaveForm : (this.appConfig.isOffline ? this.capBtnSaveFormDesktop : this.capBtnDownloadForm), // disabled: this.appConfig.isEdit && this.appConfig.canFeatureContentControl && this.appConfig.canFeatureForms, // disable only for edit mode, dataHint: '1', dataHintDirection: 'bottom', @@ -538,9 +553,6 @@ define([ this.$el = $(_.template(template)( {} )); var $host = this.$el; - this.appConfig.canSubmitForms && this.btnSubmit.render($host.find('#slot-btn-form-submit')); - this.appConfig.canDownloadForms && this.btnSaveForm.render($host.find('#slot-btn-form-save')); - if (this.appConfig.isRestrictedEdit && this.appConfig.canFillForms) { } else { this.btnTextField.render($host.find('#slot-btn-form-field')); @@ -565,6 +577,10 @@ define([ this.btnPrevForm.render($host.find('#slot-btn-form-prev')); this.btnNextForm.render($host.find('#slot-btn-form-next')); + this.btnSubmit && this.btnSubmit.render($host.find('#slot-btn-form-submit')); + this.btnSaveForm && this.btnSaveForm.render($host.find('#slot-btn-form-save')); + (this.btnSubmit || this.btnSaveForm) && $host.find('.save-separator').show(); + return this.$el; }, @@ -696,8 +712,8 @@ define([ tipHelpRoles: 'Use the Manage Roles feature to group fields by purpose and assign the responsible team members.', tipSaveFile: 'Click “Save as pdf” to save the form in the format ready for filling.', tipRolesLink: 'Learn more about roles', - tipFieldsLink: 'Learn more about field parameters' - + tipFieldsLink: 'Learn more about field parameters', + capBtnSaveFormDesktop: 'Save as...' } }()), DE.Views.FormsTab || {})); }); \ No newline at end of file diff --git a/apps/documenteditor/main/app/view/Toolbar.js b/apps/documenteditor/main/app/view/Toolbar.js index 46f664b4e9..4166e14e30 100644 --- a/apps/documenteditor/main/app/view/Toolbar.js +++ b/apps/documenteditor/main/app/view/Toolbar.js @@ -2923,7 +2923,7 @@ define([ createSynchTip: function () { this.synchTooltip = new Common.UI.SynchronizeTip({ - extCls: (this.mode.customization && !!this.mode.customization.compactHeader) ? undefined : 'inc-index', + extCls: (this.mode.compactHeader) ? undefined : 'inc-index', placement: this.mode.isDesktopApp ? 'bottom-right' : 'right-bottom', target: this.btnCollabChanges.$el }); diff --git a/apps/documenteditor/main/index.html b/apps/documenteditor/main/index.html index 3f95d647ef..8008cf8a51 100644 --- a/apps/documenteditor/main/index.html +++ b/apps/documenteditor/main/index.html @@ -59,6 +59,11 @@ background: var(--toolbar-header-document, #446995); } + .pdf-form .loadmask > .brendpanel { + background: #AA5252; + background: var(--toolbar-header-pdf, #AA5252); + } + .loadmask > .brendpanel > div { display: flex; align-items: center; @@ -256,10 +261,12 @@ lang = (params["lang"] || 'en').split(/[\-\_]/)[0], hideLogo = params["headerlogo"]==='', logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null, - logoDark = params["headerlogodark"] ? encodeUrlParam(params["headerlogodark"]) : null; + logoDark = params["headerlogodark"] ? encodeUrlParam(params["headerlogodark"]) : null, + isForm = params["isForm"]==='true'; window.frameEditorId = params["frameEditorId"]; window.parentOrigin = params["parentOrigin"]; + window.isPDFForm = isForm; if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent)) { document.write(' @@ -259,6 +266,7 @@ view = params["mode"] == 'view', visible = true; + isForm && document.body.classList.add('pdf-form'); (compact || view || notoolbar) && document.querySelector('.brendpanel > :nth-child(2)').remove(); if (compact || view) { diff --git a/apps/documenteditor/main/index_loader.html b/apps/documenteditor/main/index_loader.html index 6bb5a21201..701351df10 100644 --- a/apps/documenteditor/main/index_loader.html +++ b/apps/documenteditor/main/index_loader.html @@ -219,9 +219,11 @@ customer = params["customer"] ? ('
' + encodeUrlParam(params["customer"]) + '
') : '', margin = (customer !== '') ? 50 : 20, loading = 'Loading...', - logo = params["logo"] ? ((params["logo"] !== 'none') ? ('') : '') : null; + logo = params["logo"] ? ((params["logo"] !== 'none') ? ('') : '') : null, + isForm = params["isForm"]==='true'; window.frameEditorId = params["frameEditorId"]; window.parentOrigin = params["parentOrigin"]; + window.isPDFForm = isForm; if ( lang == 'de') loading = 'Ladevorgang...'; else if ( lang == 'es') loading = 'Cargando...'; else if ( lang == 'fr') loading = 'Chargement en cours...'; @@ -267,7 +269,9 @@
- + diff --git a/apps/documenteditor/main/index_loader.html.deploy b/apps/documenteditor/main/index_loader.html.deploy index 3f42947d24..88dfd295c5 100644 --- a/apps/documenteditor/main/index_loader.html.deploy +++ b/apps/documenteditor/main/index_loader.html.deploy @@ -241,11 +241,12 @@ customer = params["customer"] ? ('
' + encodeUrlParam(params["customer"]) + '
') : '', margin = (customer !== '') ? 50 : 20, loading = 'Loading...', - logo = params["logo"] ? ((params["logo"] !== 'none') ? ('') : '') : null; + logo = params["logo"] ? ((params["logo"] !== 'none') ? ('') : '') : null, + isForm = params["isForm"]==='true'; window.frameEditorId = params["frameEditorId"]; window.parentOrigin = params["parentOrigin"]; - + window.isPDFForm = isForm; if ( lang == 'de') loading = 'Ladevorgang...'; else if ( lang == 'es') loading = 'Cargando...'; else if ( lang == 'fr') loading = 'Chargement en cours...'; @@ -290,7 +291,9 @@ - +