|
|
@@ -1,18 +1,19 @@
|
|
|
import React, { useState } from 'react';
|
|
|
+
|
|
|
+import { pagePathUtils } from '@growi/core';
|
|
|
import PropTypes from 'prop-types';
|
|
|
-import { withTranslation } from 'react-i18next';
|
|
|
import { CopyToClipboard } from 'react-copy-to-clipboard';
|
|
|
+import { withTranslation } from 'react-i18next';
|
|
|
import {
|
|
|
Dropdown, DropdownToggle, DropdownMenu, DropdownItem,
|
|
|
} from 'reactstrap';
|
|
|
|
|
|
-import { pagePathUtils } from '@growi/core';
|
|
|
-
|
|
|
-import { withUnstatedContainers } from '../UnstatedUtils';
|
|
|
|
|
|
import RevisionComparerContainer from '~/client/services/RevisionComparerContainer';
|
|
|
|
|
|
import RevisionDiff from '../PageHistory/RevisionDiff';
|
|
|
+import { withUnstatedContainers } from '../UnstatedUtils';
|
|
|
+
|
|
|
|
|
|
const { encodeSpaces } = pagePathUtils;
|
|
|
|
|
|
@@ -36,12 +37,12 @@ const RevisionComparer = (props) => {
|
|
|
setDropdownOpen(!dropdownOpen);
|
|
|
}
|
|
|
|
|
|
- const pagePathUrl = () => {
|
|
|
+ const urlGenerator = (content) => {
|
|
|
const { origin } = window.location;
|
|
|
- const { path } = revisionComparerContainer.pageContainer.state;
|
|
|
+ const { path, pageId } = revisionComparerContainer.pageContainer.state;
|
|
|
const { sourceRevision, targetRevision } = revisionComparerContainer.state;
|
|
|
|
|
|
- const url = new URL(path, origin);
|
|
|
+ const url = content === 'path' ? new URL(path, origin) : new URL(pageId, origin);
|
|
|
|
|
|
if (sourceRevision != null && targetRevision != null) {
|
|
|
const urlParams = `${sourceRevision._id}...${targetRevision._id}`;
|
|
|
@@ -49,21 +50,7 @@ const RevisionComparer = (props) => {
|
|
|
}
|
|
|
|
|
|
return encodeSpaces(decodeURI(url));
|
|
|
- };
|
|
|
|
|
|
- const permalink = () => {
|
|
|
- const { origin } = window.location;
|
|
|
- const { pageId } = revisionComparerContainer.pageContainer.state;
|
|
|
- const { sourceRevision, targetRevision } = revisionComparerContainer.state;
|
|
|
-
|
|
|
- const url = new URL(pageId, origin);
|
|
|
-
|
|
|
- if (sourceRevision != null && targetRevision != null) {
|
|
|
- const urlParams = `${sourceRevision._id}...${targetRevision._id}`;
|
|
|
- url.searchParams.set('compare', urlParams);
|
|
|
- }
|
|
|
-
|
|
|
- return encodeSpaces(decodeURI(url));
|
|
|
};
|
|
|
|
|
|
const { sourceRevision, targetRevision } = revisionComparerContainer.state;
|
|
|
@@ -91,14 +78,15 @@ const RevisionComparer = (props) => {
|
|
|
</DropdownToggle>
|
|
|
<DropdownMenu positionFixed right modifiers={{ preventOverflow: { boundariesElement: undefined } }}>
|
|
|
{/* Page path URL */}
|
|
|
- <CopyToClipboard text={pagePathUrl()}>
|
|
|
+ <CopyToClipboard text={urlGenerator('path')}>
|
|
|
<DropdownItem className="px-3">
|
|
|
- <DropdownItemContents title={t('copy_to_clipboard.Page URL')} contents={pagePathUrl()} />
|
|
|
+ <DropdownItemContents title={t('copy_to_clipboard.Page URL')} contents={urlGenerator('path')} />
|
|
|
</DropdownItem>
|
|
|
</CopyToClipboard>
|
|
|
- <CopyToClipboard text={permalink()}>
|
|
|
+ {/* Permanent Link URL */}
|
|
|
+ <CopyToClipboard text={urlGenerator('pageId')}>
|
|
|
<DropdownItem className="px-3">
|
|
|
- <DropdownItemContents title={t('copy_to_clipboard.Permanent link')} contents={permalink()} />
|
|
|
+ <DropdownItemContents title={t('copy_to_clipboard.Permanent link')} contents={urlGenerator('pageId')} />
|
|
|
</DropdownItem>
|
|
|
</CopyToClipboard>
|
|
|
<DropdownItem divider className="my-0"></DropdownItem>
|