diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 50f6660bfc..34c29aeb41 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -765,7 +765,7 @@
},
"axios": {
"version": "0.18.0",
- "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "^1.3.0",
diff --git a/frontend/src/components/select-editor/share-links-permission-editor.js b/frontend/src/components/select-editor/share-links-permission-editor.js
new file mode 100644
index 0000000000..d83c2d5167
--- /dev/null
+++ b/frontend/src/components/select-editor/share-links-permission-editor.js
@@ -0,0 +1,42 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { gettext } from '../../utils/constants';
+import SelectEditor from './select-editor';
+
+const propTypes = {
+ isTextMode: PropTypes.bool.isRequired,
+ isEditIconShow: PropTypes.bool.isRequired,
+ permissionOptions: PropTypes.array.isRequired,
+ currentPermission: PropTypes.string.isRequired,
+ onPermissionChanged: PropTypes.func.isRequired
+};
+
+class ShareLinksPermissionEditor extends React.Component {
+
+ translatePermission = (permission) => {
+ if (permission === 'Preview only') {
+ return gettext('Preview only');
+ }
+
+ if (permission === 'Preview and download') {
+ return gettext('Preview and download');
+ }
+ }
+
+ render() {
+ return (
+
+ );
+ }
+}
+
+ShareLinksPermissionEditor.propTypes = propTypes;
+
+export default ShareLinksPermissionEditor;
diff --git a/frontend/src/pages/share-admin/share-links.js b/frontend/src/pages/share-admin/share-links.js
index a2a5596e3e..b2a99b6d6c 100644
--- a/frontend/src/pages/share-admin/share-links.js
+++ b/frontend/src/pages/share-admin/share-links.js
@@ -6,6 +6,7 @@ import { seafileAPI } from '../../utils/seafile-api';
import { Utils } from '../../utils/utils';
import { gettext, siteRoot, loginUrl, canGenerateUploadLink } from '../../utils/constants';
import SharedLinkInfo from '../../models/shared-link-info';
+import ShareLinksPermissionEditor from '../../components/select-editor/share-links-permission-editor';
import copy from '@seafile/seafile-editor/dist//utils/copy-to-clipboard';
import toaster from '../../components/toast';
@@ -118,9 +119,13 @@ class Item extends Component {
constructor(props) {
super(props);
+
+ let item = this.props.item
this.state = {
+ currentPermission: item.permissions.can_download ? 'Preview and download' : 'Preview only',
showOpIcon: false,
};
+ this.permissionOptions = ['Preview only', 'Preview and download'];
}
handleMouseOver = () => {
@@ -174,6 +179,26 @@ class Item extends Component {
);
}
+ changePerm = (changed_to_permissions) => {
+ const item = this.props.item;
+ let permissions = item.permissions;
+
+ if (changed_to_permissions === 'Preview only')
+ permissions.can_download = false;
+ else if (changed_to_permissions === 'Preview and download')
+ permissions.can_download = true;
+
+ seafileAPI.updateShareLink(item.token, JSON.stringify(permissions)).then(() => {
+ this.setState({
+ currentPermission: changed_to_permissions,
+ });
+ // TODO: show feedback msg
+ // gettext("Successfully modified permission")
+ }).catch((error) => {
+ // TODO: show feedback msg
+ });
+ }
+
render() {
const item = this.props.item;
let { iconUrl, linkUrl } = this.getLinkParams();
@@ -182,7 +207,7 @@ class Item extends Component {
let linkIconClassName = 'sf2-icon-link action-icon' + iconVisibility;
let deleteIconClassName = 'sf2-icon-delete action-icon' + iconVisibility;
return (
-
+
 |
{item.is_dir ?
@@ -191,10 +216,15 @@ class Item extends Component {
}
|
{item.repo_name} |
- { item.permissions.can_download ?
- {gettext('Preview and download')} | :
- {gettext('Preview only')} |
- }
+
+
+ |
{item.view_cnt} |
{this.renderExpriedData()} |
|