diff --git a/frontend/src/components/dirent-list-view/dirent-list-item.js b/frontend/src/components/dirent-list-view/dirent-list-item.js index a0214674de..b21b71b46e 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-item.js +++ b/frontend/src/components/dirent-list-view/dirent-list-item.js @@ -403,8 +403,80 @@ class DirentListItem extends React.Component { this.props.onItemContextMenu(event, dirent); } + renderItemOperation = () => { + let { dirent, selectedDirentList, currentRepoInfo } = this.props; + if (currentRepoInfo.permission === 'cloud-edit' || currentRepoInfo.permission === 'preview') { + return ''; + } + + return ( + + {selectedDirentList.length > 1 ? + + {this.state.isOperationShow && !dirent.isSelected && +
+
    +
  • + +
  • + {this.props.showShareBtn && +
  • + +
  • + } +
  • + +
  • +
  • + +
  • +
+
+ } +
: + + {this.state.isOperationShow && +
+
    +
  • + +
  • + {this.props.showShareBtn && +
  • + +
  • + } +
  • + +
  • +
  • + +
  • +
+
+ } +
+ } +
+ ) + } + render() { - let { path, dirent, selectedDirentList, activeDirent } = this.props; + let { path, dirent, activeDirent } = this.props; let direntPath = Utils.joinPath(path, dirent.name); let dirHref = ''; if (this.props.currentRepoInfo) { @@ -482,68 +554,7 @@ class DirentListItem extends React.Component { )} - - {selectedDirentList.length > 1 ? - - {this.state.isOperationShow && !dirent.isSelected && -
- -
- } -
: - - {this.state.isOperationShow && -
- -
- } -
- } - + {this.renderItemOperation()} {dirent.size && dirent.size} {dirent.mtime_relative} diff --git a/frontend/src/components/dirent-list-view/dirent-list-view.js b/frontend/src/components/dirent-list-view/dirent-list-view.js index 62190acd1e..383504a34d 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-view.js +++ b/frontend/src/components/dirent-list-view/dirent-list-view.js @@ -283,6 +283,12 @@ class DirentListView extends React.Component { event.preventDefault(); event.stopPropagation(); + let currentRepoInfo = this.props.currentRepoInfo; + + if (currentRepoInfo.permission === 'cloud-edit' || currentRepoInfo.permission === 'preview') { + return ''; + } + let x = event.clientX || (event.touches && event.touches[0].pageX); let y = event.clientY || (event.touches && event.touches[0].pageY); @@ -511,6 +517,8 @@ class DirentListView extends React.Component { menuList.push(HISTORY); return menuList; } + + return []; } render() { diff --git a/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js b/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js index 516f90fe30..0c33189856 100644 --- a/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js +++ b/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js @@ -16,6 +16,7 @@ import ModalPortal from '../modal-portal'; const propTypes = { path: PropTypes.string.isRequired, + userPerm: PropTypes.string.isRequired, repoID: PropTypes.string.isRequired, repoEncrypted: PropTypes.bool.isRequired, selectedDirentList: PropTypes.array.isRequired, @@ -232,8 +233,14 @@ class MutipleDirOperationToolbar extends React.Component { } render() { - const { repoID } = this.props; + + const { repoID, userPerm } = this.props; let direntPath = this.getDirentPath(this.props.selectedDirentList[0]); + + if (userPerm !== 'rw' && userPerm !== 'admin') { + return ''; + } + return (
diff --git a/frontend/src/pages/lib-content-view/lib-content-toolbar.js b/frontend/src/pages/lib-content-view/lib-content-toolbar.js index 6df0e17acd..b5b69c0bd4 100644 --- a/frontend/src/pages/lib-content-view/lib-content-toolbar.js +++ b/frontend/src/pages/lib-content-view/lib-content-toolbar.js @@ -88,6 +88,7 @@ class LibContentToolbar extends React.Component {