Files
felhom-controller/controller/internal/web/templates/catchall.html
T
admin ac149c2aa4 i18n slice 1 release C: storage, sharing, sign-in, guest, catch-all and debug pages in English
- 11 templates converted (storage, storage_network, storage_init, storage_attach, sharing, login,
  claim, launcher_shared, launcher_share_password, catchall, debug); every key translated.
  Six ASCII-only Hungarian JS fragments the extractor missed were found by eye and converted by hand
  (", majd a(z)", "FIGYELEM:", "jelenlegi:", "mp", "p", " db").
- login, claim, both guest share pages and the catch-all render through executeTemplateLang (the
  household language; no session CSRF, no escrow reminder). renderLogin now takes the request.
- Page titles: TitleKey for storage, network storage, the two drive wizards and sharing.
  TestHandlerTitleKeysMatchHungarianTitle pins handler literal == hu.json value for every TitleKey.
- Tests: TestDirectRenderHandlersFollowLanguage (real routes, en + hu),
  TestI18nDirectRenderPagesHaveNoAdminChrome (escrow reminder due; none on the guest page).
- Fixture correction: the release C cases had invented page titles; the cases now carry the handlers'
  real titles (and the wizard pages their real page name), and those 12 fixtures were RE-CAPTURED from
  the unconverted templates at 0555091. The diff to the old fixtures is the <title> line (and the nav
  highlight on the two wizard pages) only.
- i18n gate: HU_FORMAL_CEILING 12 -> 16 — four more „ön" forms in the converted copy, unchanged by rule (R-516).

Hungarian: byte-identical (TestI18nParity against fixtures from unconverted templates).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-09-17 18:29:53 +02:00

49 lines
2.9 KiB
HTML

{{define "catchall"}}
<!DOCTYPE html>
<html lang="{{T "layout.html_lang"}}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{if .AppName}}{{.AppName}} — {{end}}felhom.eu</title>
<link rel="icon" type="image/svg+xml" href="{{.ControllerURL}}/static/favicon.svg">
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{background:#0A1220;color:#EDF2F9;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;min-height:100vh;display:flex;align-items:center;justify-content:center}
.container{text-align:center;max-width:480px;padding:2rem}
.logo{width:80px;height:auto;margin-bottom:1.5rem;opacity:.85}
.app-name{font-size:1.5rem;font-weight:600;margin-bottom:.5rem}
.status-text{color:#94A6BF;font-size:1.1rem;margin-bottom:2rem;line-height:1.5}
.status-icon{font-size:2.5rem;margin-bottom:1rem}
.status-stopped .status-icon{color:#94A6BF}
.status-not_deployed .status-icon{color:#94A6BF}
.status-unknown .status-icon{color:#94A6BF}
.btn{display:inline-block;padding:.6rem 1.2rem;border-radius:2px;text-decoration:none;font-size:.9rem;font-weight:500;transition:all .2s}
.btn-primary{background:#0083D8;color:#fff}
.btn-primary:hover{background:#2EA8F5}
.btn-outline{border:1px solid #22344F;color:#94A6BF;margin-left:.5rem}
.btn-outline:hover{border-color:#94A6BF;color:#EDF2F9}
.host-label{color:#5E7392;font-size:.85rem;margin-top:2rem}
</style>
</head>
<body>
<div class="container status-{{.Status}}">
<img class="logo" src="{{.ControllerURL}}/static/felhom-logo.svg" alt="felhom.eu">
<div class="status-icon">
{{if eq .Status "stopped"}}<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="14" y="3" width="5" height="18" rx="1"/><rect x="5" y="3" width="5" height="18" rx="1"/></svg>{{else if eq .Status "not_deployed"}}<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/></svg>{{else}}<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>{{end}}
</div>
{{if .AppName}}<div class="app-name">{{.AppName}}</div>{{end}}
<div class="status-text">{{.StatusText}}</div>
<div>
{{if .AppSlug}}
<a class="btn btn-primary" href="{{.ControllerURL}}/apps/{{.AppSlug}}">{{T "catchall.alkalmazas_kezelese"}}</a>
{{else}}
<a class="btn btn-primary" href="{{.ControllerURL}}/stacks">{{T "catchall.alkalmazasok"}}</a>
{{end}}
<a class="btn btn-outline" href="{{.ControllerURL}}">{{T "catchall.vezerlopult"}}</a>
</div>
<div class="host-label">{{.Host}}</div>
</div>
</body>
</html>
{{end}}