mirror of
https://github.com/go-gitea/gitea.git
synced 2025-10-26 08:26:22 +01:00
Fixes #32257 /claim #32257 Implemented commenting on unchanged lines in Pull Request diffs, lines are accessed by expanding the diff preview. Comments also appear in the "Files Changed" tab on the unchanged lines where they were placed. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
149 lines
6.8 KiB
Handlebars
149 lines
6.8 KiB
Handlebars
{{/* FIXME: DIFF-CONVERSATION-DATA: in the future this template should be refactor to avoid called by {{... "." $}}
|
|
At the moment, two kinds of request handler call this template:
|
|
* ExcerptBlob -> blob_excerpt.tmpl -> this
|
|
* Other compare and diff pages -> ... -> {section_unified.tmpl|section_split.tmpl} -> this)
|
|
The variables in "ctx.Data" are different in each case, making this template fragile, hard to read and maintain. */}}
|
|
{{if len .comments}}
|
|
{{$comment := index .comments 0}}
|
|
{{$invalid := $comment.Invalidated}}
|
|
{{$resolved := $comment.IsResolved}}
|
|
{{$resolveDoer := $comment.ResolveDoer}}
|
|
{{$hasReview := and $comment.Review}}
|
|
{{$isReviewPending := and $hasReview (eq $comment.Review.Type 0)}}
|
|
<div class="ui segments conversation-holder">
|
|
<div class="ui segment collapsible-comment-box tw-py-2 tw-flex tw-items-center tw-justify-between">
|
|
<div class="tw-flex tw-items-center">
|
|
<a href="{{$comment.CodeCommentLink ctx}}" class="file-comment tw-ml-2 tw-break-anywhere">{{$comment.TreePath}}</a>
|
|
{{if $invalid}}
|
|
<span class="ui label basic small tw-ml-2" data-tooltip-content="{{ctx.Locale.Tr "repo.issues.review.outdated_description"}}">
|
|
{{ctx.Locale.Tr "repo.issues.review.outdated"}}
|
|
</span>
|
|
{{end}}
|
|
</div>
|
|
<div class="tw-flex tw-items-center">
|
|
{{if or $invalid $resolved}}
|
|
<button id="show-outdated-{{$comment.ID}}" data-comment="{{$comment.ID}}" class="{{if not $resolved}}tw-hidden{{end}} btn tiny show-outdated">
|
|
{{svg "octicon-unfold" 16 "tw-mr-2"}}
|
|
{{if $resolved}}
|
|
{{ctx.Locale.Tr "repo.issues.review.show_resolved"}}
|
|
{{else}}
|
|
{{ctx.Locale.Tr "repo.issues.review.show_outdated"}}
|
|
{{end}}
|
|
</button>
|
|
<button id="hide-outdated-{{$comment.ID}}" data-comment="{{$comment.ID}}" class="{{if $resolved}}tw-hidden {{end}} btn tiny hide-outdated">
|
|
{{svg "octicon-fold" 16 "tw-mr-2"}}
|
|
{{if $resolved}}
|
|
{{ctx.Locale.Tr "repo.issues.review.hide_resolved"}}
|
|
{{else}}
|
|
{{ctx.Locale.Tr "repo.issues.review.hide_outdated"}}
|
|
{{end}}
|
|
</button>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{$diff := (CommentMustAsDiff ctx $comment)}}
|
|
{{if $diff}}
|
|
{{$file := (index $diff.Files 0)}}
|
|
<div id="code-preview-{{$comment.ID}}" class="ui table segment{{if $resolved}} tw-hidden{{end}}">
|
|
<div class="diff-file-box file-content {{TabSizeClass $.Editorconfig $file.Name}}">
|
|
<div class="file-body file-code code-view code-diff code-diff-unified unicode-escaped">
|
|
<table>
|
|
<tbody>
|
|
{{template "repo/diff/section_unified" dict "file" $file "root" $}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
<div id="code-comments-{{$comment.ID}}" class="comment-code-cloud ui segment{{if $resolved}} tw-hidden{{end}}">
|
|
<div class="ui comments tw-mb-0">
|
|
{{range .comments}}
|
|
{{$createdSubStr:= DateUtils.TimeSince .CreatedUnix}}
|
|
<div class="comment code-comment" id="{{.HashTag}}">
|
|
<div class="content comment-container">
|
|
<div class="comment-header">
|
|
<div class="comment-header-left">
|
|
{{if not .OriginalAuthor}}
|
|
<a class="avatar">
|
|
{{ctx.AvatarUtils.Avatar .Poster 20}}
|
|
</a>
|
|
{{end}}
|
|
<span class="text grey muted-links">
|
|
{{if .OriginalAuthor}}
|
|
<span class="text black">
|
|
{{svg (MigrationIcon $.Repository.GetOriginalURLHostname)}}
|
|
{{.OriginalAuthor}}
|
|
</span>
|
|
{{if $.Repository.OriginalURL}}
|
|
<span class="migrate">({{ctx.Locale.Tr "repo.migrated_from" $.Repository.OriginalURL $.Repository.GetOriginalURLHostname}})</span>
|
|
{{end}}
|
|
{{else}}
|
|
{{template "shared/user/authorlink" .Poster}}
|
|
{{end}}
|
|
{{ctx.Locale.Tr "repo.issues.commented_at" .HashTag $createdSubStr}}
|
|
</span>
|
|
</div>
|
|
<div class="comment-header-right">
|
|
{{template "repo/issue/view_content/show_role" dict "ShowRole" .ShowRole}}
|
|
{{if not $.Repository.IsArchived}}
|
|
{{template "repo/issue/view_content/add_reaction" dict "ActionURL" (printf "%s/comments/%d/reactions" $.RepoLink .ID)}}
|
|
{{template "repo/issue/view_content/context_menu" dict "item" . "delete" true "issue" true "diff" true "IsCommentPoster" (and $.IsSigned (eq $.SignedUserID .PosterID))}}
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
<div class="text comment-content">
|
|
<div class="render-content markup" {{if or $.Permission.IsAdmin $.HasIssuesOrPullsWritePermission (and $.IsSigned (eq $.SignedUserID .PosterID))}}data-can-edit="true"{{end}}>
|
|
{{if .RenderedContent}}
|
|
{{.RenderedContent}}
|
|
{{else}}
|
|
<span class="no-content">{{ctx.Locale.Tr "repo.issues.no_content"}}</span>
|
|
{{end}}
|
|
</div>
|
|
<div id="issuecomment-{{.ID}}-raw" class="raw-content tw-hidden">{{.Content}}</div>
|
|
<div class="edit-content-zone tw-hidden" data-update-url="{{$.RepoLink}}/comments/{{.ID}}" data-content-version="{{.ContentVersion}}" data-context="{{$.RepoLink}}" data-attachment-url="{{$.RepoLink}}/comments/{{.ID}}/attachments"></div>
|
|
{{if .Attachments}}
|
|
{{template "repo/issue/view_content/attachments" dict "Attachments" .Attachments "RenderedContent" .RenderedContent}}
|
|
{{end}}
|
|
</div>
|
|
{{$reactions := .Reactions.GroupByType}}
|
|
{{if $reactions}}
|
|
{{template "repo/issue/view_content/reactions" dict "ActionURL" (printf "%s/comments/%d/reactions" $.RepoLink .ID) "Reactions" $reactions}}
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
<div class="flex-text-block tw-flex-wrap tw-my-2">
|
|
<div class="tw-flex-1">
|
|
{{if $resolved}}
|
|
<div class="ui grey text">
|
|
{{svg "octicon-check" 16 "tw-mr-1"}}
|
|
<b>{{$resolveDoer.Name}}</b> {{ctx.Locale.Tr "repo.issues.review.resolved_by"}}
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
<div class="flex-text-block">
|
|
{{if and $.CanMarkConversation $hasReview (not $isReviewPending)}}
|
|
<button class="ui tiny basic button resolve-conversation" data-origin="timeline" data-action="{{if not $resolved}}Resolve{{else}}UnResolve{{end}}" data-comment-id="{{$comment.ID}}" data-update-url="{{$.RepoLink}}/issues/resolve_conversation">
|
|
{{if $resolved}}
|
|
{{ctx.Locale.Tr "repo.issues.review.un_resolve_conversation"}}
|
|
{{else}}
|
|
{{ctx.Locale.Tr "repo.issues.review.resolve_conversation"}}
|
|
{{end}}
|
|
</button>
|
|
{{end}}
|
|
{{if and $.SignedUserID (not $.Repository.IsArchived)}}
|
|
<button class="comment-form-reply ui primary icon tiny button">
|
|
{{svg "octicon-reply" 12}}{{ctx.Locale.Tr "repo.diff.comment.reply"}}
|
|
</button>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{template "repo/diff/comment_form_datahandler" dict "hidden" true "reply" $comment.ReviewID "root" $ "comment" $comment}}
|
|
</div>
|
|
</div>
|
|
{{else}}
|
|
{{template "repo/diff/conversation_outdated"}}
|
|
{{end}}
|