diff --git a/frontend/src/components/dir-view-mode/dir-files.js b/frontend/src/components/dir-view-mode/dir-files.js index 9a7697ce01..8b576ad094 100644 --- a/frontend/src/components/dir-view-mode/dir-files.js +++ b/frontend/src/components/dir-view-mode/dir-files.js @@ -362,8 +362,20 @@ class DirFiles extends React.Component { }; render() { - const { repoID, currentRepoInfo } = this.props; - const repoEncrypted = currentRepoInfo.encrypted; + const { repoID, currentRepoInfo, userPerm } = this.props; + const { encrypted: repoEncrypted } = currentRepoInfo; + + let canModifyFile = false; + if (['rw', 'cloud-edit'].indexOf(userPerm) != -1) { + canModifyFile = true; + } else { + const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm); + if (isCustomPermission) { + const { modify } = customPermission.permission; + canModifyFile = modify; + } + } + return ( <> )} diff --git a/frontend/src/components/dirent-grid-view/dirent-grid-view.js b/frontend/src/components/dirent-grid-view/dirent-grid-view.js index f220c28819..8ef32109f4 100644 --- a/frontend/src/components/dirent-grid-view/dirent-grid-view.js +++ b/frontend/src/components/dirent-grid-view/dirent-grid-view.js @@ -843,14 +843,25 @@ class DirentGridView extends React.Component { }; render() { - let { direntList, selectedDirentList, path } = this.props; + const { direntList, selectedDirentList, path, currentRepoInfo, userPerm } = this.props; + const { encrypted: repoEncrypted } = currentRepoInfo; let dirent = this.state.activeDirent ? this.state.activeDirent : ''; let direntPath = Utils.joinPath(path, dirent.name); + let canModifyFile = false; + if (['rw', 'cloud-edit'].indexOf(userPerm) != -1) { + canModifyFile = true; + } else { + const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm); + if (isCustomPermission) { + const { modify } = customPermission.permission; + canModifyFile = modify; + } + } + if (this.props.isDirentListLoading) { return (); } - const repoEncrypted = this.props.currentRepoInfo.encrypted; return ( @@ -1025,7 +1036,7 @@ class DirentGridView extends React.Component { moveToNextImage={this.moveToNextImage} onDeleteImage={this.deleteImage} onRotateImage={this.rotateImage} - enableRotate={!repoEncrypted} + enableRotate={canModifyFile} /> )} 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 f4238c6b15..06066dea94 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-view.js +++ b/frontend/src/components/dirent-list-view/dirent-list-view.js @@ -749,10 +749,20 @@ class DirentListView extends React.Component { }; render() { - const { direntList } = this.props; - + const { direntList, currentRepoInfo, userPerm } = this.props; + const { encrypted: repoEncrypted } = currentRepoInfo; const isDesktop = Utils.isDesktop(); - const repoEncrypted = this.props.currentRepoInfo.encrypted; + + let canModifyFile = false; + if (['rw', 'cloud-edit'].indexOf(userPerm) != -1) { + canModifyFile = true; + } else { + const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm); + if (isCustomPermission) { + const { modify } = customPermission.permission; + canModifyFile = modify; + } + } return ( )} diff --git a/frontend/src/components/dirent-list-view/dirent-none-view.js b/frontend/src/components/dirent-list-view/dirent-none-view.js index 28c20e6f0e..75658ca759 100644 --- a/frontend/src/components/dirent-list-view/dirent-none-view.js +++ b/frontend/src/components/dirent-list-view/dirent-none-view.js @@ -162,31 +162,36 @@ class DirentNoneView extends React.Component { if (this.props.isDirentListLoading) { return (); } - const { currentRepoInfo } = this.props; + const { currentRepoInfo, userPerm } = this.props; + let canCreateFile = false; + if (['rw', 'cloud-edit'].indexOf(userPerm) != -1) { + canCreateFile = true; + } else { + const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm); + if (isCustomPermission) { + const { create } = customPermission.permission; + canCreateFile = create; + } + } return ( {gettext('This folder has no content at this time.')} - {gettext('You can create files quickly')}{' +'} - - {'+ Markdown'} - - - {'+ PPT'} - - - - {'+ Word'} - - - {'+ Excel'} - - - {enableSeadoc && !currentRepoInfo.encrypted && - - {'+ SeaDoc'} - } + {canCreateFile && ( + <> + {gettext('You can create files quickly')}{' +'} + {'+ Markdown'} + {'+ PPT'} + + {'+ Word'} + {'+ Excel'} + + {enableSeadoc && !currentRepoInfo.encrypted && + {'+ SeaDoc'} + } + > + )} {this.state.isCreateFileDialogShow && (
{gettext('This folder has no content at this time.')}
{gettext('You can create files quickly')}{' +'}