Pre-release polish: /new ~800px overflow, page titles, multipart burn validation #308
No files matched your search
@@ -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">
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in new issue
Block a user