Add the Active field to the campsite type’s edit form and function
In the new form this field is hidden and always active, because it makes no sense to add an inactive campsite type.
This commit is contained in:
parent
1e1797c1b4
commit
208952b964
|
@ -8,18 +8,19 @@ begin;
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
create or replace function edit_campsite_type(slug uuid, name text, description text) returns uuid as
|
create or replace function edit_campsite_type(slug uuid, name text, description text, active boolean) returns uuid as
|
||||||
$$
|
$$
|
||||||
update campsite_type
|
update campsite_type
|
||||||
set name = edit_campsite_type.name
|
set name = edit_campsite_type.name
|
||||||
, description = xmlparse(content edit_campsite_type.description)
|
, description = xmlparse(content edit_campsite_type.description)
|
||||||
|
, active = edit_campsite_type.active
|
||||||
where slug = edit_campsite_type.slug
|
where slug = edit_campsite_type.slug
|
||||||
returning slug;
|
returning slug;
|
||||||
$$
|
$$
|
||||||
language sql
|
language sql
|
||||||
;
|
;
|
||||||
|
|
||||||
revoke execute on function edit_campsite_type(uuid, text, text) from public;
|
revoke execute on function edit_campsite_type(uuid, text, text, boolean) from public;
|
||||||
grant execute on function edit_campsite_type(uuid, text, text) to admin;
|
grant execute on function edit_campsite_type(uuid, text, text, boolean) to admin;
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
|
|
|
@ -81,12 +81,13 @@ func serveTypeIndex(w http.ResponseWriter, r *http.Request, user *auth.User, com
|
||||||
}
|
}
|
||||||
|
|
||||||
type typeEntry struct {
|
type typeEntry struct {
|
||||||
Slug string
|
Slug string
|
||||||
Name string
|
Name string
|
||||||
|
Active bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func collectTypeEntries(ctx context.Context, company *auth.Company, conn *database.Conn) ([]*typeEntry, error) {
|
func collectTypeEntries(ctx context.Context, company *auth.Company, conn *database.Conn) ([]*typeEntry, error) {
|
||||||
rows, err := conn.Query(ctx, "select slug, name from campsite_type where company_id = $1", company.ID)
|
rows, err := conn.Query(ctx, "select slug, name, active from campsite_type where company_id = $1", company.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -95,7 +96,7 @@ func collectTypeEntries(ctx context.Context, company *auth.Company, conn *databa
|
||||||
var types []*typeEntry
|
var types []*typeEntry
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
entry := &typeEntry{}
|
entry := &typeEntry{}
|
||||||
if err = rows.Scan(&entry.Slug, &entry.Name); err != nil {
|
if err = rows.Scan(&entry.Slug, &entry.Name, &entry.Active); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
types = append(types, entry)
|
types = append(types, entry)
|
||||||
|
@ -149,18 +150,23 @@ func editType(w http.ResponseWriter, r *http.Request, user *auth.User, company *
|
||||||
f.MustRender(w, r, user, company)
|
f.MustRender(w, r, user, company)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
conn.MustExec(r.Context(), "select edit_campsite_type($1, $2, $3)", f.Slug, f.Name, f.Description)
|
conn.MustExec(r.Context(), "select edit_campsite_type($1, $2, $3, $4)", f.Slug, f.Name, f.Description, f.Active)
|
||||||
httplib.Redirect(w, r, "/admin/campsites/types", http.StatusSeeOther)
|
httplib.Redirect(w, r, "/admin/campsites/types", http.StatusSeeOther)
|
||||||
}
|
}
|
||||||
|
|
||||||
type typeForm struct {
|
type typeForm struct {
|
||||||
Slug string
|
Slug string
|
||||||
|
Active *form.Checkbox
|
||||||
Name *form.Input
|
Name *form.Input
|
||||||
Description *form.Input
|
Description *form.Input
|
||||||
}
|
}
|
||||||
|
|
||||||
func newTypeForm() *typeForm {
|
func newTypeForm() *typeForm {
|
||||||
return &typeForm{
|
return &typeForm{
|
||||||
|
Active: &form.Checkbox{
|
||||||
|
Name: "active",
|
||||||
|
Checked: true,
|
||||||
|
},
|
||||||
Name: &form.Input{
|
Name: &form.Input{
|
||||||
Name: "name",
|
Name: "name",
|
||||||
},
|
},
|
||||||
|
@ -172,14 +178,15 @@ func newTypeForm() *typeForm {
|
||||||
|
|
||||||
func (f *typeForm) FillFromDatabase(ctx context.Context, conn *database.Conn, slug string) error {
|
func (f *typeForm) FillFromDatabase(ctx context.Context, conn *database.Conn, slug string) error {
|
||||||
f.Slug = slug
|
f.Slug = slug
|
||||||
row := conn.QueryRow(ctx, "select name, description from campsite_type where slug = $1", slug)
|
row := conn.QueryRow(ctx, "select name, description, active from campsite_type where slug = $1", slug)
|
||||||
return row.Scan(&f.Name.Val, &f.Description.Val)
|
return row.Scan(&f.Name.Val, &f.Description.Val, &f.Active.Checked)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *typeForm) Parse(r *http.Request) error {
|
func (f *typeForm) Parse(r *http.Request) error {
|
||||||
if err := r.ParseForm(); err != nil {
|
if err := r.ParseForm(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
f.Active.FillValue(r)
|
||||||
f.Name.FillValue(r)
|
f.Name.FillValue(r)
|
||||||
f.Description.FillValue(r)
|
f.Description.FillValue(r)
|
||||||
return nil
|
return nil
|
||||||
|
@ -192,5 +199,5 @@ func (f *typeForm) Valid(l *locale.Locale) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *typeForm) MustRender(w http.ResponseWriter, r *http.Request, user *auth.User, company *auth.Company) {
|
func (f *typeForm) MustRender(w http.ResponseWriter, r *http.Request, user *auth.User, company *auth.Company) {
|
||||||
template.MustRenderAdmin(w, r, user, company, "campsite/type/new.gohtml", f)
|
template.MustRenderAdmin(w, r, user, company, "campsite/type/form.gohtml", f)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2023 jordi fita mas <jfita@peritasoft.com>
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
package form
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql/driver"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Checkbox struct {
|
||||||
|
Name string
|
||||||
|
Checked bool
|
||||||
|
Error error
|
||||||
|
}
|
||||||
|
|
||||||
|
func (checkbox *Checkbox) setError(err error) {
|
||||||
|
checkbox.Error = err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (checkbox *Checkbox) FillValue(r *http.Request) {
|
||||||
|
checkbox.Checked = len(r.Form[checkbox.Name]) > 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (checkbox *Checkbox) Value() (driver.Value, error) {
|
||||||
|
return checkbox.Checked, nil
|
||||||
|
}
|
136
po/ca.po
136
po/ca.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: camper\n"
|
"Project-Id-Version: camper\n"
|
||||||
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
||||||
"POT-Creation-Date: 2023-08-08 20:04+0200\n"
|
"POT-Creation-Date: 2023-08-14 11:39+0200\n"
|
||||||
"PO-Revision-Date: 2023-07-22 23:45+0200\n"
|
"PO-Revision-Date: 2023-07-22 23:45+0200\n"
|
||||||
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
||||||
"Language-Team: Catalan <ca@dodds.net>\n"
|
"Language-Team: Catalan <ca@dodds.net>\n"
|
||||||
|
@ -35,83 +35,45 @@ msgstr "Salta al contingut principal"
|
||||||
msgid "Singular Lodges"
|
msgid "Singular Lodges"
|
||||||
msgstr "Allotjaments singulars"
|
msgstr "Allotjaments singulars"
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:16
|
#: web/templates/admin/campsite/type/form.gohtml:8
|
||||||
#: web/templates/admin/page/form.gohtml:33
|
#: web/templates/admin/campsite/type/form.gohtml:25
|
||||||
msgctxt "title"
|
|
||||||
msgid "Edit Page"
|
|
||||||
msgstr "Edició de pàgina"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:18
|
|
||||||
#: web/templates/admin/page/form.gohtml:35
|
|
||||||
msgctxt "title"
|
|
||||||
msgid "New Page"
|
|
||||||
msgstr "Nova pàgina"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:42
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Title"
|
|
||||||
msgstr "Títol"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:50
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Content"
|
|
||||||
msgstr "Contingut"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:59
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:59
|
|
||||||
msgctxt "action"
|
|
||||||
msgid "Update"
|
|
||||||
msgstr "Actualitza"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:61
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:61
|
|
||||||
msgctxt "action"
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Afegeix"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/index.gohtml:6
|
|
||||||
#: web/templates/admin/page/index.gohtml:12
|
|
||||||
msgctxt "title"
|
|
||||||
msgid "Pages"
|
|
||||||
msgstr "Pàgines"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/index.gohtml:11
|
|
||||||
msgctxt "action"
|
|
||||||
msgid "Add Page"
|
|
||||||
msgstr "Afegeix pàgina"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/index.gohtml:17
|
|
||||||
msgctxt "header"
|
|
||||||
msgid "Title"
|
|
||||||
msgstr "Títol"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/index.gohtml:29
|
|
||||||
msgid "No pages added yet."
|
|
||||||
msgstr "No s’ha afegit cap pàgina encara."
|
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:16
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:33
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Edit Campsite Type"
|
msgid "Edit Campsite Type"
|
||||||
msgstr "Edició del tipus d’allotjament"
|
msgstr "Edició del tipus d’allotjament"
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:18
|
#: web/templates/admin/campsite/type/form.gohtml:10
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:35
|
#: web/templates/admin/campsite/type/form.gohtml:27
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "New Campsite Type"
|
msgid "New Campsite Type"
|
||||||
msgstr "Nou tipus d’allotjament"
|
msgstr "Nou tipus d’allotjament"
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:42
|
#: web/templates/admin/campsite/type/form.gohtml:37
|
||||||
|
#: web/templates/admin/campsite/type/index.gohtml:18
|
||||||
|
msgctxt "campsite type"
|
||||||
|
msgid "Active"
|
||||||
|
msgstr "Actiu"
|
||||||
|
|
||||||
|
#: web/templates/admin/campsite/type/form.gohtml:46
|
||||||
#: web/templates/admin/profile.gohtml:26
|
#: web/templates/admin/profile.gohtml:26
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nom"
|
msgstr "Nom"
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:50
|
#: web/templates/admin/campsite/type/form.gohtml:54
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Descripció"
|
msgstr "Descripció"
|
||||||
|
|
||||||
|
#: web/templates/admin/campsite/type/form.gohtml:63
|
||||||
|
msgctxt "action"
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "Actualitza"
|
||||||
|
|
||||||
|
#: web/templates/admin/campsite/type/form.gohtml:65
|
||||||
|
msgctxt "action"
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "Afegeix"
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:6
|
#: web/templates/admin/campsite/type/index.gohtml:6
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:12
|
#: web/templates/admin/campsite/type/index.gohtml:12
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
|
@ -128,7 +90,15 @@ msgctxt "header"
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nom"
|
msgstr "Nom"
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:29
|
#: web/templates/admin/campsite/type/index.gohtml:25
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Sí"
|
||||||
|
|
||||||
|
#: web/templates/admin/campsite/type/index.gohtml:25
|
||||||
|
msgid "No"
|
||||||
|
msgstr "No"
|
||||||
|
|
||||||
|
#: web/templates/admin/campsite/type/index.gohtml:31
|
||||||
msgid "No campsite types added yet."
|
msgid "No campsite types added yet."
|
||||||
msgstr "No s’ha afegit cap tipus d’allotjament encara."
|
msgstr "No s’ha afegit cap tipus d’allotjament encara."
|
||||||
|
|
||||||
|
@ -199,10 +169,6 @@ msgctxt "action"
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Surt"
|
msgstr "Surt"
|
||||||
|
|
||||||
#: pkg/page/admin.go:157
|
|
||||||
msgid "Title can not be empty."
|
|
||||||
msgstr "No podeu deixar el títol en blanc."
|
|
||||||
|
|
||||||
#: pkg/app/login.go:56 pkg/app/user.go:246
|
#: pkg/app/login.go:56 pkg/app/user.go:246
|
||||||
msgid "Email can not be empty."
|
msgid "Email can not be empty."
|
||||||
msgstr "No podeu deixar el correu-e en blanc."
|
msgstr "No podeu deixar el correu-e en blanc."
|
||||||
|
@ -224,7 +190,7 @@ msgctxt "language option"
|
||||||
msgid "Automatic"
|
msgid "Automatic"
|
||||||
msgstr "Automàtic"
|
msgstr "Automàtic"
|
||||||
|
|
||||||
#: pkg/app/user.go:249 pkg/campsite/types/admin.go:190
|
#: pkg/app/user.go:249 pkg/campsite/types/admin.go:197
|
||||||
msgid "Name can not be empty."
|
msgid "Name can not be empty."
|
||||||
msgstr "No podeu deixar el nom en blanc."
|
msgstr "No podeu deixar el nom en blanc."
|
||||||
|
|
||||||
|
@ -240,10 +206,44 @@ msgstr "L’idioma escollit no és vàlid."
|
||||||
msgid "File must be a valid PNG or JPEG image."
|
msgid "File must be a valid PNG or JPEG image."
|
||||||
msgstr "El fitxer has de ser una imatge PNG o JPEG vàlida."
|
msgstr "El fitxer has de ser una imatge PNG o JPEG vàlida."
|
||||||
|
|
||||||
#: pkg/app/admin.go:40
|
#: pkg/app/admin.go:37
|
||||||
msgid "Access forbidden"
|
msgid "Access forbidden"
|
||||||
msgstr "Accés prohibit"
|
msgstr "Accés prohibit"
|
||||||
|
|
||||||
#: pkg/auth/user.go:40
|
#: pkg/auth/user.go:40
|
||||||
msgid "Cross-site request forgery detected."
|
msgid "Cross-site request forgery detected."
|
||||||
msgstr "S’ha detectat un intent de falsificació de petició a llocs creuats."
|
msgstr "S’ha detectat un intent de falsificació de petició a llocs creuats."
|
||||||
|
|
||||||
|
#~ msgctxt "title"
|
||||||
|
#~ msgid "Edit Page"
|
||||||
|
#~ msgstr "Edició de pàgina"
|
||||||
|
|
||||||
|
#~ msgctxt "title"
|
||||||
|
#~ msgid "New Page"
|
||||||
|
#~ msgstr "Nova pàgina"
|
||||||
|
|
||||||
|
#~ msgctxt "input"
|
||||||
|
#~ msgid "Title"
|
||||||
|
#~ msgstr "Títol"
|
||||||
|
|
||||||
|
#~ msgctxt "input"
|
||||||
|
#~ msgid "Content"
|
||||||
|
#~ msgstr "Contingut"
|
||||||
|
|
||||||
|
#~ msgctxt "title"
|
||||||
|
#~ msgid "Pages"
|
||||||
|
#~ msgstr "Pàgines"
|
||||||
|
|
||||||
|
#~ msgctxt "action"
|
||||||
|
#~ msgid "Add Page"
|
||||||
|
#~ msgstr "Afegeix pàgina"
|
||||||
|
|
||||||
|
#~ msgctxt "header"
|
||||||
|
#~ msgid "Title"
|
||||||
|
#~ msgstr "Títol"
|
||||||
|
|
||||||
|
#~ msgid "No pages added yet."
|
||||||
|
#~ msgstr "No s’ha afegit cap pàgina encara."
|
||||||
|
|
||||||
|
#~ msgid "Title can not be empty."
|
||||||
|
#~ msgstr "No podeu deixar el títol en blanc."
|
||||||
|
|
136
po/es.po
136
po/es.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: camper\n"
|
"Project-Id-Version: camper\n"
|
||||||
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
||||||
"POT-Creation-Date: 2023-08-08 20:04+0200\n"
|
"POT-Creation-Date: 2023-08-14 11:39+0200\n"
|
||||||
"PO-Revision-Date: 2023-07-22 23:46+0200\n"
|
"PO-Revision-Date: 2023-07-22 23:46+0200\n"
|
||||||
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
||||||
"Language-Team: Spanish <es@tp.org.es>\n"
|
"Language-Team: Spanish <es@tp.org.es>\n"
|
||||||
|
@ -35,83 +35,45 @@ msgstr "Saltar al contenido principal"
|
||||||
msgid "Singular Lodges"
|
msgid "Singular Lodges"
|
||||||
msgstr "Alojamientos singulares"
|
msgstr "Alojamientos singulares"
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:16
|
#: web/templates/admin/campsite/type/form.gohtml:8
|
||||||
#: web/templates/admin/page/form.gohtml:33
|
#: web/templates/admin/campsite/type/form.gohtml:25
|
||||||
msgctxt "title"
|
|
||||||
msgid "Edit Page"
|
|
||||||
msgstr "Edición de página"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:18
|
|
||||||
#: web/templates/admin/page/form.gohtml:35
|
|
||||||
msgctxt "title"
|
|
||||||
msgid "New Page"
|
|
||||||
msgstr "Nueva página"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:42
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Title"
|
|
||||||
msgstr "Título"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:50
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Content"
|
|
||||||
msgstr "Contenido"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:59
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:59
|
|
||||||
msgctxt "action"
|
|
||||||
msgid "Update"
|
|
||||||
msgstr "Actualitzar"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/form.gohtml:61
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:61
|
|
||||||
msgctxt "action"
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Añadir"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/index.gohtml:6
|
|
||||||
#: web/templates/admin/page/index.gohtml:12
|
|
||||||
msgctxt "title"
|
|
||||||
msgid "Pages"
|
|
||||||
msgstr "Páginas"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/index.gohtml:11
|
|
||||||
msgctxt "action"
|
|
||||||
msgid "Add Page"
|
|
||||||
msgstr "Añadir página"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/index.gohtml:17
|
|
||||||
msgctxt "header"
|
|
||||||
msgid "Title"
|
|
||||||
msgstr "Título"
|
|
||||||
|
|
||||||
#: web/templates/admin/page/index.gohtml:29
|
|
||||||
msgid "No pages added yet."
|
|
||||||
msgstr "No se ha añadido ninguna página todavía."
|
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:16
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:33
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Edit Campsite Type"
|
msgid "Edit Campsite Type"
|
||||||
msgstr "Edición del tipo de alojamientos"
|
msgstr "Edición del tipo de alojamientos"
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:18
|
#: web/templates/admin/campsite/type/form.gohtml:10
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:35
|
#: web/templates/admin/campsite/type/form.gohtml:27
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "New Campsite Type"
|
msgid "New Campsite Type"
|
||||||
msgstr "Nuevo tipo de alojamiento"
|
msgstr "Nuevo tipo de alojamiento"
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:42
|
#: web/templates/admin/campsite/type/form.gohtml:37
|
||||||
|
#: web/templates/admin/campsite/type/index.gohtml:18
|
||||||
|
msgctxt "campsite type"
|
||||||
|
msgid "Active"
|
||||||
|
msgstr "Activo"
|
||||||
|
|
||||||
|
#: web/templates/admin/campsite/type/form.gohtml:46
|
||||||
#: web/templates/admin/profile.gohtml:26
|
#: web/templates/admin/profile.gohtml:26
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nombre"
|
msgstr "Nombre"
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/new.gohtml:50
|
#: web/templates/admin/campsite/type/form.gohtml:54
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Descripción"
|
msgstr "Descripción"
|
||||||
|
|
||||||
|
#: web/templates/admin/campsite/type/form.gohtml:63
|
||||||
|
msgctxt "action"
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "Actualitzar"
|
||||||
|
|
||||||
|
#: web/templates/admin/campsite/type/form.gohtml:65
|
||||||
|
msgctxt "action"
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "Añadir"
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:6
|
#: web/templates/admin/campsite/type/index.gohtml:6
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:12
|
#: web/templates/admin/campsite/type/index.gohtml:12
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
|
@ -128,7 +90,15 @@ msgctxt "header"
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nombre"
|
msgstr "Nombre"
|
||||||
|
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:29
|
#: web/templates/admin/campsite/type/index.gohtml:25
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Sí"
|
||||||
|
|
||||||
|
#: web/templates/admin/campsite/type/index.gohtml:25
|
||||||
|
msgid "No"
|
||||||
|
msgstr "No"
|
||||||
|
|
||||||
|
#: web/templates/admin/campsite/type/index.gohtml:31
|
||||||
msgid "No campsite types added yet."
|
msgid "No campsite types added yet."
|
||||||
msgstr "No se ha añadido ningún tipo de alojamiento todavía."
|
msgstr "No se ha añadido ningún tipo de alojamiento todavía."
|
||||||
|
|
||||||
|
@ -199,10 +169,6 @@ msgctxt "action"
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Salir"
|
msgstr "Salir"
|
||||||
|
|
||||||
#: pkg/page/admin.go:157
|
|
||||||
msgid "Title can not be empty."
|
|
||||||
msgstr "No podéis dejar el título en blanco."
|
|
||||||
|
|
||||||
#: pkg/app/login.go:56 pkg/app/user.go:246
|
#: pkg/app/login.go:56 pkg/app/user.go:246
|
||||||
msgid "Email can not be empty."
|
msgid "Email can not be empty."
|
||||||
msgstr "No podéis dejar el correo-e en blanco."
|
msgstr "No podéis dejar el correo-e en blanco."
|
||||||
|
@ -224,7 +190,7 @@ msgctxt "language option"
|
||||||
msgid "Automatic"
|
msgid "Automatic"
|
||||||
msgstr "Automático"
|
msgstr "Automático"
|
||||||
|
|
||||||
#: pkg/app/user.go:249 pkg/campsite/types/admin.go:190
|
#: pkg/app/user.go:249 pkg/campsite/types/admin.go:197
|
||||||
msgid "Name can not be empty."
|
msgid "Name can not be empty."
|
||||||
msgstr "No podéis dejar el nombre en blanco."
|
msgstr "No podéis dejar el nombre en blanco."
|
||||||
|
|
||||||
|
@ -240,10 +206,44 @@ msgstr "El idioma escogido no es válido."
|
||||||
msgid "File must be a valid PNG or JPEG image."
|
msgid "File must be a valid PNG or JPEG image."
|
||||||
msgstr "El archivo tiene que ser una imagen PNG o JPEG válida."
|
msgstr "El archivo tiene que ser una imagen PNG o JPEG válida."
|
||||||
|
|
||||||
#: pkg/app/admin.go:40
|
#: pkg/app/admin.go:37
|
||||||
msgid "Access forbidden"
|
msgid "Access forbidden"
|
||||||
msgstr "Acceso prohibido"
|
msgstr "Acceso prohibido"
|
||||||
|
|
||||||
#: pkg/auth/user.go:40
|
#: pkg/auth/user.go:40
|
||||||
msgid "Cross-site request forgery detected."
|
msgid "Cross-site request forgery detected."
|
||||||
msgstr "Se ha detectado un intento de falsificación de petición en sitios cruzados."
|
msgstr "Se ha detectado un intento de falsificación de petición en sitios cruzados."
|
||||||
|
|
||||||
|
#~ msgctxt "title"
|
||||||
|
#~ msgid "Edit Page"
|
||||||
|
#~ msgstr "Edición de página"
|
||||||
|
|
||||||
|
#~ msgctxt "title"
|
||||||
|
#~ msgid "New Page"
|
||||||
|
#~ msgstr "Nueva página"
|
||||||
|
|
||||||
|
#~ msgctxt "input"
|
||||||
|
#~ msgid "Title"
|
||||||
|
#~ msgstr "Título"
|
||||||
|
|
||||||
|
#~ msgctxt "input"
|
||||||
|
#~ msgid "Content"
|
||||||
|
#~ msgstr "Contenido"
|
||||||
|
|
||||||
|
#~ msgctxt "title"
|
||||||
|
#~ msgid "Pages"
|
||||||
|
#~ msgstr "Páginas"
|
||||||
|
|
||||||
|
#~ msgctxt "action"
|
||||||
|
#~ msgid "Add Page"
|
||||||
|
#~ msgstr "Añadir página"
|
||||||
|
|
||||||
|
#~ msgctxt "header"
|
||||||
|
#~ msgid "Title"
|
||||||
|
#~ msgstr "Título"
|
||||||
|
|
||||||
|
#~ msgid "No pages added yet."
|
||||||
|
#~ msgstr "No se ha añadido ninguna página todavía."
|
||||||
|
|
||||||
|
#~ msgid "Title can not be empty."
|
||||||
|
#~ msgstr "No podéis dejar el título en blanco."
|
||||||
|
|
|
@ -2,6 +2,6 @@
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
drop function if exists camper.edit_campsite_type(uuid, text, text);
|
drop function if exists camper.edit_campsite_type(uuid, text, text, boolean);
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
|
|
|
@ -9,15 +9,15 @@ set search_path to camper, public;
|
||||||
|
|
||||||
select plan(12);
|
select plan(12);
|
||||||
|
|
||||||
select has_function('camper', 'edit_campsite_type', array ['uuid', 'text', 'text']);
|
select has_function('camper', 'edit_campsite_type', array ['uuid', 'text', 'text', 'boolean']);
|
||||||
select function_lang_is('camper', 'edit_campsite_type', array ['uuid', 'text', 'text'], 'sql');
|
select function_lang_is('camper', 'edit_campsite_type', array ['uuid', 'text', 'text', 'boolean'], 'sql');
|
||||||
select function_returns('camper', 'edit_campsite_type', array ['uuid', 'text', 'text'], 'uuid');
|
select function_returns('camper', 'edit_campsite_type', array ['uuid', 'text', 'text', 'boolean'], 'uuid');
|
||||||
select isnt_definer('camper', 'edit_campsite_type', array ['uuid', 'text', 'text']);
|
select isnt_definer('camper', 'edit_campsite_type', array ['uuid', 'text', 'text', 'boolean']);
|
||||||
select volatility_is('camper', 'edit_campsite_type', array ['uuid', 'text', 'text'], 'volatile');
|
select volatility_is('camper', 'edit_campsite_type', array ['uuid', 'text', 'text', 'boolean'], 'volatile');
|
||||||
select function_privs_are('camper', 'edit_campsite_type', array ['uuid', 'text', 'text'], 'guest', array[]::text[]);
|
select function_privs_are('camper', 'edit_campsite_type', array ['uuid', 'text', 'text', 'boolean'], 'guest', array[]::text[]);
|
||||||
select function_privs_are('camper', 'edit_campsite_type', array ['uuid', 'text', 'text'], 'employee', array[]::text[]);
|
select function_privs_are('camper', 'edit_campsite_type', array ['uuid', 'text', 'text', 'boolean'], 'employee', array[]::text[]);
|
||||||
select function_privs_are('camper', 'edit_campsite_type', array ['uuid', 'text', 'text'], 'admin', array['EXECUTE']);
|
select function_privs_are('camper', 'edit_campsite_type', array ['uuid', 'text', 'text', 'boolean'], 'admin', array['EXECUTE']);
|
||||||
select function_privs_are('camper', 'edit_campsite_type', array ['uuid', 'text', 'text'], 'authenticator', array[]::text[]);
|
select function_privs_are('camper', 'edit_campsite_type', array ['uuid', 'text', 'text', 'boolean'], 'authenticator', array[]::text[]);
|
||||||
|
|
||||||
set client_min_messages to warning;
|
set client_min_messages to warning;
|
||||||
truncate campsite_type cascade;
|
truncate campsite_type cascade;
|
||||||
|
@ -29,25 +29,25 @@ insert into company (company_id, business_name, vatin, trade_name, phone, email,
|
||||||
values (1, 'Company 2', 'XX123', '', '555-555-555', 'a@a', '', '', '', '', '', 'ES', 'EUR', 'ca')
|
values (1, 'Company 2', 'XX123', '', '555-555-555', 'a@a', '', '', '', '', '', 'ES', 'EUR', 'ca')
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into campsite_type (company_id, slug, name, description)
|
insert into campsite_type (company_id, slug, name, description, active)
|
||||||
values (1, '87452b88-b48f-48d3-bb6c-0296de64164e', 'Type A', '<p>A</p>')
|
values (1, '87452b88-b48f-48d3-bb6c-0296de64164e', 'Type A', '<p>A</p>', true)
|
||||||
, (1, '9b6370f7-f941-46f2-bc6e-de455675bd0a', 'Type B', '<p>B</p>')
|
, (1, '9b6370f7-f941-46f2-bc6e-de455675bd0a', 'Type B', '<p>B</p>', false)
|
||||||
;
|
;
|
||||||
|
|
||||||
select lives_ok(
|
select lives_ok(
|
||||||
$$ select edit_campsite_type('87452b88-b48f-48d3-bb6c-0296de64164e', 'Type 1', '<p>1</p>') $$,
|
$$ select edit_campsite_type('87452b88-b48f-48d3-bb6c-0296de64164e', 'Type 1', '<p>1</p>', false) $$,
|
||||||
'Should be ablo to edit the first type'
|
'Should be able to edit the first type'
|
||||||
);
|
);
|
||||||
|
|
||||||
select lives_ok(
|
select lives_ok(
|
||||||
$$ select edit_campsite_type('9b6370f7-f941-46f2-bc6e-de455675bd0a', 'Type 2', '<p>2</p>') $$,
|
$$ select edit_campsite_type('9b6370f7-f941-46f2-bc6e-de455675bd0a', 'Type 2', '<p>2</p>', true) $$,
|
||||||
'Should be ablo to edit the second type'
|
'Should be able to edit the second type'
|
||||||
);
|
);
|
||||||
|
|
||||||
select bag_eq(
|
select bag_eq(
|
||||||
$$ select slug::text, name, description::text from campsite_type $$,
|
$$ select slug::text, name, description::text, active from campsite_type $$,
|
||||||
$$ values ('87452b88-b48f-48d3-bb6c-0296de64164e', 'Type 1', '<p>1</p>')
|
$$ values ('87452b88-b48f-48d3-bb6c-0296de64164e', 'Type 1', '<p>1</p>', false)
|
||||||
, ('9b6370f7-f941-46f2-bc6e-de455675bd0a', 'Type 2', '<p>2</p>')
|
, ('9b6370f7-f941-46f2-bc6e-de455675bd0a', 'Type 2', '<p>2</p>', true)
|
||||||
$$,
|
$$,
|
||||||
'Should have updated all campsite types.'
|
'Should have updated all campsite types.'
|
||||||
);
|
);
|
||||||
|
|
|
@ -2,6 +2,6 @@
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
select has_function_privilege('camper.edit_campsite_type(uuid, text, text)', 'execute');
|
select has_function_privilege('camper.edit_campsite_type(uuid, text, text, boolean)', 'execute');
|
||||||
|
|
||||||
rollback;
|
rollback;
|
||||||
|
|
|
@ -29,6 +29,18 @@
|
||||||
</h2>
|
</h2>
|
||||||
{{ CSRFInput }}
|
{{ CSRFInput }}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
{{ if .Slug }}
|
||||||
|
{{ with .Active -}}
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="{{ .Name }}" {{ if .Checked}}checked{{ end }}
|
||||||
|
{{ template "error-attrs" . }}>
|
||||||
|
{{( pgettext "Active" "campsite type" )}}<br>
|
||||||
|
</label>
|
||||||
|
{{ template "error-message" . }}
|
||||||
|
{{- end }}
|
||||||
|
{{ else }}
|
||||||
|
<input type="hidden" name="{{ .Active.Name }}" value="true">
|
||||||
|
{{ end }}
|
||||||
{{ with .Name -}}
|
{{ with .Name -}}
|
||||||
<label>
|
<label>
|
||||||
{{( pgettext "Name" "input")}}<br>
|
{{( pgettext "Name" "input")}}<br>
|
|
@ -15,12 +15,14 @@
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">{{( pgettext "Name" "header" )}}</th>
|
<th scope="col">{{( pgettext "Name" "header" )}}</th>
|
||||||
|
<th scope="col">{{( pgettext "Active" "campsite type" )}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{ range .Types -}}
|
{{ range .Types -}}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="/admin/campsites/types/{{ .Slug }}">{{ .Name }}</a></td>
|
<td><a href="/admin/campsites/types/{{ .Slug }}">{{ .Name }}</a></td>
|
||||||
|
<td>{{ if .Active }}{{( gettext "Yes" )}}{{ else }}{{( gettext "No" )}}{{ end }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
Loading…
Reference in New Issue