gitea源码

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. {{template "admin/layout_head" (dict "ctxData" . "pageClass" "admin user")}}
  2. <div class="admin-setting-content">
  3. <h4 class="ui top attached header">
  4. {{ctx.Locale.Tr "admin.emails.email_manage_panel"}} ({{ctx.Locale.Tr "admin.total" .Total}})
  5. </h4>
  6. <div class="ui attached segment">
  7. <div class="ui secondary filter menu tw-items-center tw-mx-0">
  8. <form class="ui form ignore-dirty tw-flex-1">
  9. {{template "shared/search/combo" dict "Value" .Keyword}}
  10. </form>
  11. <!-- Sort -->
  12. <div class="ui dropdown type jump item tw-mr-0">
  13. <span class="text">
  14. {{ctx.Locale.Tr "repo.issues.filter_sort"}}
  15. </span>
  16. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  17. <div class="menu">
  18. <a class="{{if or (eq .SortType "email") (not .SortType)}}active {{end}}item" href="?sort=email&q={{$.Keyword}}">{{ctx.Locale.Tr "admin.emails.filter_sort.email"}}</a>
  19. <a class="{{if eq .SortType "reverseemail"}}active {{end}}item" href="?sort=reverseemail&q={{$.Keyword}}">{{ctx.Locale.Tr "admin.emails.filter_sort.email_reverse"}}</a>
  20. <a class="{{if eq .SortType "username"}}active {{end}}item" href="?sort=username&q={{$.Keyword}}">{{ctx.Locale.Tr "admin.emails.filter_sort.name"}}</a>
  21. <a class="{{if eq .SortType "reverseusername"}}active {{end}}item" href="?sort=reverseusername&q={{$.Keyword}}">{{ctx.Locale.Tr "admin.emails.filter_sort.name_reverse"}}</a>
  22. </div>
  23. </div>
  24. </div>
  25. </div>
  26. <div class="ui attached table segment">
  27. <table class="ui very basic striped table unstackable">
  28. <thead>
  29. <tr>
  30. <th data-sortt-asc="username" data-sortt-desc="reverseusername">
  31. {{ctx.Locale.Tr "admin.users.name"}}
  32. {{SortArrow "username" "reverseusername" $.SortType false}}
  33. </th>
  34. <th>{{ctx.Locale.Tr "admin.users.full_name"}}</th>
  35. <th data-sortt-asc="email" data-sortt-desc="reverseemail" data-sortt-default="true">
  36. {{ctx.Locale.Tr "email"}}
  37. {{SortArrow "email" "reverseemail" $.SortType true}}
  38. </th>
  39. <th>{{ctx.Locale.Tr "admin.emails.primary"}}</th>
  40. <th>{{ctx.Locale.Tr "admin.emails.activated"}}</th>
  41. <th></th>
  42. </tr>
  43. </thead>
  44. <tbody>
  45. {{range .Emails}}
  46. <tr>
  47. <td><a href="{{AppSubUrl}}/{{.Name | PathEscape}}">{{.Name}}</a></td>
  48. <td class="gt-ellipsis tw-max-w-48">{{.FullName}}</td>
  49. <td class="gt-ellipsis tw-max-w-48">{{.Email}}</td>
  50. <td>{{svg (Iif .IsPrimary "octicon-check" "octicon-x")}}</td>
  51. <td>
  52. {{if .CanChange}}
  53. <a class="show-modal" href data-modal="#change-email-modal" data-modal-uid="{{.UID}}"
  54. data-modal-email="{{.Email}}"
  55. data-modal-primary="{{if .IsPrimary}}1{{else}}0{{end}}"
  56. data-modal-activate="{{if .IsActivated}}0{{else}}1{{end}}">
  57. {{svg (Iif .IsActivated "octicon-check" "octicon-x")}}
  58. </a>
  59. {{else}}
  60. {{svg (Iif .IsActivated "octicon-check" "octicon-x")}}
  61. {{end}}
  62. </td>
  63. <td>
  64. <a class="link-action negative" href data-url="{{$.Link}}/delete?id={{.ID}}&uid={{.UID}}"
  65. data-modal-confirm-header="{{ctx.Locale.Tr "admin.emails.delete"}}"
  66. data-modal-confirm-content="{{ctx.Locale.Tr "admin.emails.delete_desc"}}"
  67. >{{svg "octicon-trash"}}</a>
  68. </td>
  69. </tr>
  70. {{else}}
  71. <tr><td class="tw-text-center" colspan="6">{{ctx.Locale.Tr "no_results_found"}}</td></tr>
  72. {{end}}
  73. </tbody>
  74. </table>
  75. </div>
  76. {{template "base/paginate" .}}
  77. <div class="ui g-modal-confirm modal" id="change-email-modal">
  78. <div class="header">
  79. {{ctx.Locale.Tr "admin.emails.change_email_header"}}
  80. </div>
  81. <form class="content ui form" action="{{AppSubUrl}}/-/admin/emails/activate" method="post">
  82. <p class="center">{{ctx.Locale.Tr "admin.emails.change_email_text"}}</p>
  83. {{$.CsrfTokenHtml}}
  84. <input type="hidden" name="sort" value="{{.SortType}}">
  85. <input type="hidden" name="q" value="{{.Keyword}}">
  86. <input type="hidden" name="is_primary" value="{{.IsPrimary}}">
  87. <input type="hidden" name="is_activated" value="{{.IsActivated}}">
  88. <input type="hidden" name="uid">
  89. <input type="hidden" name="email">
  90. <input type="hidden" name="primary">
  91. <input type="hidden" name="activate">
  92. {{template "base/modal_actions_confirm" .}}
  93. </form>
  94. </div>
  95. </div>
  96. {{template "admin/layout_footer" .}}