gitea源码

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. {{if .Flash}}
  2. <div class="sixteen wide column tw-mb-2">
  3. {{template "base/alert" .}}
  4. </div>
  5. {{end}}
  6. <div class="tw-hidden" id="issue-page-info"
  7. data-issue-index="{{$.Issue.Index}}"
  8. data-issue-dependency-search-type="{{$.IssueDependencySearchType}}"
  9. data-issue-repo-link="{{$.RepoLink}}"
  10. data-issue-repo-id="{{$.Repository.ID}}"
  11. ></div>
  12. <div class="issue-title-header">
  13. {{$canEditIssueTitle := and (or .HasIssuesOrPullsWritePermission .IsIssuePoster) (not .Repository.IsArchived)}}
  14. <div class="issue-title" id="issue-title-display">
  15. <h1>
  16. {{ctx.RenderUtils.RenderIssueTitle .Issue.Title $.Repository}}
  17. <span class="index">#{{.Issue.Index}}</span>
  18. </h1>
  19. <div class="issue-title-buttons">
  20. {{if $canEditIssueTitle}}
  21. <button id="issue-title-edit-show" class="ui small basic button">{{ctx.Locale.Tr "repo.issues.edit"}}</button>
  22. {{end}}
  23. {{if not .Issue.IsPull}}
  24. <a role="button" class="ui small primary button" href="{{.RepoLink}}/issues/new{{if .NewIssueChooseTemplate}}/choose{{end}}">{{ctx.Locale.Tr "repo.issues.new"}}</a>
  25. {{end}}
  26. </div>
  27. </div>
  28. {{if $canEditIssueTitle}}
  29. <form class="ui form issue-title tw-hidden" id="issue-title-editor">
  30. <div class="ui input tw-flex-1">
  31. <input name="title" value="{{.Issue.Title}}" data-old-title="{{.Issue.Title}}" maxlength="255" autocomplete="off">
  32. </div>
  33. <div class="issue-title-buttons">
  34. <button type="button" class="ui small basic cancel button">{{ctx.Locale.Tr "repo.issues.cancel"}}</button>
  35. <button type="submit" class="ui small primary button" data-update-url="{{$.RepoLink}}/issues/{{.Issue.Index}}/title">
  36. {{ctx.Locale.Tr "repo.issues.save"}}
  37. </button>
  38. </div>
  39. </form>
  40. {{end}}
  41. <div class="issue-title-meta">
  42. {{if .HasMerged}}
  43. <div class="ui purple label issue-state-label">{{svg "octicon-git-merge" 16 "tw-mr-1"}} {{if eq .Issue.PullRequest.Status 3}}{{ctx.Locale.Tr "repo.pulls.manually_merged"}}{{else}}{{ctx.Locale.Tr "repo.pulls.merged"}}{{end}}</div>
  44. {{else if .Issue.IsClosed}}
  45. <div class="ui red label issue-state-label">{{svg (Iif .Issue.IsPull "octicon-git-pull-request-closed" "octicon-issue-closed")}} {{ctx.Locale.Tr "repo.issues.closed_title"}}</div>
  46. {{else if .Issue.IsPull}}
  47. {{if .IsPullWorkInProgress}}
  48. <div class="ui grey label issue-state-label">{{svg "octicon-git-pull-request-draft"}} {{ctx.Locale.Tr "repo.issues.draft_title"}}</div>
  49. {{else}}
  50. <div class="ui green label issue-state-label">{{svg "octicon-git-pull-request"}} {{ctx.Locale.Tr "repo.issues.open_title"}}</div>
  51. {{end}}
  52. {{else}}
  53. <div class="ui green label issue-state-label">{{svg "octicon-issue-opened"}} {{ctx.Locale.Tr "repo.issues.open_title"}}</div>
  54. {{end}}
  55. <div class="tw-ml-2 tw-flex-1 tw-break-anywhere">
  56. {{if .Issue.IsPull}}
  57. {{$headHref := .HeadTarget}}
  58. {{if .HeadBranchLink}}
  59. {{$headHref = HTMLFormat `<a href="%s">%s</a> <button class="btn interact-fg" data-tooltip-content="%s" data-clipboard-text="%s">%s</button>` .HeadBranchLink $headHref (ctx.Locale.Tr "copy_branch") .HeadTarget (svg "octicon-copy" 14)}}
  60. {{else}}
  61. {{if .Issue.PullRequest.IsAgitFlow}}
  62. {{$headHref = HTMLFormat `%s <a href="%s" target="_blank"><span class="ui label basic tiny" data-tooltip-content="%s">AGit</span></a>` $headHref "https://docs.gitea.com/usage/agit" (ctx.Locale.Tr "repo.pull.agit_documentation")}}
  63. {{else}}
  64. {{$headHref = HTMLFormat `<span class="tw-line-through" data-tooltip-content="%s">%s</span>` (ctx.Locale.Tr "form.target_branch_not_exist") $headHref}}
  65. {{end}}
  66. {{end}}
  67. {{$baseHref := .BaseTarget}}
  68. {{if .BaseBranchLink}}
  69. {{if .BaseBranchNotExist}}
  70. {{$baseHref = HTMLFormat `<span class="tw-line-through" data-tooltip-content="%s">%s</span>` (ctx.Locale.Tr "form.target_branch_not_exist") $baseHref}}
  71. {{else}}
  72. {{$baseHref = HTMLFormat `<a href="%s">%s</a>` .BaseBranchLink $baseHref}}
  73. {{end}}
  74. {{end}}
  75. {{if .Issue.PullRequest.HasMerged}}
  76. {{$mergedStr:= DateUtils.TimeSince .Issue.PullRequest.MergedUnix}}
  77. {{if .Issue.OriginalAuthor}}
  78. {{.Issue.OriginalAuthor}}
  79. <span class="pull-desc">{{ctx.Locale.Tr "repo.pulls.merged_title_desc" .NumCommits $headHref $baseHref $mergedStr}}</span>
  80. {{else}}
  81. <a {{if gt .Issue.PullRequest.Merger.ID 0}}href="{{.Issue.PullRequest.Merger.HomeLink}}"{{end}}>{{.Issue.PullRequest.Merger.GetDisplayName}}</a>
  82. <span class="pull-desc">{{ctx.Locale.Tr "repo.pulls.merged_title_desc" .NumCommits $headHref $baseHref $mergedStr}}</span>
  83. {{end}}
  84. {{else}}
  85. {{if .Issue.OriginalAuthor}}
  86. <span id="pull-desc-display" class="pull-desc">{{.Issue.OriginalAuthor}} {{ctx.Locale.Tr "repo.pulls.title_desc" .NumCommits $headHref $baseHref}}</span>
  87. {{else}}
  88. <span id="pull-desc-display" class="pull-desc">
  89. <a {{if gt .Issue.Poster.ID 0}}href="{{.Issue.Poster.HomeLink}}"{{end}}>{{.Issue.Poster.GetDisplayName}}</a>
  90. {{ctx.Locale.Tr "repo.pulls.title_desc" .NumCommits $headHref $baseHref}}
  91. </span>
  92. {{end}}
  93. <span id="pull-desc-editor" class="tw-hidden flex-text-block" data-target-update-url="{{$.RepoLink}}/pull/{{.Issue.Index}}/target_branch">
  94. <div class="ui floating filter dropdown">
  95. <div class="ui basic small button tw-mr-0">
  96. <span class="text">{{ctx.Locale.Tr "repo.pulls.compare_compare"}}: {{$.HeadTarget}}</span>
  97. </div>
  98. </div>
  99. {{svg "octicon-arrow-right"}}
  100. <div class="ui floating filter dropdown" data-no-results="{{ctx.Locale.Tr "no_results_found"}}">
  101. <div class="ui basic small button">
  102. <span class="text" id="pull-target-branch" data-basename="{{$.BaseName}}" data-branch="{{$.BaseBranch}}">{{ctx.Locale.Tr "repo.pulls.compare_base"}}: {{$.BaseName}}:{{$.BaseBranch}}</span>
  103. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  104. </div>
  105. <div class="menu">
  106. <div class="ui icon search input">
  107. <i class="icon">{{svg "octicon-filter" 16}}</i>
  108. <input name="search" placeholder="{{ctx.Locale.Tr "repo.pulls.filter_branch"}}...">
  109. </div>
  110. <div class="scrolling menu" id="branch-select">
  111. {{range .Branches}}
  112. {{$sameBase := ne $.BaseName $.HeadUserName}}
  113. {{$differentBranch := ne . $.HeadBranch}}
  114. {{if or $sameBase $differentBranch}}
  115. <div class="item {{if eq $.BaseBranch .}}selected{{end}}" data-branch="{{.}}">{{$.BaseName}}:{{.}}</div>
  116. {{end}}
  117. {{end}}
  118. </div>
  119. </div>
  120. </div>
  121. </span>
  122. {{end}}
  123. {{else}}
  124. {{$createdStr:= DateUtils.TimeSince .Issue.CreatedUnix}}
  125. <span class="time-desc">
  126. {{if .Issue.OriginalAuthor}}
  127. {{ctx.Locale.Tr "repo.issues.opened_by_fake" $createdStr .Issue.OriginalAuthor}}
  128. {{else if gt .Issue.Poster.ID 0}}
  129. {{ctx.Locale.Tr "repo.issues.opened_by" $createdStr .Issue.Poster.HomeLink .Issue.Poster.GetDisplayName}}
  130. {{else}}
  131. {{ctx.Locale.Tr "repo.issues.opened_by_fake" $createdStr .Issue.Poster.GetDisplayName}}
  132. {{end}}
  133. ·
  134. {{ctx.Locale.TrN .Issue.NumComments "repo.issues.num_comments_1" "repo.issues.num_comments" .Issue.NumComments}}
  135. </span>
  136. {{end}}
  137. </div>
  138. </div>
  139. </div>