1
0
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:
杨顺强
2019-02-27 13:53:36 +08:00
committed by Daniel Pan
parent 34d4fe1017
commit 344eca259a
12 changed files with 61 additions and 81 deletions

View File

@@ -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>
}

View File

@@ -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'];
}

View File

@@ -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'];
}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}
/>

View File

@@ -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}
/>
);
})

View File

@@ -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}
/>