@ -79,206 +79,212 @@
{{ ctx .Locale .Tr "repo.settings.mirror_settings" }}
</h4>
<div class="ui attached segment">
{{ if $ newMirrorsEntirelyEnabled }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs" }}
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pushing-to-a-remote-repository"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.doc_link_title" }} </a><br><br>
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.pull_mirror_instructions" }}
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pulling-from-a-remote-repository"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.doc_link_pull_section" }} </a><br>
{{ else if $ onlyNewPushMirrorsEnabled }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.disabled_pull_mirror.instructions" }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.more_information_if_disabled" }}
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pulling-from-a-remote-repository"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.doc_link_title" }} </a><br>
{{ else if $ onlyNewPullMirrorsEnabled }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.disabled_push_mirror.instructions" }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning" }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.more_information_if_disabled" }}
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pulling-from-a-remote-repository"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.doc_link_title" }} </a><br><br>
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.disabled_push_mirror.info" }}
{{ if $ existingPushMirror }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.can_still_use" }}
{{ end }}
{{ if .Repository .IsArchived }}
<div class="ui warning message gt-text-center">
{{ ctx .Locale .Tr "repo.settings.archive.mirrors_unavailable" }}
</div>
{{ else }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.no_new_mirrors" }} {{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.can_still_use" }} <br>
{{ end }}
<table class="ui table">
{{ if $ existingPushMirror }}
<thead>
<tr>
<th style="width:40%"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.mirrored_repository" }} </th>
<th> {{ ctx .Locale .Tr "repo.settings.mirror_settings.direction" }} </th>
<th> {{ ctx .Locale .Tr "repo.settings.mirror_settings.last_update" }} </th>
<th></th>
</tr>
</thead>
{{ if $ newMirrorsEntirelyEnabled }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs" }}
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pushing-to-a-remote-repository"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.doc_link_title" }} </a><br><br>
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.pull_mirror_instructions" }}
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pulling-from-a-remote-repository"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.doc_link_pull_section" }} </a><br>
{{ else if $ onlyNewPushMirrorsEnabled }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.disabled_pull_mirror.instructions" }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.more_information_if_disabled" }}
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pulling-from-a-remote-repository"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.doc_link_title" }} </a><br>
{{ else if $ onlyNewPullMirrorsEnabled }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.disabled_push_mirror.instructions" }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning" }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.more_information_if_disabled" }}
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pulling-from-a-remote-repository"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.doc_link_title" }} </a><br><br>
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.disabled_push_mirror.info" }}
{{ if $ existingPushMirror }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.can_still_use" }}
{{ end }}
{{ else }}
{{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.no_new_mirrors" }} {{ ctx .Locale .Tr "repo.settings.mirror_settings.docs.can_still_use" }} <br>
{{ end }}
{{ if $ modifyBrokenPullMirror }}
{{ / * even if a repo is a pull mirror ( IsMirror = true ) , the PullMirror might still be nil if the mirror migration is broken * / }}
<table class="ui table">
{{ if $ existingPushMirror }}
<thead>
<tr>
<th style="width:40%"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.mirrored_repository" }} </th>
<th> {{ ctx .Locale .Tr "repo.settings.mirror_settings.direction" }} </th>
<th> {{ ctx .Locale .Tr "repo.settings.mirror_settings.last_update" }} </th>
<th></th>
</tr>
</thead>
{{ end }}
{{ if $ modifyBrokenPullMirror }}
{{ / * even if a repo is a pull mirror ( IsMirror = true ) , the PullMirror might still be nil if the mirror migration is broken * / }}
<tbody>
<tr>
<td colspan="4">
<div class="text red gt-py-4 gt-border-secondary-bottom"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.direction.pull" }} : {{ ctx .Locale .Tr "error.occurred" }} </div>
</td>
</tr>
</tbody>
{{ else if $ isWorkingPullMirror }}
<tbody>
<tr>
<td colspan="4">
<div class="text red gt-py-4 gt-border-secondary-bottom"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.direction.pull" }} : {{ ctx .Locale .Tr "error.occurred" }} </div>
<td> {{ .PullMirror .RemoteAddress }} </td>
<td> {{ ctx .Locale .Tr "repo.settings.mirror_settings.direction.pull" }} </td>
<td> {{ DateTime "full" .PullMirror .UpdatedUnix }} </td>
<td class="right aligned">
<form method="post" class="gt-dib">
{{ .CsrfTokenHtml }}
<input type="hidden" name="action" value="mirror-sync">
<button class="ui primary tiny button inline text-thin"> {{ ctx .Locale .Tr "repo.settings.sync_mirror" }} </button>
</form>
</td>
</tr>
</tbody>
{{ else if $ isWorkingPullMirror }}
<tbody>
<tr>
<td> {{ .PullMirror .RemoteAddress }} </td>
<td> {{ ctx .Locale .Tr "repo.settings.mirror_settings.direction.pull" }} </td>
<td> {{ DateTime "full" .PullMirror .UpdatedUnix }} </td>
<td class="right aligned">
<form method="post" class="gt-dib">
{{ .CsrfTokenHtml }}
<input type="hidden" name="action" value="mirror-sync">
<button class="ui primary tiny button inline text-thin"> {{ ctx .Locale .Tr "repo.settings.sync_mirror" }} </button>
</form>
</td>
</tr>
<tr>
<td colspan="4">
<form class="ui form" method="post">
{{ template "base/disable_form_autofill" }}
{{ .CsrfTokenHtml }}
<input type="hidden" name="action" value="mirror">
<div class="inline field {{ if .Err_EnablePrune }} error {{ end }} ">
<label> {{ ctx .Locale .Tr "repo.mirror_prune" }} </label>
<div class="ui checkbox">
<input id="enable_prune" name="enable_prune" type="checkbox" {{ if .PullMirror .EnablePrune }} checked {{ end }} >
<label> {{ ctx .Locale .Tr "repo.mirror_prune_desc" }} </label>
</div>
</div>
<div class="inline field {{ if .Err_Interval }} error {{ end }} ">
<label for="interval"> {{ ctx .Locale .Tr "repo.mirror_interval" .MinimumMirrorInterval }} </label>
<input id="interval" name="interval" value=" {{ .PullMirror .Interval }} ">
</div>
{{ $ address : = MirrorRemoteAddress $ .Context .Repository .PullMirror .GetRemoteName false }}
<div class="field {{ if .Err_MirrorAddress }} error {{ end }} ">
<label for="mirror_address"> {{ ctx .Locale .Tr "repo.mirror_address" }} </label>
<input id="mirror_address" name="mirror_address" value=" {{ $ address .Address }} " required>
<p class="help"> {{ ctx .Locale .Tr "repo.mirror_address_desc" }} </p>
</div>
<details class="ui optional field" {{ if or .Err_Auth $ address .Username }} open {{ end }} >
<summary class="gt-p-2">
{{ ctx .Locale .Tr "repo.need_auth" }}
</summary>
<div class="gt-p-2">
<div class="inline field {{ if .Err_Auth }} error {{ end }} ">
<label for="mirror_username"> {{ ctx .Locale .Tr "username" }} </label>
<input id="mirror_username" name="mirror_username" value=" {{ $ address .Username }} " {{ if not .mirror_username }} data-need-clear="true" {{ end }} >
</div>
<div class="inline field {{ if .Err_Auth }} error {{ end }} ">
<label for="mirror_password"> {{ ctx .Locale .Tr "password" }} </label>
<input id="mirror_password" name="mirror_password" type="password" placeholder=" {{ if $ address .Password }} {{ ctx .Locale .Tr "repo.mirror_password_placeholder" }} {{ else }} {{ ctx .Locale .Tr "repo.mirror_password_blank_placeholder" }} {{ end }} " value="" {{ if not .mirror_password }} data-need-clear="true" {{ end }} autocomplete="off">
</div>
<p class="help"> {{ ctx .Locale .Tr "repo.mirror_password_help" }} </p>
</div>
</details>
{{ if .LFSStartServer }}
<div class="inline field">
<label> {{ ctx .Locale .Tr "repo.mirror_lfs" }} </label>
<div class="ui checkbox">
<input id="mirror_lfs" name="mirror_lfs" type="checkbox" {{ if .PullMirror .LFS }} checked {{ end }} >
<label> {{ ctx .Locale .Tr "repo.mirror_lfs_desc" }} </label>
</div>
</div>
<div class="field {{ if .Err_LFSEndpoint }} error {{ end }} ">
<label for="mirror_lfs_endpoint"> {{ ctx .Locale .Tr "repo.mirror_lfs_endpoint" }} </label>
<input id="mirror_lfs_endpoint" name="mirror_lfs_endpoint" value=" {{ .PullMirror .LFSEndpoint }} " placeholder=" {{ ctx .Locale .Tr "repo.migrate_options_lfs_endpoint.placeholder" }} ">
<p class="help"> {{ ctx .Locale .Tr "repo.mirror_lfs_endpoint_desc" "https://github.com/git-lfs/git-lfs/blob/main/docs/api/server-discovery.md#server-discovery" | Str2html }} </p>
</div>
{{ end }}
<div class="field">
<button class="ui primary button"> {{ ctx .Locale .Tr "repo.settings.update_mirror_settings" }} </button>
</div>
</form>
</td>
</tr>
</tbody>
<thead><tr><th colspan="4"></th></tr></thead>
{{ end }} {{ / * end if : IsMirror * / }}
<tbody>
{{ range .PushMirrors }}
<tr>
<td class="gt-word-break"> {{ .RemoteAddress }} </td>
<td> {{ ctx .Locale .Tr "repo.settings.mirror_settings.direction.push" }} </td>
<td> {{ if .LastUpdateUnix }} {{ DateTime "full" .LastUpdateUnix }} {{ else }} {{ ctx .Locale .Tr "never" }} {{ end }} {{ if .LastError }} <div class="ui red label" data-tooltip-content=" {{ .LastError }} "> {{ ctx .Locale .Tr "error" }} </div> {{ end }} </td>
<td class="right aligned">
<button
class="ui tiny button show-modal"
data-modal="#push-mirror-edit-modal"
data-tooltip-content=" {{ ctx .Locale .Tr "repo.settings.mirror_settings.push_mirror.edit_sync_time" }} "
data-modal-push-mirror-edit-id=" {{ .ID }} "
data-modal-push-mirror-edit-interval=" {{ .Interval }} "
data-modal-push-mirror-edit-address=" {{ .RemoteAddress }} "
>
{{ svg "octicon-pencil" 1 4 }}
</button>
<form method="post" class="gt-dib">
{{ $ .CsrfTokenHtml }}
<input type="hidden" name="action" value="push-mirror-sync">
<input type="hidden" name="push_mirror_id" value=" {{ .ID }} ">
<button class="ui primary tiny button" data-tooltip-content=" {{ ctx .Locale .Tr "repo.settings.sync_mirror" }} "> {{ svg "octicon-sync" 1 4 }} </button>
</form>
<form method="post" class="gt-dib">
{{ $ .CsrfTokenHtml }}
<input type="hidden" name="action" value="push-mirror-remove">
<input type="hidden" name="push_mirror_id" value=" {{ .ID }} ">
<button class="ui basic red tiny button" data-tooltip-content=" {{ ctx .Locale .Tr "remove" }} "> {{ svg "octicon-trash" 1 4 }} </button>
</form>
</td>
</tr>
{{ else }}
<tr>
<td> {{ ctx .Locale .Tr "repo.settings.mirror_settings.push_mirror.none" }} </td>
</tr>
{{ end }}
{{ if ( not .DisableNewPushMirrors ) }}
<tr>
<td colspan="4">
<form class="ui form" method="post">
{{ template "base/disable_form_autofill" }}
{{ .CsrfTokenHtml }}
<input type="hidden" name="action" value="push-mirror-add">
<div class="field {{ if .Err_PushMirrorAddress }} error {{ end }} ">
<label for="push_mirror_address"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.push_mirror.remote_url" }} </label>
<input id="push_mirror_address" name="push_mirror_address" value=" {{ .push_mirror_address }} " required>
<input type="hidden" name="action" value="mirror">
<div class="inline field {{ if .Err_EnablePrune }} error {{ end }} ">
<label> {{ ctx .Locale .Tr "repo.mirror_prune" }} </label>
<div class="ui checkbox">
<input id="enable_prune" name="enable_prune" type="checkbox" {{ if .PullMirror .EnablePrune }} checked {{ end }} >
<label> {{ ctx .Locale .Tr "repo.mirror_prune_desc" }} </label>
</div>
</div>
<div class="inline field {{ if .Err_Interval }} error {{ end }} ">
<label for="interval"> {{ ctx .Locale .Tr "repo.mirror_interval" .MinimumMirrorInterval }} </label>
<input id="interval" name="interval" value=" {{ .PullMirror .Interval }} ">
</div>
{{ $ address : = MirrorRemoteAddress $ .Context .Repository .PullMirror .GetRemoteName false }}
<div class="field {{ if .Err_MirrorAddress }} error {{ end }} ">
<label for="mirror_address"> {{ ctx .Locale .Tr "repo.mirror_address" }} </label>
<input id="mirror_address" name="mirror_address" value=" {{ $ address .Address }} " required>
<p class="help"> {{ ctx .Locale .Tr "repo.mirror_address_desc" }} </p>
</div>
<details class="ui optional field" {{ if or .Err_PushMirrorAuth .push_mirror_username }} open {{ end }} >
<details class="ui optional field" {{ if or .Err_Auth $ address .Username }} open {{ end }} >
<summary class="gt-p-2">
{{ ctx .Locale .Tr "repo.need_auth" }}
</summary>
<div class="gt-p-2">
<div class="inline field {{ if .Err_PushMirrorAuth }} error {{ end }} ">
<label for="push_mirror_username"> {{ ctx .Locale .Tr "username" }} </label>
<input id="push_mirror_username" name="push_mirror_username" value=" {{ .push_mirror_username }} ">
<div class="inline field {{ if .Err_Auth }} error {{ end }} ">
<label for="mirror_username"> {{ ctx .Locale .Tr "username" }} </label>
<input id="mirror_username" name="mirror_username" value=" {{ $ address .Username }} " {{ if not .mirror_username }} data-need-clear="true" {{ end }} >
</div>
<div class="inline field {{ if .Err_PushMirrorAuth }} error {{ end }} ">
<label for="push_ mirror_password"> {{ ctx .Locale .Tr "password" }} </label>
<input id="push_mirror_password" name="push_mirror_password" type="password" value=" {{ .push_ mirror_password }} " autocomplete="off">
<div class="inline field {{ if .Err_Auth }} error {{ end }} ">
<label for="mirror_password"> {{ ctx .Locale .Tr "password" }} </label>
<input id="mirror_password" name="mirror_password" type="password" placeholder=" {{ if $ address .Password }} {{ ctx .Locale .Tr "repo.mirror_password_placeholder" }} {{ else }} {{ ctx .Locale .Tr "repo.mirror_password_blank_placeholder" }} {{ end }} " value="" {{ if not .mirror_password }} data-need-clear="true" {{ end }} autocomplete="off">
</div>
<p class="help"> {{ ctx .Locale .Tr "repo.mirror_password_help" }} </p>
</div>
</details>
<div class="field">
{{ if .LFSStartServer }}
<div class="inline field">
<label> {{ ctx .Locale .Tr "repo.mirror_lfs" }} </label>
<div class="ui checkbox">
<input id="push_mirror_sync_on_commit" name="push_mirror_sync_on_commit" type="checkbox" {{ if .push_mirror_sync_on_commit }} checked {{ end }} >
<label for="push_mirror_sync_on_commit"> {{ ctx .Locale .Tr "repo.mirror_sync_on_commit" }} </label>
<input id="mirror_lfs" name="mirror_lfs" type="checkbox" {{ if .PullMirror .LFS }} checked {{ end }} >
<label> {{ ctx .Locale .Tr "repo.mirror_lfs_desc" }} </label>
</div>
</div>
<div class="inline field {{ if .Err_PushMirrorInterval }} error {{ end }} ">
<label for="push_mirror_interval"> {{ ctx .Locale .Tr "repo.mirror_interval" .MinimumMirrorInterval }} </label>
<input id="push_mirror_interval" name="push_mirror_interval" value=" {{ if .push_mirror_interval }} {{ .push_mirror_interval }} {{ else }} {{ .DefaultMirrorInterval }} {{ end }} ">
<div class="field {{ if .Err_LFSEndpoint }} error {{ end }} ">
<label for="mirror_lfs_endpoint"> {{ ctx .Locale .Tr "repo.mirror_lfs_endpoint" }} </label>
<input id="mirror_lfs_endpoint" name="mirror_lfs_endpoint" value=" {{ .PullMirror .LFSEndpoint }} " placeholder=" {{ ctx .Locale .Tr "repo.migrate_options_lfs_endpoint.placeholder" }} ">
<p class="help"> {{ ctx .Locale .Tr "repo.mirror_lfs_endpoint_desc" "https://github.com/git-lfs/git-lfs/blob/main/docs/api/server-discovery.md#server-discovery" | Str2html }} </p>
</div>
{{ end }}
<div class="field">
<button class="ui primary button"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.push_mirror.add " }} </button>
<button class="ui primary button"> {{ ctx .Locale .Tr "repo.settings.update_mirror_settings" }} </button>
</div>
</form>
</td>
</tr>
{{ end }}
</tbody>
</table>
</tbody>
<thead><tr><th colspan="4"></th></tr></thead>
{{ end }} {{ / * end if : IsMirror * / }}
<tbody>
{{ range .PushMirrors }}
<tr>
<td class="gt-word-break"> {{ .RemoteAddress }} </td>
<td> {{ ctx .Locale .Tr "repo.settings.mirror_settings.direction.push" }} </td>
<td> {{ if .LastUpdateUnix }} {{ DateTime "full" .LastUpdateUnix }} {{ else }} {{ ctx .Locale .Tr "never" }} {{ end }} {{ if .LastError }} <div class="ui red label" data-tooltip-content=" {{ .LastError }} "> {{ ctx .Locale .Tr "error" }} </div> {{ end }} </td>
<td class="right aligned">
<button
class="ui tiny button show-modal"
data-modal="#push-mirror-edit-modal"
data-tooltip-content=" {{ ctx .Locale .Tr "repo.settings.mirror_settings.push_mirror.edit_sync_time" }} "
data-modal-push-mirror-edit-id=" {{ .ID }} "
data-modal-push-mirror-edit-interval=" {{ .Interval }} "
data-modal-push-mirror-edit-address=" {{ .RemoteAddress }} "
>
{{ svg "octicon-pencil" 1 4 }}
</button>
<form method="post" class="gt-dib">
{{ $ .CsrfTokenHtml }}
<input type="hidden" name="action" value="push-mirror-sync">
<input type="hidden" name="push_mirror_id" value=" {{ .ID }} ">
<button class="ui primary tiny button" data-tooltip-content=" {{ ctx .Locale .Tr "repo.settings.sync_mirror" }} "> {{ svg "octicon-sync" 1 4 }} </button>
</form>
<form method="post" class="gt-dib">
{{ $ .CsrfTokenHtml }}
<input type="hidden" name="action" value="push-mirror-remove">
<input type="hidden" name="push_mirror_id" value=" {{ .ID }} ">
<button class="ui basic red tiny button" data-tooltip-content=" {{ ctx .Locale .Tr "remove" }} "> {{ svg "octicon-trash" 1 4 }} </button>
</form>
</td>
</tr>
{{ else }}
<tr>
<td> {{ ctx .Locale .Tr "repo.settings.mirror_settings.push_mirror.none" }} </td>
</tr>
{{ end }}
{{ if ( not .DisableNewPushMirrors ) }}
<tr>
<td colspan="4">
<form class="ui form" method="post">
{{ template "base/disable_form_autofill" }}
{{ .CsrfTokenHtml }}
<input type="hidden" name="action" value="push-mirror-add">
<div class="field {{ if .Err_PushMirrorAddress }} error {{ end }} ">
<label for="push_mirror_address"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.push_mirror.remote_url" }} </label>
<input id="push_mirror_address" name="push_mirror_address" value=" {{ .push_mirror_address }} " required>
<p class="help"> {{ ctx .Locale .Tr "repo.mirror_address_desc" }} </p>
</div>
<details class="ui optional field" {{ if or .Err_PushMirrorAuth .push_mirror_username }} open {{ end }} >
<summary class="gt-p-2">
{{ ctx .Locale .Tr "repo.need_auth" }}
</summary>
<div class="gt-p-2">
<div class="inline field {{ if .Err_PushMirrorAuth }} error {{ end }} ">
<label for="push_mirror_username"> {{ ctx .Locale .Tr "username" }} </label>
<input id="push_mirror_username" name="push_mirror_username" value=" {{ .push_mirror_username }} ">
</div>
<div class="inline field {{ if .Err_PushMirrorAuth }} error {{ end }} ">
<label for="push_mirror_password"> {{ ctx .Locale .Tr "password" }} </label>
<input id="push_mirror_password" name="push_mirror_password" type="password" value=" {{ .push_mirror_password }} " autocomplete="off">
</div>
</div>
</details>
<div class="field">
<div class="ui checkbox">
<input id="push_mirror_sync_on_commit" name="push_mirror_sync_on_commit" type="checkbox" {{ if .push_mirror_sync_on_commit }} checked {{ end }} >
<label for="push_mirror_sync_on_commit"> {{ ctx .Locale .Tr "repo.mirror_sync_on_commit" }} </label>
</div>
</div>
<div class="inline field {{ if .Err_PushMirrorInterval }} error {{ end }} ">
<label for="push_mirror_interval"> {{ ctx .Locale .Tr "repo.mirror_interval" .MinimumMirrorInterval }} </label>
<input id="push_mirror_interval" name="push_mirror_interval" value=" {{ if .push_mirror_interval }} {{ .push_mirror_interval }} {{ else }} {{ .DefaultMirrorInterval }} {{ end }} ">
</div>
<div class="field">
<button class="ui primary button"> {{ ctx .Locale .Tr "repo.settings.mirror_settings.push_mirror.add" }} </button>
</div>
</form>
</td>
</tr>
{{ end }}
</tbody>
</table>
{{ end }}
</div>
{{ end }}