40 lines
816 B
Go
40 lines
816 B
Go
package controllers
|
|
|
|
import (
|
|
"go_blog/themes"
|
|
"os"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// ListThemes 获取可用主题列表
|
|
func ListThemes(c *gin.Context) {
|
|
// 从主题管理器获取当前主题
|
|
tm, exists := c.Get("ThemeManager")
|
|
if !exists {
|
|
c.JSON(500, gin.H{"error": "主题管理器未找到"})
|
|
return
|
|
}
|
|
themeManager := tm.(*themes.ThemeManager)
|
|
|
|
// 读取 web/themes 目录下的所有主题文件夹
|
|
themesDir := "web/themes"
|
|
entries, err := os.ReadDir(themesDir)
|
|
if err != nil {
|
|
c.JSON(500, gin.H{"error": "读取主题目录失败: " + err.Error()})
|
|
return
|
|
}
|
|
|
|
var themeList []string
|
|
for _, entry := range entries {
|
|
if entry.IsDir() {
|
|
themeList = append(themeList, entry.Name())
|
|
}
|
|
}
|
|
|
|
c.JSON(200, gin.H{
|
|
"current": themeManager.CurrentTheme(),
|
|
"themes": themeList,
|
|
})
|
|
}
|