mirror of
https://github.com/nezhahq/nezha.git
synced 2025-01-22 12:48:14 -05:00
feat(theme): 自定义主题
This commit is contained in:
parent
a9b1ab9e95
commit
9dbbfac551
18
README.md
18
README.md
@ -22,6 +22,24 @@
|
||||
sudo ./nezha.sh
|
||||
```
|
||||
|
||||
## 主题自定义
|
||||
|
||||
- 默认主题更改进度条颜色示例
|
||||
|
||||
```
|
||||
.ui.green.progress> .bar {
|
||||
background-color: pink !important;
|
||||
}
|
||||
```
|
||||
|
||||
- hotaru 主题更改背景图片示例
|
||||
|
||||
```
|
||||
.hotaru-cover {
|
||||
background: url(https://s3.ax1x.com/2020/12/08/DzHv6A.jpg) center;
|
||||
}
|
||||
```
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 启用 HTTPS
|
||||
|
@ -25,7 +25,7 @@ var (
|
||||
server string
|
||||
clientSecret string
|
||||
debug bool
|
||||
version string
|
||||
version = "v9.9.9"
|
||||
|
||||
rootCmd = &cobra.Command{
|
||||
Use: "nezha-agent",
|
||||
|
@ -29,7 +29,8 @@ func (cp *commonPage) home(c *gin.Context) {
|
||||
dao.ServerLock.RLock()
|
||||
defer dao.ServerLock.RUnlock()
|
||||
data := gin.H{
|
||||
"Servers": dao.ServerList,
|
||||
"Servers": dao.ServerList,
|
||||
"CustomCSS": dao.Conf.Site.CustomCSS,
|
||||
}
|
||||
u, ok := c.Get(model.CtxKeyAuthorizedUser)
|
||||
if ok {
|
||||
|
@ -3,6 +3,7 @@ package controller
|
||||
import (
|
||||
"fmt"
|
||||
"html/template"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"code.cloudfoundry.org/bytefmt"
|
||||
@ -24,6 +25,9 @@ func ServeWeb(port uint) {
|
||||
"tf": func(t time.Time) string {
|
||||
return t.Format("2006年1月2号")
|
||||
},
|
||||
"css": func(s string) template.CSS {
|
||||
return template.CSS(s)
|
||||
},
|
||||
"stf": func(s uint64) string {
|
||||
return time.Unix(int64(s), 0).Format("2006年1月2号 15:04")
|
||||
},
|
||||
@ -33,6 +37,9 @@ func ServeWeb(port uint) {
|
||||
"bf": func(b uint64) string {
|
||||
return bytefmt.ByteSize(b)
|
||||
},
|
||||
"ts": func(s string) string {
|
||||
return strings.TrimSpace(s)
|
||||
},
|
||||
})
|
||||
r.Static("/static", "resource/static")
|
||||
r.LoadHTMLGlob("resource/template/**/*")
|
||||
|
@ -127,9 +127,10 @@ func (ma *memberAPI) logout(c *gin.Context) {
|
||||
}
|
||||
|
||||
type settingForm struct {
|
||||
Title string
|
||||
Admin string
|
||||
Theme string
|
||||
Title string
|
||||
Admin string
|
||||
Theme string
|
||||
CustomCSS string
|
||||
}
|
||||
|
||||
func (ma *memberAPI) updateSetting(c *gin.Context) {
|
||||
@ -143,6 +144,7 @@ func (ma *memberAPI) updateSetting(c *gin.Context) {
|
||||
}
|
||||
dao.Conf.Site.Brand = sf.Title
|
||||
dao.Conf.Site.Theme = sf.Theme
|
||||
dao.Conf.Site.CustomCSS = sf.CustomCSS
|
||||
dao.Conf.GitHub.Admin = sf.Admin
|
||||
if err := dao.Conf.Save(); err != nil {
|
||||
c.JSON(http.StatusOK, model.Response{
|
||||
|
@ -17,6 +17,7 @@ type Config struct {
|
||||
Brand string // 站点名称
|
||||
CookieName string // 浏览器 Cookie 名称
|
||||
Theme string
|
||||
CustomCSS string
|
||||
}
|
||||
GitHub struct {
|
||||
Admin string // 管理员ID列表
|
||||
|
@ -18,6 +18,10 @@
|
||||
<option value="hotaru">CakeMine-Hotaru</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>自定义CSS</label>
|
||||
<textarea name="CustomCSS" value="{{.Conf.Site.CustomCSS}}"></textarea>
|
||||
</div>
|
||||
<button class="ui button" type="submit">保存</button>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -1,5 +1,10 @@
|
||||
{{define "theme-default/home"}}
|
||||
{{template "common/header" .}}
|
||||
{{if ts .CustomCSS}}
|
||||
<style>
|
||||
{{.CustomCSS|css}}
|
||||
</style>
|
||||
{{end}}
|
||||
{{template "common/menu" .}}
|
||||
<div class="nb-container">
|
||||
<div class="ui container">
|
||||
|
@ -19,6 +19,11 @@
|
||||
<link rel="stylesheet" href="/static/theme-hotaru/css/core.css?v202012092025" type="text/css">
|
||||
<link rel="stylesheet" href="/static/theme-hotaru/css/main.css?v202012092025" type="text/css">
|
||||
<link rel="stylesheet" href="/static/theme-hotaru/css/darkmode.css?v202012092025" type="text/css">
|
||||
{{if ts .CustomCSS}}
|
||||
<style>
|
||||
{{.CustomCSS|css}}
|
||||
</style>
|
||||
{{end}}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
Loading…
Reference in New Issue
Block a user