Pre-release polish: /new ~800px overflow, page titles, multipart burn validation #308

Open
fen wants to merge 4 commits from fix-prerelease-polish-r2 into dev
pull from: fix-prerelease-polish-r2
2 changed files with 34 additions and 0 deletions
Showing only changes of commit b4c23a09bf - Show all commits

No files matched your search

+1
View File
@@ -1,5 +1,6 @@
{{define "head"}} {{define "head"}}
<meta charset="utf-8"> <meta charset="utf-8">
<title>{{ pageTitle . }} · Palette</title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/static/app.css"> <link rel="stylesheet" href="/static/app.css">
<link rel="icon" type="image/svg+xml" href="/static/favicon.svg"> <link rel="icon" type="image/svg+xml" href="/static/favicon.svg">
+33
View File
@@ -74,6 +74,7 @@ func New() (*UI, error) {
"humanSize": humanSize, "humanSize": humanSize,
"version": func() string { return Version }, // #93: topbar version label "version": func() string { return Version }, // #93: topbar version label
"defaultDark": func() bool { return DefaultDark }, // #127: server-configured default "defaultDark": func() bool { return DefaultDark }, // #127: server-configured default
"pageTitle": pageTitle, // page <title> labels
} }
t, err := template.New("").Funcs(funcs).ParseFS(tmplFS, "templates/*.html") t, err := template.New("").Funcs(funcs).ParseFS(tmplFS, "templates/*.html")
if err != nil { if err != nil {
@@ -82,6 +83,38 @@ func New() (*UI, error) {
return &UI{tmpl: t}, nil return &UI{tmpl: t}, nil
} }
// pageTitle returns the <title> label for the rendered page. Page data is
// always a map with a "Page" key set by the handlers.
func pageTitle(data any) string {
m, _ := data.(map[string]any)
page, _ := m["Page"].(string)
id, _ := m["ID"].(string)
title, _ := m["Title"].(string)
switch page {
case "new":
return "New paste"
case "public":
return "Public pastes"
case "saved":
return "Saved"
case "settings":
return "Settings"
case "paste":
if title != "" {
return title
}
return "Paste " + id
case "unlock":
return "Unlock " + id
case "can":
return "Can " + id
case "notfound":
return "Not found"
default:
return "Palette"
}
}
func humanSize(n int) string { func humanSize(n int) string {
if n < 1024 { if n < 1024 {
return fmt.Sprintf("%d B", n) return fmt.Sprintf("%d B", n)