From 5023238088b124f83aca9b8c44701f7655c1bab4 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Sat, 29 Mar 2025 22:24:27 +0900 Subject: [PATCH] Add descriptions for private repo public access settings and improve the UI (#34057) Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> --- options/locale/locale_en-US.ini | 5 ++ templates/repo/settings/public_access.tmpl | 82 +++++++++++++--------- 2 files changed, 55 insertions(+), 32 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 252044da16..8ce469359c 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -2138,6 +2138,11 @@ settings = Settings settings.desc = Settings is where you can manage the settings for the repository settings.options = Repository settings.public_access = Public Access +settings.public_access_desc = Configure public visitor's access permissions to override the defaults of this repository. +settings.public_access.docs.not_set = Not Set: no extra public access permission. The visitor's permission follows the repository's visibility and member permissions. +settings.public_access.docs.anonymous_read = Anonymous Read: users who are not logged in can access the unit with read permission. +settings.public_access.docs.everyone_read = Everyone Read: all logged-in users can access the unit with read permission. Read permission of issues/pull-requests units also means users can create new issues/pull-requests. +settings.public_access.docs.everyone_write = Everyone Write: all logged-in users have write permission to the unit. Only Wiki unit supports this permission. settings.collaboration = Collaborators settings.collaboration.admin = Administrator settings.collaboration.write = Write diff --git a/templates/repo/settings/public_access.tmpl b/templates/repo/settings/public_access.tmpl index 5c80796931..c1c198bcce 100644 --- a/templates/repo/settings/public_access.tmpl +++ b/templates/repo/settings/public_access.tmpl @@ -1,36 +1,54 @@ {{template "repo/settings/layout_head" (dict "ctxData" . "pageClass" "repository settings")}} <div class="repo-setting-content"> - {{$paNotSet := "not-set"}} - {{$paAnonymousRead := "anonymous-read"}} - {{$paEveryoneRead := "everyone-read"}} - {{$paEveryoneWrite := "everyone-write"}} - <form class="ui form" method="post"> - {{.CsrfTokenHtml}} - <table class="ui table unstackable tw-my-2"> - <tr> - <th></th> - <th>{{ctx.Locale.Tr "settings.permission_not_set"}}</th> - <th>{{ctx.Locale.Tr "settings.permission_anonymous_read"}}</th> - <th>{{ctx.Locale.Tr "settings.permission_everyone_read"}}</th> - <th>{{ctx.Locale.Tr "settings.permission_everyone_write"}}</th> - </tr> - {{range $ua := .RepoUnitPublicAccesses}} - <tr> - <td>{{$ua.DisplayName}}</td> - <td class="tw-text-center"><label><input type="radio" name="{{$ua.FormKey}}" value="{{$paNotSet}}" {{Iif (eq $paNotSet $ua.UnitPublicAccess) "checked"}}></label></td> - <td class="tw-text-center"><label><input type="radio" name="{{$ua.FormKey}}" value="{{$paAnonymousRead}}" {{Iif (eq $paAnonymousRead $ua.UnitPublicAccess) "checked"}}></label></td> - <td class="tw-text-center"><label><input type="radio" name="{{$ua.FormKey}}" value="{{$paEveryoneRead}}" {{Iif (eq $paEveryoneRead $ua.UnitPublicAccess) "checked"}}></label></td> - <td class="tw-text-center"> - {{if SliceUtils.Contains $ua.PublicAccessTypes $paEveryoneWrite}} - <label><input type="radio" name="{{$ua.FormKey}}" value="{{$paEveryoneWrite}}" {{Iif (eq $paEveryoneWrite $ua.UnitPublicAccess) "checked"}}></label> - {{else}} - - - {{end}} - </td> - </tr> - {{end}} - </table> - <button class="ui primary button {{if .GlobalForcePrivate}}disabled{{end}}">{{ctx.Locale.Tr "repo.settings.update_settings"}}</button> - </form> + <h4 class="ui top attached header"> + {{ctx.Locale.Tr "repo.settings.public_access"}} + </h4> + <div class="ui attached segment"> + <p> + {{ctx.Locale.Tr "repo.settings.public_access_desc"}} + </p> + {{$paNotSet := "not-set"}} + {{$paAnonymousRead := "anonymous-read"}} + {{$paEveryoneRead := "everyone-read"}} + {{$paEveryoneWrite := "everyone-write"}} + <form class="ui form" method="post"> + {{.CsrfTokenHtml}} + <table class="ui table unstackable tw-my-2"> + <thead> + <tr> + <th>{{ctx.Locale.Tr "units.unit"}}</th> + <th class="tw-text-center">{{ctx.Locale.Tr "settings.permission_not_set"}}</th> + <th class="tw-text-center">{{ctx.Locale.Tr "settings.permission_anonymous_read"}}</th> + <th class="tw-text-center">{{ctx.Locale.Tr "settings.permission_everyone_read"}}</th> + <th class="tw-text-center">{{ctx.Locale.Tr "settings.permission_everyone_write"}}</th> + </tr> + </thead> + <tbody> + {{range $ua := .RepoUnitPublicAccesses}} + <tr> + <td>{{$ua.DisplayName}}</td> + <td class="tw-text-center"><label><input type="radio" name="{{$ua.FormKey}}" value="{{$paNotSet}}" {{Iif (eq $paNotSet $ua.UnitPublicAccess) "checked"}}></label></td> + <td class="tw-text-center"><label><input type="radio" name="{{$ua.FormKey}}" value="{{$paAnonymousRead}}" {{Iif (eq $paAnonymousRead $ua.UnitPublicAccess) "checked"}}></label></td> + <td class="tw-text-center"><label><input type="radio" name="{{$ua.FormKey}}" value="{{$paEveryoneRead}}" {{Iif (eq $paEveryoneRead $ua.UnitPublicAccess) "checked"}}></label></td> + <td class="tw-text-center"> + {{if SliceUtils.Contains $ua.PublicAccessTypes $paEveryoneWrite}} + <label><input type="radio" name="{{$ua.FormKey}}" value="{{$paEveryoneWrite}}" {{Iif (eq $paEveryoneWrite $ua.UnitPublicAccess) "checked"}}></label> + {{else}} + - + {{end}} + </td> + </tr> + {{end}} + </tbody> + </table> + <ul class="tw-my-3 tw-pl-5 tw-flex tw-flex-col tw-gap-3"> + <li>{{ctx.Locale.Tr "repo.settings.public_access.docs.not_set"}}</li> + <li>{{ctx.Locale.Tr "repo.settings.public_access.docs.anonymous_read"}}</li> + <li>{{ctx.Locale.Tr "repo.settings.public_access.docs.everyone_read"}}</li> + <li>{{ctx.Locale.Tr "repo.settings.public_access.docs.everyone_write"}}</li> + </ul> + <button class="ui primary button {{if .GlobalForcePrivate}}disabled{{end}}">{{ctx.Locale.Tr "repo.settings.update_settings"}}</button> + </form> + </div> </div> {{template "repo/settings/layout_footer" .}}