Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m0s
Build and Release / Unit Tests (push) Successful in 4m36s
Build and Release / Lint (push) Successful in 6m23s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Failing after 1s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Failing after 0s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 4m50s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h5m21s
Build and Release / Build Binary (linux/arm64) (push) Failing after 15m2s
Move upload/delete forms outside main settings form to avoid invalid nested form HTML. Use form attribute on buttons and inputs to associate with hidden forms. Fixes HTML validation errors and potential browser quirks. Also replaces hardcoded border color with CSS variable for theme consistency. Affects brand logo/favicon and hero image upload sections.
87 lines
4.2 KiB
Handlebars
87 lines
4.2 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.hero"}}</h4>
|
|
<div class="ui attached segment">
|
|
<form class="ui form" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.headline"}}</label>
|
|
<input name="headline" value="{{.Config.Hero.Headline}}" placeholder="Your headline here">
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.subheadline"}}</label>
|
|
<textarea name="subheadline" rows="2">{{.Config.Hero.Subheadline}}</textarea>
|
|
</div>
|
|
<h5 class="ui dividing header">{{ctx.Locale.Tr "repo.settings.pages.hero_image"}}</h5>
|
|
{{if .Config.Hero.UploadedImage}}
|
|
<div class="field">
|
|
<img src="/repo-avatars/{{.Config.Hero.UploadedImage}}" style="max-width:400px;max-height:250px;border-radius:8px;border:1px solid var(--color-secondary);">
|
|
<div class="tw-mt-2">
|
|
<button class="ui mini red button" type="submit" form="delete-hero-form">
|
|
{{svg "octicon-trash" 14}} {{ctx.Locale.Tr "repo.settings.pages.hero_delete_image"}}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
{{else}}
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.hero_upload"}}</label>
|
|
<div class="tw-flex tw-gap-2 tw-items-center">
|
|
<input type="file" name="hero_image" accept="image/jpeg,image/png,image/webp,image/gif" form="upload-hero-form">
|
|
<button class="ui primary button" type="submit" form="upload-hero-form">
|
|
{{svg "octicon-upload" 16}} {{ctx.Locale.Tr "repo.settings.pages.hero_upload_btn"}}
|
|
</button>
|
|
</div>
|
|
<p class="help">{{ctx.Locale.Tr "repo.settings.pages.hero_upload_help"}}</p>
|
|
</div>
|
|
<div class="ui horizontal divider">{{ctx.Locale.Tr "repo.settings.pages.hero_or"}}</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.image_url"}}</label>
|
|
<input name="image_url" value="{{.Config.Hero.ImageURL}}" placeholder="https://example.com/hero.png">
|
|
</div>
|
|
{{end}}
|
|
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.video_url"}}</label>
|
|
<input name="video_url" value="{{.Config.Hero.VideoURL}}" placeholder="https://youtube.com/watch?v=...">
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.code_example"}}</label>
|
|
<textarea name="code_example" rows="3" placeholder="npm install your-package">{{.Config.Hero.CodeExample}}</textarea>
|
|
</div>
|
|
<h5 class="ui dividing header">{{ctx.Locale.Tr "repo.settings.pages.primary_cta"}}</h5>
|
|
<div class="two fields">
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.cta_label"}}</label>
|
|
<input name="primary_cta_label" value="{{.Config.Hero.PrimaryCTA.Label}}" placeholder="Get Started">
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.cta_url"}}</label>
|
|
<input name="primary_cta_url" value="{{.Config.Hero.PrimaryCTA.URL}}" placeholder="/docs">
|
|
</div>
|
|
</div>
|
|
<h5 class="ui dividing header">{{ctx.Locale.Tr "repo.settings.pages.secondary_cta"}}</h5>
|
|
<div class="two fields">
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.cta_label"}}</label>
|
|
<input name="secondary_cta_label" value="{{.Config.Hero.SecondaryCTA.Label}}" placeholder="Learn More">
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "repo.settings.pages.cta_url"}}</label>
|
|
<input name="secondary_cta_url" value="{{.Config.Hero.SecondaryCTA.URL}}" placeholder="#features">
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<button class="ui primary button">{{ctx.Locale.Tr "save"}}</button>
|
|
</div>
|
|
</form>
|
|
|
|
{{/* Separate forms for upload/delete actions — outside the main form to avoid nesting */}}
|
|
{{if .Config.Hero.UploadedImage}}
|
|
<form id="delete-hero-form" method="post" action="{{.Link}}/delete_image" class="tw-hidden">{{.CsrfTokenHtml}}</form>
|
|
{{else}}
|
|
<form id="upload-hero-form" method="post" enctype="multipart/form-data" action="{{.Link}}/upload_image" class="tw-hidden">{{.CsrfTokenHtml}}</form>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{template "repo/settings/layout_footer" .}}
|