Skip to content

Commit 34d03ae

Browse files
authored
Merge branch 'master' into stopwatch-notif
2 parents 63de658 + 56a8929 commit 34d03ae

File tree

6 files changed

+92
-6
lines changed

6 files changed

+92
-6
lines changed

options/locale/locale_en-US.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,6 +1069,7 @@ issues.commented_at = `commented <a href="#%s">%s</a>`
10691069
issues.delete_comment_confirm = Are you sure you want to delete this comment?
10701070
issues.context.copy_link = Copy Link
10711071
issues.context.quote_reply = Quote Reply
1072+
issues.context.reference_issue = Reference in new issue
10721073
issues.context.edit = Edit
10731074
issues.context.delete = Delete
10741075
issues.no_content = There is no content yet.
@@ -1226,6 +1227,7 @@ issues.review.resolve_conversation = Resolve conversation
12261227
issues.review.un_resolve_conversation = Unresolve conversation
12271228
issues.review.resolved_by = marked this conversation as resolved
12281229
issues.assignee.error = Not all assignees was added due to an unexpected error.
1230+
issues.reference_issue.body = Body
12291231

12301232
pulls.desc = Enable pull requests and code reviews.
12311233
pulls.new = New Pull Request

templates/repo/diff/box.tmpl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@
164164
</div>
165165
{{end}}
166166

167+
{{template "repo/issue/view_content/reference_issue_dialog" .}}
168+
167169
{{if .IsSplitStyle}}
168170
<script>
169171
document.addEventListener('DOMContentLoaded', () => {

templates/repo/issue/view_content.tmpl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
</div>
5353
{{end}}
5454
{{template "repo/issue/view_content/add_reaction" Dict "ctx" $ "ActionURL" (Printf "%s/issues/%d/reactions" $.RepoLink .Issue.Index)}}
55-
{{template "repo/issue/view_content/context_menu" Dict "ctx" $ "item" .Issue "delete" false "diff" false "IsCommentPoster" $.IsIssuePoster}}
55+
{{template "repo/issue/view_content/context_menu" Dict "ctx" $ "item" .Issue "delete" false "issue" true "diff" false "IsCommentPoster" $.IsIssuePoster}}
5656
{{end}}
5757
</div>
5858
</div>
@@ -210,6 +210,8 @@
210210
</div>
211211
</div>
212212

213+
{{template "repo/issue/view_content/reference_issue_dialog" .}}
214+
213215
<div class="hide" id="no-content">
214216
<span class="no-content">{{.i18n.Tr "repo.issues.no_content"}}</span>
215217
</div>

templates/repo/issue/view_content/context_menu.tmpl

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
{{svg "octicon-kebab-horizontal"}}
55
</a>
66
<div class="menu">
7-
{{if .issue}}
8-
<div class="item context clipboard" data-clipboard-text="{{Printf "%s%s/issues/%d#%s" AppUrl .ctx.Repository.FullName .ctx.Issue.Index .item.HashTag}}">{{.ctx.i18n.Tr "repo.issues.context.copy_link"}}</div>
9-
{{else}}
10-
<div class="item context clipboard" data-clipboard-text="{{Printf "%s%s/pulls/%d/files#%s" AppUrl .ctx.Repository.FullName .ctx.Issue.Index .item.HashTag}}">{{.ctx.i18n.Tr "repo.issues.context.copy_link"}}</div>
11-
{{end}}
7+
{{ $referenceUrl := "" }}
8+
{{ if .issue }}
9+
{{ $referenceUrl = Printf "%s%s/issues/%d#%s" AppUrl .ctx.Repository.FullName .ctx.Issue.Index .item.HashTag }}
10+
{{ else }}
11+
{{ $referenceUrl = Printf "%s%s/pulls/%d/files#%s" AppUrl .ctx.Repository.FullName .ctx.Issue.Index .item.HashTag }}
12+
{{ end }}
13+
<div class="item context clipboard" data-clipboard-text="{{$referenceUrl}}">{{.ctx.i18n.Tr "repo.issues.context.copy_link"}}</div>
1214
<div class="item context quote-reply {{if .diff}}quote-reply-diff{{end}}" data-target="{{.item.ID}}">{{.ctx.i18n.Tr "repo.issues.context.quote_reply"}}</div>
15+
<div class="item context reference-issue" data-target="{{.item.ID}}" data-modal="#reference-issue-modal" data-poster="{{.item.Poster.GetDisplayName}}" data-reference="{{$referenceUrl}}">{{.ctx.i18n.Tr "repo.issues.context.reference_issue"}}</div>
1316
{{if or .ctx.Permission.IsAdmin .IsCommentPoster .ctx.HasIssuesOrPullsWritePermission}}
1417
<div class="divider"></div>
1518
<div class="item context edit-content">{{.ctx.i18n.Tr "repo.issues.context.edit"}}</div>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<div class="ui small modal" id="reference-issue-modal">
2+
<div class="header">
3+
{{.i18n.Tr "repo.issues.context.reference_issue"}}
4+
</div>
5+
<div class="content" style="text-align:left">
6+
<form class="ui form" action="{{ Printf "%s/issues/new" .Repository.Link }}" method="post">
7+
{{.CsrfTokenHtml}}
8+
<div class="ui segment content">
9+
<div class="field">
10+
<span class="text"><strong>{{.i18n.Tr "repository"}}</strong></span>
11+
<div class="ui search normal selection dropdown issue_reference_repository_search">
12+
<div class="default text">{{.Repository.FullName}}</div>
13+
<div class="menu"></div>
14+
</div>
15+
</div>
16+
<div class="field">
17+
<span class="text"><strong>{{.i18n.Tr "repo.milestones.title"}}</strong></span>
18+
<input name="title" value="" autofocus required maxlength="255" autocomplete="off">
19+
</div>
20+
<div class="field">
21+
<span class="text"><strong>{{.i18n.Tr "repo.issues.reference_issue.body"}}</strong></span>
22+
<textarea name="content" class="form-control"></textarea>
23+
</div>
24+
<div class="text right">
25+
<button class="ui green button">{{.i18n.Tr "repo.issues.create"}}</button>
26+
</div>
27+
</div>
28+
</form>
29+
</div>
30+
</div>

web_src/js/index.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,27 @@ async function initRepository() {
933933
event.preventDefault();
934934
});
935935

936+
// Reference issue
937+
$(document).on('click', '.reference-issue', function (event) {
938+
const $this = $(this);
939+
940+
$this.closest('.dropdown').find('.menu').toggle('visible');
941+
942+
const content = $(`#comment-${$this.data('target')}`).text();
943+
const subject = content.split('\n', 1)[0].slice(0, 255);
944+
945+
const poster = $this.data('poster');
946+
const reference = $this.data('reference');
947+
948+
const $modal = $($this.data('modal'));
949+
$modal.find('input[name="title"').val(subject);
950+
$modal.find('textarea[name="content"]').val(`${content}\n\n_Originally posted by @${poster} in ${reference}_`);
951+
952+
$modal.modal('show');
953+
954+
event.preventDefault();
955+
});
956+
936957
// Edit issue or comment content
937958
$(document).on('click', '.edit-content', async function (event) {
938959
$(this).closest('.dropdown').find('.menu').toggle('visible');
@@ -2338,6 +2359,31 @@ function initTemplateSearch() {
23382359
changeOwner();
23392360
}
23402361

2362+
function initIssueReferenceRepositorySearch() {
2363+
$('.issue_reference_repository_search')
2364+
.dropdown({
2365+
apiSettings: {
2366+
url: `${AppSubUrl}/api/v1/repos/search?q={query}&limit=20`,
2367+
onResponse(response) {
2368+
const filteredResponse = {success: true, results: []};
2369+
$.each(response.data, (_r, repo) => {
2370+
filteredResponse.results.push({
2371+
name: htmlEscape(repo.full_name),
2372+
value: repo.full_name
2373+
});
2374+
});
2375+
return filteredResponse;
2376+
},
2377+
cache: false,
2378+
},
2379+
onChange(_value, _text, $choice) {
2380+
const $form = $choice.closest('form');
2381+
$form.attr('action', `${AppSubUrl}/${_text}/issues/new`);
2382+
},
2383+
fullTextSearch: true
2384+
});
2385+
}
2386+
23412387
$(document).ready(async () => {
23422388
// Show exact time
23432389
$('.time-since').each(function () {
@@ -2554,6 +2600,7 @@ $(document).ready(async () => {
25542600
initPullRequestReview();
25552601
initRepoStatusChecker();
25562602
initTemplateSearch();
2603+
initIssueReferenceRepositorySearch();
25572604
initContextPopups();
25582605
initTableSort();
25592606
initNotificationsTable();

0 commit comments

Comments
 (0)