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.props.showShareBtn &&
- -
-
-
- }
- -
-
-
- -
-
-
-
-
- }
- :
-
- {this.state.isOperationShow &&
-
-
- -
-
-
- {this.props.showShareBtn &&
- -
-
-
- }
- -
-
-
- -
-
-
-
-
- }
-
- }
- |
+ {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 {