From ddcc6c2d2e11f8c9aa8d120cd70bb6ad515c3b93 Mon Sep 17 00:00:00 2001 From: deepzz0 Date: Sun, 14 Jan 2018 13:12:59 +0800 Subject: [PATCH] auto archiving by year when the month great than 12 --- db.go | 45 +++++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/db.go b/db.go index 6008ea8..3608250 100644 --- a/db.go +++ b/db.go @@ -159,7 +159,8 @@ func generateMarkdown() { buffer.WriteString("\n\n") for _, artc := range serie.Articles { //eg. * [标题一](/post/hello-world.html) (Man 02, 2006) - buffer.WriteString("* [" + artc.Title + "](/post/" + artc.Slug + ".html) (" + artc.CreateTime.Format("Jan 02, 2006") + ")\n") + buffer.WriteString("* [" + artc.Title + "](/post/" + artc.Slug + + ".html) (" + artc.CreateTime.Format("Jan 02, 2006") + ")\n") } buffer.WriteByte('\n') } @@ -167,15 +168,31 @@ func generateMarkdown() { case ARCHIVE_MD: sort.Sort(Ei.Archives) var buffer bytes.Buffer - buffer.WriteString(Ei.ArchivesSay) - buffer.WriteString("\n\n") + buffer.WriteString(Ei.ArchivesSay + "\n") + + var ( + currentYear string + gt12Month = len(Ei.Archives) > 12 + ) for _, archive := range Ei.Archives { - buffer.WriteString(fmt.Sprintf("### %s", archive.Time.Format("2006年01月"))) - buffer.WriteString("\n\n") - for _, artc := range archive.Articles { - buffer.WriteString("* [" + artc.Title + "](/post/" + artc.Slug + ".html) (" + artc.CreateTime.Format("Jan 02, 2006") + ")\n") + if gt12Month { + year := archive.Time.Format("2006年") + if currentYear != year { + currentYear = year + buffer.WriteString(fmt.Sprintf("\n### %s\n\n", archive.Time.Format("2006年"))) + } + } else { + buffer.WriteString(fmt.Sprintf("\n### %s\n\n", archive.Time.Format("2006年2月"))) + } + for i, artc := range archive.Articles { + if i == 0 && gt12Month { + buffer.WriteString("* *[" + artc.Title + "](/post/" + artc.Slug + + ".html)* (" + artc.CreateTime.Format("Jan 02, 2006") + ")\n") + } else { + buffer.WriteString("* [" + artc.Title + "](/post/" + artc.Slug + + ".html) (" + artc.CreateTime.Format("Jan 02, 2006") + ")\n") + } } - buffer.WriteByte('\n') } Ei.PageArchives = string(renderPage(buffer.Bytes())) } @@ -330,7 +347,8 @@ func upArticle(artc *Article, needSort bool) { return } } - Ei.Archives = append(Ei.Archives, &Archive{Time: artc.CreateTime, Articles: SortArticles{artc}}) + Ei.Archives = append(Ei.Archives, &Archive{Time: artc.CreateTime, + Articles: SortArticles{artc}}) if needSort { Ei.CH <- ARCHIVE_MD } @@ -494,7 +512,8 @@ func timer() { delT := time.NewTicker(time.Duration(setting.Conf.General.Clean) * time.Hour) for { <-delT.C - mgo.Remove(DB, COLLECTION_ARTICLE, mgo.M{"deletetime": mgo.M{"$gt": time.Time{}, "$lt": time.Now().Add(time.Duration(setting.Conf.General.Trash) * time.Hour)}}) + mgo.Remove(DB, COLLECTION_ARTICLE, mgo.M{"deletetime": mgo.M{"$gt": time.Time{}, + "$lt": time.Now().Add(time.Duration(setting.Conf.General.Trash) * time.Hour)}}) } } @@ -510,7 +529,8 @@ func RemoveArticle(id int32) error { // 恢复删除文章到草稿箱 func RecoverArticle(id int32) error { - return mgo.Update(DB, COLLECTION_ARTICLE, mgo.M{"id": id}, mgo.M{"$set": mgo.M{"deletetime": time.Time{}, "isdraft": true}}) + return mgo.Update(DB, COLLECTION_ARTICLE, mgo.M{"id": id}, + mgo.M{"$set": mgo.M{"deletetime": time.Time{}, "isdraft": true}}) } // 更新文章 @@ -539,7 +559,8 @@ func AddSerie(name, slug, desc string) error { // 更新专题 func UpdateSerie(serie *Serie) error { Ei.CH <- SERIES_MD - return mgo.Update(DB, COLLECTION_ACCOUNT, mgo.M{"username": Ei.Username, "blogger.series.id": serie.ID}, mgo.M{"$set": mgo.M{"blogger.series.$": serie}}) + return mgo.Update(DB, COLLECTION_ACCOUNT, mgo.M{"username": Ei.Username, + "blogger.series.id": serie.ID}, mgo.M{"$set": mgo.M{"blogger.series.$": serie}}) } // 删除专题