mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2026-02-04 02:25:30 +00:00
FIX: back-links in bearbeiten-Formularen
This commit is contained in:
@@ -80,6 +80,7 @@ func (p *AlmanachContentsEditPage) GET(engine *templating.Engine, app core.App)
|
||||
data["musenalm_types"] = dbmodels.MUSENALM_TYPE_VALUES
|
||||
data["pagination_values"] = paginationValuesSorted()
|
||||
data["agent_relations"] = dbmodels.AGENT_RELATIONS
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
if msg := popFlashSuccess(e); msg != "" {
|
||||
data["success"] = msg
|
||||
@@ -160,6 +161,7 @@ func (p *AlmanachContentsEditPage) GETItemEdit(engine *templating.Engine, app co
|
||||
data["agent_relations"] = dbmodels.AGENT_RELATIONS
|
||||
data["agents"] = agentsMap
|
||||
data["content_agents"] = contentAgentsMap[content.Id]
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
data["prev_content"] = prevContent
|
||||
data["next_content"] = nextContent
|
||||
data["content_index"] = contentIndex
|
||||
@@ -205,6 +207,7 @@ func (p *AlmanachContentsEditPage) GETNew(engine *templating.Engine, app core.Ap
|
||||
data["agents"] = map[string]*dbmodels.Agent{}
|
||||
data["content_agents"] = []*dbmodels.RContentsAgents{}
|
||||
data["is_new"] = true
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
return engine.Response200(e, TEMPLATE_ALMANACH_CONTENTS_ITEM_EDIT, data, p.Layout)
|
||||
}
|
||||
@@ -225,6 +228,7 @@ func (p *AlmanachContentsEditPage) renderError(engine *templating.Engine, app co
|
||||
data["pagination_values"] = paginationValuesSorted()
|
||||
data["agent_relations"] = dbmodels.AGENT_RELATIONS
|
||||
data["error"] = message
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
data["edit_content_id"] = strings.TrimSpace(e.Request.URL.Query().Get("edit_content"))
|
||||
data["new_content"] = strings.TrimSpace(e.Request.URL.Query().Get("new_content"))
|
||||
return engine.Response200(e, p.Template, data, p.Layout)
|
||||
@@ -299,6 +303,7 @@ func (p *AlmanachContentsEditPage) renderItemError(engine *templating.Engine, ap
|
||||
data["content_index"] = contentIndex
|
||||
data["content_total"] = contentTotal
|
||||
data["error"] = message
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
return engine.Response200(e, TEMPLATE_ALMANACH_CONTENTS_ITEM_EDIT, data, p.Layout)
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ func (p *AlmanachEditPage) GET(engine *templating.Engine, app core.App) HandleFu
|
||||
data["item_types"] = dbmodels.ITEM_TYPE_VALUES
|
||||
data["agent_relations"] = dbmodels.AGENT_RELATIONS
|
||||
data["series_relations"] = dbmodels.SERIES_RELATIONS
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
if msg := popFlashSuccess(e); msg != "" {
|
||||
data["success"] = msg
|
||||
|
||||
@@ -82,6 +82,7 @@ func (p *AlmanachNewPage) GET(engine *templating.Engine, app core.App) HandleFun
|
||||
data["agent_relations"] = dbmodels.AGENT_RELATIONS
|
||||
data["series_relations"] = dbmodels.SERIES_RELATIONS
|
||||
data["is_new"] = true
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
return engine.Response200(e, p.Template, data, p.Layout)
|
||||
}
|
||||
|
||||
@@ -362,62 +362,9 @@ func (p *BaendePage) buildResultData(app core.App, ma pagemodels.IApp, e *core.R
|
||||
return data, fmt.Errorf("failed to get users from cache")
|
||||
}
|
||||
|
||||
// Determine active filter (only one at a time)
|
||||
activeFilterType := ""
|
||||
activeFilterValue := ""
|
||||
switch {
|
||||
case status != "":
|
||||
activeFilterType = "status"
|
||||
activeFilterValue = status
|
||||
person = ""
|
||||
user = ""
|
||||
yearStr = ""
|
||||
place = ""
|
||||
case person != "":
|
||||
activeFilterType = "person"
|
||||
activeFilterValue = person
|
||||
user = ""
|
||||
yearStr = ""
|
||||
place = ""
|
||||
case user != "":
|
||||
activeFilterType = "user"
|
||||
activeFilterValue = user
|
||||
yearStr = ""
|
||||
place = ""
|
||||
case yearStr != "":
|
||||
activeFilterType = "year"
|
||||
activeFilterValue = yearStr
|
||||
place = ""
|
||||
case place != "":
|
||||
activeFilterType = "place"
|
||||
activeFilterValue = place
|
||||
}
|
||||
if activeFilterType != "" {
|
||||
search = ""
|
||||
letter = ""
|
||||
}
|
||||
|
||||
// Apply search/letter/filters
|
||||
var filteredEntries []*dbmodels.Entry
|
||||
if activeFilterType != "" {
|
||||
switch activeFilterType {
|
||||
case "status":
|
||||
filteredEntries = filterEntriesByStatus(allEntries, status)
|
||||
case "person":
|
||||
filteredEntries = filterEntriesByAgent(allEntries, entryAgentsMap, person)
|
||||
case "user":
|
||||
filteredEntries = filterEntriesByEditor(allEntries, user)
|
||||
case "year":
|
||||
yearVal, err := strconv.Atoi(yearStr)
|
||||
if err != nil {
|
||||
filteredEntries = []*dbmodels.Entry{}
|
||||
} else {
|
||||
filteredEntries = filterEntriesByYear(allEntries, yearVal)
|
||||
}
|
||||
case "place":
|
||||
filteredEntries = filterEntriesByPlace(allEntries, place)
|
||||
}
|
||||
} else if search != "" {
|
||||
filteredEntries := allEntries
|
||||
if search != "" {
|
||||
trimmedSearch := strings.TrimSpace(search)
|
||||
if utf8.RuneCountInString(trimmedSearch) >= 3 {
|
||||
entries, err := searchBaendeEntries(app, trimmedSearch)
|
||||
@@ -429,11 +376,30 @@ func (p *BaendePage) buildResultData(app core.App, ma pagemodels.IApp, e *core.R
|
||||
filteredEntries = filterEntriesBySearch(allEntries, itemsMap, trimmedSearch)
|
||||
}
|
||||
data["search"] = trimmedSearch
|
||||
} else if letter != "" {
|
||||
// Apply letter filter
|
||||
filteredEntries = filterEntriesByLetter(allEntries, letter)
|
||||
} else {
|
||||
filteredEntries = allEntries
|
||||
}
|
||||
if letter != "" {
|
||||
filteredEntries = filterEntriesByLetter(filteredEntries, letter)
|
||||
}
|
||||
|
||||
if status != "" {
|
||||
filteredEntries = filterEntriesByStatus(filteredEntries, status)
|
||||
}
|
||||
if person != "" {
|
||||
filteredEntries = filterEntriesByAgent(filteredEntries, entryAgentsMap, person)
|
||||
}
|
||||
if user != "" {
|
||||
filteredEntries = filterEntriesByEditor(filteredEntries, user)
|
||||
}
|
||||
if yearStr != "" {
|
||||
yearVal, err := strconv.Atoi(yearStr)
|
||||
if err != nil {
|
||||
filteredEntries = []*dbmodels.Entry{}
|
||||
} else {
|
||||
filteredEntries = filterEntriesByYear(filteredEntries, yearVal)
|
||||
}
|
||||
}
|
||||
if place != "" {
|
||||
filteredEntries = filterEntriesByPlace(filteredEntries, place)
|
||||
}
|
||||
|
||||
// Apply sorting based on sort parameter
|
||||
@@ -513,11 +479,14 @@ func (p *BaendePage) buildResultData(app core.App, ma pagemodels.IApp, e *core.R
|
||||
data["has_more"] = hasMore
|
||||
data["next_offset"] = nextOffset
|
||||
data["letter"] = letter
|
||||
data["status"] = status
|
||||
data["person"] = person
|
||||
data["user"] = user
|
||||
data["year"] = yearStr
|
||||
data["place"] = place
|
||||
data["sort_field"] = sort
|
||||
data["sort_order"] = order
|
||||
data["csrf_token"] = req.Session().Token
|
||||
data["active_filter_type"] = activeFilterType
|
||||
data["active_filter_value"] = activeFilterValue
|
||||
|
||||
// Keep letters array for navigation
|
||||
letters := []string{
|
||||
|
||||
14
controllers/cancel_url.go
Normal file
14
controllers/cancel_url.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
)
|
||||
|
||||
func cancelURLFromHeader(e *core.RequestEvent) string {
|
||||
if e == nil || e.Request == nil {
|
||||
return ""
|
||||
}
|
||||
return strings.TrimSpace(e.Request.Header.Get("HX-Current-URL"))
|
||||
}
|
||||
@@ -108,6 +108,7 @@ func (p *OrtEditPage) GET(engine *templating.Engine, app core.App) HandleFunc {
|
||||
|
||||
req := templating.NewRequest(e)
|
||||
data["csrf_token"] = req.Session().Token
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
if msg := popFlashSuccess(e); msg != "" {
|
||||
data["success"] = msg
|
||||
@@ -134,6 +135,7 @@ func (p *OrtEditPage) renderError(engine *templating.Engine, app core.App, e *co
|
||||
|
||||
req := templating.NewRequest(e)
|
||||
data["csrf_token"] = req.Session().Token
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
return engine.Response200(e, p.Template, data, p.Layout)
|
||||
}
|
||||
|
||||
@@ -71,6 +71,7 @@ func (p *OrtNewPage) renderPage(engine *templating.Engine, app core.App, e *core
|
||||
|
||||
data["result"] = result
|
||||
data["csrf_token"] = req.Session().Token
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
data["is_new"] = true
|
||||
if message != "" {
|
||||
data["error"] = message
|
||||
|
||||
@@ -124,6 +124,7 @@ func (p *PersonEditPage) GET(engine *templating.Engine, app core.App) HandleFunc
|
||||
|
||||
req := templating.NewRequest(e)
|
||||
data["csrf_token"] = req.Session().Token
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
if msg := popFlashSuccess(e); msg != "" {
|
||||
data["success"] = msg
|
||||
@@ -150,6 +151,7 @@ func (p *PersonEditPage) renderError(engine *templating.Engine, app core.App, e
|
||||
|
||||
req := templating.NewRequest(e)
|
||||
data["csrf_token"] = req.Session().Token
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
return engine.Response200(e, p.Template, data, p.Layout)
|
||||
}
|
||||
|
||||
@@ -75,6 +75,7 @@ func (p *PersonNewPage) renderPage(engine *templating.Engine, app core.App, e *c
|
||||
|
||||
data["result"] = result
|
||||
data["csrf_token"] = req.Session().Token
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
data["is_new"] = true
|
||||
if message != "" {
|
||||
data["error"] = message
|
||||
|
||||
@@ -130,6 +130,7 @@ func (p *ReiheEditPage) GET(engine *templating.Engine, app core.App) HandleFunc
|
||||
|
||||
req := templating.NewRequest(e)
|
||||
data["csrf_token"] = req.Session().Token
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
if msg := popFlashSuccess(e); msg != "" {
|
||||
data["success"] = msg
|
||||
@@ -156,6 +157,7 @@ func (p *ReiheEditPage) renderError(engine *templating.Engine, app core.App, e *
|
||||
|
||||
req := templating.NewRequest(e)
|
||||
data["csrf_token"] = req.Session().Token
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
|
||||
return engine.Response200(e, p.Template, data, p.Layout)
|
||||
}
|
||||
|
||||
@@ -75,6 +75,7 @@ func (p *ReiheNewPage) renderPage(engine *templating.Engine, app core.App, e *co
|
||||
|
||||
data["result"] = result
|
||||
data["csrf_token"] = req.Session().Token
|
||||
data["cancel_url"] = cancelURLFromHeader(e)
|
||||
data["is_new"] = true
|
||||
if message != "" {
|
||||
data["error"] = message
|
||||
|
||||
Reference in New Issue
Block a user