优化
This commit is contained in:
parent
bf9c902def
commit
875cc554dc
|
@ -11,7 +11,6 @@ import (
|
||||||
"github/fthvgb1/wp-go/helper"
|
"github/fthvgb1/wp-go/helper"
|
||||||
"github/fthvgb1/wp-go/logs"
|
"github/fthvgb1/wp-go/logs"
|
||||||
"github/fthvgb1/wp-go/mail"
|
"github/fthvgb1/wp-go/mail"
|
||||||
"github/fthvgb1/wp-go/models/wp"
|
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
@ -52,7 +51,7 @@ func PostComment(c *gin.Context) {
|
||||||
}
|
}
|
||||||
defer req.Body.Close()
|
defer req.Body.Close()
|
||||||
req.Header = c.Request.Header.Clone()
|
req.Header = c.Request.Header.Clone()
|
||||||
home, err := url.Parse(wp.Option["siteurl"])
|
home, err := url.Parse(config.Options.Value("siteurl"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -104,7 +103,7 @@ func PostComment(c *gin.Context) {
|
||||||
logs.ErrPrintln(err, "获取文档", id)
|
logs.ErrPrintln(err, "获取文档", id)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
su := fmt.Sprintf("%s: %s[%s]发表了评论对文档[%v]的评论", wp.Option["siteurl"], author, m, post.PostTitle)
|
su := fmt.Sprintf("%s: %s[%s]发表了评论对文档[%v]的评论", config.Options.Value("siteurl"), author, m, post.PostTitle)
|
||||||
err = mail.SendMail([]string{config.Conf.Mail.User}, su, comment)
|
err = mail.SendMail([]string{config.Conf.Mail.User}, su, comment)
|
||||||
logs.ErrPrintln(err, "发送邮件", config.Conf.Mail.User, su, comment)
|
logs.ErrPrintln(err, "发送邮件", config.Conf.Mail.User, su, comment)
|
||||||
}()
|
}()
|
||||||
|
|
|
@ -131,10 +131,10 @@ func categories(a ...any) (terms []wp.WpTermsMy, err error) {
|
||||||
{"t", "inner join", "wp_term_taxonomy tt", "t.term_id = tt.term_id"},
|
{"t", "inner join", "wp_term_taxonomy tt", "t.term_id = tt.term_id"},
|
||||||
}, nil, 0, in)
|
}, nil, 0, in)
|
||||||
for i := 0; i < len(terms); i++ {
|
for i := 0; i < len(terms); i++ {
|
||||||
if v, ok := wp.Terms[terms[i].WpTerms.TermId]; ok {
|
if v, ok := config.Terms.Load(terms[i].WpTerms.TermId); ok {
|
||||||
terms[i].WpTerms = v
|
terms[i].WpTerms = v
|
||||||
}
|
}
|
||||||
if v, ok := wp.TermTaxonomies[terms[i].WpTerms.TermId]; ok {
|
if v, ok := config.TermTaxonomies.Load(terms[i].WpTerms.TermId); ok {
|
||||||
terms[i].TermTaxonomy = v
|
terms[i].TermTaxonomy = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"github.com/gin-contrib/sessions"
|
"github.com/gin-contrib/sessions"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github/fthvgb1/wp-go/actions/common"
|
"github/fthvgb1/wp-go/actions/common"
|
||||||
|
"github/fthvgb1/wp-go/config"
|
||||||
"github/fthvgb1/wp-go/helper"
|
"github/fthvgb1/wp-go/helper"
|
||||||
"github/fthvgb1/wp-go/logs"
|
"github/fthvgb1/wp-go/logs"
|
||||||
"github/fthvgb1/wp-go/models/wp"
|
"github/fthvgb1/wp-go/models/wp"
|
||||||
|
@ -32,8 +33,8 @@ func Detail(c *gin.Context) {
|
||||||
categoryItems := common.Categories(c)
|
categoryItems := common.Categories(c)
|
||||||
recentComments := common.RecentComments(c, 5)
|
recentComments := common.RecentComments(c, 5)
|
||||||
var h = gin.H{
|
var h = gin.H{
|
||||||
"title": wp.Option["blogname"],
|
"title": config.Options.Value("blogname"),
|
||||||
"options": wp.Option,
|
"options": config.Options,
|
||||||
"recentPosts": recent,
|
"recentPosts": recent,
|
||||||
"archives": archive,
|
"archives": archive,
|
||||||
"categories": categoryItems,
|
"categories": categoryItems,
|
||||||
|
@ -91,11 +92,11 @@ func Detail(c *gin.Context) {
|
||||||
commentss := treeComments(comments)
|
commentss := treeComments(comments)
|
||||||
prev, next, err := common.GetContextPost(c, post.Id, post.PostDate)
|
prev, next, err := common.GetContextPost(c, post.Id, post.PostDate)
|
||||||
logs.ErrPrintln(err, "get pre and next post", post.Id, post.PostDate)
|
logs.ErrPrintln(err, "get pre and next post", post.Id, post.PostDate)
|
||||||
h["title"] = fmt.Sprintf("%s-%s", post.PostTitle, wp.Option["blogname"])
|
h["title"] = fmt.Sprintf("%s-%s", post.PostTitle, config.Options.Value("blogname"))
|
||||||
h["post"] = post
|
h["post"] = post
|
||||||
h["showComment"] = showComment
|
h["showComment"] = showComment
|
||||||
h["prev"] = prev
|
h["prev"] = prev
|
||||||
depth := wp.Option["thread_comments_depth"]
|
depth := config.Options.Value("thread_comments_depth")
|
||||||
d, err := strconv.Atoi(depth)
|
d, err := strconv.Atoi(depth)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logs.ErrPrintln(err, "get comment depth")
|
logs.ErrPrintln(err, "get comment depth")
|
||||||
|
@ -272,7 +273,7 @@ func gravatar(c *gin.Context, email string) (u string) {
|
||||||
q := url.Values{}
|
q := url.Values{}
|
||||||
q.Add("s", "112")
|
q.Add("s", "112")
|
||||||
q.Add("d", "mm")
|
q.Add("d", "mm")
|
||||||
q.Add("r", strings.ToLower(wp.Option["avatar_rating"]))
|
q.Add("r", strings.ToLower(config.Options.Value("avatar_rating")))
|
||||||
u = fmt.Sprintf("%s?%s", u, q.Encode())
|
u = fmt.Sprintf("%s?%s", u, q.Encode())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github/fthvgb1/wp-go/actions/common"
|
"github/fthvgb1/wp-go/actions/common"
|
||||||
"github/fthvgb1/wp-go/cache"
|
"github/fthvgb1/wp-go/cache"
|
||||||
|
"github/fthvgb1/wp-go/config"
|
||||||
"github/fthvgb1/wp-go/helper"
|
"github/fthvgb1/wp-go/helper"
|
||||||
"github/fthvgb1/wp-go/logs"
|
"github/fthvgb1/wp-go/logs"
|
||||||
"github/fthvgb1/wp-go/models/wp"
|
"github/fthvgb1/wp-go/models/wp"
|
||||||
|
@ -25,14 +26,14 @@ var commentsFeedCache = cache.NewSliceCache(commentsFeed, time.Hour)
|
||||||
|
|
||||||
func InitFeed() {
|
func InitFeed() {
|
||||||
templateRss = rss2.Rss2{
|
templateRss = rss2.Rss2{
|
||||||
Title: wp.Option["blogname"],
|
Title: config.Options.Value("blogname"),
|
||||||
AtomLink: fmt.Sprintf("%s/feed", wp.Option["home"]),
|
AtomLink: fmt.Sprintf("%s/feed", config.Options.Value("home")),
|
||||||
Link: wp.Option["siteurl"],
|
Link: config.Options.Value("siteurl"),
|
||||||
Description: wp.Option["blogdescription"],
|
Description: config.Options.Value("blogdescription"),
|
||||||
Language: "zh-CN",
|
Language: "zh-CN",
|
||||||
UpdatePeriod: "hourly",
|
UpdatePeriod: "hourly",
|
||||||
UpdateFrequency: 1,
|
UpdateFrequency: 1,
|
||||||
Generator: wp.Option["home"],
|
Generator: config.Options.Value("home"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,9 +93,9 @@ func feed(arg ...any) (xml []string, err error) {
|
||||||
}
|
}
|
||||||
l := ""
|
l := ""
|
||||||
if t.CommentStatus == "open" && t.CommentCount > 0 {
|
if t.CommentStatus == "open" && t.CommentCount > 0 {
|
||||||
l = fmt.Sprintf("%s/p/%d#comments", wp.Option["siteurl"], t.Id)
|
l = fmt.Sprintf("%s/p/%d#comments", config.Options.Value("siteurl"), t.Id)
|
||||||
} else if t.CommentStatus == "open" && t.CommentCount == 0 {
|
} else if t.CommentStatus == "open" && t.CommentCount == 0 {
|
||||||
l = fmt.Sprintf("%s/p/%d#respond", wp.Option["siteurl"], t.Id)
|
l = fmt.Sprintf("%s/p/%d#respond", config.Options.Value("siteurl"), t.Id)
|
||||||
}
|
}
|
||||||
user := common.GetUser(c, t.PostAuthor)
|
user := common.GetUser(c, t.PostAuthor)
|
||||||
|
|
||||||
|
@ -106,8 +107,8 @@ func feed(arg ...any) (xml []string, err error) {
|
||||||
Content: t.PostContent,
|
Content: t.PostContent,
|
||||||
Category: strings.Join(t.Categories, "、"),
|
Category: strings.Join(t.Categories, "、"),
|
||||||
CommentLink: l,
|
CommentLink: l,
|
||||||
CommentRss: fmt.Sprintf("%s/p/%d/feed", wp.Option["siteurl"], t.Id),
|
CommentRss: fmt.Sprintf("%s/p/%d/feed", config.Options.Value("siteurl"), t.Id),
|
||||||
Link: fmt.Sprintf("%s/p/%d", wp.Option["siteurl"], t.Id),
|
Link: fmt.Sprintf("%s/p/%d", config.Options.Value("siteurl"), t.Id),
|
||||||
Description: desc,
|
Description: desc,
|
||||||
PubDate: t.PostDateGmt.Format(timeFormat),
|
PubDate: t.PostDateGmt.Format(timeFormat),
|
||||||
}
|
}
|
||||||
|
@ -169,8 +170,8 @@ func postFeed(arg ...any) (x string, err error) {
|
||||||
rs := templateRss
|
rs := templateRss
|
||||||
|
|
||||||
rs.Title = fmt.Sprintf("《%s》的评论", post.PostTitle)
|
rs.Title = fmt.Sprintf("《%s》的评论", post.PostTitle)
|
||||||
rs.AtomLink = fmt.Sprintf("%s/p/%d/feed", wp.Option["siteurl"], post.Id)
|
rs.AtomLink = fmt.Sprintf("%s/p/%d/feed", config.Options.Value("siteurl"), post.Id)
|
||||||
rs.Link = fmt.Sprintf("%s/p/%d", wp.Option["siteurl"], post.Id)
|
rs.Link = fmt.Sprintf("%s/p/%d", config.Options.Value("siteurl"), post.Id)
|
||||||
rs.LastBuildDate = time.Now().Format(timeFormat)
|
rs.LastBuildDate = time.Now().Format(timeFormat)
|
||||||
if post.PostPassword != "" {
|
if post.PostPassword != "" {
|
||||||
if len(comments) > 0 {
|
if len(comments) > 0 {
|
||||||
|
@ -179,7 +180,7 @@ func postFeed(arg ...any) (x string, err error) {
|
||||||
rs.Items = []rss2.Item{
|
rs.Items = []rss2.Item{
|
||||||
{
|
{
|
||||||
Title: fmt.Sprintf("评价者:%s", t.CommentAuthor),
|
Title: fmt.Sprintf("评价者:%s", t.CommentAuthor),
|
||||||
Link: fmt.Sprintf("%s/p/%d#comment-%d", wp.Option["siteurl"], post.Id, t.CommentId),
|
Link: fmt.Sprintf("%s/p/%d#comment-%d", config.Options.Value("siteurl"), post.Id, t.CommentId),
|
||||||
Creator: t.CommentAuthor,
|
Creator: t.CommentAuthor,
|
||||||
PubDate: t.CommentDateGmt.Format(timeFormat),
|
PubDate: t.CommentDateGmt.Format(timeFormat),
|
||||||
Guid: fmt.Sprintf("%s#comment-%d", post.Guid, t.CommentId),
|
Guid: fmt.Sprintf("%s#comment-%d", post.Guid, t.CommentId),
|
||||||
|
@ -192,7 +193,7 @@ func postFeed(arg ...any) (x string, err error) {
|
||||||
rs.Items = helper.SliceMap(comments, func(t wp.Comments) rss2.Item {
|
rs.Items = helper.SliceMap(comments, func(t wp.Comments) rss2.Item {
|
||||||
return rss2.Item{
|
return rss2.Item{
|
||||||
Title: fmt.Sprintf("评价者:%s", t.CommentAuthor),
|
Title: fmt.Sprintf("评价者:%s", t.CommentAuthor),
|
||||||
Link: fmt.Sprintf("%s/p/%d#comment-%d", wp.Option["siteurl"], post.Id, t.CommentId),
|
Link: fmt.Sprintf("%s/p/%d#comment-%d", config.Options.Value("siteurl"), post.Id, t.CommentId),
|
||||||
Creator: t.CommentAuthor,
|
Creator: t.CommentAuthor,
|
||||||
PubDate: t.CommentDateGmt.Format(timeFormat),
|
PubDate: t.CommentDateGmt.Format(timeFormat),
|
||||||
Guid: fmt.Sprintf("%s#comment-%d", post.Guid, t.CommentId),
|
Guid: fmt.Sprintf("%s#comment-%d", post.Guid, t.CommentId),
|
||||||
|
@ -224,9 +225,9 @@ func commentsFeed(args ...any) (r []string, err error) {
|
||||||
c := args[0].(*gin.Context)
|
c := args[0].(*gin.Context)
|
||||||
commens := common.RecentComments(c, 10)
|
commens := common.RecentComments(c, 10)
|
||||||
rs := templateRss
|
rs := templateRss
|
||||||
rs.Title = fmt.Sprintf("\"%s\"的评论", wp.Option["blogname"])
|
rs.Title = fmt.Sprintf("\"%s\"的评论", config.Options.Value("blogname"))
|
||||||
rs.LastBuildDate = time.Now().Format(timeFormat)
|
rs.LastBuildDate = time.Now().Format(timeFormat)
|
||||||
rs.AtomLink = fmt.Sprintf("%s/comments/feed", wp.Option["siteurl"])
|
rs.AtomLink = fmt.Sprintf("%s/comments/feed", config.Options.Value("siteurl"))
|
||||||
com, err := common.GetCommentByIds(c, helper.SliceMap(commens, func(t wp.Comments) uint64 {
|
com, err := common.GetCommentByIds(c, helper.SliceMap(commens, func(t wp.Comments) uint64 {
|
||||||
return t.CommentId
|
return t.CommentId
|
||||||
}))
|
}))
|
||||||
|
@ -247,7 +248,7 @@ func commentsFeed(args ...any) (r []string, err error) {
|
||||||
}
|
}
|
||||||
return rss2.Item{
|
return rss2.Item{
|
||||||
Title: fmt.Sprintf("%s对《%s》的评论", t.CommentAuthor, post.PostTitle),
|
Title: fmt.Sprintf("%s对《%s》的评论", t.CommentAuthor, post.PostTitle),
|
||||||
Link: fmt.Sprintf("%s/p/%d#comment-%d", wp.Option["siteurl"], post.Id, t.CommentId),
|
Link: fmt.Sprintf("%s/p/%d#comment-%d", config.Options.Value("siteurl"), post.Id, t.CommentId),
|
||||||
Creator: t.CommentAuthor,
|
Creator: t.CommentAuthor,
|
||||||
Description: desc,
|
Description: desc,
|
||||||
PubDate: t.CommentDateGmt.Format(timeFormat),
|
PubDate: t.CommentDateGmt.Format(timeFormat),
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"github.com/gin-contrib/sessions"
|
"github.com/gin-contrib/sessions"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github/fthvgb1/wp-go/actions/common"
|
"github/fthvgb1/wp-go/actions/common"
|
||||||
|
"github/fthvgb1/wp-go/config"
|
||||||
"github/fthvgb1/wp-go/helper"
|
"github/fthvgb1/wp-go/helper"
|
||||||
"github/fthvgb1/wp-go/models"
|
"github/fthvgb1/wp-go/models"
|
||||||
"github/fthvgb1/wp-go/models/wp"
|
"github/fthvgb1/wp-go/models/wp"
|
||||||
|
@ -40,7 +41,7 @@ type indexHandle struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func newIndexHandle(ctx *gin.Context) *indexHandle {
|
func newIndexHandle(ctx *gin.Context) *indexHandle {
|
||||||
size := wp.Option["posts_per_page"]
|
size := config.Options.Value("posts_per_page")
|
||||||
si, _ := strconv.Atoi(size)
|
si, _ := strconv.Atoi(size)
|
||||||
return &indexHandle{
|
return &indexHandle{
|
||||||
c: ctx,
|
c: ctx,
|
||||||
|
@ -48,8 +49,8 @@ func newIndexHandle(ctx *gin.Context) *indexHandle {
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: si,
|
pageSize: si,
|
||||||
paginationStep: 1,
|
paginationStep: 1,
|
||||||
titleL: wp.Option["blogname"],
|
titleL: config.Options.Value("blogname"),
|
||||||
titleR: wp.Option["blogdescription"],
|
titleR: config.Options.Value("blogdescription"),
|
||||||
where: models.SqlBuilder{
|
where: models.SqlBuilder{
|
||||||
{"post_type", "in", ""},
|
{"post_type", "in", ""},
|
||||||
{"post_status", "in", ""},
|
{"post_status", "in", ""},
|
||||||
|
@ -93,7 +94,7 @@ func (h *indexHandle) parseParams() {
|
||||||
})
|
})
|
||||||
ss := fmt.Sprintf("%s年%s月", year, strings.TrimLeft(month, "0"))
|
ss := fmt.Sprintf("%s年%s月", year, strings.TrimLeft(month, "0"))
|
||||||
h.header = fmt.Sprintf("月度归档: <span>%s</span>", ss)
|
h.header = fmt.Sprintf("月度归档: <span>%s</span>", ss)
|
||||||
h.setTitleLR(ss, wp.Option["blogname"])
|
h.setTitleLR(ss, config.Options.Value("blogname"))
|
||||||
h.scene = plugins.Archive
|
h.scene = plugins.Archive
|
||||||
}
|
}
|
||||||
category := h.c.Param("category")
|
category := h.c.Param("category")
|
||||||
|
@ -120,7 +121,7 @@ func (h *indexHandle) parseParams() {
|
||||||
}, []string{
|
}, []string{
|
||||||
"left join", "wp_terms d", "c.term_id=d.term_id",
|
"left join", "wp_terms d", "c.term_id=d.term_id",
|
||||||
})
|
})
|
||||||
h.setTitleLR(category, wp.Option["blogname"])
|
h.setTitleLR(category, config.Options.Value("blogname"))
|
||||||
h.scene = plugins.Category
|
h.scene = plugins.Category
|
||||||
}
|
}
|
||||||
s := h.c.Query("s")
|
s := h.c.Query("s")
|
||||||
|
@ -133,7 +134,7 @@ func (h *indexHandle) parseParams() {
|
||||||
}, []string{"post_password", ""})
|
}, []string{"post_password", ""})
|
||||||
h.postType = append(h.postType, "page", "attachment")
|
h.postType = append(h.postType, "page", "attachment")
|
||||||
h.header = fmt.Sprintf("%s的搜索结果", s)
|
h.header = fmt.Sprintf("%s的搜索结果", s)
|
||||||
h.setTitleLR(helper.StrJoin(`"`, s, `"`, "的搜索结果"), wp.Option["blogname"])
|
h.setTitleLR(helper.StrJoin(`"`, s, `"`, "的搜索结果"), config.Options.Value("blogname"))
|
||||||
h.search = s
|
h.search = s
|
||||||
h.scene = plugins.Search
|
h.scene = plugins.Search
|
||||||
}
|
}
|
||||||
|
@ -150,7 +151,7 @@ func (h *indexHandle) parseParams() {
|
||||||
h.page = 1
|
h.page = 1
|
||||||
}
|
}
|
||||||
if h.page > 1 && (h.category != "" || h.search != "" || month != "") {
|
if h.page > 1 && (h.category != "" || h.search != "" || month != "") {
|
||||||
h.setTitleLR(fmt.Sprintf("%s-第%d页", h.titleL, h.page), wp.Option["blogname"])
|
h.setTitleLR(fmt.Sprintf("%s-第%d页", h.titleL, h.page), config.Options.Value("blogname"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,7 +168,7 @@ func Index(c *gin.Context) {
|
||||||
categoryItems := common.Categories(c)
|
categoryItems := common.Categories(c)
|
||||||
recentComments := common.RecentComments(c, 5)
|
recentComments := common.RecentComments(c, 5)
|
||||||
ginH := gin.H{
|
ginH := gin.H{
|
||||||
"options": wp.Option,
|
"options": config.Options,
|
||||||
"recentPosts": recent,
|
"recentPosts": recent,
|
||||||
"archives": archive,
|
"archives": archive,
|
||||||
"categories": categoryItems,
|
"categories": categoryItems,
|
||||||
|
|
|
@ -4,8 +4,8 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/gin-contrib/sessions"
|
"github.com/gin-contrib/sessions"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
"github/fthvgb1/wp-go/config"
|
||||||
"github/fthvgb1/wp-go/helper"
|
"github/fthvgb1/wp-go/helper"
|
||||||
"github/fthvgb1/wp-go/models/wp"
|
|
||||||
"github/fthvgb1/wp-go/phpass"
|
"github/fthvgb1/wp-go/phpass"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -33,7 +33,7 @@ func Login(c *gin.Context) {
|
||||||
c.Error(err)
|
c.Error(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
cohash := fmt.Sprintf("wp-postpass_%s", helper.StringMd5(wp.Option["siteurl"]))
|
cohash := fmt.Sprintf("wp-postpass_%s", helper.StringMd5(config.Options.Value("siteurl")))
|
||||||
c.SetCookie(cohash, pass, 24*3600, "/", "", false, false)
|
c.SetCookie(cohash, pass, 24*3600, "/", "", false, false)
|
||||||
|
|
||||||
c.Redirect(http.StatusFound, ref)
|
c.Redirect(http.StatusFound, ref)
|
||||||
|
|
28
config/options.go
Normal file
28
config/options.go
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github/fthvgb1/wp-go/models"
|
||||||
|
"github/fthvgb1/wp-go/models/wp"
|
||||||
|
"github/fthvgb1/wp-go/safety"
|
||||||
|
)
|
||||||
|
|
||||||
|
var Options safety.Map[string, string]
|
||||||
|
|
||||||
|
func InitOptions() error {
|
||||||
|
ctx := context.Background()
|
||||||
|
ops, err := models.SimpleFind[wp.Options](ctx, models.SqlBuilder{{"autoload", "yes"}}, "option_name, option_value")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if len(ops) == 0 {
|
||||||
|
ops, err = models.SimpleFind[wp.Options](ctx, nil, "option_name, option_value")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, options := range ops {
|
||||||
|
Options.Store(options.OptionName, options.OptionValue)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
30
config/term.go
Normal file
30
config/term.go
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github/fthvgb1/wp-go/models"
|
||||||
|
"github/fthvgb1/wp-go/models/wp"
|
||||||
|
"github/fthvgb1/wp-go/safety"
|
||||||
|
)
|
||||||
|
|
||||||
|
var Terms safety.Map[uint64, wp.WpTerms]
|
||||||
|
var TermTaxonomies safety.Map[uint64, wp.TermTaxonomy]
|
||||||
|
|
||||||
|
func InitTerms() (err error) {
|
||||||
|
ctx := context.Background()
|
||||||
|
terms, err := models.SimpleFind[wp.WpTerms](ctx, nil, "*")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, wpTerms := range terms {
|
||||||
|
Terms.Store(wpTerms.TermId, wpTerms)
|
||||||
|
}
|
||||||
|
termTax, err := models.SimpleFind[wp.TermTaxonomy](ctx, nil, "*")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, taxonomy := range termTax {
|
||||||
|
TermTaxonomies.Store(taxonomy.TermTaxonomyId, taxonomy)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
6
main.go
6
main.go
|
@ -7,7 +7,6 @@ import (
|
||||||
"github/fthvgb1/wp-go/config"
|
"github/fthvgb1/wp-go/config"
|
||||||
"github/fthvgb1/wp-go/db"
|
"github/fthvgb1/wp-go/db"
|
||||||
"github/fthvgb1/wp-go/models"
|
"github/fthvgb1/wp-go/models"
|
||||||
"github/fthvgb1/wp-go/models/wp"
|
|
||||||
"github/fthvgb1/wp-go/plugins"
|
"github/fthvgb1/wp-go/plugins"
|
||||||
"github/fthvgb1/wp-go/route"
|
"github/fthvgb1/wp-go/route"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
@ -29,12 +28,11 @@ func init() {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
models.InitDB(db.NewSqlxDb(db.Db))
|
models.InitDB(db.NewSqlxDb(db.Db))
|
||||||
err = wp.InitOptions()
|
err = config.InitOptions()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
err = config.InitTerms()
|
||||||
err = wp.InitTerms()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@ import (
|
||||||
"github/fthvgb1/wp-go/config"
|
"github/fthvgb1/wp-go/config"
|
||||||
"github/fthvgb1/wp-go/logs"
|
"github/fthvgb1/wp-go/logs"
|
||||||
"github/fthvgb1/wp-go/mail"
|
"github/fthvgb1/wp-go/mail"
|
||||||
"github/fthvgb1/wp-go/models/wp"
|
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -43,7 +42,7 @@ func RecoverAndSendMail(w io.Writer) func(ctx *gin.Context) {
|
||||||
|
|
||||||
er := mail.SendMail(
|
er := mail.SendMail(
|
||||||
[]string{config.Conf.Mail.User},
|
[]string{config.Conf.Mail.User},
|
||||||
fmt.Sprintf("%s%s %s 发生错误", fmt.Sprintf(wp.Option["siteurl"]), c.FullPath(), time.Now().Format(time.RFC1123Z)), content)
|
fmt.Sprintf("%s%s %s 发生错误", fmt.Sprintf(config.Options.Value("siteurl")), c.FullPath(), time.Now().Format(time.RFC1123Z)), content)
|
||||||
|
|
||||||
if er != nil {
|
if er != nil {
|
||||||
logs.ErrPrintln(er, "recover send mail fail", fmt.Sprintf("%v", err))
|
logs.ErrPrintln(er, "recover send mail fail", fmt.Sprintf("%v", err))
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
package wp
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github/fthvgb1/wp-go/models"
|
|
||||||
)
|
|
||||||
|
|
||||||
var Option = make(map[string]string)
|
|
||||||
var Terms = map[uint64]WpTerms{}
|
|
||||||
var TermTaxonomies = map[uint64]TermTaxonomy{}
|
|
||||||
|
|
||||||
func InitOptions() error {
|
|
||||||
ctx := context.Background()
|
|
||||||
ops, err := models.SimpleFind[Options](ctx, models.SqlBuilder{{"autoload", "yes"}}, "option_name, option_value")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if len(ops) == 0 {
|
|
||||||
ops, err = models.SimpleFind[Options](ctx, nil, "option_name, option_value")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, options := range ops {
|
|
||||||
Option[options.OptionName] = options.OptionValue
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func InitTerms() (err error) {
|
|
||||||
ctx := context.Background()
|
|
||||||
terms, err := models.SimpleFind[WpTerms](ctx, nil, "*")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for _, wpTerms := range terms {
|
|
||||||
Terms[wpTerms.TermId] = wpTerms
|
|
||||||
}
|
|
||||||
termTax, err := models.SimpleFind[TermTaxonomy](ctx, nil, "*")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for _, taxonomy := range termTax {
|
|
||||||
TermTaxonomies[taxonomy.TermTaxonomyId] = taxonomy
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -34,6 +34,9 @@ func SetupRouter() *gin.Engine {
|
||||||
"dateCh": func(t time.Time) any {
|
"dateCh": func(t time.Time) any {
|
||||||
return t.Format("2006年 01月 02日")
|
return t.Format("2006年 01月 02日")
|
||||||
},
|
},
|
||||||
|
"getOption": func(k string) string {
|
||||||
|
return config.Options.Value(k)
|
||||||
|
},
|
||||||
}).SetTemplate()
|
}).SetTemplate()
|
||||||
r.Use(
|
r.Use(
|
||||||
gin.Logger(),
|
gin.Logger(),
|
||||||
|
|
|
@ -98,6 +98,11 @@ func newEntry[V any](i V) *entry[V] {
|
||||||
return &entry[V]{p: unsafe.Pointer(&i)}
|
return &entry[V]{p: unsafe.Pointer(&i)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Map[K, V]) Value(key K) (v V) {
|
||||||
|
v, _ = m.Load(key)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Load returns the value stored in the map for a key, or nil if no
|
// Load returns the value stored in the map for a key, or nil if no
|
||||||
// value is present.
|
// value is present.
|
||||||
// The ok result indicates whether value was found in the map.
|
// The ok result indicates whether value was found in the map.
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
<header id="masthead" class="site-header">
|
<header id="masthead" class="site-header">
|
||||||
<div class="site-branding">
|
<div class="site-branding">
|
||||||
<h1 class="site-title">
|
<h1 class="site-title">
|
||||||
<a href="/" rel="home">{{ .options.blogname }}</a>
|
<a href="/" rel="home">{{ "blogname"| getOption }}</a>
|
||||||
</h1>
|
</h1>
|
||||||
<p class="site-description">{{.options.blogdescription}}</p>
|
<p class="site-description">{{"blogdescription"| getOption}}</p>
|
||||||
<button class="secondary-toggle">菜单和挂件</button>
|
<button class="secondary-toggle">菜单和挂件</button>
|
||||||
</div><!-- .site-branding -->
|
</div><!-- .site-branding -->
|
||||||
</header>
|
</header>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user