4979f15c3f
* Add configurable Trust Models Gitea's default signature verification model differs from GitHub. GitHub uses signatures to verify that the committer is who they say they are - meaning that when GitHub makes a signed commit it must be the committer. The GitHub model prevents re-publishing of commits after revocation of a key and prevents re-signing of other people's commits to create a completely trusted repository signed by one key or a set of trusted keys. The default behaviour of Gitea in contrast is to always display the avatar and information related to a signature. This allows signatures to be decoupled from the committer. That being said, allowing arbitary users to present other peoples commits as theirs is not necessarily desired therefore we have a trust model whereby signatures from collaborators are marked trusted, signatures matching the commit line are marked untrusted and signatures that match a user in the db but not the committer line are marked unmatched. The problem with this model is that this conflicts with Github therefore we need to provide an option to allow users to choose the Github model should they wish to. Signed-off-by: Andrew Thornton <art27@cantab.net> * Adjust locale strings Signed-off-by: Andrew Thornton <art27@cantab.net> * as per @6543 Co-authored-by: 6543 <6543@obermui.de> * Update models/gpg_key.go * Add migration for repository Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
706 lines
30 KiB
Cheetah
706 lines
30 KiB
Cheetah
{{template "base/head" .}}
|
|
<div class="repository settings options">
|
|
{{template "repo/header" .}}
|
|
{{template "repo/settings/navbar" .}}
|
|
<div class="ui container">
|
|
{{template "base/alert" .}}
|
|
<h4 class="ui top attached header">
|
|
{{.i18n.Tr "repo.settings.basic_settings"}}
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
<form class="ui form" action="{{.Link}}" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="update">
|
|
<div class="required field {{if .Err_RepoName}}error{{end}}">
|
|
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
|
|
<input id="repo_name" name="repo_name" value="{{.Repository.Name}}" data-repo-name="{{.Repository.Name}}" autofocus required>
|
|
</div>
|
|
<div class="inline field">
|
|
<label>{{.i18n.Tr "repo.repo_size"}}</label>
|
|
<span>{{SizeFmt .Repository.Size}}</span>
|
|
</div>
|
|
<div class="inline field">
|
|
<label>{{.i18n.Tr "repo.template"}}</label>
|
|
<div class="ui checkbox">
|
|
<input name="template" type="checkbox" {{if .Repository.IsTemplate}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.template_helper"}}</label>
|
|
</div>
|
|
</div>
|
|
{{if not .Repository.IsFork}}
|
|
<div class="inline field">
|
|
<label>{{.i18n.Tr "repo.visibility"}}</label>
|
|
<div class="ui checkbox">
|
|
{{if .IsAdmin}}
|
|
<input name="private" type="checkbox" {{if .Repository.IsPrivate}}checked{{end}}>
|
|
{{else}}
|
|
<input name="private" type="checkbox" {{if .Repository.IsPrivate}}checked{{end}}{{if and $.ForcePrivate .Repository.IsPrivate}} readonly{{end}}>
|
|
{{end}}
|
|
<label>{{.i18n.Tr "repo.visibility_helper" | Safe}} {{if .Repository.NumForks}}<span class="text red">{{.i18n.Tr "repo.visibility_fork_helper"}}</span>{{end}}</label>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
<div class="field {{if .Err_Description}}error{{end}}">
|
|
<label for="description">{{$.i18n.Tr "repo.repo_desc"}}</label>
|
|
<textarea id="description" name="description" rows="2">{{.Repository.Description}}</textarea>
|
|
</div>
|
|
<div class="field {{if .Err_Website}}error{{end}}">
|
|
<label for="website">{{.i18n.Tr "repo.settings.site"}}</label>
|
|
<input id="website" name="website" type="url" value="{{.Repository.Website}}">
|
|
</div>
|
|
|
|
<div class="field">
|
|
<button class="ui green button">{{$.i18n.Tr "repo.settings.update_settings"}}</button>
|
|
</div>
|
|
</form>
|
|
|
|
<div class="ui divider"></div>
|
|
|
|
<form class="ui form" action="{{.Link}}/avatar" method="post" enctype="multipart/form-data">
|
|
{{.CsrfTokenHtml}}
|
|
<div class="inline field">
|
|
<label for="avatar">{{.i18n.Tr "settings.choose_new_avatar"}}</label>
|
|
<input name="avatar" type="file" >
|
|
</div>
|
|
|
|
<div class="field">
|
|
<button class="ui green button">{{$.i18n.Tr "settings.update_avatar"}}</button>
|
|
<a class="ui red button delete-post" data-request-url="{{.Link}}/avatar/delete" data-done-url="{{.Link}}">{{$.i18n.Tr "settings.delete_current_avatar"}}</a>
|
|
</div>
|
|
</form>
|
|
|
|
</div>
|
|
|
|
{{if .Repository.IsMirror}}
|
|
<h4 class="ui top attached header">
|
|
{{.i18n.Tr "repo.settings.mirror_settings"}}
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
<form class="ui form" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="mirror">
|
|
<div class="inline field {{if .Err_EnablePrune}}error{{end}}">
|
|
<label>{{.i18n.Tr "repo.mirror_prune"}}</label>
|
|
<div class="ui checkbox">
|
|
<input id="enable_prune" name="enable_prune" type="checkbox" {{if .MirrorEnablePrune}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.mirror_prune_desc"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="inline field {{if .Err_Interval}}error{{end}}">
|
|
<label for="interval">{{.i18n.Tr "repo.mirror_interval"}}</label>
|
|
<input id="interval" name="interval" value="{{.MirrorInterval}}">
|
|
</div>
|
|
<div class="field {{if .Err_MirrorAddress}}error{{end}}">
|
|
<label for="mirror_address">{{.i18n.Tr "repo.mirror_address"}}</label>
|
|
<input id="mirror_address" name="mirror_address" value="{{MirrorFullAddress .Mirror}}" required>
|
|
<p class="help">{{.i18n.Tr "repo.mirror_address_desc"}}</p>
|
|
</div>
|
|
<div class="ui accordion optional field">
|
|
<label class="ui title {{if .Err_Auth}}text red active{{end}}">
|
|
<i class="icon dropdown"></i>
|
|
<label for="">{{.i18n.Tr "repo.need_auth"}}</label>
|
|
</label>
|
|
<div class="content {{if .Err_Auth}}active{{else if (MirrorUserName .Mirror)}}active{{end}}">
|
|
<div class="inline field {{if .Err_Auth}}error{{end}}">
|
|
<label for="mirror_username">{{.i18n.Tr "username"}}</label>
|
|
<input id="mirror_username" name="mirror_username" value="{{MirrorUserName .Mirror}}" {{if not .mirror_username}}data-need-clear="true"{{end}}>
|
|
</div>
|
|
<input class="fake" type="password">
|
|
<div class="inline field {{if .Err_Auth}}error{{end}}">
|
|
<label for="mirror_password">{{.i18n.Tr "password"}}</label>
|
|
<input id="mirror_password" name="mirror_password" type="password" value="{{MirrorPassword .Mirror}}" {{if not .mirror_password}}data-need-clear="true"{{end}}>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<button class="ui green button">{{$.i18n.Tr "repo.settings.update_settings"}}</button>
|
|
</div>
|
|
</form>
|
|
|
|
<div class="ui divider"></div>
|
|
|
|
<form class="ui form" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="mirror-sync">
|
|
<div class="inline field">
|
|
<label>{{.i18n.Tr "repo.mirror_last_synced"}}</label>
|
|
<span>{{.Mirror.UpdatedUnix.AsTime}}</span>
|
|
</div>
|
|
<div class="field">
|
|
<button class="ui blue button">{{$.i18n.Tr "repo.settings.sync_mirror"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
{{end}}
|
|
|
|
<h4 class="ui top attached header">
|
|
{{.i18n.Tr "repo.settings.advanced_settings"}}
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
<form class="ui form" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="advanced">
|
|
|
|
{{$isWikiEnabled := or (.Repository.UnitEnabled $.UnitTypeWiki) (.Repository.UnitEnabled $.UnitTypeExternalWiki)}}
|
|
<div class="inline field">
|
|
<label>{{.i18n.Tr "repo.wiki"}}</label>
|
|
{{if and (.UnitTypeWiki.UnitGlobalDisabled) (.UnitTypeExternalWiki.UnitGlobalDisabled)}}
|
|
<div class="ui checkbox poping up disabled" data-content="{{.i18n.Tr "repo.unit_disabled"}}">
|
|
{{else}}
|
|
<div class="ui checkbox">
|
|
{{end}}
|
|
<input class="enable-system" name="enable_wiki" type="checkbox" data-target="#wiki_box" {{if $isWikiEnabled}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.wiki_desc"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field {{if not $isWikiEnabled}}disabled{{end}}" id="wiki_box">
|
|
<div class="field">
|
|
{{if .UnitTypeWiki.UnitGlobalDisabled}}
|
|
<div class="ui radio checkbox poping up disabled" data-content="{{.i18n.Tr "repo.unit_disabled"}}">
|
|
{{else}}
|
|
<div class="ui radio checkbox">
|
|
{{end}}
|
|
<input class="hidden enable-system-radio" tabindex="0" name="enable_external_wiki" type="radio" value="false" data-target="#external_wiki_box" {{if not (.Repository.UnitEnabled $.UnitTypeExternalWiki)}}checked{{end}}/>
|
|
<label>{{.i18n.Tr "repo.settings.use_internal_wiki"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
{{if .UnitTypeExternalWiki.UnitGlobalDisabled}}
|
|
<div class="ui radio checkbox poping up disabled" data-content="{{.i18n.Tr "repo.unit_disabled"}}">
|
|
{{else}}
|
|
<div class="ui radio checkbox">
|
|
{{end}}
|
|
<input class="hidden enable-system-radio" tabindex="0" name="enable_external_wiki" type="radio" value="true" data-target="#external_wiki_box" {{if .Repository.UnitEnabled $.UnitTypeExternalWiki}}checked{{end}}/>
|
|
<label>{{.i18n.Tr "repo.settings.use_external_wiki"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field {{if not (.Repository.UnitEnabled $.UnitTypeExternalWiki)}}disabled{{end}}" id="external_wiki_box">
|
|
<label for="external_wiki_url">{{.i18n.Tr "repo.settings.external_wiki_url"}}</label>
|
|
<input id="external_wiki_url" name="external_wiki_url" type="url" value="{{(.Repository.MustGetUnit $.UnitTypeExternalWiki).ExternalWikiConfig.ExternalWikiURL}}">
|
|
<p class="help">{{.i18n.Tr "repo.settings.external_wiki_url_desc"}}</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ui divider"></div>
|
|
|
|
{{$isIssuesEnabled := or (.Repository.UnitEnabled $.UnitTypeIssues) (.Repository.UnitEnabled $.UnitTypeExternalTracker)}}
|
|
<div class="inline field">
|
|
<label>{{.i18n.Tr "repo.issues"}}</label>
|
|
{{if and (.UnitTypeIssues.UnitGlobalDisabled) (.UnitTypeExternalTracker.UnitGlobalDisabled)}}
|
|
<div class="ui checkbox poping up disabled" data-content="{{.i18n.Tr "repo.unit_disabled"}}">
|
|
{{else}}
|
|
<div class="ui checkbox">
|
|
{{end}}
|
|
<input class="enable-system" name="enable_issues" type="checkbox" data-target="#issue_box" {{if $isIssuesEnabled}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.issues_desc"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field {{if not $isIssuesEnabled}}disabled{{end}}" id="issue_box">
|
|
<div class="field">
|
|
{{if .UnitTypeIssues.UnitGlobalDisabled}}
|
|
<div class="ui radio checkbox poping up disabled" data-content="{{.i18n.Tr "repo.unit_disabled"}}">
|
|
{{else}}
|
|
<div class="ui radio checkbox">
|
|
{{end}}
|
|
<input class="hidden enable-system-radio" tabindex="0" name="enable_external_tracker" type="radio" value="false" data-context="#internal_issue_box" data-target="#external_issue_box" {{if not (.Repository.UnitEnabled $.UnitTypeExternalTracker)}}checked{{end}}/>
|
|
<label>{{.i18n.Tr "repo.settings.use_internal_issue_tracker"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field {{if (.Repository.UnitEnabled $.UnitTypeExternalTracker)}}disabled{{end}}" id="internal_issue_box">
|
|
{{if .Repository.CanEnableTimetracker}}
|
|
<div class="field">
|
|
<div class="ui checkbox">
|
|
<input name="enable_timetracker" class="enable-system" data-target="#only_contributors" type="checkbox" {{if .Repository.IsTimetrackerEnabled}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.enable_timetracker"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field {{if not .Repository.IsTimetrackerEnabled}}disabled{{end}}" id="only_contributors">
|
|
<div class="ui checkbox">
|
|
<input name="allow_only_contributors_to_track_time" type="checkbox" {{if .Repository.AllowOnlyContributorsToTrackTime}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.allow_only_contributors_to_track_time"}}</label>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
<div class="field">
|
|
<div class="ui checkbox">
|
|
<input name="enable_issue_dependencies" type="checkbox" {{if (.Repository.IsDependenciesEnabled)}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.issues.dependency.setting"}}</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
{{if .UnitTypeExternalTracker.UnitGlobalDisabled}}
|
|
<div class="ui radio checkbox poping up disabled" data-content="{{.i18n.Tr "repo.unit_disabled"}}">
|
|
{{else}}
|
|
<div class="ui radio checkbox">
|
|
{{end}}
|
|
<input class="hidden enable-system-radio" tabindex="0" name="enable_external_tracker" type="radio" value="true" data-context="#internal_issue_box" data-target="#external_issue_box" {{if .Repository.UnitEnabled $.UnitTypeExternalTracker}}checked{{end}}/>
|
|
<label>{{.i18n.Tr "repo.settings.use_external_issue_tracker"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field {{if not (.Repository.UnitEnabled $.UnitTypeExternalTracker)}}disabled{{end}}" id="external_issue_box">
|
|
<div class="field">
|
|
<label for="external_tracker_url">{{.i18n.Tr "repo.settings.external_tracker_url"}}</label>
|
|
<input id="external_tracker_url" name="external_tracker_url" type="url" value="{{(.Repository.MustGetUnit $.UnitTypeExternalTracker).ExternalTrackerConfig.ExternalTrackerURL}}">
|
|
<p class="help">{{.i18n.Tr "repo.settings.external_tracker_url_desc"}}</p>
|
|
</div>
|
|
<div class="field">
|
|
<label for="tracker_url_format">{{.i18n.Tr "repo.settings.tracker_url_format"}}</label>
|
|
<input id="tracker_url_format" name="tracker_url_format" type="url" value="{{(.Repository.MustGetUnit $.UnitTypeExternalTracker).ExternalTrackerConfig.ExternalTrackerFormat}}" placeholder="e.g. https://github.com/{user}/{repo}/issues/{index}">
|
|
<p class="help">{{.i18n.Tr "repo.settings.tracker_url_format_desc" | Str2html}}</p>
|
|
</div>
|
|
<div class="inline fields">
|
|
<label for="issue_style">{{.i18n.Tr "repo.settings.tracker_issue_style"}}</label>
|
|
<div class="field">
|
|
<div class="ui radio checkbox">
|
|
{{$externalTracker := (.Repository.MustGetUnit $.UnitTypeExternalTracker)}}
|
|
{{$externalTrackerStyle := $externalTracker.ExternalTrackerConfig.ExternalTrackerStyle}}
|
|
<input class="hidden" tabindex="0" name="tracker_issue_style" type="radio" value="numeric" {{if $externalTrackerStyle}}{{if eq $externalTrackerStyle "numeric"}}checked=""{{end}}{{end}}/>
|
|
<label>{{.i18n.Tr "repo.settings.tracker_issue_style.numeric"}} <span class="ui light grey text">(#1234)</span></label>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<div class="ui radio checkbox">
|
|
<input class="hidden" tabindex="0" name="tracker_issue_style" type="radio" value="alphanumeric" {{if $externalTrackerStyle}}{{if eq $externalTracker.ExternalTrackerConfig.ExternalTrackerStyle "alphanumeric"}}checked=""{{end}}{{end}} />
|
|
<label>{{.i18n.Tr "repo.settings.tracker_issue_style.alphanumeric"}} <span class="ui light grey text">(ABC-123, DEFG-234)</span></label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ui divider"></div>
|
|
|
|
{{$isProjectsEnabled := .Repository.UnitEnabled $.UnitTypeProjects}}
|
|
<div class="inline field">
|
|
<label>{{.i18n.Tr "repo.project_board"}}</label>
|
|
{{if .UnitTypeProjects.UnitGlobalDisabled}}
|
|
<div class="ui checkbox poping up disabled" data-content="{{.i18n.Tr "repo.unit_disabled"}}">
|
|
{{else}}
|
|
<div class="ui checkbox">
|
|
{{end}}
|
|
<input class="enable-system" name="enable_projects" type="checkbox" {{if $isProjectsEnabled}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.projects_desc"}}</label>
|
|
</div>
|
|
</div>
|
|
|
|
{{if and (not .IsMirror) (.Repository.UnitEnabled $.UnitTypePullRequests)}}
|
|
<div class="ui divider"></div>
|
|
{{$pullRequestEnabled := .Repository.UnitEnabled $.UnitTypePullRequests}}
|
|
{{$prUnit := .Repository.MustGetUnit $.UnitTypePullRequests}}
|
|
<div class="inline field">
|
|
<label>{{.i18n.Tr "repo.pulls"}}</label>
|
|
{{if .UnitTypePullRequests.UnitGlobalDisabled}}
|
|
<div class="ui checkbox poping up disabled" data-content="{{.i18n.Tr "repo.unit_disabled"}}">
|
|
{{else}}
|
|
<div class="ui checkbox">
|
|
{{end}}
|
|
<input class="enable-system" name="enable_pulls" type="checkbox" data-target="#pull_box" {{if $pullRequestEnabled}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.pulls_desc"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field{{if not $pullRequestEnabled}} disabled{{end}}" id="pull_box">
|
|
<div class="field">
|
|
<div class="ui checkbox">
|
|
<input name="pulls_ignore_whitespace" type="checkbox" {{if and $pullRequestEnabled ($prUnit.PullRequestsConfig.IgnoreWhitespaceConflicts)}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.pulls.ignore_whitespace"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<div class="ui checkbox">
|
|
<input name="pulls_allow_merge" type="checkbox" {{if or (not $pullRequestEnabled) ($prUnit.PullRequestsConfig.AllowMerge)}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.pulls.allow_merge_commits"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<div class="ui checkbox">
|
|
<input name="pulls_allow_rebase" type="checkbox" {{if or (not $pullRequestEnabled) ($prUnit.PullRequestsConfig.AllowRebase)}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.pulls.allow_rebase_merge"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<div class="ui checkbox">
|
|
<input name="pulls_allow_rebase_merge" type="checkbox" {{if or (not $pullRequestEnabled) ($prUnit.PullRequestsConfig.AllowRebaseMerge)}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.pulls.allow_rebase_merge_commit"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<div class="ui checkbox">
|
|
<input name="pulls_allow_squash" type="checkbox" {{if or (not $pullRequestEnabled) ($prUnit.PullRequestsConfig.AllowSquash)}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.pulls.allow_squash_commits"}}</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
|
|
<div class="ui divider"></div>
|
|
<div class="field">
|
|
<button class="ui green button">{{$.i18n.Tr "repo.settings.update_settings"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<h4 class="ui top attached header">
|
|
{{.i18n.Tr "repo.settings.signing_settings"}}
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
<form class="ui form" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="signing">
|
|
<div class="field">
|
|
<label>{{.i18n.Tr "repo.settings.trust_model"}}</label>
|
|
<div class="field">
|
|
<div class="ui radio checkbox">
|
|
<input type="radio" id="trust_model_default" name="trust_model" {{if eq .Repository.TrustModel.String "default"}}checked="checked"{{end}} value="default">
|
|
<label for="trust_model_default">{{.i18n.Tr "repo.settings.trust_model.default"}}</label>
|
|
<p class="help">{{.i18n.Tr "repo.settings.trust_model.default.desc"}}</p>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<div class="ui radio checkbox">
|
|
<input type="radio" id="trust_model_collaborator" name="trust_model" {{if eq .Repository.TrustModel.String "collaborator"}}checked="checked"{{end}} value="collaborator">
|
|
<label for="trust_model_collaborator">{{.i18n.Tr "repo.settings.trust_model.collaborator.long"}}</label>
|
|
<p class="help">{{.i18n.Tr "repo.settings.trust_model.collaborator.desc"}}</p>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<div class="ui radio checkbox">
|
|
<input type="radio" name="trust_model" id="trust_model_committer" {{if eq .Repository.TrustModel.String "committer"}}checked="checked"{{end}} value="committer">
|
|
<label for="trust_model_committer">{{.i18n.Tr "repo.settings.trust_model.committer.long"}}</label>
|
|
<p class="help">{{.i18n.Tr "repo.settings.trust_model.committer.desc"}}</p>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<div class="ui radio checkbox">
|
|
<input type="radio" name="trust_model" id="trust_model_collaboratorcommitter" {{if eq .Repository.TrustModel.String "collaboratorcommitter"}}checked="checked"{{end}} value="collaboratorcommitter">
|
|
<label for="trust_model_collaboratorcommitter">{{.i18n.Tr "repo.settings.trust_model.collaboratorcommitter.long"}}</label>
|
|
<p class="help">{{.i18n.Tr "repo.settings.trust_model.collaboratorcommitter.desc"}}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ui divider"></div>
|
|
<div class="field">
|
|
<button class="ui green button">{{$.i18n.Tr "repo.settings.update_settings"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
{{if .IsAdmin}}
|
|
<h4 class="ui top attached header">
|
|
{{.i18n.Tr "repo.settings.admin_settings"}}
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
<form class="ui form" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="admin">
|
|
<div class="field">
|
|
<div class="ui checkbox">
|
|
<input name="enable_health_check" type="checkbox" {{if .Repository.IsFsckEnabled}}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.admin_enable_health_check"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="ui checkbox">
|
|
<input name="enable_close_issues_via_commit_in_any_branch" type="checkbox" {{ if .Repository.CloseIssuesViaCommitInAnyBranch }}checked{{end}}>
|
|
<label>{{.i18n.Tr "repo.settings.admin_enable_close_issues_via_commit_in_any_branch"}}</label>
|
|
</div>
|
|
|
|
<div class="ui divider"></div>
|
|
<div class="field">
|
|
<button class="ui green button">{{$.i18n.Tr "repo.settings.update_settings"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if .Permission.IsOwner}}
|
|
<h4 class="ui top attached warning header">
|
|
{{.i18n.Tr "repo.settings.danger_zone"}}
|
|
</h4>
|
|
<div class="ui attached warning table danger segment">
|
|
{{if .Repository.IsMirror}}
|
|
<div class="item">
|
|
<div class="ui right">
|
|
<button class="ui basic red show-modal button" data-modal="#convert-mirror-repo-modal">{{.i18n.Tr "repo.settings.convert"}}</button>
|
|
</div>
|
|
<div>
|
|
<h5>{{.i18n.Tr "repo.settings.convert"}}</h5>
|
|
<p>{{.i18n.Tr "repo.settings.convert_desc"}}</p>
|
|
</div>
|
|
</div>
|
|
<div class="ui divider"></div>
|
|
{{end}}
|
|
{{if and .Repository.IsFork .Repository.Owner.CanCreateRepo}}
|
|
<div class="item">
|
|
<div class="ui right">
|
|
<button class="ui basic red show-modal button" data-modal="#convert-fork-repo-modal">{{.i18n.Tr "repo.settings.convert_fork"}}</button>
|
|
</div>
|
|
<div>
|
|
<h5>{{.i18n.Tr "repo.settings.convert_fork"}}</h5>
|
|
<p>{{.i18n.Tr "repo.settings.convert_fork_desc"}}</p>
|
|
</div>
|
|
</div>
|
|
<div class="ui divider"></div>
|
|
{{end}}
|
|
<div class="item">
|
|
<div class="ui right">
|
|
<button class="ui basic red show-modal button" data-modal="#transfer-repo-modal">{{.i18n.Tr "repo.settings.transfer"}}</button>
|
|
</div>
|
|
<div>
|
|
<h5>{{.i18n.Tr "repo.settings.transfer"}}</h5>
|
|
<p>{{.i18n.Tr "repo.settings.transfer_desc"}}</p>
|
|
</div>
|
|
</div>
|
|
|
|
{{if .Permission.CanRead $.UnitTypeWiki}}
|
|
<div class="ui divider"></div>
|
|
|
|
<div class="item">
|
|
<div class="ui right">
|
|
<button class="ui basic red show-modal button" data-modal="#delete-wiki-modal">{{.i18n.Tr "repo.settings.wiki_delete"}}</button>
|
|
</div>
|
|
<div>
|
|
<h5>{{.i18n.Tr "repo.settings.wiki_delete"}}</h5>
|
|
<p>{{.i18n.Tr "repo.settings.wiki_delete_desc"}}</p>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
|
|
<div class="ui divider"></div>
|
|
|
|
<div class="item">
|
|
<div class="ui right">
|
|
<button class="ui basic red show-modal button" data-modal="#delete-repo-modal">{{.i18n.Tr "repo.settings.delete"}}</button>
|
|
</div>
|
|
<div>
|
|
<h5>{{.i18n.Tr "repo.settings.delete"}}</h5>
|
|
<p>{{.i18n.Tr "repo.settings.delete_desc"}}</p>
|
|
</div>
|
|
</div>
|
|
|
|
{{if not .Repository.IsMirror}}
|
|
<div class="ui divider"></div>
|
|
|
|
<div class="item">
|
|
<div class="ui right">
|
|
<button class="ui basic red show-modal button" data-modal="#archive-repo-modal">
|
|
{{if .Repository.IsArchived}}
|
|
{{.i18n.Tr "repo.settings.unarchive.button"}}
|
|
{{else}}
|
|
{{.i18n.Tr "repo.settings.archive.button"}}
|
|
{{end}}
|
|
</button>
|
|
</div>
|
|
<div>
|
|
{{if .Repository.IsArchived}}
|
|
<h5>{{.i18n.Tr "repo.settings.unarchive.header"}}</h5>
|
|
<p>{{.i18n.Tr "repo.settings.unarchive.text"}}</p>
|
|
{{else}}
|
|
<h5>{{.i18n.Tr "repo.settings.archive.header"}}</h5>
|
|
<p>{{.i18n.Tr "repo.settings.archive.text"}}</p>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
|
|
{{if .Permission.IsOwner}}
|
|
{{if .Repository.IsMirror}}
|
|
<div class="ui small modal" id="convert-mirror-repo-modal">
|
|
<div class="header">
|
|
{{.i18n.Tr "repo.settings.convert"}}
|
|
</div>
|
|
<div class="content">
|
|
<div class="ui warning message text left">
|
|
{{.i18n.Tr "repo.settings.convert_notices_1"}}
|
|
</div>
|
|
<form class="ui form" action="{{.Link}}" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="convert">
|
|
<div class="field">
|
|
<label>
|
|
{{.i18n.Tr "repo.settings.transfer_form_title"}}
|
|
<span class="text red">{{.Repository.Name}}</span>
|
|
</label>
|
|
</div>
|
|
<div class="required field">
|
|
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
|
|
<input id="repo_name" name="repo_name" required>
|
|
</div>
|
|
|
|
<div class="text right actions">
|
|
<div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div>
|
|
<button class="ui red button">{{.i18n.Tr "repo.settings.convert_confirm"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
{{if and .Repository.IsFork .Repository.Owner.CanCreateRepo}}
|
|
<div class="ui small modal" id="convert-fork-repo-modal">
|
|
<div class="header">
|
|
{{.i18n.Tr "repo.settings.convert_fork"}}
|
|
</div>
|
|
<div class="content">
|
|
<div class="ui warning message text left">
|
|
{{.i18n.Tr "repo.settings.convert_fork_notices_1"}}
|
|
</div>
|
|
<form class="ui form" action="{{.Link}}" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="convert_fork">
|
|
<div class="field">
|
|
<label>
|
|
{{.i18n.Tr "repo.settings.transfer_form_title"}}
|
|
<span class="text red">{{.Repository.Name}}</span>
|
|
</label>
|
|
</div>
|
|
<div class="required field">
|
|
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
|
|
<input id="repo_name" name="repo_name" required>
|
|
</div>
|
|
|
|
<div class="text right actions">
|
|
<div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div>
|
|
<button class="ui red button">{{.i18n.Tr "repo.settings.convert_fork_confirm"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
<div class="ui small modal" id="transfer-repo-modal">
|
|
<div class="header">
|
|
{{.i18n.Tr "repo.settings.transfer"}}
|
|
</div>
|
|
<div class="content">
|
|
<div class="ui warning message text left">
|
|
{{.i18n.Tr "repo.settings.transfer_notices_1"}} <br>
|
|
{{.i18n.Tr "repo.settings.transfer_notices_2"}}
|
|
</div>
|
|
<form class="ui form" action="{{.Link}}" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="transfer">
|
|
<div class="field">
|
|
<label>
|
|
{{.i18n.Tr "repo.settings.transfer_form_title"}}
|
|
<span class="text red">{{.Repository.Name}}</span>
|
|
</label>
|
|
</div>
|
|
<div class="required field">
|
|
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
|
|
<input id="repo_name" name="repo_name" required>
|
|
</div>
|
|
<div class="required field">
|
|
<label for="new_owner_name">{{.i18n.Tr "repo.settings.transfer_owner"}}</label>
|
|
<input id="new_owner_name" name="new_owner_name" required>
|
|
</div>
|
|
|
|
<div class="text right actions">
|
|
<div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div>
|
|
<button class="ui red button">{{.i18n.Tr "repo.settings.make_transfer"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ui small modal" id="delete-repo-modal">
|
|
<div class="header">
|
|
{{.i18n.Tr "repo.settings.delete"}}
|
|
</div>
|
|
<div class="content">
|
|
<div class="ui warning message text left">
|
|
{{.i18n.Tr "repo.settings.delete_notices_1" | Safe}}<br>
|
|
{{.i18n.Tr "repo.settings.delete_notices_2" .Repository.FullName | Safe}}
|
|
{{if .Repository.NumForks}}<br>
|
|
{{.i18n.Tr "repo.settings.delete_notices_fork_1"}}
|
|
{{end}}
|
|
</div>
|
|
<form class="ui form" action="{{.Link}}" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="delete">
|
|
<div class="field">
|
|
<label>
|
|
{{.i18n.Tr "repo.settings.transfer_form_title"}}
|
|
<span class="text red">{{.Repository.Name}}</span>
|
|
</label>
|
|
</div>
|
|
<div class="required field">
|
|
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
|
|
<input id="repo_name" name="repo_name" required>
|
|
</div>
|
|
|
|
<div class="text right actions">
|
|
<div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div>
|
|
<button class="ui red button">{{.i18n.Tr "repo.settings.confirm_delete"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
{{if .Repository.UnitEnabled $.UnitTypeWiki}}
|
|
<div class="ui small modal" id="delete-wiki-modal">
|
|
<div class="header">
|
|
{{.i18n.Tr "repo.settings.wiki_delete"}}
|
|
</div>
|
|
<div class="content">
|
|
<div class="ui warning message text left">
|
|
{{.i18n.Tr "repo.settings.delete_notices_1" | Safe}}<br>
|
|
{{.i18n.Tr "repo.settings.wiki_delete_notices_1" .Repository.Name | Safe}}
|
|
</div>
|
|
<form class="ui form" action="{{.Link}}" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="delete-wiki">
|
|
<div class="field">
|
|
<label>
|
|
{{.i18n.Tr "repo.settings.transfer_form_title"}}
|
|
<span class="text red">{{.Repository.Name}}</span>
|
|
</label>
|
|
</div>
|
|
<div class="required field">
|
|
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
|
|
<input id="repo_name" name="repo_name" required>
|
|
</div>
|
|
|
|
<div class="text right actions">
|
|
<div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div>
|
|
<button class="ui red button">{{.i18n.Tr "repo.settings.confirm_wiki_delete"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if not .Repository.IsMirror}}
|
|
<div class="ui basic modal" id="archive-repo-modal">
|
|
<div class="ui icon header">
|
|
{{if .Repository.IsArchived}}
|
|
{{.i18n.Tr "repo.settings.unarchive.header"}}
|
|
{{else}}
|
|
{{.i18n.Tr "repo.settings.archive.header"}}
|
|
{{end}}
|
|
</div>
|
|
<div class="content center">
|
|
<p>
|
|
{{if .Repository.IsArchived}}
|
|
{{.i18n.Tr "repo.settings.unarchive.text"}}
|
|
{{else}}
|
|
{{.i18n.Tr "repo.settings.archive.text"}}
|
|
{{end}}
|
|
</p>
|
|
</div>
|
|
<form action="{{.Link}}" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="{{if .Repository.IsArchived}}unarchive{{else}}archive{{end}}">
|
|
<input type="hidden" name="repo_id" value="{{.Repository.ID}}">
|
|
<div class="center actions">
|
|
<div class="ui basic cancel inverted button">{{.i18n.Tr "settings.cancel"}}</div>
|
|
<button class="ui basic inverted yellow button">{{.i18n.Tr "modal.yes"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
{{end}}
|
|
{{end}}
|
|
|
|
{{template "base/footer" .}}
|