Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m24s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 7m26s
Build and Release / Lint (push) Successful in 8m44s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Failing after 0s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 3m39s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 4m53s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m28s
Build and Release / Build Binary (linux/arm64) (push) Failing after 12m10s
Show loading spinner and message when AI content generation or translation is in progress. Disables submit button and hides form to prevent duplicate submissions. Adds Copilot icon to AI buttons. Marks file inputs with data-ays-ignore to prevent "unsaved changes" warnings. Improves UX by providing visual feedback during long-running AI operations.
190 lines
7.1 KiB
Handlebars
190 lines
7.1 KiB
Handlebars
{{template "repo/settings/layout_head" (dict "ctxData" . "pageClass" "repository settings pages")}}
|
|
<div class="user-main-content twelve wide column">
|
|
<h4 class="ui top attached header">
|
|
{{ctx.Locale.Tr "repo.settings.pages"}}
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
{{if .PagesEnabled}}
|
|
<div class="ui positive message">
|
|
<div class="header">{{ctx.Locale.Tr "repo.settings.pages.enabled"}}</div>
|
|
<p>{{ctx.Locale.Tr "repo.settings.pages.enabled_desc"}}</p>
|
|
<p><strong>{{ctx.Locale.Tr "repo.settings.pages.subdomain"}}:</strong> <a href="{{.PagesURL}}" target="_blank" rel="noopener noreferrer">{{.PagesURL}}</a></p>
|
|
</div>
|
|
|
|
<form class="ui form" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="update_template">
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.template"}}</label>
|
|
<select name="template" class="ui dropdown">
|
|
{{range .PagesTemplates}}
|
|
<option value="{{.}}" {{if eq $.PagesTemplate .}}selected{{end}}>{{index $.PagesTemplateNames .}}</option>
|
|
{{end}}
|
|
</select>
|
|
</div>
|
|
<div class="field">
|
|
<button class="ui primary button">{{ctx.Locale.Tr "repo.settings.pages.update_template"}}</button>
|
|
</div>
|
|
</form>
|
|
|
|
{{if .AIEnabled}}
|
|
<div class="divider"></div>
|
|
<form class="ui form" method="post" id="ai-generate-form">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="ai_generate">
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.ai_generate"}}</label>
|
|
<p class="help">{{ctx.Locale.Tr "repo.settings.pages.ai_generate_desc"}}</p>
|
|
</div>
|
|
<div class="field" id="ai-generate-btn-field">
|
|
<button class="ui purple button" type="submit">{{svg "octicon-copilot" 16}} {{ctx.Locale.Tr "repo.settings.pages.ai_generate_button"}}</button>
|
|
</div>
|
|
<div id="ai-generate-loading" class="tw-hidden tw-py-4">
|
|
<div class="ui active centered inline loader"></div>
|
|
<p class="tw-text-center tw-mt-2" style="color:var(--color-text-light);">{{ctx.Locale.Tr "repo.settings.pages.ai_generating"}}</p>
|
|
</div>
|
|
</form>
|
|
{{end}}
|
|
|
|
<div class="divider"></div>
|
|
|
|
<form class="ui form" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="disable">
|
|
<button class="ui red button">{{ctx.Locale.Tr "repo.settings.pages.disable"}}</button>
|
|
</form>
|
|
{{else}}
|
|
<div class="ui info message">
|
|
<div class="header">{{ctx.Locale.Tr "repo.settings.pages.not_enabled"}}</div>
|
|
<p>{{ctx.Locale.Tr "repo.settings.pages.not_enabled_desc"}}</p>
|
|
</div>
|
|
|
|
<form class="ui form" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="enable">
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.template"}}</label>
|
|
<select name="template" class="ui dropdown">
|
|
{{range .PagesTemplates}}
|
|
<option value="{{.}}">{{index $.PagesTemplateNames .}}</option>
|
|
{{end}}
|
|
</select>
|
|
</div>
|
|
<div class="field">
|
|
<button class="ui primary button">{{ctx.Locale.Tr "repo.settings.pages.enable"}}</button>
|
|
</div>
|
|
</form>
|
|
{{end}}
|
|
</div>
|
|
|
|
{{if .PagesEnabled}}
|
|
<h4 class="ui top attached header">
|
|
{{ctx.Locale.Tr "repo.settings.pages.custom_domains"}}
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
<p>{{ctx.Locale.Tr "repo.settings.pages.custom_domains_desc"}}</p>
|
|
|
|
{{if .PagesDomains}}
|
|
<table class="ui table">
|
|
<thead>
|
|
<tr>
|
|
<th>{{ctx.Locale.Tr "repo.settings.pages.domain"}}</th>
|
|
<th>{{ctx.Locale.Tr "repo.settings.pages.status"}}</th>
|
|
<th>{{ctx.Locale.Tr "repo.settings.pages.ssl"}}</th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{{range .PagesDomains}}
|
|
<tr>
|
|
<td>{{.Domain}}</td>
|
|
<td>
|
|
{{if .Verified}}
|
|
<span class="ui green label">{{ctx.Locale.Tr "repo.settings.pages.verified"}}</span>
|
|
{{else}}
|
|
<span class="ui yellow label">{{ctx.Locale.Tr "repo.settings.pages.pending"}}</span>
|
|
{{end}}
|
|
</td>
|
|
<td>
|
|
{{if eq .SSLStatus "active"}}
|
|
<span class="ui green label">{{ctx.Locale.Tr "repo.settings.pages.ssl_active"}}</span>
|
|
{{else if eq .SSLStatus "pending"}}
|
|
<span class="ui yellow label">{{ctx.Locale.Tr "repo.settings.pages.ssl_pending"}}</span>
|
|
{{else}}
|
|
<span class="ui grey label">{{ctx.Locale.Tr "repo.settings.pages.ssl_none"}}</span>
|
|
{{end}}
|
|
</td>
|
|
<td class="tw-text-right">
|
|
{{if and .Verified (eq .SSLStatus "pending")}}
|
|
<form method="post" class="tw-inline-block">
|
|
{{$.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="activate_ssl">
|
|
<input type="hidden" name="domain_id" value="{{.ID}}">
|
|
<button class="ui green tiny button">{{ctx.Locale.Tr "repo.settings.pages.activate_ssl"}}</button>
|
|
</form>
|
|
{{end}}
|
|
{{if not .Verified}}
|
|
<form method="post" class="tw-inline-block">
|
|
{{$.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="verify_domain">
|
|
<input type="hidden" name="domain_id" value="{{.ID}}">
|
|
<button class="ui primary tiny button">{{ctx.Locale.Tr "repo.settings.pages.verify"}}</button>
|
|
</form>
|
|
{{end}}
|
|
<form method="post" class="tw-inline-block">
|
|
{{$.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="delete_domain">
|
|
<input type="hidden" name="domain_id" value="{{.ID}}">
|
|
<button class="ui red tiny button">{{ctx.Locale.Tr "remove"}}</button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
{{if not .Verified}}
|
|
<tr>
|
|
<td colspan="4">
|
|
<div class="ui info message">
|
|
<p>{{ctx.Locale.Tr "repo.settings.pages.verify_dns_hint"}}</p>
|
|
<code>TXT _gitea-pages.{{.Domain}} {{.VerificationToken}}</code>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{{end}}
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
{{end}}
|
|
|
|
<form class="ui form" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<input type="hidden" name="action" value="add_domain">
|
|
<div class="inline field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.add_domain"}}</label>
|
|
<input name="domain" type="text" placeholder="example.com">
|
|
<div class="field">
|
|
<div class="ui checkbox">
|
|
<input type="checkbox" name="ssl_external" id="ssl_external">
|
|
<label for="ssl_external">{{ctx.Locale.Tr "repo.settings.pages.ssl_external"}}</label>
|
|
</div>
|
|
<p class="help">{{ctx.Locale.Tr "repo.settings.pages.ssl_external_desc"}}</p>
|
|
</div>
|
|
<button class="ui primary button">{{ctx.Locale.Tr "repo.settings.pages.add"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
<script>
|
|
(function() {
|
|
var form = document.getElementById('ai-generate-form');
|
|
if (!form) return;
|
|
form.addEventListener('submit', function() {
|
|
var btn = form.querySelector('button[type="submit"]');
|
|
btn.classList.add('loading', 'disabled');
|
|
btn.disabled = true;
|
|
document.getElementById('ai-generate-btn-field').classList.add('tw-hidden');
|
|
document.getElementById('ai-generate-loading').classList.remove('tw-hidden');
|
|
});
|
|
})();
|
|
</script>
|
|
{{template "repo/settings/layout_footer" .}}
|