gitea源码

issue_dependencies.tmpl 7.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. {{if .Repository.IsDependenciesEnabled ctx}}
  2. <div class="divider"></div>
  3. <div class="ui depending">
  4. {{if (and (not .BlockedByDependencies) (not .BlockedByDependenciesNotPermitted) (not .BlockingDependencies) (not .BlockingDependenciesNotPermitted))}}
  5. <span class="text"><strong>{{ctx.Locale.Tr "repo.issues.dependency.title"}}</strong></span>
  6. <br>
  7. <p>
  8. {{if .Issue.IsPull}}
  9. {{ctx.Locale.Tr "repo.issues.dependency.pr_no_dependencies"}}
  10. {{else}}
  11. {{ctx.Locale.Tr "repo.issues.dependency.issue_no_dependencies"}}
  12. {{end}}
  13. </p>
  14. {{end}}
  15. {{if or .BlockingDependencies .BlockingDependenciesNotPermitted}}
  16. <span class="text" data-tooltip-content="{{if .Issue.IsPull}}{{ctx.Locale.Tr "repo.issues.dependency.pr_close_blocks"}}{{else}}{{ctx.Locale.Tr "repo.issues.dependency.issue_close_blocks"}}{{end}}">
  17. <strong>{{ctx.Locale.Tr "repo.issues.dependency.blocks_short"}}</strong>
  18. </span>
  19. <div class="ui divided list">
  20. {{range .BlockingDependencies}}
  21. <div class="item dependency{{if .Issue.IsClosed}} is-closed{{end}} tw-flex tw-items-center tw-justify-between">
  22. <div class="item-left tw-flex tw-justify-center tw-flex-col tw-flex-1 gt-ellipsis">
  23. <a class="muted issue-dependency-title gt-ellipsis" href="{{.Issue.Link}}" data-tooltip-content="#{{.Issue.Index}} {{.Issue.Title | ctx.RenderUtils.RenderEmoji}}">
  24. #{{.Issue.Index}} {{.Issue.Title | ctx.RenderUtils.RenderEmoji}}
  25. </a>
  26. <div class="text small gt-ellipsis" data-tooltip-content="{{.Repository.OwnerName}}/{{.Repository.Name}}">
  27. {{.Repository.OwnerName}}/{{.Repository.Name}}
  28. </div>
  29. </div>
  30. <div class="item-right tw-flex tw-items-center tw-m-1">
  31. {{if and $.CanCreateIssueDependencies (not $.Repository.IsArchived)}}
  32. <a class="muted show-modal" data-modal="#issue-remove-dependency-confirm"
  33. data-modal-remove-dependency-id="{{.Issue.ID}}" data-modal-dependency-type="blocking"
  34. data-tooltip-content="{{ctx.Locale.Tr "repo.issues.dependency.remove_info"}}">
  35. {{svg "octicon-trash" 16}}
  36. </a>
  37. {{end}}
  38. </div>
  39. </div>
  40. {{end}}
  41. {{if .BlockingDependenciesNotPermitted}}
  42. <div class="item tw-flex tw-items-center tw-justify-between gt-ellipsis">
  43. <span>{{ctx.Locale.TrN (len .BlockingDependenciesNotPermitted) "repo.issues.dependency.no_permission_1" "repo.issues.dependency.no_permission_n" (len .BlockingDependenciesNotPermitted)}}</span>
  44. </div>
  45. {{end}}
  46. </div>
  47. {{end}}
  48. {{if or .BlockedByDependencies .BlockedByDependenciesNotPermitted}}
  49. <span class="text" data-tooltip-content="{{if .Issue.IsPull}}{{ctx.Locale.Tr "repo.issues.dependency.pr_closing_blockedby"}}{{else}}{{ctx.Locale.Tr "repo.issues.dependency.issue_closing_blockedby"}}{{end}}">
  50. <strong>{{ctx.Locale.Tr "repo.issues.dependency.blocked_by_short"}}</strong>
  51. </span>
  52. <div class="ui divided list">
  53. {{range .BlockedByDependencies}}
  54. <div class="item dependency{{if .Issue.IsClosed}} is-closed{{end}} tw-flex tw-items-center tw-justify-between">
  55. <div class="item-left tw-flex tw-justify-center tw-flex-col tw-flex-1 gt-ellipsis">
  56. <a class="muted issue-dependency-title gt-ellipsis" href="{{.Issue.Link}}" data-tooltip-content="#{{.Issue.Index}} {{.Issue.Title | ctx.RenderUtils.RenderEmoji}}">
  57. #{{.Issue.Index}} {{.Issue.Title | ctx.RenderUtils.RenderEmoji}}
  58. </a>
  59. <div class="text small gt-ellipsis" data-tooltip-content="{{.Repository.OwnerName}}/{{.Repository.Name}}">
  60. {{.Repository.OwnerName}}/{{.Repository.Name}}
  61. </div>
  62. </div>
  63. <div class="item-right tw-flex tw-items-center tw-m-1">
  64. {{if and $.CanCreateIssueDependencies (not $.Repository.IsArchived)}}
  65. <a class="muted show-modal" data-modal="#issue-remove-dependency-confirm"
  66. data-modal-remove-dependency-id="{{.Issue.ID}}" data-modal-dependency-type="blockedBy"
  67. data-tooltip-content="{{ctx.Locale.Tr "repo.issues.dependency.remove_info"}}">
  68. {{svg "octicon-trash" 16}}
  69. </a>
  70. {{end}}
  71. </div>
  72. </div>
  73. {{end}}
  74. {{if $.CanCreateIssueDependencies}}
  75. {{range .BlockedByDependenciesNotPermitted}}
  76. <div class="item dependency{{if .Issue.IsClosed}} is-closed{{end}} tw-flex tw-items-center tw-justify-between">
  77. <div class="item-left tw-flex tw-justify-center tw-flex-col tw-flex-1 gt-ellipsis">
  78. <div class="gt-ellipsis">
  79. <span data-tooltip-content="{{ctx.Locale.Tr "repo.issues.dependency.no_permission.can_remove"}}">{{svg "octicon-lock" 16}}</span>
  80. <span class="gt-ellipsis issue-dependency-title" data-tooltip-content="#{{.Issue.Index}} {{.Issue.Title | ctx.RenderUtils.RenderEmoji}}">
  81. #{{.Issue.Index}} {{.Issue.Title | ctx.RenderUtils.RenderEmoji}}
  82. </span>
  83. </div>
  84. <div class="text small gt-ellipsis" data-tooltip-content="{{.Repository.OwnerName}}/{{.Repository.Name}}">
  85. {{.Repository.OwnerName}}/{{.Repository.Name}}
  86. </div>
  87. </div>
  88. <div class="item-right tw-flex tw-items-center tw-m-1">
  89. {{if and $.CanCreateIssueDependencies (not $.Repository.IsArchived)}}
  90. <a class="muted show-modal" data-modal="#issue-remove-dependency-confirm"
  91. data-modal-remove-dependency-id="{{.Issue.ID}}" data-modal-dependency-type="blocking"
  92. data-tooltip-content="{{ctx.Locale.Tr "repo.issues.dependency.remove_info"}}">
  93. {{svg "octicon-trash" 16}}
  94. </a>
  95. {{end}}
  96. </div>
  97. </div>
  98. {{end}}
  99. {{else if .BlockedByDependenciesNotPermitted}}
  100. <div class="item tw-flex tw-items-center tw-justify-between gt-ellipsis">
  101. <span>{{ctx.Locale.TrN (len .BlockedByDependenciesNotPermitted) "repo.issues.dependency.no_permission_1" "repo.issues.dependency.no_permission_n" (len .BlockedByDependenciesNotPermitted)}}</span>
  102. </div>
  103. {{end}}
  104. </div>
  105. {{end}}
  106. {{if and .CanCreateIssueDependencies (not .Repository.IsArchived)}}
  107. <div>
  108. <form method="post" action="{{.Issue.Link}}/dependency/add" id="addDependencyForm">
  109. {{$.CsrfTokenHtml}}
  110. <div class="ui fluid action input">
  111. <div class="ui search selection dropdown" id="new-dependency-drop-list" data-issue-id="{{.Issue.ID}}" data-issue-cross-repo-search="{{.AllowCrossRepositoryDependencies}}">
  112. <input name="newDependency" type="hidden">
  113. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  114. <input type="text" class="search">
  115. <div class="default text">{{ctx.Locale.Tr "repo.issues.dependency.add"}}</div>
  116. </div>
  117. <button class="ui icon button">
  118. {{svg "octicon-plus"}}
  119. </button>
  120. </div>
  121. </form>
  122. </div>
  123. {{end}}
  124. </div>
  125. {{if and .CanCreateIssueDependencies (not .Repository.IsArchived)}}
  126. <form id="issue-remove-dependency-confirm" class="ui g-modal-confirm modal" method="post" action="{{.Issue.Link}}/dependency/delete">
  127. <div class="header">{{svg "octicon-trash"}} {{ctx.Locale.Tr "repo.issues.dependency.remove_header"}}</div>
  128. <div class="content">
  129. {{$.CsrfTokenHtml}}
  130. <input type="hidden" value="" name="removeDependencyID" class="remove-dependency-id">
  131. <input type="hidden" value="" name="dependencyType" class="dependency-type">
  132. <p>
  133. {{ctx.Locale.Tr (Iif .Issue.IsPull "repo.issues.dependency.pr_remove_text" "repo.issues.dependency.issue_remove_text")}}
  134. </p>
  135. {{$ModalButtonCancelText := ctx.Locale.Tr "repo.issues.dependency.cancel"}}
  136. {{$ModalButtonOkText := ctx.Locale.Tr "repo.issues.dependency.remove"}}
  137. {{template "base/modal_actions_confirm" (dict "." . "ModalButtonCancelText" $ModalButtonCancelText "ModalButtonOkText" $ModalButtonOkText)}}
  138. </div>
  139. </form>
  140. {{end}}
  141. {{end}}