diff --git a/apps/common/mobile/resources/less/icons.less b/apps/common/mobile/resources/less/icons.less index 1521fdccaa..3ef58ee338 100644 --- a/apps/common/mobile/resources/less/icons.less +++ b/apps/common/mobile/resources/less/icons.less @@ -35,6 +35,11 @@ i.icon { height: 24px; .encoded-svg-background('') } + &.icon-image { + width: 24px; + height: 24px; + .encoded-svg-mask('') + } // Formats diff --git a/apps/documenteditor/mobile/locale/en.json b/apps/documenteditor/mobile/locale/en.json index 964d969d65..3b4dc68f88 100644 --- a/apps/documenteditor/mobile/locale/en.json +++ b/apps/documenteditor/mobile/locale/en.json @@ -60,7 +60,10 @@ "txtNotUrl": "This field should be a URL in the format \"http://www.example.com\"", "textTableContents": "Table of Contents", "textWithPageNumbers": "With Page Numbers", - "textWithBlueLinks": "With Blue Links" + "textWithBlueLinks": "With Blue Links", + "textRequired": "Required", + "textRecommended": "Recommended", + "textDone": "Done" }, "Common": { "Collaboration": { @@ -183,6 +186,7 @@ "menuMerge": "Merge", "menuMore": "More", "menuOpenLink": "Open Link", + "menuEditLink": "Edit Link", "menuReview": "Review", "menuReviewChange": "Review Change", "menuSeparateList": "Separate list", diff --git a/apps/documenteditor/mobile/src/controller/ContextMenu.jsx b/apps/documenteditor/mobile/src/controller/ContextMenu.jsx index e92ef22810..40282f5229 100644 --- a/apps/documenteditor/mobile/src/controller/ContextMenu.jsx +++ b/apps/documenteditor/mobile/src/controller/ContextMenu.jsx @@ -102,14 +102,22 @@ class ContextMenu extends ContextMenuController { Common.Notifications.trigger('viewcomment'); break; case 'openlink': + case 'editlink': const stack = api.getSelectedElements(); - let value; - stack.forEach((item) => { - if (item.get_ObjectType() == Asc.c_oAscTypeSelectElement.Hyperlink) { - value = item.get_ObjectValue().get_Value(); - } - }); - value && this.openLink(value); + + if(action === 'openlink') { + let value; + + stack.forEach((item) => { + if (item.get_ObjectType() == Asc.c_oAscTypeSelectElement.Hyperlink) { + value = item.get_ObjectValue().get_Value(); + } + }); + + value && this.openLink(value); + } else { + // console.log('edit link'); + } break; case 'review': setTimeout(() => { @@ -317,6 +325,10 @@ class ContextMenu extends ContextMenuController { caption: _t.menuOpenLink, event: 'openlink' }); + itemsText.push({ + caption: t('ContextMenu.menuEditLink'), + event: 'editlink' + }); } if(inToc) { diff --git a/apps/documenteditor/mobile/src/controller/add/AddLink.jsx b/apps/documenteditor/mobile/src/controller/add/AddLink.jsx index ba1b1f8826..0b96a53c19 100644 --- a/apps/documenteditor/mobile/src/controller/add/AddLink.jsx +++ b/apps/documenteditor/mobile/src/controller/add/AddLink.jsx @@ -13,7 +13,7 @@ class AddLinkController extends Component { closeModal () { if ( Device.phone ) { - f7.sheet.close('.add-popup', true); + f7.popup.close('.add-popup', true); } else { f7.popover.close('#add-popover'); } @@ -56,7 +56,7 @@ class AddLinkController extends Component { const props = new Asc.CHyperlinkProperty(); props.put_Value(_url); props.put_Text(!display ? _url : display); - props.put_ToolTip(tip); + // props.put_ToolTip(tip); api.add_Hyperlink(props); diff --git a/apps/documenteditor/mobile/src/view/add/Add.jsx b/apps/documenteditor/mobile/src/view/add/Add.jsx index 7eaf1e329f..33685aee85 100644 --- a/apps/documenteditor/mobile/src/view/add/Add.jsx +++ b/apps/documenteditor/mobile/src/view/add/Add.jsx @@ -26,6 +26,10 @@ const routes = [ path: '/add-link/', component: AddLinkController, }, + { + path: '/add-image/', + component: AddImageController + }, { path: '/add-page-number/', component: PageAddNumber, @@ -48,24 +52,26 @@ const routes = [ } ]; -const AddLayoutNavbar = ({ tabs, inPopover }) => { +const AddLayoutNavbar = ({ tabs, inPopover, showPanels }) => { const isAndroid = Device.android; const { t } = useTranslation(); const _t = t('Add', {returnObjects: true}); return ( - - {tabs.length > 1 ? - - {tabs.map((item, index) => - - - )} - {isAndroid && } - : - { tabs[0].caption } - } - { !inPopover && } - + // (!showPanels || showPanels !== 'link') ? + + {tabs.length > 1 ? + + {tabs.map((item, index) => + + + )} + {isAndroid && } + : + { tabs[0].caption } + } + {!inPopover && } + + // : null ) }; @@ -81,7 +87,7 @@ const AddLayoutContent = ({ tabs, onGetTableStylesPreviews }) => { ) }; -const AddTabs = inject("storeFocusObjects", "storeTableSettings")(observer(({storeFocusObjects,storeTableSettings, showPanels, style, inPopover}) => { +const AddTabs = inject("storeFocusObjects", "storeTableSettings")(observer(({storeFocusObjects,storeTableSettings, showPanels, style, inPopover, onOptionClick}) => { const { t } = useTranslation(); const _t = t('Add', {returnObjects: true}); const api = Common.EditorApi.get(); @@ -147,18 +153,18 @@ const AddTabs = inject("storeFocusObjects", "storeTableSettings")(observer(({sto }); } } - if(!showPanels) { - needDisable = paragraphLocked || paragraphObj && !canAddImage || controlPlain || richDelLock || plainDelLock || contentLocked; + // if(!showPanels) { + // needDisable = paragraphLocked || paragraphObj && !canAddImage || controlPlain || richDelLock || plainDelLock || contentLocked; - if(!needDisable) { - tabs.push({ - caption: _t.textImage, - id: 'add-image', - icon: 'icon-add-image', - component: - }); - } - } + // if(!needDisable) { + // tabs.push({ + // caption: _t.textImage, + // id: 'add-image', + // icon: 'icon-add-image', + // component: + // }); + // } + // } if(!showPanels) { tabs.push({ caption: _t.textOther, @@ -178,10 +184,11 @@ const AddTabs = inject("storeFocusObjects", "storeTableSettings")(observer(({sto }); } if (showPanels && showPanels === 'link') { + // onOptionClick('/add-link/'); tabs.push({ - caption: _t.textAddLink, + caption: t('Add.textLinkSettings'), id: 'add-link', - component: + component: }); } @@ -195,7 +202,7 @@ const AddTabs = inject("storeFocusObjects", "storeTableSettings")(observer(({sto return ( - + diff --git a/apps/documenteditor/mobile/src/view/add/AddImage.jsx b/apps/documenteditor/mobile/src/view/add/AddImage.jsx index 9ae7d37fb6..dfc0ee4b6b 100644 --- a/apps/documenteditor/mobile/src/view/add/AddImage.jsx +++ b/apps/documenteditor/mobile/src/view/add/AddImage.jsx @@ -33,16 +33,19 @@ const AddImage = props => { const { t } = useTranslation(); const _t = t('Add', {returnObjects: true}); return ( - - {props.onInsertByFile()}}> - - - - - - + + + + {props.onInsertByFile()}}> + + + + + + + ) }; diff --git a/apps/documenteditor/mobile/src/view/add/AddLink.jsx b/apps/documenteditor/mobile/src/view/add/AddLink.jsx index f2bc4712b7..ef3d31548c 100644 --- a/apps/documenteditor/mobile/src/view/add/AddLink.jsx +++ b/apps/documenteditor/mobile/src/view/add/AddLink.jsx @@ -1,5 +1,5 @@ import React, {useState} from 'react'; -import {List, Page, Navbar, Icon, ListButton, ListInput} from 'framework7-react'; +import {List, Page, Navbar, Icon, ListButton, ListInput, NavRight, Link, NavLeft, f7, NavTitle} from 'framework7-react'; import { useTranslation } from 'react-i18next'; import {Device} from "../../../../../common/mobile/utils/device"; @@ -12,17 +12,43 @@ const PageLink = props => { const [stateLink, setLink] = useState(''); const [stateDisplay, setDisplay] = useState(display); - const [stateTip, setTip] = useState(''); + // const [stateTip, setTip] = useState(''); const [stateAutoUpdate, setAutoUpdate] = useState(!stateDisplay ? true : false); return ( - {!props.noNavbar && } + {/* {!props.noNavbar && + + { + props.onInsertLink(stateLink, stateDisplay); + }} text={t('Add.textDone')}> + + } */} + {/* backLink={t('Add.textCancel') */} + {!props.noNavbar && + + + { + if(props.noNavbar) { + props.closeModal(); + } else { + f7.views.current.router.back(); + }}}> + + + {t('Add.textLinkSettings')} + + { + props.onInsertLink(stateLink, stateDisplay); + }} text={t('Add.textDone')}> + + + } { setLink(event.target.value); @@ -32,26 +58,26 @@ const PageLink = props => { { setDisplay(event.target.value); setAutoUpdate(event.target.value == ''); }} > - {setTip(event.target.value)}} - > + > */} - + {/* { - props.onInsertLink(stateLink, stateDisplay, stateTip) + props.onInsertLink(stateLink, stateDisplay) }}> - + */} ) }; diff --git a/apps/documenteditor/mobile/src/view/add/AddOther.jsx b/apps/documenteditor/mobile/src/view/add/AddOther.jsx index 1f48b86856..0e62f15107 100644 --- a/apps/documenteditor/mobile/src/view/add/AddOther.jsx +++ b/apps/documenteditor/mobile/src/view/add/AddOther.jsx @@ -187,6 +187,9 @@ const AddOther = props => { }}> } + + + {(isText && !disabledAddLink) && { component: }) } - if (settings.indexOf('hyperlink') > -1) { - editors.push({ - caption: _t.textHyperlink, - id: 'edit-link', - component: - }) - } + // if (settings.indexOf('hyperlink') > -1) { + // editors.push({ + // caption: _t.textHyperlink, + // id: 'edit-link', + // component: + // }) + // } } return ( diff --git a/apps/presentationeditor/mobile/src/controller/add/AddLink.jsx b/apps/presentationeditor/mobile/src/controller/add/AddLink.jsx index 554ebc1871..78d4d314dc 100644 --- a/apps/presentationeditor/mobile/src/controller/add/AddLink.jsx +++ b/apps/presentationeditor/mobile/src/controller/add/AddLink.jsx @@ -33,7 +33,7 @@ class AddLinkController extends Component { WebLink: 1 }; const display = linkInfo.display; - const tip = linkInfo.tip; + // const tip = linkInfo.tip; const props = new Asc.CHyperlinkProperty(); let def_display = ''; @@ -60,7 +60,7 @@ class AddLinkController extends Component { url = url.replace(new RegExp("%20", 'g'), " "); props.put_Value(url); - props.put_ToolTip(tip); + // props.put_ToolTip(tip); def_display = url; } else { let url = "ppaction://hlink"; @@ -88,7 +88,7 @@ class AddLinkController extends Component { break; } props.put_Value(url); - props.put_ToolTip(!tip ? slidetip : tip); + // props.put_ToolTip(!tip ? slidetip : tip); def_display = slidetip; } diff --git a/apps/presentationeditor/mobile/src/view/add/AddLink.jsx b/apps/presentationeditor/mobile/src/view/add/AddLink.jsx index d00f01ace8..2726cf04cb 100644 --- a/apps/presentationeditor/mobile/src/view/add/AddLink.jsx +++ b/apps/presentationeditor/mobile/src/view/add/AddLink.jsx @@ -100,7 +100,7 @@ const PageLink = props => { const displayDisabled = display !== false && display === null; const [stateDisplay, setDisplay] = useState(display !== false ? ((display !== null) ? display : _t.textDefault) : ""); const [stateAutoUpdate, setAutoUpdate] = useState(!stateDisplay ? true : false); - const [screenTip, setScreenTip] = useState(''); + // const [screenTip, setScreenTip] = useState(''); return ( @@ -135,20 +135,20 @@ const PageLink = props => { setAutoUpdate(event.target.value == ''); }} /> - {setScreenTip(event.target.value)}} - /> + /> */} { props.onInsertLink(typeLink, (typeLink === 1 ? - {url: link, display: stateDisplay, tip: screenTip, displayDisabled: displayDisabled } : - {linkTo: linkTo, numberTo: numberTo, display: stateDisplay, tip: screenTip, displayDisabled: displayDisabled})); + {url: link, display: stateDisplay, displayDisabled: displayDisabled } : + {linkTo: linkTo, numberTo: numberTo, display: stateDisplay, displayDisabled: displayDisabled})); }} /> diff --git a/apps/spreadsheeteditor/mobile/src/controller/add/AddLink.jsx b/apps/spreadsheeteditor/mobile/src/controller/add/AddLink.jsx index ebb52d3692..73f33865f5 100644 --- a/apps/spreadsheeteditor/mobile/src/controller/add/AddLink.jsx +++ b/apps/spreadsheeteditor/mobile/src/controller/add/AddLink.jsx @@ -99,7 +99,7 @@ class AddLinkController extends Component { link.asc_setText(args.text == null ? null : !!args.text ? args.text : display); } - link.asc_setTooltip(args.tooltip); + // link.asc_setTooltip(args.tooltip); api.asc_insertHyperlink(link); diff --git a/apps/spreadsheeteditor/mobile/src/view/add/AddLink.jsx b/apps/spreadsheeteditor/mobile/src/view/add/AddLink.jsx index 2718661755..164a6e63ce 100644 --- a/apps/spreadsheeteditor/mobile/src/view/add/AddLink.jsx +++ b/apps/spreadsheeteditor/mobile/src/view/add/AddLink.jsx @@ -64,7 +64,7 @@ const AddLinkView = props => { const [stateDisplayText, setDisplayText] = useState(displayText); const [stateAutoUpdate, setAutoUpdate] = useState(!stateDisplayText ? true : false); - const [screenTip, setScreenTip] = useState(''); + // const [screenTip, setScreenTip] = useState(''); const activeSheet = props.activeSheet; const [curSheet, setSheet] = useState(activeSheet); @@ -122,20 +122,20 @@ const AddLinkView = props => { }} className={isIos ? 'list-input-right' : ''} /> - {setScreenTip(event.target.value)}} className={isIos ? 'list-input-right' : ''} - /> + /> */} {props.onInsertLink(typeLink === 'ext' ? - {type: 'ext', url: link, text: stateDisplayText, tooltip: screenTip} : - {type: 'int', url: range, sheet: curSheet.caption, text: stateDisplayText, tooltip: screenTip})}} + {type: 'ext', url: link, text: stateDisplayText} : + {type: 'int', url: range, sheet: curSheet.caption, text: stateDisplayText})}} />