diff --git a/.github/workflows/ci-build-upload.yml b/.github/workflows/ci-build-upload.yml index 2a8e7370a5..b66ca51db2 100644 --- a/.github/workflows/ci-build-upload.yml +++ b/.github/workflows/ci-build-upload.yml @@ -119,7 +119,7 @@ jobs: env: URI: ${{steps.tag-dir.outputs.URI}} run: | - aws cloudfront create-invalidation \ - --distribution-id ${{ secrets.AWS_DISTRIBUTION_ID }} \ - --paths \ - "${URI}/*" + API_STATUS=$(aws apigateway test-invoke-method --rest-api-id ${{ secrets.AWS_REST_API_ID }} --resource-id "${{ secrets.AWS_RESOURCE_ID }}" \ + --http-method PUT --path-with-query-string "/prod/download-oo-com" --body "$(jq -c -n '.paths = $ARGS.positional' --args "${URI}/*")" \ + --region us-east-1 --query 'status' --output text || :) + echo "API Gateway test-invoke status: ${API_STATUS:-}" diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js index fb57b05dc8..c952f33604 100644 --- a/apps/api/documents/api.js +++ b/apps/api/documents/api.js @@ -332,6 +332,7 @@ 'onRequestRefreshFile': // send when file version is updated. use instead of onOutdatedVersion 'onUserActionRequired': // send if the user needs to enter a password or select encoding/delimiters when opening a file 'onRequestFillingStatus': // used in pdf-form fill forms mode + 'onRequestSmartPicker': 'onStartFilling': // send after startFilling method, used in pdf-form editing } } @@ -773,6 +774,20 @@ }); }; + var _insertLink = function(data) { + _sendCommand({ + command: 'insertLink', + data: data + }); + }; + + var _insertPlainText = function(data) { + _sendCommand({ + command: 'insertPlainText', + data: data + }); + }; + var _setMailMergeRecipients = function(data) { _sendCommand({ command: 'setMailMergeRecipients', @@ -909,6 +924,8 @@ showSharingSettings : _showSharingSettings, setSharingSettings : _setSharingSettings, insertImage : _insertImage, + insertLink : _insertLink, + insertPlainText : _insertPlainText, setMailMergeRecipients: _setMailMergeRecipients, setRevisedFile : _setRevisedFile, setFavorite : _setFavorite, diff --git a/apps/common/Gateway.js b/apps/common/Gateway.js index 9a39cb5c6a..98cda9673b 100644 --- a/apps/common/Gateway.js +++ b/apps/common/Gateway.js @@ -115,6 +115,14 @@ if (window.Common === undefined) { $me.trigger('insertimage', data); }, + 'insertLink': function(data) { + $me.trigger('insertlink', data); + }, + + 'insertPlainText': function(data) { + $me.trigger('insertplaintext', data); + }, + 'setMailMergeRecipients': function(data) { $me.trigger('setmailmergerecipients', data); }, @@ -447,6 +455,10 @@ if (window.Common === undefined) { _postMessage({event: 'onSubmit'}); }, + requestSmartPicker: function() { + _postMessage({event: 'onRequestSmartPicker'}); + }, + on: function(event, handler){ var localHandler = function(event, data){ handler.call(me, data) diff --git a/apps/common/main/lib/component/Mixtbar.js b/apps/common/main/lib/component/Mixtbar.js index a255399e87..20a64a713d 100644 --- a/apps/common/main/lib/component/Mixtbar.js +++ b/apps/common/main/lib/component/Mixtbar.js @@ -716,7 +716,7 @@ define([ button.cmpEl.closest('.btn-slot').remove(); if (group.children().length<1) { var in_more = group.closest('.more-container').length>0; - in_more ? group.next('.separator').remove() : group.prev('.separator').remove(); + (in_more || group.prev().length===0) ? group.next('.separator').remove() : group.prev('.separator').remove(); // remove separator before empty group or after first empty group group.remove(); if (in_more && $morepanel.children().filter('.group').length === 0) { btnsMore[tab.action] && btnsMore[tab.action].isActive() && btnsMore[tab.action].toggle(false); diff --git a/apps/common/main/lib/template/Comments.template b/apps/common/main/lib/template/Comments.template index eec227f93a..74a632ccc9 100644 --- a/apps/common/main/lib/template/Comments.template +++ b/apps/common/main/lib/template/Comments.template @@ -25,7 +25,7 @@
<%=scope.pickLink(comment)%>
<% } else { %>
- +
@@ -68,7 +68,7 @@ <%}%> <% } else { %>
- +
diff --git a/apps/common/main/lib/template/CommentsPopover.template b/apps/common/main/lib/template/CommentsPopover.template index 1fb1734c2e..194075fdbe 100644 --- a/apps/common/main/lib/template/CommentsPopover.template +++ b/apps/common/main/lib/template/CommentsPopover.template @@ -20,7 +20,7 @@
<%=scope.pickLink(comment)%>
<% } else { %>
- + <% if (hideAddReply) { %> <% } else { %> @@ -67,7 +67,7 @@ <%}%> <% } else { %>
- +
diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index b5d8da7ea0..dd1c79fa1a 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -305,6 +305,8 @@ define([ this.onBtnChangeState('redo:disabled', toolbar.btnRedo, toolbar.btnRedo.isDisabled()); this.onBtnChangeState('save:disabled', toolbar.btnSave, toolbar.btnSave.isDisabled()); Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); + Common.Gateway.on('insertlink', _.bind(this.insertLink, this)); + Common.Gateway.on('insertplaintext', _.bind(this.insertPlainText, this)); }, attachUIEvents: function(toolbar) { @@ -424,6 +426,7 @@ define([ toolbar.mnuPageNumCurrentPos.on('click', _.bind(this.onPageNumCurrentPosClick, this)); toolbar.mnuInsertPageCount.on('click', _.bind(this.onInsertPageCountClick, this)); toolbar.btnBlankPage.on('click', _.bind(this.onBtnBlankPageClick, this)); + toolbar.btnSmartPicker.on('click', _.bind(this.onBtnSmartPickerClick, this)); toolbar.listStyles.on('click', _.bind(this.onListStyleSelect, this)); toolbar.listStyles.on('contextmenu', _.bind(this.onListStyleContextMenu, this)); toolbar.styleMenu.on('hide:before', _.bind(this.onListStyleBeforeHide, this)); @@ -437,6 +440,8 @@ define([ toolbar.btnHyphenation.menu.on('item:click', _.bind(this.onHyphenationSelect, this)); toolbar.btnHyphenation.menu.on('show:after', _.bind(this.onHyphenationShow, this)); Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); + Common.Gateway.on('insertlink', _.bind(this.insertLink, this)); + Common.Gateway.on('insertplaintext', _.bind(this.insertPlainText, this)); Common.Gateway.on('setmailmergerecipients', _.bind(this.setMailMergeRecipients, this)); Common.Gateway.on('setrequestedspreadsheet', _.bind(this.setRequestedSpreadsheet, this)); Common.NotificationCenter.on('storage:spreadsheet-load', _.bind(this.openSpreadsheetFromStorage, this)); @@ -2027,6 +2032,23 @@ define([ Common.NotificationCenter.trigger('storage:image-insert', data); }, + insertLink: function(data) { // gateway + + var props = new Asc.CHyperlinkProperty(); + props.put_Value(data); + props.put_Bookmark(null); + props.put_Text(data); + this.api.add_Hyperlink(props); + + Common.NotificationCenter.trigger('storage:link-insert', data); + }, + + insertPlainText: function(data) { + + this.api.PastePlainText(data) + Common.NotificationCenter.trigger('storage:plain-text-insert', data); + }, + onBtnInsertTextClick: function(btn, e) { btn.menu.getItems(true).forEach(function(item) { if(item.value == btn.options.textboxType) @@ -2681,6 +2703,13 @@ define([ Common.component.Analytics.trackEvent('ToolBar', 'Blank Page'); }, + onBtnSmartPickerClick: function(btn) { + Common.Gateway.requestSmartPicker() + + Common.NotificationCenter.trigger('edit:complete', this.toolbar); + Common.component.Analytics.trackEvent('ToolBar', 'Smart Picker'); + }, + onWatermarkSelect: function(menu, item) { if (this.api) { if (item.value == 'remove') diff --git a/apps/documenteditor/main/app/template/Toolbar.template b/apps/documenteditor/main/app/template/Toolbar.template index 494761c178..3ba4aea7dd 100644 --- a/apps/documenteditor/main/app/template/Toolbar.template +++ b/apps/documenteditor/main/app/template/Toolbar.template @@ -109,6 +109,7 @@
+
diff --git a/apps/documenteditor/main/app/view/ListSettingsDialog.js b/apps/documenteditor/main/app/view/ListSettingsDialog.js index 36fecb94a7..af6bd7cbda 100644 --- a/apps/documenteditor/main/app/view/ListSettingsDialog.js +++ b/apps/documenteditor/main/app/view/ListSettingsDialog.js @@ -319,7 +319,7 @@ define([ [ '<% _.each(items, function(item) { %>', '
  • ', - '<%= item.displayValue %><% if (item.value === Asc.c_oAscNumberingFormat.Bullet) { %><%=item.symbol%><% } %>', + '<%= item.displayValue %><% if (item.value === Asc.c_oAscNumberingFormat.Bullet) { %><%=item.symbol%><% } %>', '
  • ', '<% }); %>' ]; @@ -372,7 +372,7 @@ define([ var formcontrol = $(this.el).find('.form-control'); if (record) { if (record.get('value')==Asc.c_oAscNumberingFormat.Bullet) - formcontrol[0].innerHTML = record.get('displayValue') + '' + record.get('symbol') + ''; + formcontrol[0].innerHTML = record.get('displayValue') + '' + record.get('symbol') + ''; else formcontrol[0].innerHTML = record.get('displayValue'); } else diff --git a/apps/documenteditor/main/app/view/Toolbar.js b/apps/documenteditor/main/app/view/Toolbar.js index a6e8c0e2c2..2d41a26b46 100644 --- a/apps/documenteditor/main/app/view/Toolbar.js +++ b/apps/documenteditor/main/app/view/Toolbar.js @@ -1040,6 +1040,22 @@ define([ }); this.paragraphControls.push(this.btnInsField); + this.btnSmartPicker = new Common.UI.Button({ + id: 'id-toolbar-btn-smartpicker', + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'toolbar__icon btn-big-inserthyperlink', + lock: [_set.paragraphLock, _set.headerLock, _set.hyperlinkLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockViewIns, _set.docLockForms, _set.docLockCommentsIns, _set.viewMode], + caption: me.capBtnSmartPicker, + dataHint: '1', + dataHintDirection: 'bottom', + dataHintOffset: 'small' + }); + this.paragraphControls.push(this.btnSmartPicker); + this.shortcutHints.SmartPicker = { + btn: this.btnSmartPicker, + label: this.tipSmartPicker + }; + this.btnBlankPage = new Common.UI.Button({ id: 'id-toolbar-btn-blankpage', cls: 'btn-toolbar x-huge icon-top', @@ -2288,6 +2304,7 @@ define([ _injectComponent('#slot-btn-datetime', this.btnInsDateTime); _injectComponent('#slot-btn-insfield', this.btnInsField); _injectComponent('#slot-btn-blankpage', this.btnBlankPage); + _injectComponent('#slot-btn-smartpicker', this.btnSmartPicker); _injectComponent('#slot-btn-insshape', this.btnInsertShape); _injectComponent('#slot-btn-inssmartart', this.btnInsertSmartArt); _injectComponent('#slot-btn-insequation', this.btnInsertEquation); @@ -3601,7 +3618,7 @@ define([ '', '<% }) %>', '', - '<%= caption %>', + '<%- caption %>', '' ].join('')); diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index 43f1ff0a51..4afc0ad735 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -3221,6 +3221,7 @@ "DE.Views.Links.tipContentsUpdate": "Update table of contents", "DE.Views.Links.tipCrossRef": "Insert cross-reference", "DE.Views.Links.tipInsertHyperlink": "Add hyperlink", + "DE.Views.Links.tipSmartPicker": "Open the Smart Picker", "DE.Views.Links.tipNotes": "Insert or edit footnotes", "DE.Views.Links.tipTableFigures": "Insert table of figures", "DE.Views.Links.tipTableFiguresUpdate": "Update table of figures", @@ -3935,6 +3936,7 @@ "DE.Views.TextToTableDialog.txtAutoText": "Auto", "DE.Views.Toolbar.capBtnAddComment": "Add Comment", "DE.Views.Toolbar.capBtnBlankPage": "Blank Page", + "DE.Views.Toolbar.capBtnSmartPicker": "Smart Picker", "DE.Views.Toolbar.capBtnColumns": "Columns", "DE.Views.Toolbar.capBtnComment": "Comment", "DE.Views.Toolbar.capBtnDateTime": "Date & Time", diff --git a/apps/presentationeditor/main/app/controller/Toolbar.js b/apps/presentationeditor/main/app/controller/Toolbar.js index 576110174a..6c2a28e4c2 100644 --- a/apps/presentationeditor/main/app/controller/Toolbar.js +++ b/apps/presentationeditor/main/app/controller/Toolbar.js @@ -388,6 +388,7 @@ define([ toolbar.btnShapesMerge.menu.on('item:click', _.bind(this.onClickMenuShapesMerge, this)); toolbar.btnShapesMerge.menu.on('show:before', _.bind(this.onBeforeShapesMerge, this)); toolbar.btnInsertHyperlink.on('click', _.bind(this.onHyperlinkClick, this)); + toolbar.btnSmartPicker.on('click', _.bind(this.onBtnSmartPickerClick, this)); toolbar.mnuTablePicker.on('select', _.bind(this.onTablePickerSelect, this)); toolbar.btnInsertTable.menu.on('item:click', _.bind(this.onInsertTableClick, this)); toolbar.btnClearStyle.on('click', _.bind(this.onClearStyleClick, this)); @@ -403,6 +404,8 @@ define([ toolbar.btnInsDateTime.on('click', _.bind(this.onEditHeaderClick, this, 'datetime')); toolbar.btnInsSlideNum.on('click', _.bind(this.onEditHeaderClick, this, 'slidenum')); Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); + Common.Gateway.on('insertlink', _.bind(this.insertLink, this)); + Common.Gateway.on('insertplaintext', _.bind(this.insertPlainText, this)); toolbar.btnInsAudio && toolbar.btnInsAudio.on('click', _.bind(this.onAddAudio, this)); toolbar.btnInsVideo && toolbar.btnInsVideo.on('click', _.bind(this.onAddVideo, this)); @@ -1848,6 +1851,13 @@ define([ Common.component.Analytics.trackEvent('ToolBar', 'Add Hyperlink'); }, + onBtnSmartPickerClick: function(btn) { + Common.Gateway.requestSmartPicker() + + Common.NotificationCenter.trigger('edit:complete', this.toolbar); + Common.component.Analytics.trackEvent('ToolBar', 'Smart Picker'); + }, + onTablePickerSelect: function(picker, columns, rows, e) { if (this.api) { this.toolbar.fireEvent('inserttable', this.toolbar); @@ -1958,6 +1968,23 @@ define([ Common.NotificationCenter.trigger('storage:image-insert', data); }, + insertLink: function(data) { // gateway + + var props = new Asc.CHyperlinkProperty(); + props.put_Value(data); + props.put_Bookmark(null); + props.put_Text(data); + this.api.add_Hyperlink(props); + + Common.NotificationCenter.trigger('storage:link-insert', data); + }, + + insertPlainText: function(data) { + + this.api.PastePlainText(data) + Common.NotificationCenter.trigger('storage:plain-text-insert', data); + }, + onBtnInsertTextClick: function(btn, e) { btn.menu.getItems(true).forEach(function(item) { if(item.value == btn.options.textboxType) diff --git a/apps/presentationeditor/main/app/template/Toolbar.template b/apps/presentationeditor/main/app/template/Toolbar.template index 9b7b3a5007..516b7ed4e9 100644 --- a/apps/presentationeditor/main/app/template/Toolbar.template +++ b/apps/presentationeditor/main/app/template/Toolbar.template @@ -132,6 +132,7 @@
    +
    diff --git a/apps/presentationeditor/main/app/view/Toolbar.js b/apps/presentationeditor/main/app/view/Toolbar.js index 33c1894339..9a30387ec6 100644 --- a/apps/presentationeditor/main/app/view/Toolbar.js +++ b/apps/presentationeditor/main/app/view/Toolbar.js @@ -1041,6 +1041,23 @@ define([ label: me.tipInsertHyperlink }; + me.btnSmartPicker = new Common.UI.Button({ + id: 'tlbtn-smartpicker', + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'toolbar__icon btn-big-inserthyperlink', + caption: me.capBtnSmartPicker, + lock: [_set.hyperlinkLock, _set.slideDeleted, _set.paragraphLock, _set.lostConnect, _set.noSlides, _set.noParagraphSelected, _set.slideMasterMode], + dataHint: '1', + dataHintDirection: 'bottom', + dataHintOffset: 'small' + }); + me.paragraphControls.push(me.btnSmartPicker); + me.lockControls.push(me.btnSmartPicker); + me.shortcutHints.SmartPicker = { + btn: me.btnSmartPicker, + label: me.tipBtnSmartPicker + }; + me.btnInsertTextArt = new Common.UI.Button({ id: 'tlbtn-inserttextart', cls: 'btn-toolbar x-huge icon-top', @@ -1556,6 +1573,7 @@ define([ _injectComponent('#slot-btn-insertequation', this.btnInsertEquation); _injectComponent('#slot-btn-inssymbol', this.btnInsertSymbol); _injectComponent('#slot-btn-insertlink', this.btnInsertHyperlink); + _injectComponent('#slot-btn-smartpicker', this.btnSmartPicker); _injectComponent('#slot-btn-inserttable', this.btnInsertTable); _injectComponent('#slot-btn-insertchart', this.btnInsertChart); _injectComponent('#slot-btn-instextart', this.btnInsertTextArt); @@ -2139,7 +2157,7 @@ define([ '', '<% }) %>', '', - '<%= caption %>', + '<%- caption %>', '' ].join('')); diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index 219e5e2239..53fb579bf4 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -3283,6 +3283,7 @@ "PE.Views.Toolbar.capInsertChart": "Chart", "PE.Views.Toolbar.capInsertEquation": "Equation", "PE.Views.Toolbar.capInsertHyperlink": "Hyperlink", + "PE.Views.Toolbar.capBtnSmartPicker": "Smart Picker", "PE.Views.Toolbar.capInsertImage": "Image", "PE.Views.Toolbar.capInsertShape": "Shape", "PE.Views.Toolbar.capInsertTable": "Table", @@ -3412,6 +3413,7 @@ "PE.Views.Toolbar.tipInsertEquation": "Insert equation", "PE.Views.Toolbar.tipInsertHorizontalText": "Insert horizontal text box", "PE.Views.Toolbar.tipInsertHyperlink": "Add hyperlink", + "PE.Views.Toolbar.tipBtnSmartPicker": "Open the Smart Picker", "PE.Views.Toolbar.tipInsertImage": "Insert image", "PE.Views.Toolbar.tipInsertShape": "Insert shape", "PE.Views.Toolbar.tipInsertSmartArt": "Insert SmartArt", diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index 0b5a023059..dfa47154ec 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -437,6 +437,7 @@ define([ toolbar.btnInsertTable.on('click', _.bind(this.onBtnInsertTableClick, this)); toolbar.btnInsertImage.menu.on('item:click', _.bind(this.onInsertImageMenu, this)); toolbar.btnInsertHyperlink.on('click', _.bind(this.onHyperlink, this)); + toolbar.btnSmartPicker.on('click', _.bind(this.onBtnSmartPickerClick, this)); toolbar.btnInsertText.on('click', _.bind(this.onBtnInsertTextClick, this)); toolbar.btnInsertText.menu.on('item:click', _.bind(this.onMenuInsertTextClick, this)); toolbar.btnInsertShape.menu.on('hide:after', _.bind(this.onInsertShapeHide, this)); @@ -511,7 +512,9 @@ define([ toolbar.btnInsertChartRecommend.on('click', _.bind(this.onChartRecommendedClick, this)); toolbar.btnFillNumbers.menu.on('item:click', _.bind(this.onFillNumMenu, this)); toolbar.btnFillNumbers.menu.on('show:before', _.bind(this.onShowBeforeFillNumMenu, this)); - Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); + Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); + Common.Gateway.on('insertlink', _.bind(this.insertLink, this)); + Common.Gateway.on('insertplaintext', _.bind(this.insertPlainText, this)); this.onSetupCopyStyleButton(); this.onBtnChangeState('undo:disabled', toolbar.btnUndo, toolbar.btnUndo.isDisabled()); @@ -1027,6 +1030,13 @@ define([ Common.component.Analytics.trackEvent('ToolBar', 'Table'); }, + onBtnSmartPickerClick: function(btn) { + Common.Gateway.requestSmartPicker() + + Common.NotificationCenter.trigger('edit:complete', this.toolbar); + Common.component.Analytics.trackEvent('ToolBar', 'Smart Picker'); + }, + onInsertImageMenu: function(menu, item, e) { var me = this; if (item.value === 'file') { @@ -1100,6 +1110,24 @@ define([ Common.NotificationCenter.trigger('storage:image-insert', data); }, + + insertLink: function(data) { // gateway + + var props = new Asc.asc_CHyperlink(); + props.asc_setHyperlinkUrl(data); + props.asc_setText(data); + this.api.asc_insertHyperlink(props); + + Common.NotificationCenter.trigger('storage:link-insert', data); + }, + + insertPlainText: function(data) { + + this.api.PastePlainText(data) + Common.NotificationCenter.trigger('storage:plain-text-insert', data); + }, + + onHyperlink: function(btn) { Common.NotificationCenter.trigger('protect:check', this.onHyperlinkCallback, this, [btn]); }, diff --git a/apps/spreadsheeteditor/main/app/template/Toolbar.template b/apps/spreadsheeteditor/main/app/template/Toolbar.template index 962a85b6e1..53eb63ab31 100644 --- a/apps/spreadsheeteditor/main/app/template/Toolbar.template +++ b/apps/spreadsheeteditor/main/app/template/Toolbar.template @@ -159,6 +159,7 @@
    +
    diff --git a/apps/spreadsheeteditor/main/app/view/Toolbar.js b/apps/spreadsheeteditor/main/app/view/Toolbar.js index 922ed13f1f..38435a9dea 100644 --- a/apps/spreadsheeteditor/main/app/view/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/view/Toolbar.js @@ -1362,6 +1362,21 @@ define([ label: me.tipInsertHyperlink }; + me.btnSmartPicker = new Common.UI.Button({ + id : 'tlbtn-smartpicker', + cls : 'btn-toolbar x-huge icon-top', + iconCls : 'toolbar__icon btn-big-inserthyperlink', + caption : me.capBtnSmartPicker, + lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selImage, _set.selShape, _set.cantHyperlink, _set.selSlicer, _set.multiselect, _set.lostConnect, _set.coAuth, _set.editPivot, _set['InsertHyperlinks'], _set.userProtected], + dataHint : '1', + dataHintDirection: 'bottom', + dataHintOffset: 'small' + }); + me.shortcutHints.SmartPicker = { + btn: me.btnSmartPicker, + label: me.tipSmartPicker + }; + me.btnInsertChart = new Common.UI.Button({ id : 'tlbtn-insertchart', cls : 'btn-toolbar x-huge icon-top', @@ -2585,6 +2600,7 @@ define([ _injectComponent('#slot-btn-insimage', this.btnInsertImage); _injectComponent('#slot-btn-instable', this.btnInsertTable); _injectComponent('#slot-btn-inshyperlink', this.btnInsertHyperlink); + _injectComponent('#slot-btn-smartpicker', this.btnSmartPicker); _injectComponent('#slot-btn-insshape', this.btnInsertShape); _injectComponent('#slot-btn-instext', this.btnInsertText); _injectComponent('#slot-btn-instextart', this.btnInsertTextArt); @@ -3356,7 +3372,7 @@ define([ '', '<% }) %>', '', - '<%= caption %>', + '<%- caption %>', '' ].join('')); diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index a19f571617..569c140618 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -4711,6 +4711,7 @@ "SSE.Views.Toolbar.capInsertChartRecommend": "Recommended Chart", "SSE.Views.Toolbar.capInsertEquation": "Equation", "SSE.Views.Toolbar.capInsertHyperlink": "Hyperlink", + "SSE.Views.Toolbar.capBtnSmartPicker": "Smart Picker", "SSE.Views.Toolbar.capInsertImage": "Image", "SSE.Views.Toolbar.capInsertShape": "Shape", "SSE.Views.Toolbar.capInsertSpark": "Sparkline", @@ -4913,6 +4914,7 @@ "SSE.Views.Toolbar.tipInsertEquation": "Insert equation", "SSE.Views.Toolbar.tipInsertHorizontalText": "Insert horizontal text box", "SSE.Views.Toolbar.tipInsertHyperlink": "Add hyperlink", + "SSE.Views.Toolbar.tipSmartPicker": "Open the Smart Picker", "SSE.Views.Toolbar.tipInsertImage": "Insert image", "SSE.Views.Toolbar.tipInsertOpt": "Insert cells", "SSE.Views.Toolbar.tipInsertShape": "Insert shape",