优化代码
This commit is contained in:
parent
cbf3cabb24
commit
7d27668159
|
@ -12,14 +12,14 @@ import (
|
|||
)
|
||||
|
||||
func (h *Handle) CalBodyClass() {
|
||||
h.GinH["bodyClass"] = h.BodyClass(h.Class...)
|
||||
h.ginH["bodyClass"] = h.BodyClass(h.class...)
|
||||
}
|
||||
|
||||
func (h *Handle) BodyClass(class ...string) string {
|
||||
if constraints.Ok != h.Stats {
|
||||
class = append(class, "error404")
|
||||
}
|
||||
switch h.Scene {
|
||||
switch h.scene {
|
||||
case constraints.Home:
|
||||
class = append(class, "home", "blog")
|
||||
|
||||
|
@ -36,7 +36,7 @@ func (h *Handle) BodyClass(class ...string) string {
|
|||
case constraints.Category, constraints.Tag:
|
||||
class = append(class, "archive", "category")
|
||||
cat := h.Index.Param.Category
|
||||
_, cate := slice.SearchFirst(cache.CategoriesTags(h.C, h.Scene), func(my models.TermsMy) bool {
|
||||
_, cate := slice.SearchFirst(cache.CategoriesTags(h.C, h.scene), func(my models.TermsMy) bool {
|
||||
return my.Name == cat
|
||||
})
|
||||
if cate.Slug[0] != '%' {
|
||||
|
@ -56,17 +56,17 @@ func (h *Handle) BodyClass(class ...string) string {
|
|||
case constraints.Detail:
|
||||
class = append(class, "post-template-default", "single", "single-post")
|
||||
class = append(class, str.Join("postid-", number.ToString(h.Detail.Post.Id)))
|
||||
if len(h.ThemeMods.ThemeSupport.PostFormats) > 0 {
|
||||
if len(h.themeMods.ThemeSupport.PostFormats) > 0 {
|
||||
class = append(class, "single-format-standard")
|
||||
}
|
||||
}
|
||||
if wpconfig.IsCustomBackground(h.Theme) {
|
||||
if wpconfig.IsCustomBackground(h.theme) {
|
||||
class = append(class, "custom-background")
|
||||
}
|
||||
if h.ThemeMods.CustomLogo > 0 || str.ToInteger(wpconfig.GetOption("site_logo"), 0) > 0 {
|
||||
if h.themeMods.CustomLogo > 0 || str.ToInteger(wpconfig.GetOption("site_logo"), 0) > 0 {
|
||||
class = append(class, "wp-custom-logo")
|
||||
}
|
||||
if h.ThemeMods.ThemeSupport.ResponsiveEmbeds {
|
||||
if h.themeMods.ThemeSupport.ResponsiveEmbeds {
|
||||
class = append(class, "wp-embed-responsive")
|
||||
}
|
||||
return strings.Join(class, " ")
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package common
|
||||
|
||||
import (
|
||||
"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/cmd/reload"
|
||||
|
@ -17,35 +18,23 @@ type Handle struct {
|
|||
Index *IndexHandle
|
||||
Detail *DetailHandle
|
||||
C *gin.Context
|
||||
Theme string
|
||||
theme string
|
||||
Session sessions.Session
|
||||
GinH gin.H
|
||||
Password string
|
||||
Scene int
|
||||
ginH gin.H
|
||||
password string
|
||||
scene int
|
||||
Code int
|
||||
Stats int
|
||||
Templ string
|
||||
Class []string
|
||||
Components map[string][]Components
|
||||
ThemeMods wpconfig.ThemeMods
|
||||
HandleFns map[int][]HandleCall
|
||||
Error error
|
||||
templ string
|
||||
class []string
|
||||
components map[string][]Components
|
||||
themeMods wpconfig.ThemeMods
|
||||
handleFns map[int][]HandleCall
|
||||
err error
|
||||
}
|
||||
|
||||
func NewHandle(c *gin.Context, scene int, theme string) *Handle {
|
||||
mods, err := wpconfig.GetThemeMods(theme)
|
||||
logs.ErrPrintln(err, "获取mods失败")
|
||||
return &Handle{
|
||||
C: c,
|
||||
Theme: theme,
|
||||
Session: sessions.Default(c),
|
||||
GinH: gin.H{},
|
||||
Scene: scene,
|
||||
Stats: constraints.Ok,
|
||||
ThemeMods: mods,
|
||||
Components: make(map[string][]Components),
|
||||
HandleFns: make(map[int][]HandleCall),
|
||||
}
|
||||
func (h *Handle) CommonThemeMods() wpconfig.ThemeMods {
|
||||
return h.themeMods
|
||||
}
|
||||
|
||||
// Components Order 为执行顺序,降序执行
|
||||
|
@ -54,12 +43,68 @@ type Components struct {
|
|||
Order int
|
||||
}
|
||||
|
||||
type HandleFn[T any] func(T)
|
||||
|
||||
type HandlePipeFn[T any] func(HandleFn[T], T)
|
||||
|
||||
type HandleCall struct {
|
||||
Fn HandleFn[*Handle]
|
||||
Order int
|
||||
}
|
||||
|
||||
func (h *Handle) Err() error {
|
||||
return h.err
|
||||
}
|
||||
|
||||
func (h *Handle) SetErr(err error) {
|
||||
h.err = err
|
||||
}
|
||||
|
||||
func (h *Handle) Password() string {
|
||||
return h.password
|
||||
}
|
||||
|
||||
func (h *Handle) SetTempl(templ string) {
|
||||
h.templ = templ
|
||||
}
|
||||
|
||||
func (h *Handle) Scene() int {
|
||||
return h.scene
|
||||
}
|
||||
|
||||
func (h *Handle) SetDatas(GinH gin.H) {
|
||||
maps.Merge(h.ginH, GinH)
|
||||
}
|
||||
func (h *Handle) SetData(k string, v any) {
|
||||
h.ginH[k] = v
|
||||
}
|
||||
|
||||
func (h *Handle) PushClass(class ...string) {
|
||||
h.class = append(h.class, class...)
|
||||
}
|
||||
|
||||
func NewHandle(c *gin.Context, scene int, theme string) *Handle {
|
||||
mods, err := wpconfig.GetThemeMods(theme)
|
||||
logs.ErrPrintln(err, "获取mods失败")
|
||||
return &Handle{
|
||||
C: c,
|
||||
theme: theme,
|
||||
Session: sessions.Default(c),
|
||||
ginH: gin.H{},
|
||||
scene: scene,
|
||||
Stats: constraints.Ok,
|
||||
themeMods: mods,
|
||||
components: make(map[string][]Components),
|
||||
handleFns: make(map[int][]HandleCall),
|
||||
}
|
||||
}
|
||||
|
||||
func NewComponents(fn func(*Handle) string, order int) Components {
|
||||
return Components{Fn: fn, Order: order}
|
||||
}
|
||||
|
||||
func (h *Handle) PushHandleFn(stats int, fns ...HandleCall) {
|
||||
h.HandleFns[stats] = append(h.HandleFns[stats], fns...)
|
||||
h.handleFns[stats] = append(h.handleFns[stats], fns...)
|
||||
}
|
||||
|
||||
func (h *Handle) AddComponent(name string, fn func(*Handle) string) {
|
||||
|
@ -68,25 +113,25 @@ func (h *Handle) AddComponent(name string, fn func(*Handle) string) {
|
|||
v = fn(h)
|
||||
reload.SetStr(name, v)
|
||||
}
|
||||
h.GinH[name] = v
|
||||
h.ginH[name] = v
|
||||
}
|
||||
|
||||
func (h *Handle) PushHeadScript(fn ...Components) {
|
||||
h.Components[constraints.HeadScript] = append(h.Components[constraints.HeadScript], fn...)
|
||||
h.components[constraints.HeadScript] = append(h.components[constraints.HeadScript], fn...)
|
||||
}
|
||||
func (h *Handle) PushFooterScript(fn ...Components) {
|
||||
h.Components[constraints.FooterScript] = append(h.Components[constraints.FooterScript], fn...)
|
||||
h.components[constraints.FooterScript] = append(h.components[constraints.FooterScript], fn...)
|
||||
}
|
||||
|
||||
func (h *Handle) GetPassword() {
|
||||
pw := h.Session.Get("post_password")
|
||||
if pw != nil {
|
||||
h.Password = pw.(string)
|
||||
h.password = pw.(string)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *Handle) ExecHandleFns() {
|
||||
calls, ok := h.HandleFns[h.Stats]
|
||||
calls, ok := h.handleFns[h.Stats]
|
||||
if ok {
|
||||
slice.SortSelf(calls, func(i, j HandleCall) bool {
|
||||
return i.Order > j.Order
|
||||
|
@ -95,7 +140,7 @@ func (h *Handle) ExecHandleFns() {
|
|||
call.Fn(h)
|
||||
}
|
||||
}
|
||||
fns, ok := h.HandleFns[constraints.AllStats]
|
||||
fns, ok := h.handleFns[constraints.AllStats]
|
||||
if ok {
|
||||
for _, fn := range fns {
|
||||
fn.Fn(h)
|
||||
|
@ -105,10 +150,10 @@ func (h *Handle) ExecHandleFns() {
|
|||
}
|
||||
|
||||
func (h *Handle) PreTemplate() {
|
||||
if h.Templ == "" {
|
||||
h.Templ = str.Join(h.Theme, "/posts/index.gohtml")
|
||||
if h.Scene == constraints.Detail {
|
||||
h.Templ = str.Join(h.Theme, "/posts/detail.gohtml")
|
||||
if h.templ == "" {
|
||||
h.templ = str.Join(h.theme, "/posts/index.gohtml")
|
||||
if h.scene == constraints.Detail {
|
||||
h.templ = str.Join(h.theme, "/posts/detail.gohtml")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -134,15 +179,15 @@ func (h *Handle) Render() {
|
|||
h.AddComponent("customLogo", CalCustomLogo)
|
||||
h.CalMultipleComponents()
|
||||
h.CalBodyClass()
|
||||
h.C.HTML(h.Code, h.Templ, h.GinH)
|
||||
h.C.HTML(h.Code, h.templ, h.ginH)
|
||||
}
|
||||
|
||||
func (h *Handle) PushComponents(name string, components ...Components) {
|
||||
h.Components[name] = append(h.Components[name], components...)
|
||||
h.components[name] = append(h.components[name], components...)
|
||||
}
|
||||
|
||||
func (h *Handle) CalMultipleComponents() {
|
||||
for k, ss := range h.Components {
|
||||
for k, ss := range h.components {
|
||||
v, ok := reload.GetStr(k)
|
||||
if !ok {
|
||||
slice.SortSelf(ss, func(i, j Components) bool {
|
||||
|
@ -154,19 +199,10 @@ func (h *Handle) CalMultipleComponents() {
|
|||
}), "\n")
|
||||
reload.SetStr(k, v)
|
||||
}
|
||||
h.GinH[k] = v
|
||||
h.ginH[k] = v
|
||||
}
|
||||
}
|
||||
|
||||
type HandleFn[T any] func(T)
|
||||
|
||||
type HandlePipeFn[T any] func(HandleFn[T], T)
|
||||
|
||||
type HandleCall struct {
|
||||
Fn HandleFn[*Handle]
|
||||
Order int
|
||||
}
|
||||
|
||||
func NewHandleFn(fn HandleFn[*Handle], order int) HandleCall {
|
||||
return HandleCall{Fn: fn, Order: order}
|
||||
}
|
||||
|
@ -181,7 +217,7 @@ func HandlePipe[T any](initial func(T), fns ...HandlePipeFn[T]) HandleFn[T] {
|
|||
}
|
||||
|
||||
func Render(h *Handle) {
|
||||
switch h.Scene {
|
||||
switch h.scene {
|
||||
case constraints.Detail:
|
||||
h.Detail.Render()
|
||||
default:
|
||||
|
|
|
@ -7,10 +7,10 @@ import (
|
|||
)
|
||||
|
||||
func CalCustomCss(h *Handle) (r string) {
|
||||
if h.ThemeMods.CustomCssPostId < 1 {
|
||||
if h.themeMods.CustomCssPostId < 1 {
|
||||
return
|
||||
}
|
||||
post, err := cache.GetPostById(h.C, uint64(h.ThemeMods.CustomCssPostId))
|
||||
post, err := cache.GetPostById(h.C, uint64(h.themeMods.CustomCssPostId))
|
||||
if err != nil || post.Id < 1 {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -8,11 +8,11 @@ import (
|
|||
)
|
||||
|
||||
func (h *Handle) DisplayHeaderText() bool {
|
||||
return h.ThemeMods.ThemeSupport.CustomHeader.HeaderText && "blank" != h.ThemeMods.HeaderTextcolor
|
||||
return h.themeMods.ThemeSupport.CustomHeader.HeaderText && "blank" != h.themeMods.HeaderTextcolor
|
||||
}
|
||||
|
||||
func (h *Handle) GetCustomHeader() (r models.PostThumbnail, isRand bool) {
|
||||
hs, err := cache.GetHeaderImages(h.C, h.Theme)
|
||||
hs, err := cache.GetHeaderImages(h.C, h.theme)
|
||||
if err != nil {
|
||||
logs.ErrPrintln(err, "获取页眉背景图失败")
|
||||
return
|
||||
|
|
|
@ -9,7 +9,7 @@ import (
|
|||
)
|
||||
|
||||
func CalCustomLogo(h *Handle) (r string) {
|
||||
id := uint64(h.ThemeMods.CustomLogo)
|
||||
id := uint64(h.themeMods.CustomLogo)
|
||||
if id < 1 {
|
||||
id = str.ToInteger[uint64](wpconfig.GetOption("site_logo"), 0)
|
||||
if id < 1 {
|
||||
|
|
|
@ -24,7 +24,7 @@ func NewDetailHandle(handle *Handle) *DetailHandle {
|
|||
}
|
||||
|
||||
func (d *DetailHandle) BuildDetailData() (err error) {
|
||||
d.GinH["title"] = wpconfig.GetOption("blogname")
|
||||
d.ginH["title"] = wpconfig.GetOption("blogname")
|
||||
err = d.CheckAndGetPost()
|
||||
if err != nil {
|
||||
return
|
||||
|
@ -41,7 +41,7 @@ func (d *DetailHandle) CheckAndGetPost() (err error) {
|
|||
if id > maxId || id <= 0 {
|
||||
d.Stats = constraints.ParamError
|
||||
err = errors.New("无效的文档id")
|
||||
d.Class = append(d.Class, "error404")
|
||||
d.class = append(d.class, "error404")
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
|
@ -55,24 +55,24 @@ func (d *DetailHandle) CheckAndGetPost() (err error) {
|
|||
}
|
||||
|
||||
d.Post = post
|
||||
d.GinH["user"] = cache.GetUserById(d.C, post.PostAuthor)
|
||||
d.GinH["title"] = fmt.Sprintf("%s-%s", post.PostTitle, wpconfig.GetOption("blogname"))
|
||||
d.ginH["user"] = cache.GetUserById(d.C, post.PostAuthor)
|
||||
d.ginH["title"] = fmt.Sprintf("%s-%s", post.PostTitle, wpconfig.GetOption("blogname"))
|
||||
return
|
||||
}
|
||||
|
||||
func (d *DetailHandle) PasswordProject() {
|
||||
if d.Post.PostPassword != "" {
|
||||
plugins.PasswordProjectTitle(&d.Post)
|
||||
if d.Password != d.Post.PostPassword {
|
||||
if d.password != d.Post.PostPassword {
|
||||
plugins.PasswdProjectContent(&d.Post)
|
||||
}
|
||||
d.GinH["post"] = d.Post
|
||||
d.ginH["post"] = d.Post
|
||||
}
|
||||
}
|
||||
func (d *DetailHandle) Comment() {
|
||||
comments, err := cache.PostComments(d.C, d.Post.Id)
|
||||
logs.ErrPrintln(err, "get d.Post comment", d.Post.Id)
|
||||
d.GinH["comments"] = comments
|
||||
d.ginH["comments"] = comments
|
||||
d.Comments = comments
|
||||
|
||||
}
|
||||
|
@ -83,27 +83,27 @@ func (d *DetailHandle) RenderComment() {
|
|||
}
|
||||
ableComment := true
|
||||
if d.Post.CommentStatus != "open" ||
|
||||
(d.Post.PostPassword != "" && d.Password != d.Post.PostPassword) {
|
||||
(d.Post.PostPassword != "" && d.password != d.Post.PostPassword) {
|
||||
ableComment = false
|
||||
}
|
||||
d.GinH["showComment"] = ableComment
|
||||
d.ginH["showComment"] = ableComment
|
||||
if len(d.Comments) > 0 && ableComment {
|
||||
dep := str.ToInteger(wpconfig.GetOption("thread_comments_depth"), 5)
|
||||
d.GinH["comments"] = plugins.FormatComments(d.C, d.CommentRender, d.Comments, dep)
|
||||
d.ginH["comments"] = plugins.FormatComments(d.C, d.CommentRender, d.Comments, dep)
|
||||
}
|
||||
}
|
||||
|
||||
func (d *DetailHandle) ContextPost() {
|
||||
prev, next, err := cache.GetContextPost(d.C, d.Post.Id, d.Post.PostDate)
|
||||
logs.ErrPrintln(err, "get pre and next post", d.Post.Id, d.Post.PostDate)
|
||||
d.GinH["next"] = next
|
||||
d.GinH["prev"] = prev
|
||||
d.ginH["next"] = next
|
||||
d.ginH["prev"] = prev
|
||||
}
|
||||
|
||||
func (d *DetailHandle) Render() {
|
||||
d.PasswordProject()
|
||||
d.RenderComment()
|
||||
d.GinH["post"] = d.Post
|
||||
d.ginH["post"] = d.Post
|
||||
d.Handle.Render()
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ func NewIndexHandle(handle *Handle) *IndexHandle {
|
|||
|
||||
func (i *IndexHandle) ParseIndex(parm *IndexParams) (err error) {
|
||||
i.Param = parm
|
||||
switch i.Scene {
|
||||
switch i.scene {
|
||||
case constraints.Home, constraints.Search:
|
||||
i.Param.ParseSearch()
|
||||
case constraints.Category:
|
||||
|
@ -47,9 +47,9 @@ func (i *IndexHandle) ParseIndex(parm *IndexParams) (err error) {
|
|||
}
|
||||
i.Param.ParseParams()
|
||||
i.Param.CacheKey = i.Param.getSearchKey()
|
||||
i.GinH["title"] = i.Param.getTitle()
|
||||
i.GinH["search"] = i.Param.Search
|
||||
i.GinH["header"] = i.Param.Header
|
||||
i.ginH["title"] = i.Param.getTitle()
|
||||
i.ginH["search"] = i.Param.Search
|
||||
i.ginH["header"] = i.Param.Header
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,7 @@ func (i *IndexHandle) GetIndexData() (posts []models.Posts, totalRaw int, err er
|
|||
Join: i.Param.Join,
|
||||
In: [][]any{i.Param.PostType, i.Param.PostStatus},
|
||||
}
|
||||
switch i.Scene {
|
||||
switch i.scene {
|
||||
case constraints.Home, constraints.Category, constraints.Tag, constraints.Author:
|
||||
|
||||
posts, totalRaw, err = cache.PostLists(i.C, i.Param.CacheKey, i.C, q, i.Param.Page, i.Param.PageSize)
|
||||
|
@ -88,7 +88,7 @@ func (i *IndexHandle) Pagination() {
|
|||
q = fmt.Sprintf("?%s", q)
|
||||
}
|
||||
paginations := pagination.NewParsePagination(i.TotalRows, i.Param.PageSize, i.Param.Page, i.Param.PaginationStep, q, i.C.Request.URL.Path)
|
||||
i.GinH["pagination"] = pagination.Paginate(i.PageEle, paginations)
|
||||
i.ginH["pagination"] = pagination.Paginate(i.PageEle, paginations)
|
||||
|
||||
}
|
||||
|
||||
|
@ -106,7 +106,7 @@ func (i *IndexHandle) BuildIndexData(parm *IndexParams) (err error) {
|
|||
i.Posts = posts
|
||||
i.TotalRows = totalRows
|
||||
|
||||
i.GinH["totalPage"] = number.CalTotalPage(totalRows, i.Param.PageSize)
|
||||
i.ginH["totalPage"] = number.CalTotalPage(totalRows, i.Param.PageSize)
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -121,7 +121,7 @@ func (i *IndexHandle) ExecPostsPlugin(calls ...func(*models.Posts)) {
|
|||
}
|
||||
plugin := GetListPostPlugins(pluginConf, postsPlugins)
|
||||
|
||||
i.GinH["posts"] = slice.Map(i.Posts, PluginFn[models.Posts](plugin, i.Handle, Defaults(calls...)))
|
||||
i.ginH["posts"] = slice.Map(i.Posts, PluginFn[models.Posts](plugin, i.Handle, Defaults(calls...)))
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ func PasswordProject(next Fn[models.Posts], h *Handle, post models.Posts) (r mod
|
|||
r = post
|
||||
if post.PostPassword != "" {
|
||||
plugins.PasswordProjectTitle(&r)
|
||||
if h.Password != post.PostPassword {
|
||||
if h.password != post.PostPassword {
|
||||
plugins.PasswdProjectContent(&r)
|
||||
return
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ func (i *IndexHandle) ExecListPagePlugin(m map[string]Plugin[models.Posts, *Hand
|
|||
|
||||
plugin := GetListPostPlugins(pluginConf, m)
|
||||
|
||||
i.GinH["posts"] = slice.Map(i.Posts, PluginFn[models.Posts, *Handle](plugin, i.Handle, Defaults(calls...)))
|
||||
i.ginH["posts"] = slice.Map(i.Posts, PluginFn[models.Posts, *Handle](plugin, i.Handle, Defaults(calls...)))
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,12 @@
|
|||
{{end}}
|
||||
{{end}}
|
||||
|
||||
{{define "common/footer"}}
|
||||
{{if .footerScript}}
|
||||
{{.footerScript|unescaped}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
|
||||
{{define "common/customLogo"}}
|
||||
{{if .customLogo}}
|
||||
{{.customLogo|unescaped}}
|
||||
|
|
|
@ -7,8 +7,8 @@ import (
|
|||
)
|
||||
|
||||
func (h *Handle) WidgetAreaData() {
|
||||
h.GinH["archives"] = cache.Archives(h.C)
|
||||
h.GinH["recentPosts"] = slice.Map(cache.RecentPosts(h.C, 5), ProjectTitle)
|
||||
h.GinH["categories"] = cache.CategoriesTags(h.C, constraints.Category)
|
||||
h.GinH["recentComments"] = cache.RecentComments(h.C, 5)
|
||||
h.ginH["archives"] = cache.Archives(h.C)
|
||||
h.ginH["recentPosts"] = slice.Map(cache.RecentPosts(h.C, 5), ProjectTitle)
|
||||
h.ginH["categories"] = cache.CategoriesTags(h.C, constraints.Category)
|
||||
h.ginH["recentComments"] = cache.RecentComments(h.C, 5)
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ func colorSchemeCss(h *common.Handle) string {
|
|||
}
|
||||
func calColorSchemeCss(h *common.Handle) (r string) {
|
||||
color := getColorScheme(h)
|
||||
if "default" == h.ThemeMods.ColorScheme || len(color) < 1 {
|
||||
if "default" == h.CommonThemeMods().ColorScheme || len(color) < 1 {
|
||||
return
|
||||
}
|
||||
textColorRgb := slice.ToAnySlice(Hex2RgbUint8(color[3]))
|
||||
|
@ -48,29 +48,31 @@ func calColorSchemeCss(h *common.Handle) (r string) {
|
|||
|
||||
func calSidebarTextColorCss(h *common.Handle) (r string) {
|
||||
colors := getColorScheme(h)
|
||||
if h.ThemeMods.SidebarTextcolor == "" || h.ThemeMods.SidebarTextcolor == colors[4] {
|
||||
themeMods := h.CommonThemeMods()
|
||||
if themeMods.SidebarTextcolor == "" || themeMods.SidebarTextcolor == colors[4] {
|
||||
return
|
||||
}
|
||||
linkColorRgb := Hex2RgbUint8(h.ThemeMods.SidebarTextcolor)
|
||||
linkColorRgb := Hex2RgbUint8(themeMods.SidebarTextcolor)
|
||||
color := slice.ToAnySlice(linkColorRgb)
|
||||
textColor := fmt.Sprintf(`rgba( %[1]v, %[2]v, %[3]v, 0.7)`, color...)
|
||||
borderColor := fmt.Sprintf(`rgba( %[1]v, %[2]v, %[3]v, 0.1)`, color...)
|
||||
borderFocusColor := fmt.Sprintf(`rgba( %[1]v, %[2]v, %[3]v, 0.3)`, color...)
|
||||
r = fmt.Sprintf(sidebarTextColorTemplate, h.ThemeMods.SidebarTextcolor, textColor, borderColor, borderFocusColor)
|
||||
r = fmt.Sprintf(sidebarTextColorTemplate, themeMods.SidebarTextcolor, textColor, borderColor, borderFocusColor)
|
||||
return
|
||||
}
|
||||
|
||||
func calHeaderBackgroundColorCss(h *common.Handle) (r string) {
|
||||
colors := getColorScheme(h)
|
||||
if h.ThemeMods.HeaderBackgroundColor == "" || h.ThemeMods.HeaderBackgroundColor == colors[1] {
|
||||
themeMods := h.CommonThemeMods()
|
||||
if themeMods.HeaderBackgroundColor == "" || themeMods.HeaderBackgroundColor == colors[1] {
|
||||
return
|
||||
}
|
||||
r = fmt.Sprintf(headerBackgroundColorCssTemplate, h.ThemeMods.HeaderBackgroundColor, h.ThemeMods.HeaderBackgroundColor)
|
||||
r = fmt.Sprintf(headerBackgroundColorCssTemplate, themeMods.HeaderBackgroundColor, themeMods.HeaderBackgroundColor)
|
||||
return
|
||||
}
|
||||
|
||||
func getColorScheme(h *common.Handle) (r []string) {
|
||||
x, ok := colorscheme[h.ThemeMods.ColorScheme]
|
||||
x, ok := colorscheme[h.CommonThemeMods().ColorScheme]
|
||||
if ok {
|
||||
r = x.Colors
|
||||
}
|
||||
|
|
|
@ -31,29 +31,30 @@ var repeat = map[string]string{
|
|||
}
|
||||
|
||||
func CalCustomBackGround(h *common.Handle) (r string) {
|
||||
if h.ThemeMods.BackgroundImage == "" && h.ThemeMods.BackgroundColor == themesupport.CustomBackground.DefaultColor {
|
||||
themeMods := h.CommonThemeMods()
|
||||
if themeMods.BackgroundImage == "" && themeMods.BackgroundColor == themesupport.CustomBackground.DefaultColor {
|
||||
return
|
||||
}
|
||||
s := str.NewBuilder()
|
||||
if h.ThemeMods.BackgroundImage != "" {
|
||||
s.Sprintf(` background-image: url("%s");`, helper.CutUrlHost(h.ThemeMods.BackgroundImage))
|
||||
if themeMods.BackgroundImage != "" {
|
||||
s.Sprintf(` background-image: url("%s");`, helper.CutUrlHost(themeMods.BackgroundImage))
|
||||
}
|
||||
backgroundPositionX := helper.Defaults(h.ThemeMods.BackgroundPositionX, themesupport.CustomBackground.DefaultPositionX)
|
||||
backgroundPositionX := helper.Defaults(themeMods.BackgroundPositionX, themesupport.CustomBackground.DefaultPositionX)
|
||||
backgroundPositionX = maps.WithDefaultVal(postx, backgroundPositionX, "left")
|
||||
|
||||
backgroundPositionY := helper.Defaults(h.ThemeMods.BackgroundPositionY, themesupport.CustomBackground.DefaultPositionY)
|
||||
backgroundPositionY := helper.Defaults(themeMods.BackgroundPositionY, themesupport.CustomBackground.DefaultPositionY)
|
||||
backgroundPositionY = maps.WithDefaultVal(posty, backgroundPositionY, "top")
|
||||
positon := fmt.Sprintf(" background-position: %s %s;", backgroundPositionX, backgroundPositionY)
|
||||
|
||||
siz := helper.DefaultVal(h.ThemeMods.BackgroundSize, themesupport.CustomBackground.DefaultSize)
|
||||
siz := helper.DefaultVal(themeMods.BackgroundSize, themesupport.CustomBackground.DefaultSize)
|
||||
siz = maps.WithDefaultVal(size, siz, "auto")
|
||||
siz = fmt.Sprintf(" background-size: %s;", siz)
|
||||
|
||||
repeats := helper.Defaults(h.ThemeMods.BackgroundRepeat, themesupport.CustomBackground.DefaultRepeat)
|
||||
repeats := helper.Defaults(themeMods.BackgroundRepeat, themesupport.CustomBackground.DefaultRepeat)
|
||||
repeats = maps.WithDefaultVal(repeat, repeats, "repeat")
|
||||
repeats = fmt.Sprintf(" background-repeat: %s;", repeats)
|
||||
|
||||
attachment := helper.Defaults(h.ThemeMods.BackgroundAttachment, themesupport.CustomBackground.DefaultAttachment)
|
||||
attachment := helper.Defaults(themeMods.BackgroundAttachment, themesupport.CustomBackground.DefaultAttachment)
|
||||
attachment = helper.Or(attachment == "fixed", "fixed", "scroll")
|
||||
attachment = fmt.Sprintf(" background-attachment: %s;", attachment)
|
||||
s.WriteString(positon, siz, repeats, attachment)
|
||||
|
|
|
@ -117,6 +117,6 @@ func customHeader(h *common.Handle) {
|
|||
header.Store(headers)
|
||||
}
|
||||
}
|
||||
h.GinH["customHeader"] = headers
|
||||
h.SetData("customHeader", headers)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
<script id='enlighterjs-js-after'>
|
||||
!function(e,n){if("undefined"!=typeof EnlighterJS){var o={"selectors":{"block":"pre.EnlighterJSRAW","inline":"code.EnlighterJSRAW"},"options":{"indent":4,"ampersandCleanup":true,"linehover":true,"rawcodeDbclick":false,"textOverflow":"break","linenumbers":true,"theme":"enlighter","language":"generic","retainCssClasses":false,"collapse":false,"toolbarOuter":"","toolbarTop":"{BTN_RAW}{BTN_COPY}{BTN_WINDOW}{BTN_WEBSITE}","toolbarBottom":""}};(e.EnlighterJSINIT=function(){EnlighterJS.init(o.selectors.block,o.selectors.inline,o.options)})()}else{(n&&(n.error||n.log)||function(){})("Error: EnlighterJS resources not loaded yet!")}}(window,console);
|
||||
</script>
|
||||
{{template "common/footer" .}}
|
||||
{{ block "footer" .}}
|
||||
{{end}}
|
||||
{{end}}
|
|
@ -42,7 +42,7 @@ func dispatch(next common.HandleFn[*common.Handle], h *common.Handle) {
|
|||
common.NewComponents(colorSchemeCss, 10),
|
||||
)
|
||||
h.PushHandleFn(constraints.AllStats, common.NewHandleFn(customHeader, 10))
|
||||
switch h.Scene {
|
||||
switch h.Scene() {
|
||||
case constraints.Detail:
|
||||
detail(next, h.Detail)
|
||||
default:
|
||||
|
|
|
@ -10,11 +10,11 @@ import (
|
|||
)
|
||||
|
||||
func colorScheme(h *common.Handle) (r string) {
|
||||
if "custom" != wpconfig.GetThemeModsVal(h.Theme, "colorscheme", "light") {
|
||||
if "custom" != wpconfig.GetThemeModsVal(ThemeName, "colorscheme", "light") {
|
||||
return
|
||||
}
|
||||
s := str.NewBuilder()
|
||||
hue := number.ToString(wpconfig.GetThemeModsVal[int64](h.Theme, "colorscheme_hue", 250))
|
||||
hue := number.ToString(wpconfig.GetThemeModsVal[int64](ThemeName, "colorscheme_hue", 250))
|
||||
saturation := fmt.Sprintf("%d%%", int(.8*50))
|
||||
css := customCss
|
||||
for k, v := range map[string]string{
|
||||
|
|
|
@ -6,8 +6,9 @@ import (
|
|||
)
|
||||
|
||||
func customHeader(h *common.Handle) (r string) {
|
||||
headerTextColor := h.ThemeMods.HeaderTextcolor
|
||||
if headerTextColor == "" || headerTextColor == h.ThemeMods.ThemeSupport.CustomHeader.DefaultTextColor {
|
||||
themeMods := h.CommonThemeMods()
|
||||
headerTextColor := themeMods.HeaderTextcolor
|
||||
if headerTextColor == "" || headerTextColor == themeMods.ThemeSupport.CustomHeader.DefaultTextColor {
|
||||
return
|
||||
}
|
||||
css := `
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
<script id='enlighterjs-js-after'>
|
||||
!function(e,n){if("undefined"!=typeof EnlighterJS){var o={"selectors":{"block":"pre.EnlighterJSRAW","inline":"code.EnlighterJSRAW"},"options":{"indent":4,"ampersandCleanup":true,"linehover":true,"rawcodeDbclick":false,"textOverflow":"break","linenumbers":true,"theme":"enlighter","language":"generic","retainCssClasses":false,"collapse":false,"toolbarOuter":"","toolbarTop":"{BTN_RAW}{BTN_COPY}{BTN_WINDOW}{BTN_WEBSITE}","toolbarBottom":""}};(e.EnlighterJSINIT=function(){EnlighterJS.init(o.selectors.block,o.selectors.inline,o.options)})()}else{(n&&(n.error||n.log)||function(){})("Error: EnlighterJS resources not loaded yet!")}}(window,console);
|
||||
</script>
|
||||
{{template "common/footer" .}}
|
||||
{{ block "footer" .}}
|
||||
{{end}}
|
||||
{{end}}
|
|
@ -41,13 +41,13 @@ func ready(next common.HandleFn[*common.Handle], h *common.Handle) {
|
|||
common.NewComponents(colorScheme, 10),
|
||||
common.NewComponents(customHeader, 10),
|
||||
)
|
||||
h.GinH["HeaderImage"] = getHeaderImage(h)
|
||||
h.GinH["scene"] = h.Scene
|
||||
h.SetData("HeaderImage", getHeaderImage(h))
|
||||
h.SetData("scene", h.Scene())
|
||||
next(h)
|
||||
}
|
||||
|
||||
func dispatch(next common.HandleFn[*common.Handle], h *common.Handle) {
|
||||
switch h.Scene {
|
||||
switch h.Scene() {
|
||||
case constraints.Detail:
|
||||
detail(next, h.Detail)
|
||||
default:
|
||||
|
@ -64,7 +64,7 @@ var listPostsPlugins = func() map[string]common.Plugin[models.Posts, *common.Han
|
|||
func index(next common.HandleFn[*common.Handle], i *common.IndexHandle) {
|
||||
err := i.BuildIndexData(common.NewIndexParams(i.C))
|
||||
if err != nil {
|
||||
i.Templ = str.Join(ThemeName, "/posts/error.gohtml")
|
||||
i.SetTempl(str.Join(ThemeName, "/posts/error.gohtml"))
|
||||
i.Render()
|
||||
return
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ func index(next common.HandleFn[*common.Handle], i *common.IndexHandle) {
|
|||
func detail(next common.HandleFn[*common.Handle], d *common.DetailHandle) {
|
||||
err := d.BuildDetailData()
|
||||
if err != nil {
|
||||
d.Templ = str.Join(ThemeName, "/posts/error.gohtml")
|
||||
d.SetTempl(str.Join(ThemeName, "/posts/error.gohtml"))
|
||||
d.Render()
|
||||
return
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, isTls
|
|||
func postThumbnail(next common.Fn[models.Posts], h *common.Handle, t models.Posts) models.Posts {
|
||||
if t.Thumbnail.Path != "" {
|
||||
t.Thumbnail.Sizes = "(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px"
|
||||
if h.Scene == constraints.Detail {
|
||||
if h.Scene() == constraints.Detail {
|
||||
t.Thumbnail.Sizes = "100vw"
|
||||
}
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ func getHeaderImage(h *common.Handle) (r models.PostThumbnail) {
|
|||
}
|
||||
return
|
||||
}
|
||||
r.Path = helper.CutUrlHost(h.ThemeMods.ThemeSupport.CustomHeader.DefaultImage)
|
||||
r.Path = helper.CutUrlHost(h.CommonThemeMods().ThemeSupport.CustomHeader.DefaultImage)
|
||||
r.Width = 2000
|
||||
r.Height = 1200
|
||||
r.Sizes = "100vw"
|
||||
|
@ -147,23 +147,26 @@ func getHeaderImage(h *common.Handle) (r models.PostThumbnail) {
|
|||
}
|
||||
|
||||
func calClass(h *common.Handle) {
|
||||
u := wpconfig.GetThemeModsVal(h.Theme, "header_image", h.ThemeMods.ThemeSupport.CustomHeader.DefaultImage)
|
||||
themeMods := h.CommonThemeMods()
|
||||
u := wpconfig.GetThemeModsVal(ThemeName, "header_image", themeMods.ThemeSupport.CustomHeader.DefaultImage)
|
||||
var class []string
|
||||
if u != "" && u != "remove-header" {
|
||||
h.Class = append(h.Class, "has-header-image")
|
||||
class = append(class, "has-header-image")
|
||||
}
|
||||
if len(h.ThemeMods.SidebarsWidgets.Data.Sidebar1) > 0 {
|
||||
h.Class = append(h.Class, "has-sidebar")
|
||||
if len(themeMods.SidebarsWidgets.Data.Sidebar1) > 0 {
|
||||
class = append(class, "has-sidebar")
|
||||
}
|
||||
if h.ThemeMods.HeaderTextcolor == "blank" {
|
||||
h.Class = append(h.Class, "title-tagline-hidden")
|
||||
if themeMods.HeaderTextcolor == "blank" {
|
||||
class = append(class, "title-tagline-hidden")
|
||||
}
|
||||
h.Class = append(h.Class, "hfeed")
|
||||
h.Class = append(h.Class, str.Join("colors-", wpconfig.GetThemeModsVal(h.Theme, "colorscheme", "light")))
|
||||
if h.Scene == constraints.Archive {
|
||||
if "one-column" == wpconfig.GetThemeModsVal(h.Theme, "page_layout", "") {
|
||||
h.Class = append(h.Class, "page-one-column")
|
||||
class = append(class, "hfeed")
|
||||
class = append(class, str.Join("colors-", wpconfig.GetThemeModsVal(ThemeName, "colorscheme", "light")))
|
||||
if h.Scene() == constraints.Archive {
|
||||
if "one-column" == wpconfig.GetThemeModsVal(ThemeName, "page_layout", "") {
|
||||
class = append(class, "page-one-column")
|
||||
} else {
|
||||
h.Class = append(h.Class, "page-two-column")
|
||||
class = append(class, "page-two-column")
|
||||
}
|
||||
}
|
||||
h.PushClass(class...)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user