Move page titles to their respective templates

I have been thinking about that, and it does not make that much sense to
have the titles in the Go source anymore: most of them are static text
that i have to remember to set in the controller each time, and when
the time come i have to face a dynamic title i am sure i will manage
with only the template capabilities—worst comes worst, i can always
define a function.

On the other hand, there is no way i can define a template without its
title and i know that everytime that template is used, no matter what
controller rendered it, it will always have that title.
This commit is contained in:
jordi fita mas 2023-01-31 13:07:17 +01:00
parent 586db8d553
commit 9aee33511a
13 changed files with 133 additions and 110 deletions

View File

@ -83,7 +83,6 @@ type Tax struct {
}
type TaxDetailsPage struct {
Title string
BusinessName string
VATIN string
TradeName string
@ -104,9 +103,7 @@ type TaxDetailsPage struct {
func CompanyTaxDetailsHandler() http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
locale := getLocale(r)
page := &TaxDetailsPage{
Title: pgettext("title", "Tax Details", locale),
}
page := &TaxDetailsPage{}
company := mustGetCompany(r)
conn := getConn(r)
if r.Method == "POST" {

View File

@ -12,7 +12,6 @@ type ContactEntry struct {
}
type ContactsIndexPage struct {
Title string
Contacts []*ContactEntry
}
@ -38,9 +37,7 @@ func ContactsHandler() http.Handler {
conn.MustExec(r.Context(), "insert into contact (company_id, business_name, vatin, trade_name, phone, email, web, address, province, city, postal_code, country_code) values ($1, $2, ($12 || $3)::vatin, $4, parse_packed_phone_number($5, $12), $6, $7, $8, $9, $10, $11, $12)", company.Id, page.BusinessName, page.VATIN, page.TradeName, page.Phone, page.Email, page.Web, page.Address, page.City, page.Province, page.PostalCode, page.CountryCode)
http.Redirect(w, r, "/company/"+company.Slug+"/contacts", http.StatusSeeOther)
} else {
locale := getLocale(r)
page := &ContactsIndexPage{
Title: pgettext("title", "Customers", locale),
Contacts: mustGetContactEntries(r.Context(), conn, company),
}
mustRenderAppTemplate(w, r, "contacts-index.gohtml", page)
@ -72,7 +69,6 @@ func mustGetContactEntries(ctx context.Context, conn *Conn, company *Company) []
}
type NewContactPage struct {
Title string
BusinessName string
VATIN string
TradeName string
@ -92,7 +88,6 @@ func NewContactHandler() http.Handler {
locale := getLocale(r)
conn := getConn(r)
page := &NewContactPage{
Title: pgettext("title", "New Contact", locale),
CountryCode: "ES",
Countries: mustGetCountryOptions(r.Context(), conn, locale),
}

View File

@ -11,7 +11,6 @@ type LanguageOption struct {
}
type ProfilePage struct {
Title string
Name string
Email string
Password string
@ -24,9 +23,7 @@ func ProfileHandler() http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
user := getUser(r)
conn := getConn(r)
locale := getLocale(r)
page := ProfilePage{
Title: pgettext("title", "User Settings", locale),
Email: user.Email,
Language: user.Language.String(),
}

101
po/ca.po
View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: numerus\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2023-01-30 16:46+0100\n"
"POT-Creation-Date: 2023-01-31 12:59+0100\n"
"PO-Revision-Date: 2023-01-18 17:08+0100\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
@ -17,10 +17,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: web/template/web.gohtml:6 web/template/login.gohtml:9
#: web/template/dashboard.gohtml:2
msgctxt "title"
msgid "Login"
msgstr "Entrada"
msgid "Dashboard"
msgstr "Tauler"
#: web/template/app.gohtml:20
msgctxt "menu"
@ -42,195 +42,200 @@ msgctxt "nav"
msgid "Customers"
msgstr "Clients"
#: web/template/login.gohtml:5
#: web/template/login.gohtml:2 web/template/login.gohtml:13
msgctxt "title"
msgid "Login"
msgstr "Entrada"
#: web/template/login.gohtml:9
msgid "Invalid user or password"
msgstr "Nom dusuari o contrasenya incorrectes"
#: web/template/login.gohtml:13 web/template/profile.gohtml:15
#: web/template/tax-details.gohtml:23 web/template/contacts-new.gohtml:23
#: web/template/login.gohtml:17 web/template/profile.gohtml:19
#: web/template/tax-details.gohtml:27 web/template/contacts-new.gohtml:27
msgctxt "input"
msgid "Email"
msgstr "Correu-e"
#: web/template/login.gohtml:18 web/template/profile.gohtml:23
#: web/template/login.gohtml:22 web/template/profile.gohtml:27
msgctxt "input"
msgid "Password"
msgstr "Contrasenya"
#: web/template/login.gohtml:21
#: web/template/login.gohtml:25
msgctxt "action"
msgid "Login"
msgstr "Entra"
#: web/template/profile.gohtml:3 pkg/profile.go:29
#: web/template/profile.gohtml:2 web/template/profile.gohtml:7
msgctxt "title"
msgid "User Settings"
msgstr "Configuració usuari"
#: web/template/profile.gohtml:6
#: web/template/profile.gohtml:10
msgctxt "title"
msgid "User Access Data"
msgstr "Dades accés usuari"
#: web/template/profile.gohtml:10
#: web/template/profile.gohtml:14
msgctxt "input"
msgid "User name"
msgstr "Nom dusuari"
#: web/template/profile.gohtml:19
#: web/template/profile.gohtml:23
msgctxt "title"
msgid "Password Change"
msgstr "Canvi contrasenya"
#: web/template/profile.gohtml:28
#: web/template/profile.gohtml:32
msgctxt "input"
msgid "Password Confirmation"
msgstr "Confirmació contrasenya"
#: web/template/profile.gohtml:33
#: web/template/profile.gohtml:37
msgctxt "input"
msgid "Language"
msgstr "Idioma"
#: web/template/profile.gohtml:36
#: web/template/profile.gohtml:40
msgctxt "language option"
msgid "Automatic"
msgstr "Automàtic"
#: web/template/profile.gohtml:42 web/template/tax-details.gohtml:127
#: web/template/profile.gohtml:46 web/template/tax-details.gohtml:133
msgctxt "action"
msgid "Save changes"
msgstr "Desa canvis"
#: web/template/contacts-index.gohtml:2 web/template/contacts-new.gohtml:56
#: web/template/contacts-index.gohtml:2
msgctxt "title"
msgid "Customers"
msgstr "Clients"
#: web/template/contacts-index.gohtml:6 web/template/contacts-new.gohtml:60
msgctxt "action"
msgid "New contact"
msgstr "Nou contacte"
#: web/template/contacts-index.gohtml:7
#: web/template/contacts-index.gohtml:11
msgctxt "contact"
msgid "All"
msgstr "Tots"
#: web/template/contacts-index.gohtml:8
#: web/template/contacts-index.gohtml:12
msgctxt "title"
msgid "Customer"
msgstr "Client"
#: web/template/contacts-index.gohtml:9
#: web/template/contacts-index.gohtml:13
msgctxt "title"
msgid "Email"
msgstr "Correu-e"
#: web/template/contacts-index.gohtml:10
#: web/template/contacts-index.gohtml:14
msgctxt "title"
msgid "Phone"
msgstr "Telèfon"
#: web/template/contacts-index.gohtml:25
#: web/template/contacts-index.gohtml:29
msgid "No customers added yet."
msgstr "No hi ha cap client."
#: web/template/tax-details.gohtml:3 pkg/company.go:108
#: web/template/tax-details.gohtml:2 web/template/tax-details.gohtml:7
msgctxt "title"
msgid "Tax Details"
msgstr "Configuració fiscal"
#: web/template/tax-details.gohtml:7 web/template/contacts-new.gohtml:7
#: web/template/tax-details.gohtml:11 web/template/contacts-new.gohtml:11
msgctxt "input"
msgid "Business name"
msgstr "Nom i cognom"
#: web/template/tax-details.gohtml:11 web/template/contacts-new.gohtml:11
#: web/template/tax-details.gohtml:15 web/template/contacts-new.gohtml:15
msgctxt "input"
msgid "VAT number"
msgstr "DNI / NIF"
#: web/template/tax-details.gohtml:15 web/template/contacts-new.gohtml:15
#: web/template/tax-details.gohtml:19 web/template/contacts-new.gohtml:19
msgctxt "input"
msgid "Trade name"
msgstr "Nom comercial"
#: web/template/tax-details.gohtml:19 web/template/contacts-new.gohtml:19
#: web/template/tax-details.gohtml:23 web/template/contacts-new.gohtml:23
msgctxt "input"
msgid "Phone"
msgstr "Telèfon"
#: web/template/tax-details.gohtml:27 web/template/contacts-new.gohtml:27
#: web/template/tax-details.gohtml:31 web/template/contacts-new.gohtml:31
msgctxt "input"
msgid "Web"
msgstr "Web"
#: web/template/tax-details.gohtml:31 web/template/contacts-new.gohtml:31
#: web/template/tax-details.gohtml:35 web/template/contacts-new.gohtml:35
msgctxt "input"
msgid "Address"
msgstr "Adreça"
#: web/template/tax-details.gohtml:35 web/template/contacts-new.gohtml:35
#: web/template/tax-details.gohtml:39 web/template/contacts-new.gohtml:39
msgctxt "input"
msgid "City"
msgstr "Població"
#: web/template/tax-details.gohtml:39 web/template/contacts-new.gohtml:39
#: web/template/tax-details.gohtml:43 web/template/contacts-new.gohtml:43
msgctxt "input"
msgid "Province"
msgstr "Província"
#: web/template/tax-details.gohtml:43 web/template/contacts-new.gohtml:43
#: web/template/tax-details.gohtml:47 web/template/contacts-new.gohtml:47
msgctxt "input"
msgid "Postal code"
msgstr "Codi postal"
#: web/template/tax-details.gohtml:52 web/template/contacts-new.gohtml:52
#: web/template/tax-details.gohtml:56 web/template/contacts-new.gohtml:56
msgctxt "input"
msgid "Country"
msgstr "País"
#: web/template/tax-details.gohtml:56
#: web/template/tax-details.gohtml:60
msgctxt "input"
msgid "Currency"
msgstr "Moneda"
#: web/template/tax-details.gohtml:74
#: web/template/tax-details.gohtml:78
msgctxt "title"
msgid "Tax Name"
msgstr "Nom import"
#: web/template/tax-details.gohtml:75
#: web/template/tax-details.gohtml:79
msgctxt "title"
msgid "Rate (%)"
msgstr "Percentatge"
#: web/template/tax-details.gohtml:96
#: web/template/tax-details.gohtml:100
msgid "No taxes added yet."
msgstr "No hi ha cap impost."
#: web/template/tax-details.gohtml:102
#: web/template/tax-details.gohtml:106
msgctxt "title"
msgid "New Line"
msgstr "Nova línia"
#: web/template/tax-details.gohtml:106
#: web/template/tax-details.gohtml:111
msgctxt "input"
msgid "Tax name"
msgstr "Nom impost"
#: web/template/tax-details.gohtml:112
#: web/template/tax-details.gohtml:118
msgctxt "input"
msgid "Rate (%)"
msgstr "Percentatge"
#: web/template/tax-details.gohtml:119
#: web/template/tax-details.gohtml:125
msgctxt "action"
msgid "Add new tax"
msgstr "Afegeix nou impost"
#: web/template/contacts-new.gohtml:3 pkg/contacts.go:95
#: web/template/contacts-new.gohtml:2 web/template/contacts-new.gohtml:7
msgctxt "title"
msgid "New Contact"
msgstr "Nou contacte"
#: pkg/contacts.go:43
msgctxt "title"
msgid "Customers"
msgstr "Clients"

101
po/es.po
View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: numerus\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2023-01-30 16:46+0100\n"
"POT-Creation-Date: 2023-01-31 12:59+0100\n"
"PO-Revision-Date: 2023-01-18 17:45+0100\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
@ -17,10 +17,10 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: web/template/web.gohtml:6 web/template/login.gohtml:9
#: web/template/dashboard.gohtml:2
msgctxt "title"
msgid "Login"
msgstr "Entrada"
msgid "Dashboard"
msgstr "Panel"
#: web/template/app.gohtml:20
msgctxt "menu"
@ -42,195 +42,200 @@ msgctxt "nav"
msgid "Customers"
msgstr "Clientes"
#: web/template/login.gohtml:5
#: web/template/login.gohtml:2 web/template/login.gohtml:13
msgctxt "title"
msgid "Login"
msgstr "Entrada"
#: web/template/login.gohtml:9
msgid "Invalid user or password"
msgstr "Nombre de usuario o contraseña inválido"
#: web/template/login.gohtml:13 web/template/profile.gohtml:15
#: web/template/tax-details.gohtml:23 web/template/contacts-new.gohtml:23
#: web/template/login.gohtml:17 web/template/profile.gohtml:19
#: web/template/tax-details.gohtml:27 web/template/contacts-new.gohtml:27
msgctxt "input"
msgid "Email"
msgstr "Correo-e"
#: web/template/login.gohtml:18 web/template/profile.gohtml:23
#: web/template/login.gohtml:22 web/template/profile.gohtml:27
msgctxt "input"
msgid "Password"
msgstr "Contraseña"
#: web/template/login.gohtml:21
#: web/template/login.gohtml:25
msgctxt "action"
msgid "Login"
msgstr "Entrar"
#: web/template/profile.gohtml:3 pkg/profile.go:29
#: web/template/profile.gohtml:2 web/template/profile.gohtml:7
msgctxt "title"
msgid "User Settings"
msgstr "Configuración usuario"
#: web/template/profile.gohtml:6
#: web/template/profile.gohtml:10
msgctxt "title"
msgid "User Access Data"
msgstr "Datos acceso usuario"
#: web/template/profile.gohtml:10
#: web/template/profile.gohtml:14
msgctxt "input"
msgid "User name"
msgstr "Nombre de usuario"
#: web/template/profile.gohtml:19
#: web/template/profile.gohtml:23
msgctxt "title"
msgid "Password Change"
msgstr "Cambio de contraseña"
#: web/template/profile.gohtml:28
#: web/template/profile.gohtml:32
msgctxt "input"
msgid "Password Confirmation"
msgstr "Confirmación contrasenya"
#: web/template/profile.gohtml:33
#: web/template/profile.gohtml:37
msgctxt "input"
msgid "Language"
msgstr "Idioma"
#: web/template/profile.gohtml:36
#: web/template/profile.gohtml:40
msgctxt "language option"
msgid "Automatic"
msgstr "Automático"
#: web/template/profile.gohtml:42 web/template/tax-details.gohtml:127
#: web/template/profile.gohtml:46 web/template/tax-details.gohtml:133
msgctxt "action"
msgid "Save changes"
msgstr "Guardar cambios"
#: web/template/contacts-index.gohtml:2 web/template/contacts-new.gohtml:56
#: web/template/contacts-index.gohtml:2
msgctxt "title"
msgid "Customers"
msgstr "Clientes"
#: web/template/contacts-index.gohtml:6 web/template/contacts-new.gohtml:60
msgctxt "action"
msgid "New contact"
msgstr "Nuevo contacto"
#: web/template/contacts-index.gohtml:7
#: web/template/contacts-index.gohtml:11
msgctxt "contact"
msgid "All"
msgstr "Todos"
#: web/template/contacts-index.gohtml:8
#: web/template/contacts-index.gohtml:12
msgctxt "title"
msgid "Customer"
msgstr "Cliente"
#: web/template/contacts-index.gohtml:9
#: web/template/contacts-index.gohtml:13
msgctxt "title"
msgid "Email"
msgstr "Correo-e"
#: web/template/contacts-index.gohtml:10
#: web/template/contacts-index.gohtml:14
msgctxt "title"
msgid "Phone"
msgstr "Teléfono"
#: web/template/contacts-index.gohtml:25
#: web/template/contacts-index.gohtml:29
msgid "No customers added yet."
msgstr "No hay clientes."
#: web/template/tax-details.gohtml:3 pkg/company.go:108
#: web/template/tax-details.gohtml:2 web/template/tax-details.gohtml:7
msgctxt "title"
msgid "Tax Details"
msgstr "Configuración fiscal"
#: web/template/tax-details.gohtml:7 web/template/contacts-new.gohtml:7
#: web/template/tax-details.gohtml:11 web/template/contacts-new.gohtml:11
msgctxt "input"
msgid "Business name"
msgstr "Nombre y apellidos"
#: web/template/tax-details.gohtml:11 web/template/contacts-new.gohtml:11
#: web/template/tax-details.gohtml:15 web/template/contacts-new.gohtml:15
msgctxt "input"
msgid "VAT number"
msgstr "DNI / NIF"
#: web/template/tax-details.gohtml:15 web/template/contacts-new.gohtml:15
#: web/template/tax-details.gohtml:19 web/template/contacts-new.gohtml:19
msgctxt "input"
msgid "Trade name"
msgstr "Nombre comercial"
#: web/template/tax-details.gohtml:19 web/template/contacts-new.gohtml:19
#: web/template/tax-details.gohtml:23 web/template/contacts-new.gohtml:23
msgctxt "input"
msgid "Phone"
msgstr "Teléfono"
#: web/template/tax-details.gohtml:27 web/template/contacts-new.gohtml:27
#: web/template/tax-details.gohtml:31 web/template/contacts-new.gohtml:31
msgctxt "input"
msgid "Web"
msgstr "Web"
#: web/template/tax-details.gohtml:31 web/template/contacts-new.gohtml:31
#: web/template/tax-details.gohtml:35 web/template/contacts-new.gohtml:35
msgctxt "input"
msgid "Address"
msgstr "Dirección"
#: web/template/tax-details.gohtml:35 web/template/contacts-new.gohtml:35
#: web/template/tax-details.gohtml:39 web/template/contacts-new.gohtml:39
msgctxt "input"
msgid "City"
msgstr "Población"
#: web/template/tax-details.gohtml:39 web/template/contacts-new.gohtml:39
#: web/template/tax-details.gohtml:43 web/template/contacts-new.gohtml:43
msgctxt "input"
msgid "Province"
msgstr "Provincia"
#: web/template/tax-details.gohtml:43 web/template/contacts-new.gohtml:43
#: web/template/tax-details.gohtml:47 web/template/contacts-new.gohtml:47
msgctxt "input"
msgid "Postal code"
msgstr "Código postal"
#: web/template/tax-details.gohtml:52 web/template/contacts-new.gohtml:52
#: web/template/tax-details.gohtml:56 web/template/contacts-new.gohtml:56
msgctxt "input"
msgid "Country"
msgstr "País"
#: web/template/tax-details.gohtml:56
#: web/template/tax-details.gohtml:60
msgctxt "input"
msgid "Currency"
msgstr "Moneda"
#: web/template/tax-details.gohtml:74
#: web/template/tax-details.gohtml:78
msgctxt "title"
msgid "Tax Name"
msgstr "Nombre impuesto"
#: web/template/tax-details.gohtml:75
#: web/template/tax-details.gohtml:79
msgctxt "title"
msgid "Rate (%)"
msgstr "Porcentage"
#: web/template/tax-details.gohtml:96
#: web/template/tax-details.gohtml:100
msgid "No taxes added yet."
msgstr "No hay impuestos."
#: web/template/tax-details.gohtml:102
#: web/template/tax-details.gohtml:106
msgctxt "title"
msgid "New Line"
msgstr "Nueva línea"
#: web/template/tax-details.gohtml:106
#: web/template/tax-details.gohtml:111
msgctxt "input"
msgid "Tax name"
msgstr "Nombre impuesto"
#: web/template/tax-details.gohtml:112
#: web/template/tax-details.gohtml:118
msgctxt "input"
msgid "Rate (%)"
msgstr "Porcentage"
#: web/template/tax-details.gohtml:119
#: web/template/tax-details.gohtml:125
msgctxt "action"
msgid "Add new tax"
msgstr "Añadir nuevo impuesto"
#: web/template/contacts-new.gohtml:3 pkg/contacts.go:95
#: web/template/contacts-new.gohtml:2 web/template/contacts-new.gohtml:7
msgctxt "title"
msgid "New Contact"
msgstr "Nuevo contacto"
#: pkg/contacts.go:43
msgctxt "title"
msgid "Customers"
msgstr "Clientes"

View File

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ .Title }} — Numerus</title>
<title>{{ template "title" . }} — Numerus</title>
<link rel="stylesheet" type="text/css" media="screen" href="/static/numerus.css">
</head>
<body>

View File

@ -1,3 +1,7 @@
{{ define "title" -}}
{{( pgettext "Customers" "title" )}}
{{- end }}
{{ define "content" }}
<a class="primary button" href="{{ companyURI "/contacts/new" }}">{{( pgettext "New contact" "action" )}}</a>

View File

@ -1,3 +1,7 @@
{{ define "title" -}}
{{( pgettext "New Contact" "title" )}}
{{- end }}
{{ define "content" }}
<section class="dialog-content">
<h2>{{(pgettext "New Contact" "title")}}</h2>

View File

@ -1,2 +1,6 @@
{{ define "title" -}}
{{( pgettext "Dashboard" "title" )}}
{{- end }}
{{ define "content" }}
{{- end }}

View File

@ -1,3 +1,7 @@
{{ define "title" -}}
{{( pgettext "Login" "title" )}}
{{- end }}
{{ define "content" }}
<h1><img src="/static/numerus.svg" alt="Numerus" width="620" height="77"></h1>
{{ if .LoginError -}}

View File

@ -1,3 +1,7 @@
{{ define "title" -}}
{{( pgettext "User Settings" "title" )}}
{{- end }}
{{ define "content" }}
<section class="dialog-content">
<h2>{{(pgettext "User Settings" "title")}}</h2>

View File

@ -1,3 +1,7 @@
{{ define "title" -}}
{{( pgettext "Tax Details" "title" )}}
{{- end }}
{{ define "content" }}
<section class="dialog-content">
<h2>{{(pgettext "Tax Details" "title")}}</h2>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{( pgettext "Login" "title" )}} — Numerus</title>
<title>{{ template "title" . }} — Numerus</title>
<link rel="stylesheet" type="text/css" media="screen" href="/static/numerus.css">
</head>
<body class="web">