优化文档列表的插件机制
This commit is contained in:
parent
21d0b8c041
commit
b0618cf800
|
@ -1,7 +1,6 @@
|
||||||
package twentyfifteen
|
package twentyfifteen
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/config"
|
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/constraints"
|
"github.com/fthvgb1/wp-go/app/pkg/constraints"
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/constraints/widgets"
|
"github.com/fthvgb1/wp-go/app/pkg/constraints/widgets"
|
||||||
"github.com/fthvgb1/wp-go/app/plugins"
|
"github.com/fthvgb1/wp-go/app/plugins"
|
||||||
|
@ -19,7 +18,6 @@ func Hook(h *wp.Handle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func configs(h *wp.Handle) {
|
func configs(h *wp.Handle) {
|
||||||
conf := config.GetConfig()
|
|
||||||
h.PushComponentFilterFn(widgets.Search, func(h *wp.Handle, s string, args ...any) string {
|
h.PushComponentFilterFn(widgets.Search, func(h *wp.Handle, s string, args ...any) string {
|
||||||
return strings.ReplaceAll(s, `class="search-submit"`, `class="search-submit screen-reader-text"`)
|
return strings.ReplaceAll(s, `class="search-submit"`, `class="search-submit screen-reader-text"`)
|
||||||
})
|
})
|
||||||
|
@ -31,7 +29,6 @@ func configs(h *wp.Handle) {
|
||||||
h.PushCacheGroupHeadScript(constraints.AllScene, "CalCustomBackGround", 10, CalCustomBackGround)
|
h.PushCacheGroupHeadScript(constraints.AllScene, "CalCustomBackGround", 10, CalCustomBackGround)
|
||||||
h.PushCacheGroupHeadScript(constraints.AllScene, "colorSchemeCss", 10, colorSchemeCss)
|
h.PushCacheGroupHeadScript(constraints.AllScene, "colorSchemeCss", 10, colorSchemeCss)
|
||||||
h.CommonComponents()
|
h.CommonComponents()
|
||||||
h.Index.SetListPlugin(wp.PostsPlugins(wp.PostPlugin(), wp.GetListPostPlugins(conf.ListPagePlugins, wp.ListPostPlugins())...))
|
|
||||||
components.WidgetArea(h)
|
components.WidgetArea(h)
|
||||||
wp.ReplyCommentJs(h)
|
wp.ReplyCommentJs(h)
|
||||||
h.SetData("customHeader", customHeader(h))
|
h.SetData("customHeader", customHeader(h))
|
||||||
|
|
|
@ -3,7 +3,6 @@ package twentyseventeen
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/fthvgb1/wp-go/app/cmd/reload"
|
"github.com/fthvgb1/wp-go/app/cmd/reload"
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/config"
|
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/constraints"
|
"github.com/fthvgb1/wp-go/app/pkg/constraints"
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/constraints/widgets"
|
"github.com/fthvgb1/wp-go/app/pkg/constraints/widgets"
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/logs"
|
"github.com/fthvgb1/wp-go/app/pkg/logs"
|
||||||
|
@ -36,7 +35,6 @@ func Hook(h *wp.Handle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func configs(h *wp.Handle) {
|
func configs(h *wp.Handle) {
|
||||||
conf := config.GetConfig()
|
|
||||||
wp.InitPipe(h)
|
wp.InitPipe(h)
|
||||||
h.PushHandler(constraints.PipeMiddleware, constraints.Home,
|
h.PushHandler(constraints.PipeMiddleware, constraints.Home,
|
||||||
wp.NewHandleFn(widget.IsCategory, 100, "widget.IsCategory"))
|
wp.NewHandleFn(widget.IsCategory, 100, "widget.IsCategory"))
|
||||||
|
@ -57,7 +55,7 @@ func configs(h *wp.Handle) {
|
||||||
h.CommonComponents()
|
h.CommonComponents()
|
||||||
h.Index.SetPageEle(paginate)
|
h.Index.SetPageEle(paginate)
|
||||||
wp.ReplyCommentJs(h)
|
wp.ReplyCommentJs(h)
|
||||||
h.Index.SetListPlugin(wp.PostsPlugins(wp.PostPlugin(postThumbnail), wp.GetListPostPlugins(conf.ListPagePlugins, wp.ListPostPlugins())...))
|
h.PushPostPlugin(postThumbnail)
|
||||||
wp.SetComponentsArgsForMap(h, widgets.Search, "{$form}", searchForm)
|
wp.SetComponentsArgsForMap(h, widgets.Search, "{$form}", searchForm)
|
||||||
wp.PushIndexHandler(constraints.PipeRender, h, wp.NewHandleFn(wp.IndexRender, 10, "wp.IndexRender"))
|
wp.PushIndexHandler(constraints.PipeRender, h, wp.NewHandleFn(wp.IndexRender, 10, "wp.IndexRender"))
|
||||||
h.PushRender(constraints.Detail, wp.NewHandleFn(wp.DetailRender, 10, "wp.DetailRender"))
|
h.PushRender(constraints.Detail, wp.NewHandleFn(wp.DetailRender, 10, "wp.DetailRender"))
|
||||||
|
|
|
@ -45,8 +45,9 @@ func searchArgs() map[string]string {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var form = html5SearchForm
|
||||||
|
|
||||||
func Search(h *wp.Handle, id string) string {
|
func Search(h *wp.Handle, id string) string {
|
||||||
form := html5SearchForm
|
|
||||||
args := reload.GetAnyValBys("widget-search-args", h, func(h *wp.Handle) map[string]string {
|
args := reload.GetAnyValBys("widget-search-args", h, func(h *wp.Handle) map[string]string {
|
||||||
search := searchArgs()
|
search := searchArgs()
|
||||||
commonArgs := wp.GetComponentsArgs(h, widgets.Widget, map[string]string{})
|
commonArgs := wp.GetComponentsArgs(h, widgets.Widget, map[string]string{})
|
||||||
|
|
|
@ -3,6 +3,7 @@ package wp
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/fthvgb1/wp-go/app/cmd/reload"
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/cache"
|
"github.com/fthvgb1/wp-go/app/pkg/cache"
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/constraints"
|
"github.com/fthvgb1/wp-go/app/pkg/constraints"
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/models"
|
"github.com/fthvgb1/wp-go/app/pkg/models"
|
||||||
|
@ -137,10 +138,14 @@ func (i *IndexHandle) BuildIndexData(parm *IndexParams) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *IndexHandle) ExecPostsPlugin() {
|
func (i *IndexHandle) ExecPostsPlugin() {
|
||||||
if i.postsPlugin != nil {
|
fn := i.postsPlugin
|
||||||
for j := range i.Posts {
|
if fn == nil {
|
||||||
i.postsPlugin(i.Handle, &i.Posts[j])
|
fn = reload.GetAnyValBys("postPlugins", i, func(a *IndexHandle) PostsPlugin {
|
||||||
|
return UsePostsPlugins()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
for j := range i.Posts {
|
||||||
|
fn(i.Handle, &i.Posts[j])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package wp
|
package wp
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/fthvgb1/wp-go/app/cmd/reload"
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/config"
|
"github.com/fthvgb1/wp-go/app/pkg/config"
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/models"
|
"github.com/fthvgb1/wp-go/app/pkg/models"
|
||||||
"github.com/fthvgb1/wp-go/app/plugins"
|
"github.com/fthvgb1/wp-go/app/plugins"
|
||||||
|
@ -19,9 +20,14 @@ func PostsPlugins(initial PostsPlugin, calls ...func(PostsPlugin, *Handle, *mode
|
||||||
}, initial)
|
}, initial)
|
||||||
}
|
}
|
||||||
|
|
||||||
var pluginFns = map[string]func(PostsPlugin, *Handle, *models.Posts){
|
var pluginFns = reload.Vars(map[string]func(PostsPlugin, *Handle, *models.Posts){
|
||||||
"passwordProject": PasswordProject,
|
"passwordProject": PasswordProject,
|
||||||
"digest": Digest,
|
"digest": Digest,
|
||||||
|
})
|
||||||
|
|
||||||
|
func (h *Handle) PushPostsPlugin(name string, fn func(PostsPlugin, *Handle, *models.Posts)) {
|
||||||
|
m := pluginFns.Load()
|
||||||
|
m[name] = fn
|
||||||
}
|
}
|
||||||
|
|
||||||
// PasswordProject 标题和内容密码保护
|
// PasswordProject 标题和内容密码保护
|
||||||
|
@ -47,7 +53,15 @@ func Digest(next PostsPlugin, h *Handle, post *models.Posts) {
|
||||||
next(h, post)
|
next(h, post)
|
||||||
}
|
}
|
||||||
|
|
||||||
func PostPlugin(calls ...func(h *Handle, posts *models.Posts)) PostsPlugin {
|
var ordinaryPlugin = reload.Vars([]PostsPlugin{})
|
||||||
|
|
||||||
|
func (h *Handle) PushPostPlugin(plugin ...PostsPlugin) {
|
||||||
|
p := ordinaryPlugin.Load()
|
||||||
|
p = append(p, plugin...)
|
||||||
|
ordinaryPlugin.Store(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PostPlugin(calls ...PostsPlugin) PostsPlugin {
|
||||||
return func(h *Handle, posts *models.Posts) {
|
return func(h *Handle, posts *models.Posts) {
|
||||||
for _, call := range calls {
|
for _, call := range calls {
|
||||||
call(h, posts)
|
call(h, posts)
|
||||||
|
@ -55,8 +69,21 @@ func PostPlugin(calls ...func(h *Handle, posts *models.Posts)) PostsPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UsePostsPlugins() PostsPlugin {
|
||||||
|
p := config.GetConfig().ListPagePlugins
|
||||||
|
var pluginss []func(PostsPlugin, *Handle, *models.Posts)
|
||||||
|
m := pluginFns.Load()
|
||||||
|
for _, s := range p {
|
||||||
|
f, ok := m[s]
|
||||||
|
if ok {
|
||||||
|
pluginss = append(pluginss, f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return PostsPlugins(PostPlugin(ordinaryPlugin.Load()...), pluginss...)
|
||||||
|
}
|
||||||
|
|
||||||
func ListPostPlugins() map[string]func(PostsPlugin, *Handle, *models.Posts) {
|
func ListPostPlugins() map[string]func(PostsPlugin, *Handle, *models.Posts) {
|
||||||
return maps.Copy(pluginFns)
|
return maps.Copy(pluginFns.Load())
|
||||||
}
|
}
|
||||||
|
|
||||||
func ProjectTitle(t models.Posts) models.Posts {
|
func ProjectTitle(t models.Posts) models.Posts {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user