85 lines
2.2 KiB
Go
85 lines
2.2 KiB
Go
package common
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/fthvgb1/wp-go/helper/maps"
|
|
"github.com/fthvgb1/wp-go/helper/slice"
|
|
str "github.com/fthvgb1/wp-go/helper/strings"
|
|
"github.com/fthvgb1/wp-go/internal/pkg/cache"
|
|
"github.com/fthvgb1/wp-go/internal/pkg/constraints"
|
|
"github.com/fthvgb1/wp-go/internal/pkg/models"
|
|
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
|
"strings"
|
|
)
|
|
|
|
var commonClass = map[int]string{
|
|
constraints.Home: "home blog",
|
|
constraints.Archive: "archive date",
|
|
constraints.Category: "archive category ",
|
|
constraints.Tag: "archive category ",
|
|
constraints.Search: "search",
|
|
constraints.Detail: "post-template-default single single-post ",
|
|
}
|
|
|
|
type Support map[string]struct{}
|
|
|
|
var themeSupport = map[string]Support{}
|
|
|
|
func AddThemeSupport(theme string, support Support) {
|
|
themeSupport[theme] = support
|
|
}
|
|
|
|
func (h *Handle) IsSupport(name string) bool {
|
|
m, ok := themeSupport[h.Theme]
|
|
if ok {
|
|
return maps.IsExists(m, name)
|
|
}
|
|
return ok
|
|
}
|
|
|
|
func (h *Handle) CalBodyClass() {
|
|
h.GinH["bodyClass"] = h.bodyClass(h.Class...)
|
|
}
|
|
|
|
func (h *Handle) bodyClass(class ...string) string {
|
|
s := ""
|
|
if constraints.Ok != h.Stats {
|
|
return "error404"
|
|
}
|
|
switch h.Scene {
|
|
case constraints.Search:
|
|
s = "search-no-results"
|
|
if len(h.GinH["posts"].([]models.Posts)) > 0 {
|
|
s = "search-results"
|
|
}
|
|
case constraints.Category, constraints.Tag:
|
|
cat := h.C.Param("category")
|
|
if cat == "" {
|
|
cat = h.C.Param("tag")
|
|
}
|
|
_, cate := slice.SearchFirst(cache.CategoriesTags(h.C, h.Scene), func(my models.TermsMy) bool {
|
|
return my.Name == cat
|
|
})
|
|
if cate.Slug[0] != '%' {
|
|
s = cate.Slug
|
|
}
|
|
s = fmt.Sprintf("category-%v category-%v", s, cate.Terms.TermId)
|
|
case constraints.Detail:
|
|
s = fmt.Sprintf("postid-%d", h.GinH["post"].(models.Posts).Id)
|
|
if h.IsSupport("post-formats") {
|
|
s = str.Join(s, " single-format-standard")
|
|
}
|
|
}
|
|
class = append(class, s)
|
|
if h.IsSupport("custom-background") && wpconfig.IsCustomBackground(h.Theme) {
|
|
class = append(class, "custom-background")
|
|
}
|
|
if h.IsSupport("custom-logo") && wpconfig.IsCustomLogo(h.Theme) {
|
|
class = append(class, "wp-custom-logo")
|
|
}
|
|
if h.IsSupport("responsive-embeds") {
|
|
class = append(class, "wp-embed-responsive")
|
|
}
|
|
return str.Join(commonClass[h.Scene], strings.Join(class, " "))
|
|
}
|