forked from forgejo/forgejo
Add option to copy line permalink (#17145)
* Add option to copy line permalink * Fix lint * Apply review suggestions * Update code and fix lint * Use features/clipboard.js framework
This commit is contained in:
parent
c64e2a319f
commit
47193dbcd9
3 changed files with 37 additions and 34 deletions
|
@ -2917,6 +2917,27 @@ function deSelect() {
|
|||
|
||||
function selectRange($list, $select, $from) {
|
||||
$list.removeClass('active');
|
||||
|
||||
// add hashchange to permalink
|
||||
const $issue = $('a.ref-in-new-issue');
|
||||
const $copyPermalink = $('a.copy-line-permalink');
|
||||
|
||||
if ($issue.length === 0 || $copyPermalink.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const updateIssueHref = function(anchor) {
|
||||
let href = $issue.attr('href');
|
||||
href = `${href.replace(/%23L\d+$|%23L\d+-L\d+$/, '')}%23${anchor}`;
|
||||
$issue.attr('href', href);
|
||||
};
|
||||
|
||||
const updateCopyPermalinkHref = function(anchor) {
|
||||
let link = $copyPermalink.attr('data-clipboard-text');
|
||||
link = `${link.replace(/#L\d+$|#L\d+-L\d+$/, '')}#${anchor}`;
|
||||
$copyPermalink.attr('data-clipboard-text', link);
|
||||
};
|
||||
|
||||
if ($from) {
|
||||
let a = parseInt($select.attr('rel').substr(1));
|
||||
let b = parseInt($from.attr('rel').substr(1));
|
||||
|
@ -2934,38 +2955,16 @@ function selectRange($list, $select, $from) {
|
|||
$list.filter(classes.join(',')).addClass('active');
|
||||
changeHash(`#L${a}-L${b}`);
|
||||
|
||||
// add hashchange to permalink
|
||||
const $issue = $('a.ref-in-new-issue');
|
||||
|
||||
if ($issue.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const matched = $issue.attr('href').match(/%23L\d+$|%23L\d+-L\d+$/);
|
||||
if (matched) {
|
||||
$issue.attr('href', $issue.attr('href').replace($issue.attr('href').substr(matched.index), `%23L${a}-L${b}`));
|
||||
} else {
|
||||
$issue.attr('href', `${$issue.attr('href')}%23L${a}-L${b}`);
|
||||
}
|
||||
updateIssueHref(`L${a}-L${b}`);
|
||||
updateCopyPermalinkHref(`L${a}-L${b}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
$select.addClass('active');
|
||||
changeHash(`#${$select.attr('rel')}`);
|
||||
|
||||
// add hashchange to permalink
|
||||
const $issue = $('a.ref-in-new-issue');
|
||||
|
||||
if ($issue.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const matched = $issue.attr('href').match(/%23L\d+$|%23L\d+-L\d+$/);
|
||||
if (matched) {
|
||||
$issue.attr('href', $issue.attr('href').replace($issue.attr('href').substr(matched.index), `%23${$select.attr('rel')}`));
|
||||
} else {
|
||||
$issue.attr('href', `${$issue.attr('href')}%23${$select.attr('rel')}`);
|
||||
}
|
||||
updateIssueHref($select.attr('rel'));
|
||||
updateCopyPermalinkHref($select.attr('rel'));
|
||||
}
|
||||
|
||||
$(() => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue