mirror of
https://github.com/yv1ing/MollyBlog.git
synced 2025-09-16 14:53:45 +08:00
new: Added about me page and fixed some bugs
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user