1{{template "base/head" .}} 2<div class="page-content repository settings edit"> 3 {{template "repo/header" .}} 4 {{template "repo/settings/navbar" .}} 5 <div class="ui container"> 6 {{template "base/alert" .}} 7 {{if .Repository.IsArchived}} 8 <div class="ui warning message"> 9 {{.i18n.Tr "repo.settings.archive.tagsettings_unavailable"}} 10 </div> 11 {{else}} 12 <h4 class="ui top attached header"> 13 {{.i18n.Tr "repo.settings.tags.protection"}} 14 </h4> 15 16 <div class="ui attached segment"> 17 <div class="ui grid"> 18 <div class="eight wide column"> 19 <div class="ui segment"> 20 <form class="ui form" action="{{.Link}}" method="post"> 21 {{.CsrfTokenHtml}} 22 <div class="field"> 23 <label>{{.i18n.Tr "repo.settings.tags.protection.pattern"}}</label> 24 <div id="search-tag-box" class="ui search"> 25 <div class="ui input"> 26 <input class="prompt" name="name_pattern" autocomplete="off" value="{{.name_pattern}}" placeholder="v*" autofocus required> 27 </div> 28 <div class="help">{{.i18n.Tr "repo.settings.tags.protection.pattern.description" | Safe}}</div> 29 </div> 30 </div> 31 <div class="whitelist field"> 32 <label>{{.i18n.Tr "repo.settings.tags.protection.allowed.users"}}</label> 33 <div class="ui multiple search selection dropdown"> 34 <input type="hidden" name="allowlist_users" value="{{.allowlist_users}}"> 35 <div class="default text">{{.i18n.Tr "repo.settings.protect_whitelist_search_users"}}</div> 36 <div class="menu"> 37 {{range .Users}} 38 <div class="item" data-value="{{.ID}}"> 39 {{avatar . 28 "mini"}} 40 {{.GetDisplayName}} 41 </div> 42 {{end}} 43 </div> 44 </div> 45 </div> 46 {{if .Owner.IsOrganization}} 47 <div class="whitelist field"> 48 <label>{{.i18n.Tr "repo.settings.tags.protection.allowed.teams"}}</label> 49 <div class="ui multiple search selection dropdown"> 50 <input type="hidden" name="allowlist_teams" value="{{.allowlist_teams}}"> 51 <div class="default text">{{.i18n.Tr "repo.settings.protect_whitelist_search_teams"}}</div> 52 <div class="menu"> 53 {{range .Teams}} 54 <div class="item" data-value="{{.ID}}"> 55 {{svg "octicon-people"}} 56 {{.Name}} 57 </div> 58 {{end}} 59 </div> 60 </div> 61 </div> 62 {{end}} 63 <div class="field"> 64 {{if .PageIsEditProtectedTag}} 65 <button class="ui green button"> 66 {{$.i18n.Tr "save"}} 67 </button> 68 <a class="ui blue button" href="{{$.RepoLink}}/settings/tags"> 69 {{$.i18n.Tr "cancel"}} 70 </a> 71 {{else}} 72 <button class="ui green button"> 73 {{$.i18n.Tr "repo.settings.tags.protection.create"}} 74 </button> 75 {{end}} 76 </div> 77 </form> 78 </div> 79 </div> 80 81 <div class="sixteen wide column"> 82 <table class="ui single line table"> 83 <thead> 84 <th>{{.i18n.Tr "repo.settings.tags.protection.pattern"}}</th> 85 <th>{{.i18n.Tr "repo.settings.tags.protection.allowed"}}</th> 86 <th></th> 87 </thead> 88 <tbody> 89 {{range .ProtectedTags}} 90 <tr> 91 <td><pre>{{.NamePattern}}</pre></td> 92 <td> 93 {{if or .AllowlistUserIDs (and $.Owner.IsOrganization .AllowlistTeamIDs)}} 94 {{$userIDs := .AllowlistUserIDs}} 95 {{range $.Users}} 96 {{if contain $userIDs .ID }} 97 <a class="ui basic image label" href="{{.HomeLink}}">{{avatar . 26}} {{.GetDisplayName}}</a> 98 {{end}} 99 {{end}} 100 {{if $.Owner.IsOrganization}} 101 {{$teamIDs := .AllowlistTeamIDs}} 102 {{range $.Teams}} 103 {{if contain $teamIDs .ID }} 104 <a class="ui basic image label" href="{{$.Owner.OrganisationLink}}/teams/{{PathEscape .LowerName}}">{{.Name}}</a> 105 {{end}} 106 {{end}} 107 {{end}} 108 {{else}} 109 {{$.i18n.Tr "repo.settings.tags.protection.allowed.noone"}} 110 {{end}} 111 </td> 112 <td class="right aligned"> 113 <a class="ui tiny blue button" href="{{$.RepoLink}}/settings/tags/{{.ID}}">{{$.i18n.Tr "edit"}}</a> 114 <form class="dib" action="{{$.RepoLink}}/settings/tags/delete" method="post"> 115 {{$.CsrfTokenHtml}} 116 <input type="hidden" name="id" value="{{.ID}}" /> 117 <button class="ui tiny red button">{{$.i18n.Tr "remove"}}</button> 118 </form> 119 </td> 120 </tr> 121 {{else}} 122 <tr class="center aligned"><td colspan="3">{{.i18n.Tr "repo.settings.tags.protection.none"}}</td></tr> 123 {{end}} 124 </tbody> 125 </table> 126 </div> 127 </div> 128 </div> 129 {{end}} 130 </div> 131</div> 132{{template "base/footer" .}} 133