gitea源码

compare.tmpl 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. {{template "base/head" .}}
  2. <div role="main" aria-label="{{.Title}}" class="page-content repository diff {{if .PageIsComparePull}}compare pull{{end}}">
  3. {{template "repo/header" .}}
  4. <div class="ui container fluid padded">
  5. <h2 class="ui header">
  6. {{if and $.PageIsComparePull $.IsSigned (not .Repository.IsArchived)}}
  7. {{ctx.Locale.Tr "repo.pulls.compare_changes"}}
  8. <div class="sub header">{{ctx.Locale.Tr "repo.pulls.compare_changes_desc"}}</div>
  9. {{else}}
  10. {{ctx.Locale.Tr "action.compare_commits_general"}}
  11. {{end}}
  12. </h2>
  13. {{$BaseCompareName := $.BaseName -}}
  14. {{- $HeadCompareName := $.HeadRepo.OwnerName -}}
  15. {{- if and (eq $.BaseName $.HeadRepo.OwnerName) (ne $.Repository.Name $.HeadRepo.Name) -}}
  16. {{- $HeadCompareName = printf "%s/%s" $.HeadRepo.OwnerName $.HeadRepo.Name -}}
  17. {{- end -}}
  18. {{- $OwnForkCompareName := "" -}}
  19. {{- if .OwnForkRepo -}}
  20. {{- $OwnForkCompareName = .OwnForkRepo.OwnerName -}}
  21. {{- end -}}
  22. {{- $RootRepoCompareName := "" -}}
  23. {{- if .RootRepo -}}
  24. {{- $RootRepoCompareName = .RootRepo.OwnerName -}}
  25. {{- if eq $.HeadRepo.OwnerName .RootRepo.OwnerName -}}
  26. {{- $HeadCompareName = printf "%s/%s" $.HeadRepo.OwnerName $.HeadRepo.Name -}}
  27. {{- end -}}
  28. {{- end -}}
  29. <div class="ui segment choose branch">
  30. <a class="tw-mr-2" href="{{$.HeadRepo.Link}}/compare/{{PathEscapeSegments $.HeadBranch}}{{$.CompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.BaseName}}/{{PathEscape $.Repository.Name}}:{{end}}{{PathEscapeSegments $.BaseBranch}}" title="{{ctx.Locale.Tr "repo.pulls.switch_head_and_base"}}">{{svg "octicon-git-compare"}}</a>
  31. <div class="ui dropdown jump select-branch">
  32. <div class="ui basic small button">
  33. <span class="text">{{if $.PageIsComparePull}}{{ctx.Locale.Tr "repo.pulls.compare_base"}}{{else}}{{ctx.Locale.Tr "repo.compare.compare_base"}}{{end}}: <strong>{{$BaseCompareName}}:{{$.BaseBranch}}</strong></span>
  34. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  35. </div>
  36. <div class="menu">
  37. <div class="ui icon search input">
  38. <i class="icon">{{svg "octicon-filter" 16}}</i>
  39. <input name="search" placeholder="{{ctx.Locale.Tr "repo.filter_branch_and_tag"}}...">
  40. </div>
  41. <div class="header">
  42. <div class="ui grid">
  43. <div class="two column row">
  44. <a class="reference column" href="#" data-target=".base-branch-list">
  45. <span class="text black">
  46. {{svg "octicon-git-branch"}} {{ctx.Locale.Tr "repo.branches"}}
  47. </span>
  48. </a>
  49. <a class="reference column" href="#" data-target=".base-tag-list">
  50. <span class="text black">
  51. {{svg "octicon-tag"}} {{ctx.Locale.Tr "repo.tags"}}
  52. </span>
  53. </a>
  54. </div>
  55. </div>
  56. </div>
  57. <div class="scrolling menu reference-list-menu base-branch-list">
  58. {{range .Branches}}
  59. <a class="item {{if eq $.BaseBranch .}}selected{{end}}" href="{{$.RepoLink}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{end}}{{PathEscapeSegments $.HeadBranch}}">{{$BaseCompareName}}:{{.}}</a>
  60. {{end}}
  61. {{if not .PullRequestCtx.SameRepo}}
  62. {{range .HeadBranches}}
  63. <a class="item" href="{{$.HeadRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$HeadCompareName}}:{{.}}</a>
  64. {{end}}
  65. {{end}}
  66. {{if .OwnForkRepo}}
  67. {{range .OwnForkRepoBranches}}
  68. <a class="item" href="{{$.OwnForkRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$OwnForkCompareName}}:{{.}}</a>
  69. {{end}}
  70. {{end}}
  71. {{if and .RootRepo (.RootRepo.AllowsPulls ctx)}}
  72. {{range .RootRepoBranches}}
  73. <a class="item" href="{{$.RootRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$RootRepoCompareName}}:{{.}}</a>
  74. {{end}}
  75. {{end}}
  76. </div>
  77. <div class="scrolling menu reference-list-menu base-tag-list tw-hidden">
  78. {{range .Tags}}
  79. <a class="item {{if eq $.BaseBranch .}}selected{{end}}" href="{{$.RepoLink}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{end}}{{PathEscapeSegments $.HeadBranch}}">{{$BaseCompareName}}:{{.}}</a>
  80. {{end}}
  81. {{if not .PullRequestCtx.SameRepo}}
  82. {{range .HeadTags}}
  83. <a class="item" href="{{$.HeadRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$HeadCompareName}}:{{.}}</a>
  84. {{end}}
  85. {{end}}
  86. {{if .OwnForkRepo}}
  87. {{range .OwnForkRepoTags}}
  88. <a class="item" href="{{$.OwnForkRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$OwnForkCompareName}}:{{.}}</a>
  89. {{end}}
  90. {{end}}
  91. {{if .RootRepo}}
  92. {{range .RootRepoTags}}
  93. <a class="item" href="{{$.RootRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$RootRepoCompareName}}:{{.}}</a>
  94. {{end}}
  95. {{end}}
  96. </div>
  97. </div>
  98. </div>
  99. <a href="{{.RepoLink}}/compare/{{PathEscapeSegments .BaseBranch}}{{.OtherCompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{end}}{{PathEscapeSegments $.HeadBranch}}" title="{{ctx.Locale.Tr "repo.pulls.switch_comparison_type"}}">{{svg "octicon-arrow-left" 16}}<div class="compare-separator">{{.CompareSeparator}}</div></a>
  100. <div class="ui dropdown jump select-branch">
  101. <div class="ui basic small button">
  102. <span class="text">{{if $.PageIsComparePull}}{{ctx.Locale.Tr "repo.pulls.compare_compare"}}{{else}}{{ctx.Locale.Tr "repo.compare.compare_head"}}{{end}}: <strong>{{$HeadCompareName}}:{{$.HeadBranch}}</strong></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.filter_branch_and_tag"}}...">
  109. </div>
  110. <div class="header">
  111. <div class="ui grid">
  112. <div class="two column row">
  113. <a class="reference column" href="#" data-target=".head-branch-list">
  114. <span class="text black">
  115. {{svg "octicon-git-branch"}} {{ctx.Locale.Tr "repo.branches"}}
  116. </span>
  117. </a>
  118. <a class="reference column" href="#" data-target=".head-tag-list">
  119. <span class="text black">
  120. {{svg "octicon-tag"}} {{ctx.Locale.Tr "repo.tags"}}
  121. </span>
  122. </a>
  123. </div>
  124. </div>
  125. </div>
  126. <div class="scrolling menu reference-list-menu head-branch-list">
  127. {{range .HeadBranches}}
  128. <a class="{{if eq $.HeadBranch .}}selected{{end}} item" href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{end}}{{PathEscapeSegments .}}">{{$HeadCompareName}}:{{.}}</a>
  129. {{end}}
  130. {{if not .PullRequestCtx.SameRepo}}
  131. {{range .Branches}}
  132. <a class="item" href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.BaseName}}/{{PathEscape $.Repository.Name}}:{{PathEscapeSegments .}}">{{$BaseCompareName}}:{{.}}</a>
  133. {{end}}
  134. {{end}}
  135. {{if .OwnForkRepo}}
  136. {{range .OwnForkRepoBranches}}
  137. <a class="item" href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.OwnForkRepo.OwnerName}}/{{PathEscape $.OwnForkRepo.Name}}:{{PathEscapeSegments .}}">{{$OwnForkCompareName}}:{{.}}</a>
  138. {{end}}
  139. {{end}}
  140. {{if .RootRepo}}
  141. {{range .RootRepoBranches}}
  142. <a class="item" href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.RootRepo.OwnerName}}/{{PathEscape $.RootRepo.Name}}:{{PathEscapeSegments .}}">{{$RootRepoCompareName}}:{{.}}</a>
  143. {{end}}
  144. {{end}}
  145. </div>
  146. <div class="scrolling menu reference-list-menu head-tag-list tw-hidden">
  147. {{range .HeadTags}}
  148. <a class="{{if eq $.HeadBranch .}}selected{{end}} item" href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{end}}{{PathEscapeSegments .}}">{{$HeadCompareName}}:{{.}}</a>
  149. {{end}}
  150. {{if not .PullRequestCtx.SameRepo}}
  151. {{range .Tags}}
  152. <a class="item" href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.BaseName}}/{{PathEscape $.Repository.Name}}:{{PathEscapeSegments .}}">{{$BaseCompareName}}:{{.}}</a>
  153. {{end}}
  154. {{end}}
  155. {{if .OwnForkRepo}}
  156. {{range .OwnForkRepoTags}}
  157. <a class="item" href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.OwnForkRepo.OwnerName}}/{{PathEscape $.OwnForkRepo.Name}}:{{PathEscapeSegments .}}">{{$OwnForkCompareName}}:{{.}}</a>
  158. {{end}}
  159. {{end}}
  160. {{if .RootRepo}}
  161. {{range .RootRepoTags}}
  162. <a class="item" href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.RootRepo.OwnerName}}/{{PathEscape $.RootRepo.Name}}:{{PathEscapeSegments .}}">{{$RootRepoCompareName}}:{{.}}</a>
  163. {{end}}
  164. {{end}}
  165. </div>
  166. </div>
  167. </div>
  168. </div>
  169. {{$showDiffBox := and .CommitCount (not .IsNothingToCompare)}}
  170. {{if and .IsSigned .PageIsComparePull}}
  171. {{$allowCreatePR := or $.AllowEmptyPr (not .IsNothingToCompare)}}
  172. {{if .IsNothingToCompare}}
  173. <div class="ui segment">
  174. {{if $allowCreatePR}}
  175. {{ctx.Locale.Tr "repo.pulls.nothing_to_compare_and_allow_empty_pr"}}
  176. {{else if and .HeadIsBranch .BaseIsBranch}}
  177. {{ctx.Locale.Tr "repo.pulls.nothing_to_compare"}}
  178. {{else}}
  179. {{ctx.Locale.Tr "repo.pulls.nothing_to_compare_have_tag"}}
  180. {{end}}
  181. </div>
  182. {{end}}
  183. {{if .HasPullRequest}}
  184. <div class="ui segment flex-text-block tw-gap-4">
  185. {{template "shared/issueicon" .}}
  186. <div class="issue-title tw-break-anywhere">
  187. {{ctx.RenderUtils.RenderIssueTitle .PullRequest.Issue.Title $.Repository}}
  188. <span class="index">#{{.PullRequest.Issue.Index}}</span>
  189. </div>
  190. <a href="{{$.RepoLink}}/pulls/{{.PullRequest.Issue.Index}}" class="ui compact button primary">
  191. {{ctx.Locale.Tr "repo.pulls.view"}}
  192. </a>
  193. </div>
  194. {{else if .Repository.IsArchived}}
  195. <div class="ui warning message">
  196. {{if .Repository.ArchivedUnix.IsZero}}
  197. {{ctx.Locale.Tr "repo.archive.title"}}
  198. {{else}}
  199. {{ctx.Locale.Tr "repo.archive.title_date" (DateUtils.AbsoluteLong .Repository.ArchivedUnix)}}
  200. {{end}}
  201. </div>
  202. {{else if $allowCreatePR}}
  203. <div class="ui info message pullrequest-form-toggle {{if .ExpandNewPrForm}}tw-hidden{{end}}">
  204. <button class="ui button primary show-panel toggle" data-panel=".pullrequest-form-toggle, .pullrequest-form">{{ctx.Locale.Tr "repo.pulls.new"}}</button>
  205. </div>
  206. <div class="pullrequest-form {{if not .ExpandNewPrForm}}tw-hidden{{end}}">
  207. {{template "repo/issue/new_form" .}}
  208. </div>
  209. {{end}}
  210. {{else}}{{/* not singed-in or not for pull-request */}}
  211. {{if not .CommitCount}}
  212. <div class="ui segment">{{ctx.Locale.Tr "repo.commits.nothing_to_compare"}}</div>
  213. {{end}}
  214. {{end}}
  215. </div>
  216. {{if $showDiffBox}}
  217. <div class="ui container fluid padded tw-my-4">
  218. {{template "repo/commits_table" .}}
  219. {{template "repo/diff/box" .}}
  220. </div>
  221. {{end}}
  222. </div>
  223. {{template "base/footer" .}}