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()}