1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 10:58:33 +00:00

corrent logic for check generate share link, and share link permissions (#4121)

This commit is contained in:
Leo
2019-10-12 14:54:25 +08:00
committed by Daniel Pan
parent 821d6afbaa
commit 5b789c4300
9 changed files with 140 additions and 65 deletions

View File

@@ -25,11 +25,6 @@ class GenerateShareLink extends React.Component {
this.isExpireDaysNoLimit = (parseInt(shareLinkExpireDaysMin) === 0 && parseInt(shareLinkExpireDaysMax) === 0 && shareLinkExpireDaysDefault == 0);
this.defaultExpireDays = this.isExpireDaysNoLimit ? '' : shareLinkExpireDaysDefault;
if (isPro) {
this.editOption = 'edit_download';
this.permissionOptions = ['preview_download', 'preview_only'];
}
this.state = {
isValidate: false,
isShowPasswordInput: false,
@@ -42,7 +37,8 @@ class GenerateShareLink extends React.Component {
sharedLinkInfo: null,
isNoticeMessageShow: false,
isLoading: true,
currentPermission: isPro ? this.permissionOptions[0] : '',
permissionOptions: [],
currentPermission: '',
isSendLinkShown: false
};
}
@@ -65,15 +61,32 @@ class GenerateShareLink extends React.Component {
toaster.danger(errMessage);
});
if (isPro && Utils.isEditableOfficeFile(path)) {
seafileAPI.getFileInfo(repoID, path).then((res) => {
if (res.data.can_edit) {
this.permissionOptions.push(this.editOption);
if (isPro) {
if (this.props.itemType === 'library') {
let permissionOptions = Utils.getShareLinkPermissionList(this.props.itemType, '', path);
this.setState({
permissionOptions: permissionOptions,
currentPermission: permissionOptions[0],
});
} else {
let getDirentInfoAPI;
if (this.props.itemType === 'file') {
getDirentInfoAPI = seafileAPI.getFileInfo(repoID, path);
} else if (this.props.itemType === 'dir') {
getDirentInfoAPI = seafileAPI.getDirInfo(repoID, path);
}
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
getDirentInfoAPI.then((res) => {
let permission = res.data.permission;
let permissionOptions = Utils.getShareLinkPermissionList(this.props.itemType, permission, path);
this.setState({
permissionOptions: permissionOptions,
currentPermission: permissionOptions[0],
});
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
}
}
}
@@ -260,7 +273,6 @@ class GenerateShareLink extends React.Component {
}
render() {
if (this.state.isLoading) {
return <Loading />;
}
@@ -394,7 +406,7 @@ class GenerateShareLink extends React.Component {
<span>{gettext('Set permission')}</span>
</Label>
</FormGroup>
{this.permissionOptions.map((item, index) => {
{this.state.permissionOptions.map((item, index) => {
return (
<FormGroup check className="permission" key={index}>
<Label className="form-check-label">

View File

@@ -129,6 +129,7 @@ class ShareDialog extends React.Component {
itemPath={this.props.itemPath}
repoID={this.props.repoID}
closeShareDialog={this.props.toggleDialog}
itemType={itemType}
/>
</TabPane>
}
@@ -166,6 +167,7 @@ class ShareDialog extends React.Component {
renderFileContent = () => {
let activeTab = this.state.activeTab;
const { itemType } = this.props;
return (
<Fragment>
@@ -190,6 +192,7 @@ class ShareDialog extends React.Component {
itemPath={this.props.itemPath}
repoID={this.props.repoID}
closeShareDialog={this.props.toggleDialog}
itemType={itemType}
/>
</TabPane>
{activeTab === 'internalLink' &&