new: Added about me page and fixed some bugs

This commit is contained in:
2024-12-19 11:23:19 +08:00
parent 0d419dabd1
commit cbd6d07d52
15 changed files with 267 additions and 40 deletions

View File

@@ -37,11 +37,6 @@ type MApp struct {
SrcFiles []model.MFileInfo
}
var (
SRC = config.MConfigInstance.Storage.SRC // source markdown files
DST = config.MConfigInstance.Storage.DST // destination html files
)
func init() {
log.SetPrefix("[MollyBlog] ")
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
@@ -116,17 +111,19 @@ func (ma *MApp) resetStorage() error {
}
var err error
err = os.RemoveAll(ma.Config.Storage.SRC)
if err != nil {
return err
}
_, err = os.Stat(ma.Config.Storage.SRC)
if os.IsNotExist(err) {
err = os.MkdirAll(ma.Config.Storage.SRC, os.ModePerm)
if ma.Config.Storage.AutoPull {
err = os.RemoveAll(ma.Config.Storage.SRC)
if err != nil {
return err
}
_, err = os.Stat(ma.Config.Storage.SRC)
if os.IsNotExist(err) {
err = os.MkdirAll(ma.Config.Storage.SRC, os.ModePerm)
if err != nil {
return err
}
}
}
err = os.RemoveAll(ma.Config.Storage.DST)

View File

@@ -429,6 +429,7 @@ func (ma *MApp) UpdateBlogHandler(ctx *gin.Context) {
return
}
// load posts
err = ma.loadMarkdownFiles()
if err != nil {
log.Printf("load markdown files failed, err: %v\n", err)
@@ -443,9 +444,44 @@ func (ma *MApp) UpdateBlogHandler(ctx *gin.Context) {
return
}
// load about me
aboutSrc := fmt.Sprintf("%s/%s.md", ma.Config.MSite.About.SRC, ma.Config.MSite.About.Filename)
aboutDst := fmt.Sprintf("%s/%s.html", ma.Config.MSite.About.DST, ma.Config.MSite.About.Filename)
err = ma.parseSingleMarkdown(aboutSrc, aboutDst)
if err != nil {
log.Printf("parse about me failed, err: %v\n", err)
_ = ctx.Error(err)
return
}
// parse post index
ma.loadPostIndex()
log.Println("update blog success")
ctx.JSON(http.StatusOK, gin.H{"msg": "ok"})
}
func (ma *MApp) AboutHandler(ctx *gin.Context) {
dstFile := fmt.Sprintf("%s/%s.html", ma.Config.MSite.About.DST, ma.Config.MSite.About.Filename)
aboutFile, _ := os.OpenFile(dstFile, os.O_RDONLY, 0666)
aboutBytes, _ := io.ReadAll(aboutFile)
// return some basic information
resData := gin.H{
"site_info": gin.H{
"logo": ma.Config.MSite.Info.Logo,
"title": ma.Config.MSite.Info.Title,
"author": ma.Config.MSite.Info.Author,
"language": ma.Config.MSite.Info.Language,
"copyright": template.HTML(ma.Config.MSite.Info.Copyright),
},
"menu": ma.Config.MSite.Menu,
"about": gin.H{
"title": ma.Config.MSite.About.Title,
"content": template.HTML(aboutBytes),
"success": true,
},
}
ctx.HTML(http.StatusOK, "about.html", resData)
}

View File

@@ -156,3 +156,35 @@ func (ma *MApp) parseMarkdowns() error {
model.SortPostsByDate(ma.Posts)
return nil
}
func (ma *MApp) parseSingleMarkdown(src, dst string) error {
// read markdown file
_mdFile, err := os.Open(src)
if err != nil {
return err
}
defer _mdFile.Close()
_mdByte, err := io.ReadAll(_mdFile)
if err != nil {
return err
}
// convert into html format and save to html file
_htmlFile, err := os.Create(dst)
if err != nil {
return err
}
defer _htmlFile.Close()
// set options to lute
ma.lute.SetToC(true)
_htmlByte := ma.lute.Markdown(src, _mdByte)
_, err = _htmlFile.Write(_htmlByte)
if err != nil {
return err
}
return nil
}

View File

@@ -4,6 +4,7 @@ func (ma *MApp) loadRoutes() {
ma.engine.Use(ma.AuthMiddleware)
ma.engine.GET("/", ma.IndexHandler)
ma.engine.GET("/about", ma.AboutHandler)
ma.engine.GET("/search", ma.SearchHandler)
ma.engine.GET("/archive", ma.ArchiveHandler)
ma.engine.GET("/post/:hash", ma.PostHandler)