Refactor html templates
This commit entirely refactors the use of html templates. Instead of inheriting from a shared template, we insert the results into a base template.
This commit is contained in:
parent
6ede99d7c6
commit
d235ee4e5c
59 changed files with 869 additions and 777 deletions
|
|
@ -1,49 +0,0 @@
|
|||
package templates
|
||||
|
||||
import (
|
||||
"html/template"
|
||||
"net/http"
|
||||
|
||||
"github.com/FAU-CDI/wisski-distillery/internal/dis/component"
|
||||
"github.com/FAU-CDI/wisski-distillery/pkg/mux"
|
||||
"golang.org/x/exp/slices"
|
||||
)
|
||||
|
||||
// buildMenu builds the manu for this request for all known components in this distillery.
|
||||
//
|
||||
// NOTE(twiesing): Don't name this method "Menu", as it will cause a stack overflow.
|
||||
func (tpl *Templating) buildMenu(r *http.Request) []component.MenuItem {
|
||||
|
||||
path := mux.NormalizePath(r.URL.Path)
|
||||
|
||||
// get the static menu items, and then return all the regular ones
|
||||
var items []component.MenuItem
|
||||
for _, m := range tpl.Dependencies.Menuable {
|
||||
items = append(items, m.Menu(r)...)
|
||||
}
|
||||
for i, item := range items {
|
||||
items[i].Active = string(item.Path) == path
|
||||
}
|
||||
slices.SortFunc(items, component.MenuItemSort)
|
||||
return items
|
||||
}
|
||||
|
||||
// Menu returns a list of menu items provided by routeables
|
||||
func (tpl *Templating) Menu(r *http.Request) []component.MenuItem {
|
||||
return tpl.menu.Get(func() []component.MenuItem {
|
||||
items := make([]component.MenuItem, 0, len(tpl.Dependencies.Routeables))
|
||||
for _, route := range tpl.Dependencies.Routeables {
|
||||
routes := route.Routes()
|
||||
if routes.MenuTitle == "" {
|
||||
continue
|
||||
}
|
||||
items = append(items, component.MenuItem{
|
||||
Title: routes.MenuTitle,
|
||||
Priority: routes.MenuPriority,
|
||||
Path: template.URL(routes.Prefix),
|
||||
})
|
||||
}
|
||||
slices.SortFunc(items, component.MenuItemSort)
|
||||
return items
|
||||
})
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue