[DE mobile] Restriction of settings in reader mode and add mobile view

This commit is contained in:
SergeyEzhin 2022-08-11 18:39:56 +03:00
parent e61d9657c0
commit 6ca40588d8
12 changed files with 136 additions and 41 deletions

View file

@ -89,6 +89,8 @@ const PageCollaboration = inject('storeAppOptions', 'users')(observer(props => {
const { t } = useTranslation();
const _t = t('Common.Collaboration', {returnObjects: true});
const appOptions = props.storeAppOptions;
const isViewer = appOptions.isViewer;
return (
<View style={props.style} stackPages={true} routes={routes} url={props.page && `/${props.page}/`}>
<Page name="collab__main">
@ -112,7 +114,7 @@ const PageCollaboration = inject('storeAppOptions', 'users')(observer(props => {
<Icon slot="media" icon="icon-insert-comment"></Icon>
</ListItem>
}
{window.editorType === 'de' && (appOptions.canReview || appOptions.canViewReview) &&
{(window.editorType === 'de' && (appOptions.canReview || appOptions.canViewReview) && !isViewer) &&
<ListItem link={'/review/'} title={_t.textReview}>
<Icon slot="media" icon="icon-review"></Icon>
</ListItem>

View file

@ -636,7 +636,7 @@ const ViewComments = inject("storeComments", "storeAppOptions", "storeReview")(o
const _t = t('Common.Collaboration', {returnObjects: true});
const isAndroid = Device.android;
const displayMode = storeReview.displayMode;
const isViewer = storeAppOptions.isViewer;
const viewMode = !storeAppOptions.canComments;
const comments = storeComments.groupCollectionFilter || storeComments.collectionComments;
const isEdit = storeAppOptions.isEdit || storeAppOptions.isRestrictedEdit;
@ -678,7 +678,7 @@ const ViewComments = inject("storeComments", "storeAppOptions", "storeReview")(o
{isEdit && !viewMode &&
<div className='right'>
{(comment.editable && displayMode === 'markup' && !wsProps?.Objects) && <div className='comment-resolve' onClick={() => {onResolveComment(comment);}}><Icon icon={comment.resolved ? 'icon-resolve-comment check' : 'icon-resolve-comment'} /></div> }
{(displayMode === 'markup' && !wsProps?.Objects) &&
{(displayMode === 'markup' && !wsProps?.Objects && !isViewer) &&
<div className='comment-menu'
onClick={() => {setComment(comment); openActionComment(true);}}>
<Icon icon='icon-menu-comment'/>
@ -708,7 +708,7 @@ const ViewComments = inject("storeComments", "storeAppOptions", "storeReview")(o
<div className='reply-date'>{reply.date}</div>
</div>
</div>
{isEdit && !viewMode && reply.editable &&
{isEdit && !viewMode && reply.editable && !isViewer &&
<div className='right'>
<div className='reply-menu'
onClick={() => {setComment(comment); setReply(reply); openActionReply(true);}}

View file

@ -669,12 +669,14 @@
"txtScheme6": "Concourse",
"txtScheme7": "Equity",
"txtScheme8": "Flow",
"txtScheme9": "Foundry"
"txtScheme9": "Foundry",
"textMobileView": "Mobile View"
},
"Toolbar": {
"dlgLeaveMsgText": "You have unsaved changes. Click 'Stay on this Page' to wait for autosave. Click 'Leave this Page' to discard all the unsaved changes.",
"dlgLeaveTitleText": "You leave the application",
"leaveButtonText": "Leave this Page",
"stayButtonText": "Stay on this page"
"stayButtonText": "Stay on this page",
"textOk": "OK"
}
}

View file

@ -25,6 +25,7 @@ class SearchSettings extends SearchSettingsView {
const _t = t("Settings", {returnObjects: true});
const storeAppOptions = this.props.storeAppOptions;
const isEdit = storeAppOptions.isEdit;
const isViewer = storeAppOptions.isViewer;
const storeReview = this.props.storeReview;
const displayMode = storeReview.displayMode;
@ -39,7 +40,7 @@ class SearchSettings extends SearchSettingsView {
</Navbar>
<List>
<ListItem radio title={_t.textFind} name="find-replace-checkbox" checked={!this.state.useReplace} onClick={e => this.onFindReplaceClick('find')} />
{isEdit && displayMode === 'markup' ? [
{isEdit && displayMode === 'markup' && !isViewer ? [
<ListItem key="replace" radio title={_t.textFindAndReplace} name="find-replace-checkbox" checked={this.state.useReplace}
onClick={e => this.onFindReplaceClick('replace')} />,
<ListItem key="replace-all" radio title={_t.textFindAndReplaceAll} name="find-replace-checkbox" checked={this.state.isReplaceAll}

View file

@ -10,6 +10,7 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeReview', 'sto
const _t = t("Toolbar", { returnObjects: true });
const appOptions = props.storeAppOptions;
const isViewer = appOptions.isViewer;
const isMobileView = appOptions.isMobileView;
const isDisconnected = props.users.isDisconnected;
const displayMode = props.storeReview.displayMode;
const stateDisplayMode = displayMode == "final" || displayMode == "original" ? true : false;
@ -128,16 +129,26 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeReview', 'sto
const turnOffViewerMode = () => {
const api = Common.EditorApi.get();
appOptions.changeViewerMode();
api.asc_removeRestriction(Asc.c_oAscRestrictionType.View)
api.asc_addRestriction(Asc.c_oAscRestrictionType.None);
}
const turnOnViewerMode = () => {
const api = Common.EditorApi.get();
appOptions.changeViewerMode();
api.asc_addRestriction(Asc.c_oAscRestrictionType.View);
}
const changeMobileView = () => {
const api = Common.EditorApi.get();
appOptions.changeMobileView();
api.ChangeReaderMode();
}
return (
<ToolbarView openOptions={props.openOptions}
isEdit={appOptions.isEdit}
@ -161,6 +172,8 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeReview', 'sto
isViewer={isViewer}
turnOffViewerMode={turnOffViewerMode}
turnOnViewerMode={turnOnViewerMode}
isMobileView={isMobileView}
changeMobileView={changeMobileView}
/>
)
}));

View file

@ -27,18 +27,18 @@ const Settings = props => {
}
};
const onReaderMode = () => {
const appOptions = props.storeAppOptions;
appOptions.changeReaderMode();
Common.EditorApi.get().ChangeReaderMode();
if (Device.phone) {
setTimeout(() => {
closeModal();
}, 1);
}
};
// const onReaderMode = () => {
// const appOptions = props.storeAppOptions;
// appOptions.changeReaderMode();
//
// Common.EditorApi.get().ChangeReaderMode();
//
// if (Device.phone) {
// setTimeout(() => {
// closeModal();
// }, 1);
// }
// };
const onPrint = () => {
const api = Common.EditorApi.get();
@ -94,15 +94,28 @@ const Settings = props => {
}, 0);
};
const onChangeMobileView = () => {
const api = Common.EditorApi.get()
const appOptions = props.storeAppOptions;
appOptions.changeMobileView();
api.ChangeReaderMode();
if (Device.phone) {
closeModal();
}
}
return <SettingsView usePopover={!Device.phone}
openOptions={props.openOptions}
onclosed={props.onclosed}
onReaderMode={onReaderMode}
// onReaderMode={onReaderMode}
onPrint={onPrint}
showHelp={showHelp}
showFeedback={showFeedback}
onOrthographyCheck={onOrthographyCheck}
onDownloadOrigin={onDownloadOrigin}
onChangeMobileView={onChangeMobileView}
/>
};

View file

@ -53,5 +53,10 @@
}
}
}
// Reader mode
.back-reader-mode {
margin-left: 10px;
}
}

View file

@ -445,12 +445,22 @@
.encoded-svg-mask('<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M21 3H3V21H21V3ZM3 2H2V3V21V22H3H21H22V21V3V2H21H3ZM15.2929 8H9V7H16.5H17V7.5V15H16V8.70711L7.35355 17.3536L6.64645 16.6464L15.2929 8Z" fill="@{brandColor}"/></svg>');
}
// Icon edit mode
// Reader mode
&.icon-edit-mode {
width: 24px;
height: 24px;
.encoded-svg-mask('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M21.5002 6.3L23.0002 4.8C23.0002 4.8 22.8002 3.6 22.1002 2.9C21.4002 2.1 20.2002 2 20.2002 2L18.7002 3.5L21.5002 6.3ZM20.3 6.30001L7.1 19.4L5.6 17.9L18.8 4.80001L18.1 4.10001L4.5 17.7L4 21L1 21V22H23V21L4 21L7.3 20.5L20.9 6.90001L20.3 6.30001Z" fill="@{brandColor}"/></svg>');
}
&.icon-mobile-view {
width: 24px;
height: 24px;
.encoded-svg-mask('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 3H17C17.5523 3 18 3.44772 18 4V20C18 20.5523 17.5523 21 17 21H7C6.44772 21 6 20.5523 6 20V4C6 3.44772 6.44772 3 7 3ZM5 4C5 2.89543 5.89543 2 7 2H17C18.1046 2 19 2.89543 19 4V20C19 21.1046 18.1046 22 17 22H7C5.89543 22 5 21.1046 5 20V4ZM9.5 19C9.22386 19 9 19.2239 9 19.5C9 19.7761 9.22386 20 9.5 20H14.5C14.7761 20 15 19.7761 15 19.5C15 19.2239 14.7761 19 14.5 19H9.5Z" fill="@{brandColor}"/></svg>')
}
&.icon-standard-view {
width: 24px;
height: 24px;
.encoded-svg-mask('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 1V3.5C7 3.77614 6.77614 4 6.5 4H4V3H6V1H7ZM17 3.5V1H18V3H20V4H17.5C17.2239 4 17 3.77614 17 3.5ZM17 20.5V23H18V21H20V20H17.5C17.2239 20 17 20.2239 17 20.5ZM7 20.5V23H6V21H4V20H6.5C6.77614 20 7 20.2239 7 20.5ZM16 6H8C7.44772 6 7 6.44772 7 7V17C7 17.5523 7.44772 18 8 18H16C16.5523 18 17 17.5523 17 17V7C17 6.44772 16.5523 6 16 6ZM8 5C6.89543 5 6 5.89543 6 7V17C6 18.1046 6.89543 19 8 19H16C17.1046 19 18 18.1046 18 17V7C18 5.89543 17.1046 5 16 5H8ZM9 8.5C9 8.22386 9.22386 8 9.5 8H14.5C14.7761 8 15 8.22386 15 8.5C15 8.77614 14.7761 9 14.5 9H9.5C9.22386 9 9 8.77614 9 8.5ZM9.5 11C9.22386 11 9 11.2239 9 11.5C9 11.7761 9.22386 12 9.5 12H14.5C14.7761 12 15 11.7761 15 11.5C15 11.2239 14.7761 11 14.5 11H9.5ZM9 14.5C9 14.2239 9.22386 14 9.5 14H14.5C14.7761 14 15 14.2239 15 14.5C15 14.7761 14.7761 15 14.5 15H9.5C9.22386 15 9 14.7761 9 14.5Z" fill="@{brandColor}"/></svg>');
}
// Comments
&.icon-menu-comment {

View file

@ -67,11 +67,28 @@
height: 24px;
.encoded-svg-mask('<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 22 22" fill="@{white}"><g><path d="M19.5,16.8L16,13.3c0.7-1.1,1.1-2.4,1.1-3.8C17,5.4,13.6,2,9.5,2S2,5.4,2,9.5S5.4,17,9.5,17c1.4,0,2.7-0.4,3.8-1.1l3.5,3.5c0.7,0.7,1.9,0.7,2.6,0C20.2,18.7,20.2,17.6,19.5,16.8z M9.5,15.3c-3.2,0-5.8-2.6-5.8-5.8s2.6-5.8,5.8-5.8s5.8,2.6,5.8,5.8S12.7,15.3,9.5,15.3z"/></g></svg>');
}
// Reader mode
&.icon-edit-mode {
width: 24px;
height: 24px;
.encoded-svg-mask('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M21.5002 6.3L23.0002 4.8C23.0002 4.8 22.8002 3.6 22.1002 2.9C21.4002 2.1 20.2002 2 20.2002 2L18.7002 3.5L21.5002 6.3ZM20.3 6.30001L7.1 19.4L5.6 17.9L18.8 4.80001L18.1 4.10001L4.5 17.7L4 21L1 21V22H23V21L4 21L7.3 20.5L20.9 6.90001L20.3 6.30001Z" fill="@{toolbar-icons}"/></svg>', @toolbar-icons);
}
&.icon-mobile-view {
width: 24px;
height: 24px;
.encoded-svg-mask('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 3H17C17.5523 3 18 3.44772 18 4V20C18 20.5523 17.5523 21 17 21H7C6.44772 21 6 20.5523 6 20V4C6 3.44772 6.44772 3 7 3ZM5 4C5 2.89543 5.89543 2 7 2H17C18.1046 2 19 2.89543 19 4V20C19 21.1046 18.1046 22 17 22H7C5.89543 22 5 21.1046 5 20V4ZM9.5 19C9.22386 19 9 19.2239 9 19.5C9 19.7761 9.22386 20 9.5 20H14.5C14.7761 20 15 19.7761 15 19.5C15 19.2239 14.7761 19 14.5 19H9.5Z" fill="@{toolbar-icons}"/></svg>', @toolbar-icons);
}
&.icon-standard-view {
width: 24px;
height: 24px;
.encoded-svg-mask('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 1V3.5C7 3.77614 6.77614 4 6.5 4H4V3H6V1H7ZM17 3.5V1H18V3H20V4H17.5C17.2239 4 17 3.77614 17 3.5ZM17 20.5V23H18V21H20V20H17.5C17.2239 20 17 20.2239 17 20.5ZM7 20.5V23H6V21H4V20H6.5C6.77614 20 7 20.2239 7 20.5ZM16 6H8C7.44772 6 7 6.44772 7 7V17C7 17.5523 7.44772 18 8 18H16C16.5523 18 17 17.5523 17 17V7C17 6.44772 16.5523 6 16 6ZM8 5C6.89543 5 6 5.89543 6 7V17C6 18.1046 6.89543 19 8 19H16C17.1046 19 18 18.1046 18 17V7C18 5.89543 17.1046 5 16 5H8ZM9 8.5C9 8.22386 9.22386 8 9.5 8H14.5C14.7761 8 15 8.22386 15 8.5C15 8.77614 14.7761 9 14.5 9H9.5C9.22386 9 9 8.77614 9 8.5ZM9.5 11C9.22386 11 9 11.2239 9 11.5C9 11.7761 9.22386 12 9.5 12H14.5C14.7761 12 15 11.7761 15 11.5C15 11.2239 14.7761 11 14.5 11H9.5ZM9 14.5C9 14.2239 9.22386 14 9.5 14H14.5C14.7761 14 15 14.2239 15 14.5C15 14.7761 14.7761 15 14.5 15H9.5C9.22386 15 9 14.7761 9 14.5Z" fill="@{toolbar-icons}"/></svg>', @toolbar-icons);
}
&.icon-back-reader-mode {
width: 24px;
height: 24px;
.encoded-svg-mask('<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9 16.1719L19.5938 5.57812L21 6.98438L9 18.9844L3.42188 13.4062L4.82812 12L9 16.1719Z" fill="@{toolbar-icons}" /></svg>', @toolbar-icons);
}
}
}
i.icon {
@ -157,8 +174,14 @@
.encoded-svg-mask('<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M21 6H3V18H21V6ZM2 5V19H22V5H2Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M2.66552 6.37165L3.33448 5.62835L12 13.3273L20.6655 5.62835L21.3345 6.37165L12 14.6727L2.66552 6.37165Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9.37629 11.3293L3.37629 18.3293L2.62371 17.6707L8.62371 10.6707L9.37629 11.3293Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M15.3763 10.6707L21.3763 17.6707L20.6237 18.3293L14.6237 11.3293L15.3763 10.6707Z" fill="black"/></svg>');
}
// Mobile View
&.icon-mobile-view {
width: 24px;
height: 24px;
.encoded-svg-mask('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 3H17C17.5523 3 18 3.44772 18 4V20C18 20.5523 17.5523 21 17 21H7C6.44772 21 6 20.5523 6 20V4C6 3.44772 6.44772 3 7 3ZM5 4C5 2.89543 5.89543 2 7 2H17C18.1046 2 19 2.89543 19 4V20C19 21.1046 18.1046 22 17 22H7C5.89543 22 5 21.1046 5 20V4ZM9.5 19C9.22386 19 9 19.2239 9 19.5C9 19.7761 9.22386 20 9.5 20H14.5C14.7761 20 15 19.7761 15 19.5C15 19.2239 14.7761 19 14.5 19H9.5Z" fill="@{brandColor}"/></svg>', @brandColor);
}
// Edit
&.icon-text-align-left {
width: 22px;
height: 22px;

View file

@ -26,13 +26,22 @@ export class storeAppOptions {
changeDocReady: action,
isViewer: observable,
changeViewerMode: action
changeViewerMode: action,
isMobileView: observable,
changeMobileView: action
});
}
isEdit = false;
isViewer = true;
isMobileView = false;
changeMobileView() {
this.isMobileView = !this.isMobileView;
}
isViewer = true;
changeViewerMode() {
this.isViewer = !this.isViewer;
}

View file

@ -1,17 +1,20 @@
import React, {Fragment} from 'react';
import { useTranslation } from 'react-i18next';
import {NavLeft, NavRight, NavTitle, Link, Icon} from 'framework7-react';
import { Device } from '../../../../common/mobile/utils/device';
import EditorUIController from '../lib/patch'
const ToolbarView = props => {
const { t } = useTranslation();
const isDisconnected = props.isDisconnected;
const disableEditBtn = props.isObjectLocked || props.stateDisplayMode || props.disabledEditControls || isDisconnected;
const isViewer = props.isViewer;
const isMobileView = props.isMobileView;
return (
<Fragment>
<NavLeft>
{!isViewer && <Link text="Ok" onClick={() => props.turnOnViewerMode()}></Link>}
{!isViewer && <Link text={Device.ios ? t("Toolbar.textOk") : ''} icon={Device.android ? 'icon-back-reader-mode' : null} className='back-reader-mode' onClick={() => props.turnOnViewerMode()}></Link>}
{(props.isShowBack && isViewer) && <Link className={`btn-doc-back${props.disabledControls && ' disabled'}`} icon='icon-back' onClick={props.onBack}></Link>}
{(Device.ios && props.isEdit && !isViewer) && EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({
disabledUndo: !props.isCanUndo || isDisconnected,
@ -28,6 +31,7 @@ const ToolbarView = props => {
onUndoClick: props.onUndo,
onRedoClick: props.onRedo
})}
{isViewer && <Link className={props.disabledControls ? 'disabled' : ''} icon={isMobileView ? 'icon-standard-view' : 'icon-mobile-view'} href={false} onClick={() => props.changeMobileView()}></Link>}
{(props.showEditDocument && !isViewer) &&
<Link className={props.disabledControls ? 'disabled' : ''} icon='icon-edit' href={false} onClick={props.onEditDocument}></Link>
}

View file

@ -75,6 +75,7 @@ const routes = [
const SettingsList = inject("storeAppOptions", "storeReview")(observer(props => {
const { t } = useTranslation();
const _t = t('Settings', {returnObjects: true});
const appOptions = props.storeAppOptions;
const storeReview = props.storeReview;
const displayMode = storeReview.displayMode;
const navbar = <Navbar title={_t.textSettings}>
@ -105,11 +106,13 @@ const SettingsList = inject("storeAppOptions", "storeReview")(observer(props =>
}
// set mode
const appOptions = props.storeAppOptions;
const isViewer = appOptions.isViewer;
const isMobileView = appOptions.isMobileView;
let _isEdit = false,
_canDownload = false,
_canDownloadOrigin = false,
_canReader = false,
// _canReader = false,
_canAbout = true,
_canHelp = true,
_canPrint = false;
@ -119,7 +122,7 @@ const SettingsList = inject("storeAppOptions", "storeReview")(observer(props =>
_canPrint = _canDownload = _canDownloadOrigin = false;
} else {
_isEdit = appOptions.isEdit;
_canReader = !appOptions.isEdit && !appOptions.isRestrictedEdit && appOptions.canReader;
// _canReader = !appOptions.isEdit && !appOptions.isRestrictedEdit && appOptions.canReader;
_canDownload = appOptions.canDownload;
_canDownloadOrigin = appOptions.canDownloadOrigin;
_canPrint = appOptions.canPrint;
@ -136,8 +139,9 @@ const SettingsList = inject("storeAppOptions", "storeReview")(observer(props =>
<Page>
{navbar}
<List>
{/*disabled={appOptions.readerMode ? true : false}*/}
{!props.inPopover &&
<ListItem disabled={appOptions.readerMode ? true : false} title={!_isEdit ? _t.textFind : _t.textFindAndReplace} link='#' searchbarEnable='.searchbar' onClick={closeModal} className='no-indicator'>
<ListItem title={!_isEdit || isViewer ? _t.textFind : _t.textFindAndReplace} link='#' searchbarEnable='.searchbar' onClick={closeModal} className='no-indicator'>
<Icon slot="media" icon="icon-search"></Icon>
</ListItem>
}
@ -154,26 +158,35 @@ const SettingsList = inject("storeAppOptions", "storeReview")(observer(props =>
<Icon slot="media" icon="icon-collaboration"></Icon>
</ListItem>
: null}
{_canReader &&
<ListItem title={_t.textReaderMode}> {/*ToDo*/}
<Icon slot="media" icon="icon-reader"></Icon>
<Toggle checked={appOptions.readerMode} onToggleChange={() => {props.onReaderMode()}}/>
</ListItem>
}
{/*{_canReader &&*/}
{/* <ListItem title={_t.textReaderMode}> /!*ToDo*!/*/}
{/* <Icon slot="media" icon="icon-reader"></Icon>*/}
{/* <Toggle checked={appOptions.readerMode} onToggleChange={() => {props.onReaderMode()}}/>*/}
{/* </ListItem>*/}
{/*}*/}
{Device.sailfish && _isEdit &&
<ListItem title={_t.textSpellcheck} onClick={() => {props.onOrthographyCheck()}} className='no-indicator' link="#">
<Icon slot="media" icon="icon-spellcheck"></Icon>
</ListItem>
}
{_isEdit &&
{!isViewer &&
<ListItem title={t('Settings.textMobileView')}>
<Icon slot="media" icon="icon-mobile-view"></Icon>
<Toggle checked={isMobileView} onToggleChange={() => props.onChangeMobileView()} />
</ListItem>
}
{(_isEdit && !isViewer) &&
<ListItem link="#" title={_t.textDocumentSettings} disabled={displayMode !== 'markup'}
onClick={onoptionclick.bind(this, '/document-settings/')}>
<Icon slot="media" icon="icon-doc-setup"></Icon>
</ListItem>
}
<ListItem title={_t.textApplicationSettings} link="#" onClick={onoptionclick.bind(this, "/application-settings/")}>
<Icon slot="media" icon="icon-app-settings"></Icon>
</ListItem>
{!isViewer &&
<ListItem title={_t.textApplicationSettings} link="#"
onClick={onoptionclick.bind(this, "/application-settings/")}>
<Icon slot="media" icon="icon-app-settings"></Icon>
</ListItem>
}
{_canDownload &&
<ListItem title={_t.textDownload} link="#" onClick={onoptionclick.bind(this, "/download/")}>
<Icon slot="media" icon="icon-download"></Icon>
@ -227,10 +240,10 @@ class SettingsView extends Component {
return (
show_popover ?
<Popover id="settings-popover" closeByOutsideClick={false} className="popover__titled" onPopoverClosed={() => this.props.onclosed()}>
<SettingsList inPopover={true} onOptionClick={this.onoptionclick} openOptions={this.props.openOptions} style={{height: '410px'}} onReaderMode={this.props.onReaderMode} onPrint={this.props.onPrint} showHelp={this.props.showHelp} showFeedback={this.props.showFeedback} onOrthographyCheck={this.props.onOrthographyCheck} onDownloadOrigin={this.props.onDownloadOrigin}/>
<SettingsList inPopover={true} onOptionClick={this.onoptionclick} openOptions={this.props.openOptions} style={{height: '410px'}} onChangeMobileView={this.props.onChangeMobileView} onPrint={this.props.onPrint} showHelp={this.props.showHelp} showFeedback={this.props.showFeedback} onOrthographyCheck={this.props.onOrthographyCheck} onDownloadOrigin={this.props.onDownloadOrigin}/>
</Popover> :
<Popup className="settings-popup" onPopupClosed={() => this.props.onclosed()}>
<SettingsList onOptionClick={this.onoptionclick} openOptions={this.props.openOptions} onReaderMode={this.props.onReaderMode} onPrint={this.props.onPrint} showHelp={this.props.showHelp} showFeedback={this.props.showFeedback} onOrthographyCheck={this.props.onOrthographyCheck} onDownloadOrigin={this.props.onDownloadOrigin}/>
<SettingsList onOptionClick={this.onoptionclick} openOptions={this.props.openOptions} onChangeMobileView={this.props.onChangeMobileView} onPrint={this.props.onPrint} showHelp={this.props.showHelp} showFeedback={this.props.showFeedback} onOrthographyCheck={this.props.onOrthographyCheck} onDownloadOrigin={this.props.onDownloadOrigin}/>
</Popup>
)
}