[DE mobile] Add restriction for view comments, context menu and short document title
This commit is contained in:
parent
6ca40588d8
commit
0d24b79e2e
|
@ -677,7 +677,7 @@ const ViewComments = inject("storeComments", "storeAppOptions", "storeReview")(o
|
|||
</div>
|
||||
{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> }
|
||||
{(comment.editable && displayMode === 'markup' && !wsProps?.Objects) && <div className='comment-resolve' onClick={() => {!isViewer && onResolveComment(comment);}}><Icon icon={comment.resolved ? 'icon-resolve-comment check' : 'icon-resolve-comment'} /></div> }
|
||||
{(displayMode === 'markup' && !wsProps?.Objects && !isViewer) &&
|
||||
<div className='comment-menu'
|
||||
onClick={() => {setComment(comment); openActionComment(true);}}>
|
||||
|
@ -747,7 +747,7 @@ const CommentList = inject("storeComments", "storeAppOptions", "storeReview")(ob
|
|||
const _t = t('Common.Collaboration', {returnObjects: true});
|
||||
const isAndroid = Device.android;
|
||||
const displayMode = storeReview.displayMode;
|
||||
|
||||
const isViewer = storeAppOptions.isViewer;
|
||||
const viewMode = !storeAppOptions.canComments;
|
||||
const isEdit = storeAppOptions.isEdit || storeAppOptions.isRestrictedEdit;
|
||||
const comments = storeComments.showComments;
|
||||
|
@ -787,7 +787,7 @@ const CommentList = inject("storeComments", "storeAppOptions", "storeReview")(ob
|
|||
<Fragment>
|
||||
<Toolbar position='bottom'>
|
||||
{isEdit && !viewMode &&
|
||||
<Link className={`btn-add-reply${wsProps?.Objects ? ' disabled' : ''}`} href='#' onClick={() => {onCommentMenuClick('addReply', comment);}}>{_t.textAddReply}</Link>
|
||||
<Link className={`btn-add-reply${wsProps?.Objects || isViewer ? ' disabled' : ''}`} href='#' onClick={() => {onCommentMenuClick('addReply', comment);}}>{_t.textAddReply}</Link>
|
||||
}
|
||||
<div className='comment-navigation row'>
|
||||
<Link href='#' onClick={onViewPrevComment}><Icon slot='media' icon='icon-prev'/></Link>
|
||||
|
@ -808,8 +808,8 @@ const CommentList = inject("storeComments", "storeAppOptions", "storeReview")(ob
|
|||
</div>
|
||||
{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) &&
|
||||
{(comment.editable && displayMode === 'markup' && !wsProps?.Objects) && <div className='comment-resolve' onClick={() => {!isViewer && onResolveComment(comment);}}><Icon icon={comment.resolved ? 'icon-resolve-comment check' : 'icon-resolve-comment'}/></div>}
|
||||
{(displayMode === 'markup' && !wsProps?.Objects && !isViewer) &&
|
||||
<div className='comment-menu'
|
||||
onClick={() => {openActionComment(true);}}>
|
||||
<Icon icon='icon-menu-comment'/>
|
||||
|
@ -839,14 +839,14 @@ const CommentList = inject("storeComments", "storeAppOptions", "storeReview")(ob
|
|||
<div className='reply-date'>{reply.date}</div>
|
||||
</div>
|
||||
</div>
|
||||
{isEdit && !viewMode && reply.editable &&
|
||||
<div className='right'>
|
||||
<div className='reply-menu'
|
||||
onClick={() => {setReply(reply); openActionReply(true);}}
|
||||
>
|
||||
<Icon icon='icon-menu-comment'/>
|
||||
{isEdit && !viewMode && reply.editable && !isViewer &&
|
||||
<div className='right'>
|
||||
<div className='reply-menu'
|
||||
onClick={() => {setReply(reply); openActionReply(true);}}
|
||||
>
|
||||
<Icon icon='icon-menu-comment'/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<div slot='footer'>
|
||||
|
|
|
@ -47,6 +47,11 @@
|
|||
.subnavbar {
|
||||
.subnavbar-inner {
|
||||
padding: 0;
|
||||
.title {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
.icon-back {
|
||||
color: @toolbar-icons;
|
||||
|
|
|
@ -19,7 +19,8 @@ import EditorUIController from '../lib/patch';
|
|||
users: stores.users,
|
||||
isDisconnected: stores.users.isDisconnected,
|
||||
displayMode: stores.storeReview.displayMode,
|
||||
dataDoc: stores.storeDocumentInfo.dataDoc
|
||||
dataDoc: stores.storeDocumentInfo.dataDoc,
|
||||
isViewer: stores.storeAppOptions.isViewer
|
||||
}))
|
||||
class ContextMenu extends ContextMenuController {
|
||||
constructor(props) {
|
||||
|
@ -225,6 +226,7 @@ class ContextMenu extends ContextMenuController {
|
|||
} else {
|
||||
const { t } = this.props;
|
||||
const _t = t("ContextMenu", { returnObjects: true });
|
||||
|
||||
f7.dialog.create({
|
||||
title: t('Settings', {returnObjects: true}).notcriticalErrorTitle,
|
||||
text : _t.txtWarnUrl,
|
||||
|
@ -256,7 +258,7 @@ class ContextMenu extends ContextMenuController {
|
|||
|
||||
initMenuItems() {
|
||||
if ( !Common.EditorApi ) return [];
|
||||
const { isEdit, canFillForms, isDisconnected } = this.props;
|
||||
const { isEdit, canFillForms, isDisconnected, isViewer } = this.props;
|
||||
|
||||
if (isEdit && EditorUIController.ContextMenu) {
|
||||
return EditorUIController.ContextMenu.mapMenuItems(this);
|
||||
|
@ -296,36 +298,36 @@ class ContextMenu extends ContextMenuController {
|
|||
let itemsIcon = [],
|
||||
itemsText = [];
|
||||
|
||||
if ( canCopy ) {
|
||||
if (canCopy) {
|
||||
itemsIcon.push({
|
||||
event: 'copy',
|
||||
icon: 'icon-copy'
|
||||
});
|
||||
}
|
||||
|
||||
if(!isDisconnected) {
|
||||
if ( canFillForms && canCopy && !locked ) {
|
||||
if (!isDisconnected) {
|
||||
if (canFillForms && canCopy && !locked && !isViewer) {
|
||||
itemsIcon.push({
|
||||
event: 'cut',
|
||||
icon: 'icon-cut'
|
||||
});
|
||||
}
|
||||
|
||||
if ( canFillForms && canCopy && !locked ) {
|
||||
if (canFillForms && canCopy && !locked && !isViewer) {
|
||||
itemsIcon.push({
|
||||
event: 'paste',
|
||||
icon: 'icon-paste'
|
||||
});
|
||||
}
|
||||
|
||||
if ( canViewComments && this.isComments ) {
|
||||
if (canViewComments && this.isComments) {
|
||||
itemsText.push({
|
||||
caption: _t.menuViewComment,
|
||||
event: 'viewcomment'
|
||||
});
|
||||
}
|
||||
|
||||
if (api.can_AddQuotedComment() !== false && canCoAuthoring && canComments && !locked && !(!isText && isObject)) {
|
||||
if (api.can_AddQuotedComment() !== false && canCoAuthoring && canComments && !locked && !(!isText && isObject) && !isViewer) {
|
||||
itemsText.push({
|
||||
caption: _t.menuAddComment,
|
||||
event: 'addcomment'
|
||||
|
@ -333,14 +335,14 @@ class ContextMenu extends ContextMenuController {
|
|||
}
|
||||
}
|
||||
|
||||
if ( isLink ) {
|
||||
if (isLink) {
|
||||
itemsText.push({
|
||||
caption: _t.menuOpenLink,
|
||||
event: 'openlink'
|
||||
});
|
||||
}
|
||||
|
||||
if(inToc && isEdit) {
|
||||
if(inToc && isEdit && !isViewer) {
|
||||
itemsText.push({
|
||||
caption: t('ContextMenu.textRefreshEntireTable'),
|
||||
event: 'refreshEntireTable'
|
||||
|
|
|
@ -27,19 +27,6 @@ const Settings = props => {
|
|||
}
|
||||
};
|
||||
|
||||
// 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();
|
||||
|
||||
|
@ -109,7 +96,6 @@ const Settings = props => {
|
|||
return <SettingsView usePopover={!Device.phone}
|
||||
openOptions={props.openOptions}
|
||||
onclosed={props.onclosed}
|
||||
// onReaderMode={onReaderMode}
|
||||
onPrint={onPrint}
|
||||
showHelp={showHelp}
|
||||
showFeedback={showFeedback}
|
||||
|
|
|
@ -11,6 +11,19 @@ const ToolbarView = props => {
|
|||
const isViewer = props.isViewer;
|
||||
const isMobileView = props.isMobileView;
|
||||
|
||||
const shortTitle = (title) => {
|
||||
const arrDocTitle = title.split('.');
|
||||
const ext = arrDocTitle[1];
|
||||
const name = arrDocTitle[0];
|
||||
|
||||
if(name.length > 7 && Device.phone) {
|
||||
let shortName = name.substring(0, 7);
|
||||
return `${shortName}...${ext}`;
|
||||
}
|
||||
|
||||
return title;
|
||||
};
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<NavLeft>
|
||||
|
@ -23,7 +36,7 @@ const ToolbarView = props => {
|
|||
onRedoClick: props.onRedo
|
||||
})}
|
||||
</NavLeft>
|
||||
{(!Device.phone || isViewer) && <NavTitle>{props.docTitle}</NavTitle>}
|
||||
{(!Device.phone || isViewer) && <NavTitle>{shortTitle(props.docTitle)}</NavTitle>}
|
||||
<NavRight>
|
||||
{(Device.android && props.isEdit && !isViewer) && EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({
|
||||
disabledUndo: !props.isCanUndo,
|
||||
|
|
|
@ -112,7 +112,6 @@ const SettingsList = inject("storeAppOptions", "storeReview")(observer(props =>
|
|||
let _isEdit = false,
|
||||
_canDownload = false,
|
||||
_canDownloadOrigin = false,
|
||||
// _canReader = false,
|
||||
_canAbout = true,
|
||||
_canHelp = true,
|
||||
_canPrint = false;
|
||||
|
@ -122,7 +121,6 @@ const SettingsList = inject("storeAppOptions", "storeReview")(observer(props =>
|
|||
_canPrint = _canDownload = _canDownloadOrigin = false;
|
||||
} else {
|
||||
_isEdit = appOptions.isEdit;
|
||||
// _canReader = !appOptions.isEdit && !appOptions.isRestrictedEdit && appOptions.canReader;
|
||||
_canDownload = appOptions.canDownload;
|
||||
_canDownloadOrigin = appOptions.canDownloadOrigin;
|
||||
_canPrint = appOptions.canPrint;
|
||||
|
@ -139,7 +137,6 @@ const SettingsList = inject("storeAppOptions", "storeReview")(observer(props =>
|
|||
<Page>
|
||||
{navbar}
|
||||
<List>
|
||||
{/*disabled={appOptions.readerMode ? true : false}*/}
|
||||
{!props.inPopover &&
|
||||
<ListItem title={!_isEdit || isViewer ? _t.textFind : _t.textFindAndReplace} link='#' searchbarEnable='.searchbar' onClick={closeModal} className='no-indicator'>
|
||||
<Icon slot="media" icon="icon-search"></Icon>
|
||||
|
@ -158,12 +155,6 @@ 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>*/}
|
||||
{/*}*/}
|
||||
{Device.sailfish && _isEdit &&
|
||||
<ListItem title={_t.textSpellcheck} onClick={() => {props.onOrthographyCheck()}} className='no-indicator' link="#">
|
||||
<Icon slot="media" icon="icon-spellcheck"></Icon>
|
||||
|
|
Loading…
Reference in a new issue