|
@@ -51,6 +51,21 @@ const RevisionComparer = (props) => {
|
|
|
return encodeSpaces(decodeURI(url));
|
|
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;
|
|
const { sourceRevision, targetRevision } = revisionComparerContainer.state;
|
|
|
|
|
|
|
|
if (sourceRevision == null || targetRevision == null) {
|
|
if (sourceRevision == null || targetRevision == null) {
|
|
@@ -81,6 +96,11 @@ const RevisionComparer = (props) => {
|
|
|
<DropdownItemContents title={t('copy_to_clipboard.Page URL')} contents={pagePathUrl()} />
|
|
<DropdownItemContents title={t('copy_to_clipboard.Page URL')} contents={pagePathUrl()} />
|
|
|
</DropdownItem>
|
|
</DropdownItem>
|
|
|
</CopyToClipboard>
|
|
</CopyToClipboard>
|
|
|
|
|
+ <CopyToClipboard text={permalink()}>
|
|
|
|
|
+ <DropdownItem className="px-3">
|
|
|
|
|
+ <DropdownItemContents title={t('copy_to_clipboard.Permanent link')} contents={permalink()} />
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </CopyToClipboard>
|
|
|
<DropdownItem divider className="my-0"></DropdownItem>
|
|
<DropdownItem divider className="my-0"></DropdownItem>
|
|
|
</DropdownMenu>
|
|
</DropdownMenu>
|
|
|
</Dropdown>
|
|
</Dropdown>
|