mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-04 16:31:13 +00:00
Dir mode optimized (#2992)
* optimized isRepoOwner&isAdmin * optimized isAdmin * optimized encrypted porps * optimized showShareBtn judgement * repair share bug * update showShareBtn logic * delete unnecessary comment
This commit is contained in:
@@ -54,7 +54,7 @@ class ShareDialog extends React.Component {
|
||||
const {repoEncrypted, userPerm, enableDirPrivateShare} = this.props;
|
||||
const enableShareLink = !repoEncrypted && canGenerateShareLink;
|
||||
const enableUploadLink = !repoEncrypted && canGenerateUploadLink && userPerm == 'rw';
|
||||
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<div className="share-dialog-side">
|
||||
@@ -112,10 +112,10 @@ class ShareDialog extends React.Component {
|
||||
{enableDirPrivateShare &&
|
||||
<Fragment>
|
||||
<TabPane tabId="shareToUser">
|
||||
<ShareToUser isGroupOwnedRepo={this.props.isGroupOwnedRepo} itemPath={this.props.itemPath} repoID={this.props.repoID} />
|
||||
<ShareToUser itemType={this.props.itemType} isGroupOwnedRepo={this.props.isGroupOwnedRepo} itemPath={this.props.itemPath} repoID={this.props.repoID} />
|
||||
</TabPane>
|
||||
<TabPane tabId="shareToGroup">
|
||||
<ShareToGroup isGroupOwnedRepo={this.props.isGroupOwnedRepo} itemPath={this.props.itemPath} repoID={this.props.repoID} />
|
||||
<ShareToGroup itemType={this.props.itemType} isGroupOwnedRepo={this.props.isGroupOwnedRepo} itemPath={this.props.itemPath} repoID={this.props.repoID} />
|
||||
</TabPane>
|
||||
</Fragment>
|
||||
}
|
||||
|
@@ -86,6 +86,7 @@ class GroupList extends React.Component {
|
||||
const propTypes = {
|
||||
isGroupOwnedRepo: PropTypes.bool,
|
||||
itemPath: PropTypes.string.isRequired,
|
||||
itemType: PropTypes.string.isRequired,
|
||||
repoID: PropTypes.string.isRequired
|
||||
};
|
||||
|
||||
@@ -106,7 +107,12 @@ class ShareToGroup extends React.Component {
|
||||
sharedItems: []
|
||||
};
|
||||
this.options = [];
|
||||
this.permissions = ['rw', 'r', 'cloud-edit', 'preview'];
|
||||
this.permissions = []
|
||||
if (this.props.itemType === 'library') {
|
||||
this.permissions = ['rw', 'r', 'admin', 'cloud-edit', 'preview'];
|
||||
} else if (this.props.itemType === 'dir') {
|
||||
this.permissions = ['rw', 'r', 'cloud-edit', 'preview'];
|
||||
}
|
||||
if (this.props.isGroupOwnedRepo || !isPro) {
|
||||
this.permissions = ['rw', 'r'];
|
||||
}
|
||||
|
@@ -86,6 +86,7 @@ class UserList extends React.Component {
|
||||
const propTypes = {
|
||||
isGroupOwnedRepo: PropTypes.bool,
|
||||
itemPath: PropTypes.string.isRequired,
|
||||
itemType: PropTypes.string.isRequired,
|
||||
repoID: PropTypes.string.isRequired
|
||||
};
|
||||
|
||||
@@ -106,7 +107,12 @@ class ShareToUser extends React.Component {
|
||||
sharedItems: []
|
||||
};
|
||||
this.options = [];
|
||||
this.permissions = ['rw', 'r', 'admin', 'cloud-edit', 'preview'];
|
||||
this.permissions = [];
|
||||
if (this.props.itemType === 'library') {
|
||||
this.permissions = ['rw', 'r', 'admin', 'cloud-edit', 'preview'];
|
||||
} else if (this.props.itemType === 'dir') {
|
||||
this.permissions = ['rw', 'r', 'cloud-edit', 'preview'];
|
||||
}
|
||||
if (this.props.isGroupOwnedRepo || !isPro) {
|
||||
this.permissions = ['rw', 'r'];
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@ import React, { Fragment } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import DirColumnNav from './dir-column-nav';
|
||||
import DirColumnFile from './dir-column-file';
|
||||
import DirListMode from './dir-list-view';
|
||||
import DirListView from './dir-list-view';
|
||||
|
||||
import '../../css/lib-content-view.css';
|
||||
|
||||
@@ -12,11 +12,8 @@ const propTypes = {
|
||||
// repoinfo
|
||||
currentRepoInfo: PropTypes.object.isRequired,
|
||||
repoPermission: PropTypes.bool.isRequired,
|
||||
repoEncrypted: PropTypes.bool.isRequired,
|
||||
enableDirPrivateShare: PropTypes.bool.isRequired,
|
||||
userPrem: PropTypes.bool,
|
||||
isAdmin: PropTypes.bool.isRequired,
|
||||
isRepoOwner: PropTypes.bool.isRequired,
|
||||
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
||||
// tree
|
||||
isTreeDataLoading: PropTypes.bool.isRequired,
|
||||
@@ -110,13 +107,10 @@ class DirColumnView extends React.Component {
|
||||
onLinkClick={this.props.onLinkClick}
|
||||
/>
|
||||
) : (
|
||||
<DirListMode
|
||||
<DirListView
|
||||
path={this.props.path}
|
||||
repoID={this.props.repoID}
|
||||
currentRepoInfo={this.props.currentRepoInfo}
|
||||
repoEncrypted={this.props.repoEncrypted}
|
||||
isRepoOwner={this.props.isRepoOwner}
|
||||
isAdmin={this.props.isAdmin}
|
||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||
isRepoInfoBarShow={this.props.isRepoInfoBarShow}
|
||||
|
@@ -7,9 +7,6 @@ const propTypes = {
|
||||
path: PropTypes.string.isRequired,
|
||||
repoID: PropTypes.string.isRequired,
|
||||
currentRepoInfo: PropTypes.object.isRequired,
|
||||
repoEncrypted: PropTypes.bool.isRequired,
|
||||
isRepoOwner: PropTypes.bool.isRequired,
|
||||
isAdmin: PropTypes.bool.isRequired,
|
||||
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
||||
enableDirPrivateShare: PropTypes.bool.isRequired,
|
||||
isRepoInfoBarShow: PropTypes.bool.isRequired,
|
||||
@@ -57,9 +54,6 @@ class DirListView extends React.Component {
|
||||
path={this.props.path}
|
||||
currentRepoInfo={this.props.currentRepoInfo}
|
||||
repoID={this.props.repoID}
|
||||
repoEncrypted={this.props.repoEncrypted}
|
||||
isRepoOwner={this.props.isRepoOwner}
|
||||
isAdmin={this.props.isAdmin}
|
||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||
direntList={this.props.direntList}
|
||||
|
@@ -337,7 +337,7 @@ class DirentListItem extends React.Component {
|
||||
|
||||
let iconUrl = Utils.getDirentIcon(dirent);
|
||||
|
||||
const {repoEncrypted, isRepoOwner, isAdmin} = this.props;
|
||||
const { repoEncrypted, isRepoOwner, isAdmin } = this.props;
|
||||
let showShare = false;
|
||||
if (!repoEncrypted &&
|
||||
(dirent.permission == 'rw' || dirent.permission == 'r')) {
|
||||
@@ -462,7 +462,6 @@ class DirentListItem extends React.Component {
|
||||
repoID={this.props.repoID}
|
||||
repoEncrypted={false}
|
||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||
isAdmin={this.props.isAdmin}
|
||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||
toggleDialog={this.closeSharedDialog}
|
||||
/>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import React, { Fragment } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { siteRoot, gettext, thumbnailSizeForOriginal } from '../../utils/constants';
|
||||
import { siteRoot, gettext, thumbnailSizeForOriginal, username } from '../../utils/constants';
|
||||
import { Utils } from '../../utils/utils';
|
||||
import Loading from '../loading';
|
||||
import DirentListItem from './dirent-list-item';
|
||||
@@ -16,8 +16,6 @@ import toaster from '../toast';
|
||||
const propTypes = {
|
||||
path: PropTypes.string.isRequired,
|
||||
repoID: PropTypes.string.isRequired,
|
||||
repoEncrypted: PropTypes.bool.isRequired,
|
||||
isRepoOwner: PropTypes.bool,
|
||||
currentRepoInfo: PropTypes.object,
|
||||
isAllItemSelected: PropTypes.bool.isRequired,
|
||||
isDirentListLoading: PropTypes.bool.isRequired,
|
||||
@@ -52,6 +50,10 @@ class DirentListView extends React.Component {
|
||||
isCreateFileDialogShow: false,
|
||||
fileType: ''
|
||||
};
|
||||
|
||||
this.isRepoOwner = props.currentRepoInfo.owner_email === username;
|
||||
this.isAdmin = props.currentRepoInfo.is_admin;
|
||||
this.repoEncrypted = props.currentRepoInfo.encrypted;
|
||||
}
|
||||
|
||||
onFreezedItem = () => {
|
||||
@@ -122,7 +124,7 @@ class DirentListView extends React.Component {
|
||||
return Utils.imageCheck(item.name);
|
||||
});
|
||||
|
||||
const useThumbnail = !this.props.repoEncrypted;
|
||||
const useThumbnail = !this.repoEncrypted;
|
||||
let prepareItem = (item) => {
|
||||
const name = item.name;
|
||||
|
||||
@@ -260,7 +262,11 @@ class DirentListView extends React.Component {
|
||||
path={this.props.path}
|
||||
repoID={this.props.repoID}
|
||||
currentRepoInfo={this.props.currentRepoInfo}
|
||||
isRepoOwner={this.props.isRepoOwner}
|
||||
isAdmin={this.isAdmin}
|
||||
isRepoOwner={this.isRepoOwner}
|
||||
repoEncrypted={this.repoEncrypted}
|
||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||
direntList={this.props.direntList}
|
||||
onItemClick={this.props.onItemClick}
|
||||
onItemRenameToggle={this.onItemRenameToggle}
|
||||
@@ -276,10 +282,6 @@ class DirentListView extends React.Component {
|
||||
onDirentClick={this.props.onDirentClick}
|
||||
onItemDetails={this.onItemDetails}
|
||||
showImagePopup={this.showImagePopup}
|
||||
repoEncrypted={this.props.repoEncrypted}
|
||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||
isAdmin={this.props.isAdmin}
|
||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||
/>
|
||||
);
|
||||
})
|
||||
|
@@ -14,7 +14,6 @@ const propTypes = {
|
||||
repoEncrypted: PropTypes.bool.isRequired,
|
||||
enableDirPrivateShare: PropTypes.bool.isRequired,
|
||||
userPerm: PropTypes.string.isRequired,
|
||||
isAdmin: PropTypes.bool.isRequired,
|
||||
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
||||
showShareBtn: PropTypes.bool.isRequired,
|
||||
onAddFile: PropTypes.func.isRequired,
|
||||
@@ -155,7 +154,7 @@ class DirOperationToolbar extends React.Component {
|
||||
|
||||
render() {
|
||||
let { path, repoName } = this.props;
|
||||
let itemType = 'dir';
|
||||
let itemType = path === '/' ? 'library' : 'dir';
|
||||
let itemName = path == '/' ? repoName : Utils.getFolderName(path);
|
||||
return (
|
||||
<Fragment>
|
||||
@@ -217,7 +216,6 @@ class DirOperationToolbar extends React.Component {
|
||||
repoEncrypted={this.props.repoEncrypted}
|
||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||
userPerm={this.props.userPerm}
|
||||
isAdmin={this.props.isAdmin}
|
||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||
toggleDialog={this.onShareClick}
|
||||
/>
|
||||
|
Reference in New Issue
Block a user