From c9296beb5fbaec4e49bd1a1de7192ecc1c1d7b73 Mon Sep 17 00:00:00 2001 From: Florian Walther Date: Sat, 7 Feb 2026 16:45:02 +0100 Subject: [PATCH] footer und AppVersion eingebaut --- .gitea/workflows/docker-release.yml | 4 +++- Dockerfile | 3 ++- main.go | 25 +++++++++++++++++++++---- static/style.css | 27 +++++++++++++++++++++++++++ templates/base.html | 2 ++ 5 files changed, 55 insertions(+), 6 deletions(-) diff --git a/.gitea/workflows/docker-release.yml b/.gitea/workflows/docker-release.yml index 9d73912..afc4205 100644 --- a/.gitea/workflows/docker-release.yml +++ b/.gitea/workflows/docker-release.yml @@ -1,4 +1,4 @@ -iname: Docker Release Build +name: Docker Release Build on: push: tags: @@ -25,6 +25,8 @@ jobs: push: true # Hier wird die Git-Referenz automatisch als Docker-Tag genutzt #tags: gitea.scu.si/florianwalther/password-generator:${{ gitea.ref_name }} + build-args: | + APP_VERSION=${{ gitea.ref_name }} tags: | gitea.scu.si/florian.walther/password-generator:${{ gitea.ref_name }} gitea.scu.si/florian.walther/password-generator:latest diff --git a/Dockerfile b/Dockerfile index 3418428..bd66bf6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,8 @@ WORKDIR /app COPY . . # Baue die Anwendung -RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /app/password-generator +ARG APP_VERSION=dev +RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w -X 'main.AppVersion=${APP_VERSION}'" -o /app/password-generator # Verwende ein minimales Image für die finale Stage FROM scratch diff --git a/main.go b/main.go index 76ce59b..6e72c78 100644 --- a/main.go +++ b/main.go @@ -12,13 +12,30 @@ const ( chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" ) -//var tmpl *template.Template var templates = make(map[string]*template.Template) +var AppVersion = "development" func loadTemplates() { - templates["index.html"] = template.Must(template.ParseFiles("templates/base.html", "templates/index.html")) - templates["help.html"] = template.Must(template.ParseFiles("templates/base.html", "templates/help.html")) - log.Printf("Alle Templates erfolgreich geladen") + // 1. FuncMap definieren + funcMap := template.FuncMap{ + "getAppVersion": func() string { + return AppVersion + }, + } + + // 2. Templates mit FuncMap laden + // Wir nutzen New("base.html"), da base.html meist das Haupt-Layout definiert + templates["index.html"] = template.Must(template.New("base.html").Funcs(funcMap).ParseFiles( + "templates/base.html", + "templates/index.html", + )) + + templates["help.html"] = template.Must(template.New("base.html").Funcs(funcMap).ParseFiles( + "templates/base.html", + "templates/help.html", + )) + + log.Printf("Alle Templates erfolgreich geladen") } func generatePassword() string { diff --git a/static/style.css b/static/style.css index 717ead8..e9d4eb8 100644 --- a/static/style.css +++ b/static/style.css @@ -47,6 +47,33 @@ body { position: relative; } +footer { + /* Fixierung am unteren Rand */ + position: fixed; + bottom: 0; + left: 0; + + /* Ausdehnung */ + width: 100%; + + /* Design & Abstände */ + background: var(--password-bg); + border-top: 1px solid #e0e0e0; + padding: 8px 16px; + + /* Text-Ausrichtung */ + text-align: left; + font-family: monospace; /* Monospace sieht für Versionen oft "technischer" aus */ + font-size: 12px; + color: var(--text-color); + + /* Sicherstellen, dass nichts drüber liegt */ + z-index: 9999; + + /* Padding in die Breite einrechnen */ + box-sizing: border-box; +} + #password { font-family: 'Courier New', Courier, monospace; font-size: 1.2rem; diff --git a/templates/base.html b/templates/base.html index 10ccb26..a14f214 100644 --- a/templates/base.html +++ b/templates/base.html @@ -45,5 +45,7 @@ {{ block "body" . }}{{end}} + +