mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-11-26 19:56:11 +01:00
8d42de4614
The value passed into "attachments" sub-template is from "RedneredContent", so use the same name for consistent. And it makes readers easy to know its data type. (cherry picked from commit b8a598e6a43fa65db23b88d3b3b281b5f2f7c2e0)
188 lines
7.9 KiB
Go HTML Template
188 lines
7.9 KiB
Go HTML Template
<div class="issue-content">
|
|
<!-- I know, there is probably a better way to do this (moved from sidebar.tmpl, original author: 6543 @ 2021-02-28) -->
|
|
<!-- Agree, there should be a better way, eg: introduce window.config.pageData (original author: wxiaoguang @ 2021-09-05) -->
|
|
<input type="hidden" id="repolink" value="{{$.RepoRelPath}}">
|
|
<input type="hidden" id="repoId" value="{{.Repository.ID}}">
|
|
<input type="hidden" id="issueIndex" value="{{.Issue.Index}}">
|
|
<input type="hidden" id="type" value="{{.IssueType}}">
|
|
|
|
{{$createdStr:= TimeSinceUnix .Issue.CreatedUnix ctx.Locale}}
|
|
<div class="issue-content-left comment-list prevent-before-timeline">
|
|
<div class="ui timeline">
|
|
<div id="{{.Issue.HashTag}}" class="timeline-item comment first">
|
|
{{if .Issue.OriginalAuthor}}
|
|
<span class="timeline-avatar">
|
|
{{ctx.AvatarUtils.Avatar nil 40}}
|
|
</span>
|
|
{{else}}
|
|
<a class="timeline-avatar" {{if gt .Issue.Poster.ID 0}}href="{{.Issue.Poster.HomeLink}}"{{end}}>
|
|
{{ctx.AvatarUtils.Avatar .Issue.Poster 40}}
|
|
</a>
|
|
{{end}}
|
|
<div class="content comment-container">
|
|
<div class="ui top attached header comment-header gt-df gt-ac gt-sb" role="heading" aria-level="3">
|
|
<div class="comment-header-left gt-df gt-ac">
|
|
{{if .Issue.OriginalAuthor}}
|
|
<span class="text black gt-font-semibold">
|
|
{{svg (MigrationIcon .Repository.GetOriginalURLHostname)}}
|
|
{{.Issue.OriginalAuthor}}
|
|
</span>
|
|
<span class="text grey muted-links">
|
|
{{ctx.Locale.Tr "repo.issues.commented_at" .Issue.HashTag $createdStr}}
|
|
</span>
|
|
<span class="text migrate">
|
|
{{if .Repository.OriginalURL}} ({{ctx.Locale.Tr "repo.migrated_from" .Repository.OriginalURL .Repository.GetOriginalURLHostname}}){{end}}
|
|
</span>
|
|
{{else}}
|
|
<a class="inline-timeline-avatar" href="{{.Issue.Poster.HomeLink}}">
|
|
{{ctx.AvatarUtils.Avatar .Issue.Poster 24}}
|
|
</a>
|
|
<span class="text grey muted-links">
|
|
{{template "shared/user/authorlink" .Issue.Poster}}
|
|
{{ctx.Locale.Tr "repo.issues.commented_at" .Issue.HashTag $createdStr}}
|
|
</span>
|
|
{{end}}
|
|
</div>
|
|
<div class="comment-header-right actions gt-df gt-ac">
|
|
{{template "repo/issue/view_content/show_role" dict "ShowRole" .Issue.ShowRole "IgnorePoster" true}}
|
|
{{if not $.Repository.IsArchived}}
|
|
{{template "repo/issue/view_content/add_reaction" dict "ctxData" $ "ActionURL" (printf "%s/issues/%d/reactions" $.RepoLink .Issue.Index)}}
|
|
{{end}}
|
|
{{template "repo/issue/view_content/context_menu" dict "ctxData" $ "item" .Issue "delete" false "issue" true "diff" false "IsCommentPoster" $.IsIssuePoster}}
|
|
</div>
|
|
</div>
|
|
<div class="ui attached segment comment-body" role="article">
|
|
<div class="render-content markup" {{if or $.Permission.IsAdmin $.HasIssuesOrPullsWritePermission $.IsIssuePoster}}data-can-edit="true"{{end}}>
|
|
{{if .Issue.RenderedContent}}
|
|
{{.Issue.RenderedContent}}
|
|
{{else}}
|
|
<span class="no-content">{{ctx.Locale.Tr "repo.issues.no_content"}}</span>
|
|
{{end}}
|
|
</div>
|
|
<div id="issue-{{.Issue.ID}}-raw" class="raw-content gt-hidden">{{.Issue.Content}}</div>
|
|
<div class="edit-content-zone gt-hidden" data-update-url="{{$.RepoLink}}/issues/{{.Issue.Index}}/content" data-context="{{.RepoLink}}" data-attachment-url="{{$.RepoLink}}/issues/{{.Issue.Index}}/attachments" data-view-attachment-url="{{$.RepoLink}}/issues/{{.Issue.Index}}/view-attachments"></div>
|
|
{{if .Issue.Attachments}}
|
|
{{template "repo/issue/view_content/attachments" dict "ctxData" $ "Attachments" .Issue.Attachments "RenderedContent" .Issue.RenderedContent}}
|
|
{{end}}
|
|
</div>
|
|
{{$reactions := .Issue.Reactions.GroupByType}}
|
|
{{if $reactions}}
|
|
{{template "repo/issue/view_content/reactions" dict "ctxData" $ "ActionURL" (printf "%s/issues/%d/reactions" $.RepoLink .Issue.Index) "Reactions" $reactions}}
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
|
|
{{template "repo/issue/view_content/comments" .}}
|
|
|
|
{{if and .Issue.IsPull (not $.Repository.IsArchived)}}
|
|
{{template "repo/issue/view_content/pull".}}
|
|
{{end}}
|
|
|
|
{{if .IsSigned}}
|
|
{{if and (or .IsRepoAdmin .HasIssuesOrPullsWritePermission (not .Issue.IsLocked)) (not .Repository.IsArchived)}}
|
|
<div class="timeline-item comment form">
|
|
<a class="timeline-avatar" href="{{.SignedUser.HomeLink}}">
|
|
{{ctx.AvatarUtils.Avatar .SignedUser 40}}
|
|
</a>
|
|
<div class="content">
|
|
<form class="ui segment form form-fetch-action" id="comment-form" action="{{$.RepoLink}}/issues/{{.Issue.Index}}/comments" method="post">
|
|
{{template "repo/issue/comment_tab" .}}
|
|
{{.CsrfTokenHtml}}
|
|
<div class="field footer">
|
|
<div class="text right">
|
|
{{if and (or .HasIssuesOrPullsWritePermission .IsIssuePoster) (not .DisableStatusChange)}}
|
|
{{if .Issue.IsClosed}}
|
|
<button id="status-button" class="ui primary basic button" data-status="{{ctx.Locale.Tr "repo.issues.reopen_issue"}}" data-status-and-comment="{{ctx.Locale.Tr "repo.issues.reopen_comment_issue"}}" name="status" value="reopen">
|
|
{{ctx.Locale.Tr "repo.issues.reopen_issue"}}
|
|
</button>
|
|
{{else}}
|
|
{{$closeTranslationKey := "repo.issues.close"}}
|
|
{{if .Issue.IsPull}}
|
|
{{$closeTranslationKey = "repo.pulls.close"}}
|
|
{{end}}
|
|
<button id="status-button" class="ui red basic button" data-status="{{ctx.Locale.Tr $closeTranslationKey}}" data-status-and-comment="{{ctx.Locale.Tr "repo.issues.close_comment_issue"}}" name="status" value="close">
|
|
{{ctx.Locale.Tr $closeTranslationKey}}
|
|
</button>
|
|
{{end}}
|
|
{{end}}
|
|
<button class="ui primary button">
|
|
{{ctx.Locale.Tr "repo.issues.create_comment"}}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{{else if .Repository.IsArchived}}
|
|
<div class="ui warning message gt-text-center">
|
|
{{if .Issue.IsPull}}
|
|
{{ctx.Locale.Tr "repo.archive.pull.nocomment"}}
|
|
{{else}}
|
|
{{ctx.Locale.Tr "repo.archive.issue.nocomment"}}
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
{{else}} {{/* not .IsSigned */}}
|
|
{{if .Repository.IsArchived}}
|
|
<div class="ui warning message gt-text-center">
|
|
{{if .Issue.IsPull}}
|
|
{{ctx.Locale.Tr "repo.archive.pull.nocomment"}}
|
|
{{else}}
|
|
{{ctx.Locale.Tr "repo.archive.issue.nocomment"}}
|
|
{{end}}
|
|
</div>
|
|
{{else}}
|
|
<div class="ui warning message">
|
|
{{ctx.Locale.Tr "repo.issues.sign_in_require_desc" .SignInLink}}
|
|
</div>
|
|
{{end}}
|
|
{{end}}{{/* end if: .IsSigned */}}
|
|
</div>
|
|
</div>
|
|
|
|
{{template "repo/issue/view_content/sidebar" .}}
|
|
</div>
|
|
|
|
<template id="issue-comment-editor-template">
|
|
<div class="ui comment form">
|
|
<div class="field">
|
|
{{template "shared/combomarkdowneditor" (dict
|
|
"MarkdownPreviewUrl" (print .Repository.Link "/markup")
|
|
"MarkdownPreviewContext" .RepoLink
|
|
"TextareaName" "content"
|
|
"DropzoneParentContainer" ".ui.form"
|
|
)}}
|
|
</div>
|
|
|
|
{{if .IsAttachmentEnabled}}
|
|
<div class="field">
|
|
{{template "repo/upload" .}}
|
|
</div>
|
|
{{end}}
|
|
|
|
<div class="field">
|
|
<div class="text right edit">
|
|
<button class="ui basic cancel button">{{ctx.Locale.Tr "repo.issues.cancel"}}</button>
|
|
<button class="ui primary save button">{{ctx.Locale.Tr "repo.issues.save"}}</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
{{template "repo/issue/view_content/reference_issue_dialog" .}}
|
|
|
|
<div class="gt-hidden" id="no-content">
|
|
<span class="no-content">{{ctx.Locale.Tr "repo.issues.no_content"}}</span>
|
|
</div>
|
|
|
|
<div class="ui g-modal-confirm delete modal">
|
|
<div class="header">
|
|
{{svg "octicon-trash"}}
|
|
{{ctx.Locale.Tr "repo.branch.delete" .HeadTarget}}
|
|
</div>
|
|
<div class="content">
|
|
<p>{{ctx.Locale.Tr "repo.branch.delete_desc" | SanitizeHTML}}</p>
|
|
</div>
|
|
{{template "base/modal_actions_confirm" .}}
|
|
</div>
|