From 17dba3e3c7c7575b7dc41b2166fb15f44c282779 Mon Sep 17 00:00:00 2001 From: zxj96 <519213124@qq.com> Date: Thu, 25 Apr 2019 15:09:28 +0800 Subject: [PATCH 1/6] When canGenerateShareLink is equal to false delete share --- .../dirent-grid-view/dirent-grid-view.js | 6 +++++- .../dirent-list-view/dirent-list-item.js | 20 ++++++++++++++++--- .../dirent-list-view/dirent-list-view.js | 6 +++++- .../toolbar/markdown-viewer-toolbar.js | 6 ++++-- .../toolbar/mutilple-dir-operation-toolbar.js | 10 +++++++--- .../components/toolbar/view-file-toolbar.js | 7 ++++--- 6 files changed, 42 insertions(+), 13 deletions(-) diff --git a/frontend/src/components/dirent-grid-view/dirent-grid-view.js b/frontend/src/components/dirent-grid-view/dirent-grid-view.js index a56e1b49c3..7d0ac33394 100644 --- a/frontend/src/components/dirent-grid-view/dirent-grid-view.js +++ b/frontend/src/components/dirent-grid-view/dirent-grid-view.js @@ -1,6 +1,6 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; -import { siteRoot, thumbnailSizeForOriginal, username, isPro, enableFileComment, fileAuditEnabled, folderPermEnabled } from '../../utils/constants'; +import { siteRoot, thumbnailSizeForOriginal, username, isPro, enableFileComment, fileAuditEnabled, folderPermEnabled, canGenerateShareLink } from '../../utils/constants'; import { Utils } from '../../utils/utils'; import { seafileAPI } from '../../utils/seafile-api'; import URLDecorator from '../../utils/url-decorator'; @@ -412,6 +412,10 @@ class DirentGridView extends React.Component{ if (isContextmenu) { let { SHARE, DOWNLOAD, DELETE } = TextTranslation; contextmenuList = this.props.showShareBtn ? [SHARE, DOWNLOAD, DELETE, 'Divider'] : [DOWNLOAD, DELETE, 'Divider']; + + if (dirent.type === 'file') { + contextmenuList = canGenerateShareLink ? [SHARE, DOWNLOAD, DELETE, 'Divider'] : [DOWNLOAD, DELETE, 'Divider'] + } } let { RENAME, MOVE, COPY, PERMISSION, DETAILS, OPEN_VIA_CLIENT, LOCK, UNLOCK, COMMENT, HISTORY, ACCESS_LOG } = TextTranslation; diff --git a/frontend/src/components/dirent-list-view/dirent-list-item.js b/frontend/src/components/dirent-list-view/dirent-list-item.js index 9fe750caef..07c3eebf54 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-item.js +++ b/frontend/src/components/dirent-list-view/dirent-list-item.js @@ -2,7 +2,7 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import MD5 from 'MD5'; import { UncontrolledTooltip } from 'reactstrap'; -import { gettext, siteRoot, mediaUrl, username } from '../../utils/constants'; +import { gettext, siteRoot, mediaUrl, username, canGenerateShareLink } from '../../utils/constants'; import { Utils } from '../../utils/utils'; import { seafileAPI } from '../../utils/seafile-api'; import URLDecorator from '../../utils/url-decorator'; @@ -412,6 +412,20 @@ class DirentListItem extends React.Component { if (currentRepoInfo.permission === 'cloud-edit' || currentRepoInfo.permission === 'preview') { return ''; } + + let isShowShareBtn = false; + + if (canGenerateShareLink) { + isShowShareBtn = true; + } else { + if (this.props.showShareBtn) { + if (dirent.type === 'dir') { + isShowShareBtn = true; + } else { + isShowShareBtn = false; + } + } + } return ( @@ -423,7 +437,7 @@ class DirentListItem extends React.Component {
  • - {this.props.showShareBtn && + {this.props.showShareBtn && isShowShareBtn &&
  • @@ -453,7 +467,7 @@ class DirentListItem extends React.Component {
  • - {this.props.showShareBtn && + {this.props.showShareBtn && isShowShareBtn &&
  • diff --git a/frontend/src/components/dirent-list-view/dirent-list-view.js b/frontend/src/components/dirent-list-view/dirent-list-view.js index 5b28016eb6..3bffdc7925 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-view.js +++ b/frontend/src/components/dirent-list-view/dirent-list-view.js @@ -1,6 +1,6 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; -import { siteRoot, gettext, thumbnailSizeForOriginal, username, isPro, enableFileComment, fileAuditEnabled, folderPermEnabled } from '../../utils/constants'; +import { siteRoot, gettext, thumbnailSizeForOriginal, username, isPro, enableFileComment, fileAuditEnabled, folderPermEnabled, canGenerateShareLink } from '../../utils/constants'; import { Utils } from '../../utils/utils'; import TextTranslation from '../../utils/text-translation'; import { seafileAPI } from '../../utils/seafile-api'; @@ -459,6 +459,10 @@ class DirentListView extends React.Component { if (isContextmenu) { let { SHARE, DOWNLOAD, DELETE } = TextTranslation; contextmenuList = this.props.showShareBtn ? [SHARE, DOWNLOAD, DELETE, 'Divider'] : [DOWNLOAD, DELETE, 'Divider']; + + if (dirent.type === 'file') { + contextmenuList = canGenerateShareLink ? [SHARE, DOWNLOAD, DELETE, 'Divider'] : [DOWNLOAD, DELETE, 'Divider'] + } } let { RENAME, MOVE, COPY, PERMISSION, OPEN_VIA_CLIENT, LOCK, UNLOCK, COMMENT, HISTORY, ACCESS_LOG, TAGS } = TextTranslation; diff --git a/frontend/src/components/toolbar/markdown-viewer-toolbar.js b/frontend/src/components/toolbar/markdown-viewer-toolbar.js index 2966c16c2e..379e306a3d 100644 --- a/frontend/src/components/toolbar/markdown-viewer-toolbar.js +++ b/frontend/src/components/toolbar/markdown-viewer-toolbar.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { gettext } from '../../utils/constants'; +import { gettext, canGenerateShareLink } from '../../utils/constants'; import { IconButton, ButtonGroup, CollabUsersButton } from '@seafile/seafile-editor/dist/components/topbarcomponent/editorToolBar'; import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Tooltip } from 'reactstrap'; import FileInfo from '@seafile/seafile-editor/dist/components/topbarcomponent/file-info'; @@ -141,8 +141,10 @@ class MarkdownViewerToolbar extends React.Component { /> } - + } { diff --git a/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js b/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js index b75373da27..29066e60ea 100644 --- a/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js +++ b/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js @@ -1,7 +1,7 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { Button, ButtonGroup } from 'reactstrap'; -import { gettext } from '../../utils/constants'; +import { gettext, canGenerateShareLink } from '../../utils/constants'; import { Utils, isPro } from '../../utils/utils'; import { seafileAPI } from '../../utils/seafile-api'; import URLDecorator from '../../utils/url-decorator'; @@ -92,13 +92,17 @@ class MutipleDirOperationToolbar extends React.Component { const { SHARE, TAGS, RELATED_FILES, HISTORY, OPEN_VIA_CLIENT, LOCK, UNLOCK } = TextTranslation; + let shareBtn = currentRepoInfo.encrypted ? [] : [SHARE]; + if (dirent.type === 'dir') { - menuList = [SHARE]; + menuList = [...shareBtn]; return menuList; } if (dirent.type === 'file') { - menuList = [SHARE, TAGS, RELATED_FILES, 'Divider', HISTORY, 'Divider', OPEN_VIA_CLIENT]; + shareBtn = canGenerateShareLink ? [SHARE] : []; + + menuList = [...shareBtn, TAGS, RELATED_FILES, 'Divider', HISTORY, 'Divider', OPEN_VIA_CLIENT]; if (!Utils.isMarkdownFile(dirent.name)) { menuList.splice(2, 1); } diff --git a/frontend/src/components/toolbar/view-file-toolbar.js b/frontend/src/components/toolbar/view-file-toolbar.js index f5834c5ba6..8ce9ccfbf1 100644 --- a/frontend/src/components/toolbar/view-file-toolbar.js +++ b/frontend/src/components/toolbar/view-file-toolbar.js @@ -2,7 +2,7 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { DropdownToggle, Dropdown, DropdownMenu, DropdownItem, Tooltip} from 'reactstrap'; import { Utils } from '../../utils/utils'; -import { gettext, siteRoot } from '../../utils/constants'; +import { gettext, siteRoot, canGenerateShareLink } from '../../utils/constants'; import { seafileAPI } from '../../utils/seafile-api'; import ModalPotal from '../modal-portal'; import ShareDialog from '../dialog/share-dialog'; @@ -88,7 +88,6 @@ class ViewFileToolbar extends React.Component { let { filePermission } = this.props; let name = Utils.getFileName(this.props.path); let dirent = { name: name }; - return (
    @@ -109,7 +108,9 @@ class ViewFileToolbar extends React.Component { {gettext('More')} - {gettext('Share')} + {canGenerateShareLink && + {gettext('Share')} + } {gettext('Tags')} {gettext('Related Files')} From 4002e1aad0cb8a1d854f501955825d8a55fab9ad Mon Sep 17 00:00:00 2001 From: zxj96 <519213124@qq.com> Date: Thu, 25 Apr 2019 16:29:41 +0800 Subject: [PATCH 2/6] modify some style --- .../components/dirent-list-view/dirent-list-item.js | 13 ++++++------- .../components/dirent-list-view/dirent-list-view.js | 2 +- .../components/toolbar/markdown-viewer-toolbar.js | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/dirent-list-view/dirent-list-item.js b/frontend/src/components/dirent-list-view/dirent-list-item.js index 07c3eebf54..dfc2c0995e 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-item.js +++ b/frontend/src/components/dirent-list-view/dirent-list-item.js @@ -414,11 +414,10 @@ class DirentListItem extends React.Component { } let isShowShareBtn = false; - - if (canGenerateShareLink) { - isShowShareBtn = true; - } else { - if (this.props.showShareBtn) { + if (this.props.showShareBtn) { + if (canGenerateShareLink) { + isShowShareBtn = true; + } else { if (dirent.type === 'dir') { isShowShareBtn = true; } else { @@ -437,7 +436,7 @@ class DirentListItem extends React.Component {
  • - {this.props.showShareBtn && isShowShareBtn && + {isShowShareBtn &&
  • @@ -467,7 +466,7 @@ class DirentListItem extends React.Component {
  • - {this.props.showShareBtn && isShowShareBtn && + {isShowShareBtn &&
  • diff --git a/frontend/src/components/dirent-list-view/dirent-list-view.js b/frontend/src/components/dirent-list-view/dirent-list-view.js index 3bffdc7925..5d824fb659 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-view.js +++ b/frontend/src/components/dirent-list-view/dirent-list-view.js @@ -461,7 +461,7 @@ class DirentListView extends React.Component { contextmenuList = this.props.showShareBtn ? [SHARE, DOWNLOAD, DELETE, 'Divider'] : [DOWNLOAD, DELETE, 'Divider']; if (dirent.type === 'file') { - contextmenuList = canGenerateShareLink ? [SHARE, DOWNLOAD, DELETE, 'Divider'] : [DOWNLOAD, DELETE, 'Divider'] + contextmenuList = canGenerateShareLink ? [SHARE, DOWNLOAD, DELETE, 'Divider'] : [DOWNLOAD, DELETE, 'Divider']; } } diff --git a/frontend/src/components/toolbar/markdown-viewer-toolbar.js b/frontend/src/components/toolbar/markdown-viewer-toolbar.js index 379e306a3d..221e864c0c 100644 --- a/frontend/src/components/toolbar/markdown-viewer-toolbar.js +++ b/frontend/src/components/toolbar/markdown-viewer-toolbar.js @@ -77,7 +77,7 @@ class MoreMenu extends React.PureComponent { {(this.props.openDialogs && editorMode === 'rich') && {gettext('Help')} } - {isSmall && {gettext('Share')}} + {isSmall && canGenerateShareLink && {gettext('Share')}} {isSmall && {gettext('Back to parent directory')}} {(isSmall && this.props.showFileHistory) && {gettext('File History')} From 9f0bf9aba063ffae24405bb5ab38bfdc5f547a2f Mon Sep 17 00:00:00 2001 From: zxj96 <519213124@qq.com> Date: Thu, 25 Apr 2019 16:45:23 +0800 Subject: [PATCH 3/6] Add judgement from cdoc-editor-topbar --- frontend/src/components/toolbar/cdoc-editor-topbar.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/toolbar/cdoc-editor-topbar.js b/frontend/src/components/toolbar/cdoc-editor-topbar.js index 99603d44c5..44614be8c6 100644 --- a/frontend/src/components/toolbar/cdoc-editor-topbar.js +++ b/frontend/src/components/toolbar/cdoc-editor-topbar.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { gettext } from '../../utils/constants'; +import { gettext, canGenerateShareLink } from '../../utils/constants'; import { IconButton, ButtonGroup, CollabUsersButton } from '@seafile/seafile-editor/dist/components/topbarcomponent/editorToolBar'; import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Tooltip } from 'reactstrap'; import FileInfo from '@seafile/seafile-editor/dist/components/topbarcomponent/file-info'; @@ -62,8 +62,10 @@ class CDOCTopbar extends React.Component { {this.props.collabUsers.length > 0 && } - + } { From 2c83d6882c72b5f394e1cee019fc94157873d0dc Mon Sep 17 00:00:00 2001 From: zxj96 <519213124@qq.com> Date: Thu, 25 Apr 2019 17:04:31 +0800 Subject: [PATCH 4/6] modify bug to mutiple-dir-operation-toolbar --- .../src/components/toolbar/mutilple-dir-operation-toolbar.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js b/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js index 29066e60ea..6b5227d692 100644 --- a/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js +++ b/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js @@ -100,7 +100,9 @@ class MutipleDirOperationToolbar extends React.Component { } if (dirent.type === 'file') { - shareBtn = canGenerateShareLink ? [SHARE] : []; + if (!currentRepoInfo.encrypted) { + shareBtn = canGenerateShareLink ? [SHARE] : []; + } menuList = [...shareBtn, TAGS, RELATED_FILES, 'Divider', HISTORY, 'Divider', OPEN_VIA_CLIENT]; if (!Utils.isMarkdownFile(dirent.name)) { From b79894cb729b89a82ff047978c41ad4368d36a33 Mon Sep 17 00:00:00 2001 From: zxj96 <519213124@qq.com> Date: Thu, 25 Apr 2019 18:28:52 +0800 Subject: [PATCH 5/6] optimization code --- .../components/dirent-list-view/dirent-list-item.js | 13 +------------ .../toolbar/mutilple-dir-operation-toolbar.js | 9 ++++----- .../src/components/toolbar/view-file-toolbar.js | 3 ++- .../pages/lib-content-view/lib-content-toolbar.js | 2 ++ 4 files changed, 9 insertions(+), 18 deletions(-) diff --git a/frontend/src/components/dirent-list-view/dirent-list-item.js b/frontend/src/components/dirent-list-view/dirent-list-item.js index dfc2c0995e..999ef4faa5 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-item.js +++ b/frontend/src/components/dirent-list-view/dirent-list-item.js @@ -413,18 +413,7 @@ class DirentListItem extends React.Component { return ''; } - let isShowShareBtn = false; - if (this.props.showShareBtn) { - if (canGenerateShareLink) { - isShowShareBtn = true; - } else { - if (dirent.type === 'dir') { - isShowShareBtn = true; - } else { - isShowShareBtn = false; - } - } - } + let isShowShareBtn = (dirent.type === 'dir' && this.props.isShowShareBtn) || canGenerateShareLink; return ( diff --git a/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js b/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js index 6b5227d692..9856178cb2 100644 --- a/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js +++ b/frontend/src/components/toolbar/mutilple-dir-operation-toolbar.js @@ -32,6 +32,7 @@ const propTypes = { onFilesTagChanged: PropTypes.func.isRequired, unSelectDirent: PropTypes.func.isRequired, updateDirent: PropTypes.func.isRequired, + showShareBtn: PropTypes.bool.isRequired, }; class MutipleDirOperationToolbar extends React.Component { @@ -92,18 +93,16 @@ class MutipleDirOperationToolbar extends React.Component { const { SHARE, TAGS, RELATED_FILES, HISTORY, OPEN_VIA_CLIENT, LOCK, UNLOCK } = TextTranslation; - let shareBtn = currentRepoInfo.encrypted ? [] : [SHARE]; if (dirent.type === 'dir') { + let shareBtn = this.props.showShareBtn ? [SHARE] : [] menuList = [...shareBtn]; return menuList; } if (dirent.type === 'file') { - if (!currentRepoInfo.encrypted) { - shareBtn = canGenerateShareLink ? [SHARE] : []; - } - + let shareBtn = (this.props.showShareBtn && canGenerateShareLink) ? [SHARE] : []; + menuList = [...shareBtn, TAGS, RELATED_FILES, 'Divider', HISTORY, 'Divider', OPEN_VIA_CLIENT]; if (!Utils.isMarkdownFile(dirent.name)) { menuList.splice(2, 1); diff --git a/frontend/src/components/toolbar/view-file-toolbar.js b/frontend/src/components/toolbar/view-file-toolbar.js index 8ce9ccfbf1..b289e330f2 100644 --- a/frontend/src/components/toolbar/view-file-toolbar.js +++ b/frontend/src/components/toolbar/view-file-toolbar.js @@ -23,6 +23,7 @@ const propTypes = { relatedFiles: PropTypes.array.isRequired, onFileTagChanged: PropTypes.func.isRequired, onRelatedFileChange: PropTypes.func.isRequired, + showShareBtn: PropTypes.bool.isRequired, }; class ViewFileToolbar extends React.Component { @@ -108,7 +109,7 @@ class ViewFileToolbar extends React.Component { {gettext('More')} - {canGenerateShareLink && + {this.props.showShareBtn && canGenerateShareLink && {gettext('Share')} } {gettext('Tags')} diff --git a/frontend/src/pages/lib-content-view/lib-content-toolbar.js b/frontend/src/pages/lib-content-view/lib-content-toolbar.js index 1bda24b038..1aa3ea3e64 100644 --- a/frontend/src/pages/lib-content-view/lib-content-toolbar.js +++ b/frontend/src/pages/lib-content-view/lib-content-toolbar.js @@ -71,6 +71,7 @@ class LibContentToolbar extends React.Component { relatedFiles={this.props.relatedFiles} onFileTagChanged={this.props.onFileTagChanged} onRelatedFileChange={this.props.onRelatedFileChange} + showShareBtn={this.props.showShareBtn} />
    @@ -101,6 +102,7 @@ class LibContentToolbar extends React.Component { relatedFiles={this.props.relatedFiles} unSelectDirent={this.props.unSelectDirent} onFilesTagChanged={this.props.onFilesTagChanged} + showShareBtn={this.props.showShareBtn} /> : Date: Thu, 25 Apr 2019 18:40:27 +0800 Subject: [PATCH 6/6] optimization code to dirent-list-item --- frontend/src/components/dirent-list-view/dirent-list-item.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/dirent-list-view/dirent-list-item.js b/frontend/src/components/dirent-list-view/dirent-list-item.js index 999ef4faa5..f41be55efe 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-item.js +++ b/frontend/src/components/dirent-list-view/dirent-list-item.js @@ -413,7 +413,7 @@ class DirentListItem extends React.Component { return ''; } - let isShowShareBtn = (dirent.type === 'dir' && this.props.isShowShareBtn) || canGenerateShareLink; + let isShowShareBtn = (dirent.type === 'dir' && this.props.showShareBtn) || canGenerateShareLink; return (