mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-19 23:48:51 +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:
parent
34d4fe1017
commit
344eca259a
@ -112,10 +112,10 @@ class ShareDialog extends React.Component {
|
|||||||
{enableDirPrivateShare &&
|
{enableDirPrivateShare &&
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<TabPane tabId="shareToUser">
|
<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>
|
||||||
<TabPane tabId="shareToGroup">
|
<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>
|
</TabPane>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
}
|
}
|
||||||
|
@ -86,6 +86,7 @@ class GroupList extends React.Component {
|
|||||||
const propTypes = {
|
const propTypes = {
|
||||||
isGroupOwnedRepo: PropTypes.bool,
|
isGroupOwnedRepo: PropTypes.bool,
|
||||||
itemPath: PropTypes.string.isRequired,
|
itemPath: PropTypes.string.isRequired,
|
||||||
|
itemType: PropTypes.string.isRequired,
|
||||||
repoID: PropTypes.string.isRequired
|
repoID: PropTypes.string.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -106,7 +107,12 @@ class ShareToGroup extends React.Component {
|
|||||||
sharedItems: []
|
sharedItems: []
|
||||||
};
|
};
|
||||||
this.options = [];
|
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) {
|
if (this.props.isGroupOwnedRepo || !isPro) {
|
||||||
this.permissions = ['rw', 'r'];
|
this.permissions = ['rw', 'r'];
|
||||||
}
|
}
|
||||||
|
@ -86,6 +86,7 @@ class UserList extends React.Component {
|
|||||||
const propTypes = {
|
const propTypes = {
|
||||||
isGroupOwnedRepo: PropTypes.bool,
|
isGroupOwnedRepo: PropTypes.bool,
|
||||||
itemPath: PropTypes.string.isRequired,
|
itemPath: PropTypes.string.isRequired,
|
||||||
|
itemType: PropTypes.string.isRequired,
|
||||||
repoID: PropTypes.string.isRequired
|
repoID: PropTypes.string.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -106,7 +107,12 @@ class ShareToUser extends React.Component {
|
|||||||
sharedItems: []
|
sharedItems: []
|
||||||
};
|
};
|
||||||
this.options = [];
|
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) {
|
if (this.props.isGroupOwnedRepo || !isPro) {
|
||||||
this.permissions = ['rw', 'r'];
|
this.permissions = ['rw', 'r'];
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ import React, { Fragment } from 'react';
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import DirColumnNav from './dir-column-nav';
|
import DirColumnNav from './dir-column-nav';
|
||||||
import DirColumnFile from './dir-column-file';
|
import DirColumnFile from './dir-column-file';
|
||||||
import DirListMode from './dir-list-view';
|
import DirListView from './dir-list-view';
|
||||||
|
|
||||||
import '../../css/lib-content-view.css';
|
import '../../css/lib-content-view.css';
|
||||||
|
|
||||||
@ -12,11 +12,8 @@ const propTypes = {
|
|||||||
// repoinfo
|
// repoinfo
|
||||||
currentRepoInfo: PropTypes.object.isRequired,
|
currentRepoInfo: PropTypes.object.isRequired,
|
||||||
repoPermission: PropTypes.bool.isRequired,
|
repoPermission: PropTypes.bool.isRequired,
|
||||||
repoEncrypted: PropTypes.bool.isRequired,
|
|
||||||
enableDirPrivateShare: PropTypes.bool.isRequired,
|
enableDirPrivateShare: PropTypes.bool.isRequired,
|
||||||
userPrem: PropTypes.bool,
|
userPrem: PropTypes.bool,
|
||||||
isAdmin: PropTypes.bool.isRequired,
|
|
||||||
isRepoOwner: PropTypes.bool.isRequired,
|
|
||||||
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
||||||
// tree
|
// tree
|
||||||
isTreeDataLoading: PropTypes.bool.isRequired,
|
isTreeDataLoading: PropTypes.bool.isRequired,
|
||||||
@ -110,13 +107,10 @@ class DirColumnView extends React.Component {
|
|||||||
onLinkClick={this.props.onLinkClick}
|
onLinkClick={this.props.onLinkClick}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<DirListMode
|
<DirListView
|
||||||
path={this.props.path}
|
path={this.props.path}
|
||||||
repoID={this.props.repoID}
|
repoID={this.props.repoID}
|
||||||
currentRepoInfo={this.props.currentRepoInfo}
|
currentRepoInfo={this.props.currentRepoInfo}
|
||||||
repoEncrypted={this.props.repoEncrypted}
|
|
||||||
isRepoOwner={this.props.isRepoOwner}
|
|
||||||
isAdmin={this.props.isAdmin}
|
|
||||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||||
isRepoInfoBarShow={this.props.isRepoInfoBarShow}
|
isRepoInfoBarShow={this.props.isRepoInfoBarShow}
|
||||||
|
@ -7,9 +7,6 @@ const propTypes = {
|
|||||||
path: PropTypes.string.isRequired,
|
path: PropTypes.string.isRequired,
|
||||||
repoID: PropTypes.string.isRequired,
|
repoID: PropTypes.string.isRequired,
|
||||||
currentRepoInfo: PropTypes.object.isRequired,
|
currentRepoInfo: PropTypes.object.isRequired,
|
||||||
repoEncrypted: PropTypes.bool.isRequired,
|
|
||||||
isRepoOwner: PropTypes.bool.isRequired,
|
|
||||||
isAdmin: PropTypes.bool.isRequired,
|
|
||||||
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
||||||
enableDirPrivateShare: PropTypes.bool.isRequired,
|
enableDirPrivateShare: PropTypes.bool.isRequired,
|
||||||
isRepoInfoBarShow: PropTypes.bool.isRequired,
|
isRepoInfoBarShow: PropTypes.bool.isRequired,
|
||||||
@ -57,9 +54,6 @@ class DirListView extends React.Component {
|
|||||||
path={this.props.path}
|
path={this.props.path}
|
||||||
currentRepoInfo={this.props.currentRepoInfo}
|
currentRepoInfo={this.props.currentRepoInfo}
|
||||||
repoID={this.props.repoID}
|
repoID={this.props.repoID}
|
||||||
repoEncrypted={this.props.repoEncrypted}
|
|
||||||
isRepoOwner={this.props.isRepoOwner}
|
|
||||||
isAdmin={this.props.isAdmin}
|
|
||||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||||
direntList={this.props.direntList}
|
direntList={this.props.direntList}
|
||||||
|
@ -337,7 +337,7 @@ class DirentListItem extends React.Component {
|
|||||||
|
|
||||||
let iconUrl = Utils.getDirentIcon(dirent);
|
let iconUrl = Utils.getDirentIcon(dirent);
|
||||||
|
|
||||||
const {repoEncrypted, isRepoOwner, isAdmin} = this.props;
|
const { repoEncrypted, isRepoOwner, isAdmin } = this.props;
|
||||||
let showShare = false;
|
let showShare = false;
|
||||||
if (!repoEncrypted &&
|
if (!repoEncrypted &&
|
||||||
(dirent.permission == 'rw' || dirent.permission == 'r')) {
|
(dirent.permission == 'rw' || dirent.permission == 'r')) {
|
||||||
@ -462,7 +462,6 @@ class DirentListItem extends React.Component {
|
|||||||
repoID={this.props.repoID}
|
repoID={this.props.repoID}
|
||||||
repoEncrypted={false}
|
repoEncrypted={false}
|
||||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||||
isAdmin={this.props.isAdmin}
|
|
||||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||||
toggleDialog={this.closeSharedDialog}
|
toggleDialog={this.closeSharedDialog}
|
||||||
/>
|
/>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import React, { Fragment } from 'react';
|
import React, { Fragment } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
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 { Utils } from '../../utils/utils';
|
||||||
import Loading from '../loading';
|
import Loading from '../loading';
|
||||||
import DirentListItem from './dirent-list-item';
|
import DirentListItem from './dirent-list-item';
|
||||||
@ -16,8 +16,6 @@ import toaster from '../toast';
|
|||||||
const propTypes = {
|
const propTypes = {
|
||||||
path: PropTypes.string.isRequired,
|
path: PropTypes.string.isRequired,
|
||||||
repoID: PropTypes.string.isRequired,
|
repoID: PropTypes.string.isRequired,
|
||||||
repoEncrypted: PropTypes.bool.isRequired,
|
|
||||||
isRepoOwner: PropTypes.bool,
|
|
||||||
currentRepoInfo: PropTypes.object,
|
currentRepoInfo: PropTypes.object,
|
||||||
isAllItemSelected: PropTypes.bool.isRequired,
|
isAllItemSelected: PropTypes.bool.isRequired,
|
||||||
isDirentListLoading: PropTypes.bool.isRequired,
|
isDirentListLoading: PropTypes.bool.isRequired,
|
||||||
@ -52,6 +50,10 @@ class DirentListView extends React.Component {
|
|||||||
isCreateFileDialogShow: false,
|
isCreateFileDialogShow: false,
|
||||||
fileType: ''
|
fileType: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.isRepoOwner = props.currentRepoInfo.owner_email === username;
|
||||||
|
this.isAdmin = props.currentRepoInfo.is_admin;
|
||||||
|
this.repoEncrypted = props.currentRepoInfo.encrypted;
|
||||||
}
|
}
|
||||||
|
|
||||||
onFreezedItem = () => {
|
onFreezedItem = () => {
|
||||||
@ -122,7 +124,7 @@ class DirentListView extends React.Component {
|
|||||||
return Utils.imageCheck(item.name);
|
return Utils.imageCheck(item.name);
|
||||||
});
|
});
|
||||||
|
|
||||||
const useThumbnail = !this.props.repoEncrypted;
|
const useThumbnail = !this.repoEncrypted;
|
||||||
let prepareItem = (item) => {
|
let prepareItem = (item) => {
|
||||||
const name = item.name;
|
const name = item.name;
|
||||||
|
|
||||||
@ -260,7 +262,11 @@ class DirentListView extends React.Component {
|
|||||||
path={this.props.path}
|
path={this.props.path}
|
||||||
repoID={this.props.repoID}
|
repoID={this.props.repoID}
|
||||||
currentRepoInfo={this.props.currentRepoInfo}
|
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}
|
direntList={this.props.direntList}
|
||||||
onItemClick={this.props.onItemClick}
|
onItemClick={this.props.onItemClick}
|
||||||
onItemRenameToggle={this.onItemRenameToggle}
|
onItemRenameToggle={this.onItemRenameToggle}
|
||||||
@ -276,10 +282,6 @@ class DirentListView extends React.Component {
|
|||||||
onDirentClick={this.props.onDirentClick}
|
onDirentClick={this.props.onDirentClick}
|
||||||
onItemDetails={this.onItemDetails}
|
onItemDetails={this.onItemDetails}
|
||||||
showImagePopup={this.showImagePopup}
|
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,
|
repoEncrypted: PropTypes.bool.isRequired,
|
||||||
enableDirPrivateShare: PropTypes.bool.isRequired,
|
enableDirPrivateShare: PropTypes.bool.isRequired,
|
||||||
userPerm: PropTypes.string.isRequired,
|
userPerm: PropTypes.string.isRequired,
|
||||||
isAdmin: PropTypes.bool.isRequired,
|
|
||||||
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
||||||
showShareBtn: PropTypes.bool.isRequired,
|
showShareBtn: PropTypes.bool.isRequired,
|
||||||
onAddFile: PropTypes.func.isRequired,
|
onAddFile: PropTypes.func.isRequired,
|
||||||
@ -155,7 +154,7 @@ class DirOperationToolbar extends React.Component {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
let { path, repoName } = this.props;
|
let { path, repoName } = this.props;
|
||||||
let itemType = 'dir';
|
let itemType = path === '/' ? 'library' : 'dir';
|
||||||
let itemName = path == '/' ? repoName : Utils.getFolderName(path);
|
let itemName = path == '/' ? repoName : Utils.getFolderName(path);
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
@ -217,7 +216,6 @@ class DirOperationToolbar extends React.Component {
|
|||||||
repoEncrypted={this.props.repoEncrypted}
|
repoEncrypted={this.props.repoEncrypted}
|
||||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||||
userPerm={this.props.userPerm}
|
userPerm={this.props.userPerm}
|
||||||
isAdmin={this.props.isAdmin}
|
|
||||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||||
toggleDialog={this.onShareClick}
|
toggleDialog={this.onShareClick}
|
||||||
/>
|
/>
|
||||||
|
@ -10,11 +10,15 @@ class RepoInfo {
|
|||||||
this.owner_name = object.owner_name;
|
this.owner_name = object.owner_name;
|
||||||
this.owner_email = object.owner_email;
|
this.owner_email = object.owner_email;
|
||||||
this.owner_contact_email = object.owner_contact_email;
|
this.owner_contact_email = object.owner_contact_email;
|
||||||
|
// is repo shared admin;
|
||||||
|
// is repo shared admin && is one of current ordinary group's admins;
|
||||||
|
// is one of current group owned group's admins;
|
||||||
this.is_admin = object.is_admin;
|
this.is_admin = object.is_admin;
|
||||||
this.is_virtual = object.is_virtual;
|
this.is_virtual = object.is_virtual;
|
||||||
this.no_quota = object.no_quota;
|
this.no_quota = object.no_quota;
|
||||||
this.has_been_shared_out = object.has_been_shared_out;
|
this.has_been_shared_out = object.has_been_shared_out;
|
||||||
this.encrypted = object.encrypted;
|
this.encrypted = object.encrypted;
|
||||||
|
this.lib_need_decrypt = object.lib_need_decrypt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,13 +15,9 @@ const propTypes = {
|
|||||||
// repoinfo
|
// repoinfo
|
||||||
currentRepoInfo: PropTypes.object.isRequired,
|
currentRepoInfo: PropTypes.object.isRequired,
|
||||||
repoID: PropTypes.string.isRequired,
|
repoID: PropTypes.string.isRequired,
|
||||||
repoName: PropTypes.string.isRequired,
|
|
||||||
repoPermission: PropTypes.bool.isRequired,
|
repoPermission: PropTypes.bool.isRequired,
|
||||||
repoEncrypted: PropTypes.bool.isRequired,
|
|
||||||
enableDirPrivateShare: PropTypes.bool.isRequired,
|
enableDirPrivateShare: PropTypes.bool.isRequired,
|
||||||
userPrem: PropTypes.bool,
|
userPrem: PropTypes.bool,
|
||||||
isAdmin: PropTypes.bool.isRequired,
|
|
||||||
isRepoOwner: PropTypes.bool.isRequired,
|
|
||||||
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
||||||
// path func
|
// path func
|
||||||
onTabNavClick: PropTypes.func.isRequired,
|
onTabNavClick: PropTypes.func.isRequired,
|
||||||
@ -133,10 +129,10 @@ class LibContentContainer extends React.Component {
|
|||||||
<div className="cur-view-container">
|
<div className="cur-view-container">
|
||||||
<div className="cur-view-path">
|
<div className="cur-view-path">
|
||||||
<CurDirPath
|
<CurDirPath
|
||||||
pathPrefix={this.props.pathPrefix}
|
|
||||||
currentPath={this.props.path}
|
|
||||||
repoID={repoID}
|
repoID={repoID}
|
||||||
repoName={this.props.currentRepoInfo.repo_name}
|
repoName={this.props.currentRepoInfo.repo_name}
|
||||||
|
pathPrefix={this.props.pathPrefix}
|
||||||
|
currentPath={this.props.path}
|
||||||
permission={this.props.repoPermission}
|
permission={this.props.repoPermission}
|
||||||
onTabNavClick={this.props.onTabNavClick}
|
onTabNavClick={this.props.onTabNavClick}
|
||||||
onPathClick={this.onPathClick}
|
onPathClick={this.onPathClick}
|
||||||
@ -151,9 +147,6 @@ class LibContentContainer extends React.Component {
|
|||||||
path={this.props.path}
|
path={this.props.path}
|
||||||
repoID={repoID}
|
repoID={repoID}
|
||||||
currentRepoInfo={this.props.currentRepoInfo}
|
currentRepoInfo={this.props.currentRepoInfo}
|
||||||
repoEncrypted={this.props.repoEncrypted}
|
|
||||||
isRepoOwner={this.props.isRepoOwner}
|
|
||||||
isAdmin={this.props.isAdmin}
|
|
||||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||||
isRepoInfoBarShow={isRepoInfoBarShow}
|
isRepoInfoBarShow={isRepoInfoBarShow}
|
||||||
@ -191,9 +184,6 @@ class LibContentContainer extends React.Component {
|
|||||||
repoID={repoID}
|
repoID={repoID}
|
||||||
currentRepoInfo={this.props.currentRepoInfo}
|
currentRepoInfo={this.props.currentRepoInfo}
|
||||||
repoPermission={this.props.repoPermission}
|
repoPermission={this.props.repoPermission}
|
||||||
repoEncrypted={this.props.repoEncrypted}
|
|
||||||
isRepoOwner={this.props.isRepoOwner}
|
|
||||||
isAdmin={this.props.isAdmin}
|
|
||||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||||
isTreeDataLoading={this.props.isTreeDataLoading}
|
isTreeDataLoading={this.props.isTreeDataLoading}
|
||||||
|
@ -28,7 +28,6 @@ const propTypes = {
|
|||||||
direntList: PropTypes.array.isRequired,
|
direntList: PropTypes.array.isRequired,
|
||||||
repoName: PropTypes.string.isRequired,
|
repoName: PropTypes.string.isRequired,
|
||||||
repoEncrypted: PropTypes.bool.isRequired,
|
repoEncrypted: PropTypes.bool.isRequired,
|
||||||
isAdmin: PropTypes.bool.isRequired,
|
|
||||||
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
||||||
userPerm: PropTypes.string.isRequired,
|
userPerm: PropTypes.string.isRequired,
|
||||||
showShareBtn: PropTypes.bool.isRequired,
|
showShareBtn: PropTypes.bool.isRequired,
|
||||||
@ -122,7 +121,6 @@ class LibContentToolbar extends React.Component {
|
|||||||
showShareBtn={this.props.showShareBtn}
|
showShareBtn={this.props.showShareBtn}
|
||||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||||
userPerm={this.props.userPerm}
|
userPerm={this.props.userPerm}
|
||||||
isAdmin={this.props.isAdmin}
|
|
||||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||||
onAddFile={this.props.onAddFile}
|
onAddFile={this.props.onAddFile}
|
||||||
onAddFolder={this.props.onAddFolder}
|
onAddFolder={this.props.onAddFolder}
|
||||||
|
@ -42,11 +42,7 @@ class LibContentView extends React.Component {
|
|||||||
repoEncrypted: false,
|
repoEncrypted: false,
|
||||||
libNeedDecrypt: false,
|
libNeedDecrypt: false,
|
||||||
isGroupOwnedRepo: false,
|
isGroupOwnedRepo: false,
|
||||||
isDepartmentAdmin: false,
|
|
||||||
isAdmin: false,
|
|
||||||
ownerEmail: '',
|
|
||||||
userPerm: '',
|
userPerm: '',
|
||||||
isVirtual: false,
|
|
||||||
selectedDirentList: [],
|
selectedDirentList: [],
|
||||||
isDraft: false,
|
isDraft: false,
|
||||||
hasDraft: false,
|
hasDraft: false,
|
||||||
@ -98,27 +94,11 @@ class LibContentView extends React.Component {
|
|||||||
this.setState({
|
this.setState({
|
||||||
currentRepoInfo: repoInfo,
|
currentRepoInfo: repoInfo,
|
||||||
repoName: repoInfo.repo_name,
|
repoName: repoInfo.repo_name,
|
||||||
libNeedDecrypt: res.data.lib_need_decrypt,
|
libNeedDecrypt: repoInfo.lib_need_decrypt,
|
||||||
repoEncrypted: repoInfo.encrypted,
|
repoEncrypted: repoInfo.encrypted,
|
||||||
isVirtual: repoInfo.is_virtual,
|
|
||||||
isAdmin: repoInfo.is_admin,
|
|
||||||
ownerEmail: repoInfo.owner_email,
|
|
||||||
repoPermission: repoInfo.permission === 'rw'
|
repoPermission: repoInfo.permission === 'rw'
|
||||||
});
|
});
|
||||||
|
|
||||||
const ownerEmail = repoInfo.owner_email;
|
|
||||||
if (repoInfo.owner_email.indexOf('@seafile_group') != -1) {
|
|
||||||
|
|
||||||
const groupID = ownerEmail.substring(0, ownerEmail.indexOf('@'));
|
|
||||||
this.setState({isGroupOwnedRepo: true});
|
|
||||||
|
|
||||||
seafileAPI.getGroup(groupID).then(res => {
|
|
||||||
if (res.data.admins.indexOf(username) != -1) {
|
|
||||||
this.setState({isDepartmentAdmin: true});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let repoID = repoInfo.repo_id;
|
let repoID = repoInfo.repo_id;
|
||||||
let path = location.slice(location.indexOf(repoID) + repoID.length + 1); // get the string after repoID
|
let path = location.slice(location.indexOf(repoID) + repoID.length + 1); // get the string after repoID
|
||||||
path = path.slice(path.indexOf('/')); // get current path
|
path = path.slice(path.indexOf('/')); // get current path
|
||||||
@ -127,7 +107,7 @@ class LibContentView extends React.Component {
|
|||||||
|
|
||||||
this.setState({path: path});
|
this.setState({path: path});
|
||||||
|
|
||||||
if (!res.data.lib_need_decrypt) {
|
if (!repoInfo.lib_need_decrypt) {
|
||||||
this.loadDirData(path);
|
this.loadDirData(path);
|
||||||
}
|
}
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
@ -1192,15 +1172,29 @@ class LibContentView extends React.Component {
|
|||||||
|
|
||||||
let showShareBtn = false;
|
let showShareBtn = false;
|
||||||
let enableDirPrivateShare = false;
|
let enableDirPrivateShare = false;
|
||||||
const { repoEncrypted, isAdmin, ownerEmail, userPerm, isVirtual, isDepartmentAdmin } = this.state;
|
let { currentRepoInfo, repoEncrypted, userPerm } = this.state;
|
||||||
let isRepoOwner = ownerEmail === username;
|
let isAdmin = currentRepoInfo.is_admin;
|
||||||
|
let isVirtual = currentRepoInfo.is_virtual;
|
||||||
|
let isRepoOwner = currentRepoInfo.owner_email === username;
|
||||||
|
|
||||||
if (!repoEncrypted) {
|
if (!repoEncrypted) {
|
||||||
if ((canGenerateShareLink || canGenerateUploadLink || isRepoOwner || isAdmin) && (userPerm == 'rw' || userPerm == 'r')) {
|
let showGenerateShareLinkTab = false;
|
||||||
showShareBtn = true;
|
if (canGenerateShareLink && (userPerm == 'rw' || userPerm == 'r')) {
|
||||||
if (!isVirtual && (isRepoOwner || isAdmin || isDepartmentAdmin)) {
|
showGenerateShareLinkTab = true;
|
||||||
enableDirPrivateShare = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
let showGenerateUploadLinkTab = false;
|
||||||
|
if (canGenerateUploadLink && (userPerm == 'rw')) {
|
||||||
|
showGenerateUploadLinkTab = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isVirtual && (isRepoOwner || isAdmin)) {
|
||||||
|
enableDirPrivateShare = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (showGenerateShareLinkTab || showGenerateUploadLinkTab || enableDirPrivateShare) {
|
||||||
|
showShareBtn = true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -1222,7 +1216,6 @@ class LibContentView extends React.Component {
|
|||||||
direntList={this.state.direntList}
|
direntList={this.state.direntList}
|
||||||
repoName={this.state.repoName}
|
repoName={this.state.repoName}
|
||||||
repoEncrypted={this.state.repoEncrypted}
|
repoEncrypted={this.state.repoEncrypted}
|
||||||
isAdmin={this.state.isAdmin}
|
|
||||||
isGroupOwnedRepo={this.state.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.state.isGroupOwnedRepo}
|
||||||
userPerm={this.state.userPerm}
|
userPerm={this.state.userPerm}
|
||||||
showShareBtn={showShareBtn}
|
showShareBtn={showShareBtn}
|
||||||
@ -1244,13 +1237,9 @@ class LibContentView extends React.Component {
|
|||||||
pathExist={this.state.pathExist}
|
pathExist={this.state.pathExist}
|
||||||
currentRepoInfo={this.state.currentRepoInfo}
|
currentRepoInfo={this.state.currentRepoInfo}
|
||||||
repoID={this.props.repoID}
|
repoID={this.props.repoID}
|
||||||
repoName={this.state.repoName}
|
|
||||||
repoPermission={this.state.repoPermission}
|
repoPermission={this.state.repoPermission}
|
||||||
repoEncrypted={this.state.repoEncrypted}
|
|
||||||
enableDirPrivateShare={enableDirPrivateShare}
|
enableDirPrivateShare={enableDirPrivateShare}
|
||||||
userPerm={userPerm}
|
userPerm={userPerm}
|
||||||
isAdmin={isAdmin}
|
|
||||||
isRepoOwner={isRepoOwner}
|
|
||||||
isGroupOwnedRepo={this.state.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.state.isGroupOwnedRepo}
|
||||||
onTabNavClick={this.props.onTabNavClick}
|
onTabNavClick={this.props.onTabNavClick}
|
||||||
onMainNavBarClick={this.onMainNavBarClick}
|
onMainNavBarClick={this.onMainNavBarClick}
|
||||||
|
Loading…
Reference in New Issue
Block a user