Merge pull request #7 from fthvgb1/dev

Dev
This commit is contained in:
2023-01-30 20:50:41 +08:00 committed by GitHub
commit 0c0fafedec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 46 additions and 23 deletions

View File

@ -78,4 +78,6 @@ port: 8082
# 主题 为空值为option template没有就默认为twentyfifteen
theme: "twentyfifteen"
# 文档排序默认升序还是降序
postOrder: "desc"
postOrder: "desc"
# 上传的目录
uploadDir: ""

View File

@ -44,13 +44,20 @@ func SetupRouter() (*gin.Engine, func()) {
})))
}
f := static.Fs{FS: static.FsEx, Path: "wp-includes"}
r.StaticFileFS("/favicon.ico", "favicon.ico", http.FS(static.FsEx))
f := static.Fs{FS: static.FsDir, Path: "wp-includes"}
r.StaticFileFS("/favicon.ico", "favicon.ico", http.FS(static.FsDir))
r.StaticFS("/wp-includes", http.FS(f))
r.StaticFS("/wp-content", http.FS(static.Fs{
FS: static.FsEx,
Path: "wp-content",
r.StaticFS("/wp-content/plugins", http.FS(static.Fs{
FS: static.FsDir,
Path: "wp-content/plugins",
}))
r.StaticFS("/wp-content/themes", http.FS(static.Fs{
FS: static.FsDir,
Path: "wp-content/themes",
}))
if c.UploadDir != "" {
r.Static("/wp-content/uploads", c.UploadDir)
}
store := cookie.NewStore([]byte("secret"))
r.Use(sessions.Sessions("go-wp", store))
sl, slRload := middleware.SearchLimit(c.SingleIpSearchNum)

View File

@ -40,6 +40,7 @@ type Config struct {
TrustServerNames []string `yaml:"trustServerNames"`
Theme string `yaml:"theme"`
PostOrder string `yaml:"postOrder"`
UploadDir string `yaml:"uploadDir"`
}
type Ssl struct {

View File

@ -7,7 +7,6 @@ import (
"github.com/fthvgb1/wp-go/helper/slice"
"github.com/fthvgb1/wp-go/internal/pkg/models"
"github.com/fthvgb1/wp-go/internal/plugins"
"github.com/fthvgb1/wp-go/internal/wpconfig"
"github.com/fthvgb1/wp-go/model"
"strings"
"sync/atomic"
@ -44,7 +43,8 @@ func GetPostsByIds(ids ...any) (m map[uint64]models.Posts, err error) {
}
postsMap[post.Id] = v
}
host, _ := wpconfig.Options.Load("siteurl")
//host, _ := wpconfig.Options.Load("siteurl")
host := ""
meta, _ := GetPostMetaByPostIds(ctx, id)
for k, pp := range postsMap {
if len(pp.Categories) > 0 {

View File

@ -4,6 +4,7 @@ import (
"github.com/fthvgb1/wp-go/helper/slice"
"github.com/fthvgb1/wp-go/internal/pkg/models"
"github.com/gin-gonic/gin"
"net/url"
"strconv"
"strings"
)
@ -13,6 +14,7 @@ type CommentHandler struct {
comments []*Comments
maxDepth int
depth int
isTls bool
i CommentHtml
}
@ -23,16 +25,25 @@ type Comments struct {
type CommentHtml interface {
Sort(i, j *Comments) bool
FormatLi(c *gin.Context, m models.Comments, depth int, eo, parent string) string
FormatLi(c *gin.Context, m models.Comments, depth int, isTls bool, eo, parent string) string
}
func FormatComments(c *gin.Context, i CommentHtml, comments []models.Comments, maxDepth int) string {
tree := treeComments(comments)
u := c.Request.Header.Get("Referer")
var isTls bool
if u != "" {
uu, _ := url.Parse(u)
if uu.Scheme == "https" {
isTls = true
}
}
h := CommentHandler{
Context: c,
comments: tree,
maxDepth: maxDepth,
depth: 1,
isTls: isTls,
i: i,
}
return h.formatComment(h.comments, true)
@ -55,7 +66,7 @@ func (d CommentHandler) formatComment(comments []*Comments, isTop bool) (html st
parent = "parent"
fl = true
}
s.WriteString(d.i.FormatLi(d.Context, comment.Comments, d.depth, eo, parent))
s.WriteString(d.i.FormatLi(d.Context, comment.Comments, d.depth, d.isTls, eo, parent))
if fl {
d.depth++
s.WriteString(`<ol class="children">`)
@ -130,8 +141,8 @@ func (c CommonCommentFormat) Sort(i, j *Comments) bool {
return i.CommentDate.UnixNano() < j.CommentDate.UnixNano()
}
func (c CommonCommentFormat) FormatLi(ctx *gin.Context, m models.Comments, depth int, eo, parent string) string {
return FormatLi(CommonLi(), ctx, m, depth, eo, parent)
func (c CommonCommentFormat) FormatLi(ctx *gin.Context, m models.Comments, depth int, isTls bool, eo, parent string) string {
return FormatLi(CommonLi(), ctx, m, depth, isTls, eo, parent)
}
var li = `
@ -171,11 +182,11 @@ var li = `
`
func FormatLi(li string, c *gin.Context, comments models.Comments, depth int, eo, parent string) string {
func FormatLi(li string, c *gin.Context, comments models.Comments, depth int, isTls bool, eo, parent string) string {
for k, v := range map[string]string{
"{{CommentId}}": strconv.FormatUint(comments.CommentId, 10),
"{{Depth}}": strconv.Itoa(depth),
"{{Gravatar}}": Gravatar(comments.CommentAuthorEmail, c.Request.TLS != nil),
"{{Gravatar}}": Gravatar(comments.CommentAuthorEmail, isTls),
"{{CommentAuthorUrl}}": comments.CommentAuthorUrl,
"{{CommentAuthor}}": comments.CommentAuthor,
"{{PostId}}": strconv.FormatUint(comments.CommentPostId, 10),

View File

@ -9,7 +9,7 @@ import (
)
//go:embed wp-content wp-includes favicon.ico
var FsEx embed.FS
var FsDir embed.FS
type Fs struct {
embed.FS

View File

@ -50,11 +50,11 @@
<link rel='stylesheet' id='twentyseventeen-style-css' href='/wp-content/themes/twentyseventeen/style.css?ver=20221101' media='all' />
<link rel='stylesheet' id='twentyseventeen-block-style-css' href='/wp-content/themes/twentyseventeen/assets/css/blocks.css?ver=20220912' media='all' />
<!--[if lt IE 9]>
<link rel='stylesheet' id='twentyseventeen-ie8-css' href='http://wp.test/wp-content/themes/twentyseventeen/assets/css/ie8.css?ver=20161202' media='all' />
<link rel='stylesheet' id='twentyseventeen-ie8-css' href='/wp-content/themes/twentyseventeen/assets/css/ie8.css?ver=20161202' media='all' />
<![endif]-->
<link rel='stylesheet' id='enlighterjs-css' href='http://wp.test/wp-content/plugins/enlighter/cache/enlighterjs.min.css?ver=0A0B0C' media='all' />
<link rel='stylesheet' id='enlighterjs-css' href='/wp-content/plugins/enlighter/cache/enlighterjs.min.css?ver=0A0B0C' media='all' />
<!--[if lt IE 9]>
<script src='http://wp.test/wp-content/themes/twentyseventeen/assets/js/html5.js?ver=20161020' id='html5-js'></script>
<script src='/wp-content/themes/twentyseventeen/assets/js/html5.js?ver=20161020' id='html5-js'></script>
<![endif]-->

View File

@ -88,7 +88,8 @@ func Hook(status int, c *gin.Context, h gin.H, scene, stats int) {
h["HeaderImage"] = getHeaderImage(c)
post := h["post"].(models.Posts)
h["bodyClass"] = bodyClass(scene, int(post.Id))
host, _ := wpconfig.Options.Load("siteurl")
//host, _ := wpconfig.Options.Load("siteurl")
host := ""
img := plugins.Thumbnail(post.Thumbnail.OriginAttachmentData, "thumbnail", host, "thumbnail", "post-thumbnail")
img.Width = img.OriginAttachmentData.Width
img.Height = img.OriginAttachmentData.Height
@ -109,7 +110,7 @@ type comment struct {
plugins.CommonCommentFormat
}
func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, eo, parent string) string {
func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, isTls bool, eo, parent string) string {
templ := plugins.CommonLi()
templ = strings.ReplaceAll(templ, `<a rel="nofollow" class="comment-reply-link"
href="/p/{{PostId}}?replytocom={{CommentId}}#respond" data-commentid="{{CommentId}}" data-postid="{{PostId}}"
@ -120,7 +121,7 @@ func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, eo, pa
data-belowelement="div-comment-{{CommentId}}" data-respondelement="respond"
data-replyto="回复给{{CommentAuthor}}"
aria-label="回复给{{CommentAuthor}}"><svg class="icon icon-mail-reply" aria-hidden="true" role="img"> <use href="#icon-mail-reply" xlink:href="#icon-mail-reply"></use> </svg>回复</a>`)
return plugins.FormatLi(templ, ctx, m, depth, eo, parent)
return plugins.FormatLi(templ, ctx, m, depth, isTls, eo, parent)
}
func postThumbnail(posts []models.Posts, scene int) []models.Posts {
@ -149,12 +150,13 @@ func getHeaderImage(c *gin.Context) (r models.PostThumbnail) {
logs.ErrPrintln(err, "获取主题背景图信息错误")
return
}
host, _ := wpconfig.Options.Load("siteurl")
//host, _ := wpconfig.Options.Load("siteurl")
host := ""
m.Thumbnail = plugins.Thumbnail(m.AttachmentMetadata, "thumbnail", host, "thumbnail", "post-thumbnail", "twentyseventeen-thumbnail-avatar")
if m.Thumbnail.Path != "" {
r = m.Thumbnail
if len(m.AttachmentMetadata.Sizes) > 0 {
r.Srcset = str.Join(r.Path, " 2000vw, ", r.Srcset)
r.Srcset = str.Join(r.Path, " 2000w, ", r.Srcset)
}
}
}