diff --git a/frontend/src/components/dialog/generate-share-link.js b/frontend/src/components/dialog/generate-share-link.js
index b03ef73207..9df04e1c8a 100644
--- a/frontend/src/components/dialog/generate-share-link.js
+++ b/frontend/src/components/dialog/generate-share-link.js
@@ -4,6 +4,7 @@ import moment from 'moment';
import copy from 'copy-to-clipboard';
import { Button, Form, FormGroup, Label, Input, InputGroup, InputGroupAddon, Alert } from 'reactstrap';
import { isPro, gettext, shareLinkExpireDaysMin, shareLinkExpireDaysMax, shareLinkExpireDaysDefault, shareLinkPasswordMinLength, canSendShareLinkEmail } from '../../utils/constants';
+import ShareLinkPermissionEditor from '../../components/select-editor/share-link-permission-editor';
import { seafileAPI } from '../../utils/seafile-api';
import { Utils } from '../../utils/utils';
import ShareLink from '../../models/share-link';
@@ -26,6 +27,7 @@ class GenerateShareLink extends React.Component {
this.defaultExpireDays = this.isExpireDaysNoLimit ? '' : shareLinkExpireDaysDefault;
this.state = {
+ isOpIconShown: false,
isValidate: false,
isShowPasswordInput: false,
isPasswordVisible: false,
@@ -44,7 +46,7 @@ class GenerateShareLink extends React.Component {
}
componentDidMount() {
- let path = this.props.itemPath;
+ let path = this.props.itemPath;
let repoID = this.props.repoID;
seafileAPI.getShareLink(repoID, path).then((res) => {
if (res.data.length !== 0) {
@@ -156,7 +158,7 @@ class GenerateShareLink extends React.Component {
toaster.success(gettext('Share link is copied to the clipboard.'));
this.props.closeShareDialog();
}
-
+
onCopyDownloadLink = () => {
let downloadLink = this.state.sharedLinkInfo.link + '?dl=1';
copy(downloadLink);
@@ -245,14 +247,14 @@ class GenerateShareLink extends React.Component {
return false;
}
}
-
+
if (minDays === 0 && maxDays !== 0 ) {
if (expireDays > maxDays) {
this.setState({errorInfo: 'Please enter valid days'});
return false;
}
}
-
+
if (minDays !== 0 && maxDays !== 0) {
if (expireDays < minDays || expireDays > maxDays) {
this.setState({errorInfo: 'Please enter valid days'});
@@ -273,6 +275,27 @@ class GenerateShareLink extends React.Component {
this.setState({ isSendLinkShown: !this.state.isSendLinkShown });
}
+ handleMouseOver = () => {
+ this.setState({isOpIconShown: true});
+ }
+
+ handleMouseOut = () => {
+ this.setState({isOpIconShown: false});
+ }
+
+ changePerm = (permission) => {
+ const permissionDetails = Utils.getShareLinkPermissionObject(permission).permissionDetails;
+ seafileAPI.updateShareLink(this.state.sharedLinkInfo.token, JSON.stringify(permissionDetails)).then((res) => {
+ let sharedLinkInfo = new ShareLink(res.data);
+ this.setState({sharedLinkInfo: sharedLinkInfo});
+ let message = gettext('Successfully modified permission.');
+ toaster.success(message);
+ }).catch((error) => {
+ let errMessage = Utils.getErrorMsg(error);
+ toaster.danger(errMessage);
+ });
+ }
+
render() {
if (this.state.isLoading) {
return