Glance {{ if ne "dev" .App.Version }}
{{ .App.Version }}{{ else }}({{ .App.Version }}){{ end }}
diff --git a/internal/glance/config.go b/internal/glance/config.go
index 2d73a5c..b0da40e 100644
--- a/internal/glance/config.go
+++ b/internal/glance/config.go
@@ -8,10 +8,10 @@ import (
)
type Config struct {
- Server Server `yaml:"server"`
- Theme Theme `yaml:"theme"`
- Pages []Page `yaml:"pages"`
- Branding Branding `yaml:"branding"`
+ Server Server `yaml:"server"`
+ Theme Theme `yaml:"theme"`
+ Branding Branding `yaml:"branding"`
+ Pages []Page `yaml:"pages"`
}
func NewConfigFromYml(contents io.Reader) (*Config, error) {
@@ -51,9 +51,7 @@ func NewConfig() *Config {
config.Server.Host = ""
config.Server.Port = 8080
- config.Branding.Show = true
- config.Branding.Name = "Glance"
- config.Branding.ShortName = "G"
+ config.Branding.LogoText = "G"
return config
}
diff --git a/internal/glance/glance.go b/internal/glance/glance.go
index d31d08f..c48fe38 100644
--- a/internal/glance/glance.go
+++ b/internal/glance/glance.go
@@ -49,9 +49,10 @@ type Server struct {
}
type Branding struct {
- Show bool `yaml:show`
- Name string `yaml:name`
- ShortName string `yaml:"short-name"`
+ HideFooter bool `yaml:"hide-footer"`
+ LogoText string `yaml:"logo-text"`
+ LogoURL string `yaml:"logo-url"`
+ FaviconURL string `yaml:"favicon-url"`
}
type Column struct {
@@ -108,6 +109,14 @@ func titleToSlug(s string) string {
return s
}
+func (a *Application) TransformUserDefinedAssetPath(path string) string {
+ if strings.HasPrefix(path, "/assets/") {
+ return a.Config.Server.BaseURL + path
+ }
+
+ return path
+}
+
func NewApplication(config *Config) (*Application, error) {
if len(config.Pages) == 0 {
return nil, fmt.Errorf("no pages configured")
@@ -120,6 +129,7 @@ func NewApplication(config *Config) (*Application, error) {
widgetByID: make(map[uint64]widget.Widget),
}
+ app.Config.Server.AssetsHash = assets.PublicFSHash
app.slugToPage[""] = &config.Pages[0]
for p := range config.Pages {
@@ -140,13 +150,16 @@ func NewApplication(config *Config) (*Application, error) {
config = &app.Config
config.Server.BaseURL = strings.TrimRight(config.Server.BaseURL, "/")
+ config.Theme.CustomCSSFile = app.TransformUserDefinedAssetPath(config.Theme.CustomCSSFile)
- if config.Server.BaseURL != "" &&
- config.Theme.CustomCSSFile != "" &&
- strings.HasPrefix(config.Theme.CustomCSSFile, "/assets/") {
- config.Theme.CustomCSSFile = config.Server.BaseURL + config.Theme.CustomCSSFile
+ if config.Branding.FaviconURL == "" {
+ config.Branding.FaviconURL = app.AssetPath("favicon.png")
+ } else {
+ config.Branding.FaviconURL = app.TransformUserDefinedAssetPath(config.Branding.FaviconURL)
}
+ config.Branding.LogoURL = app.TransformUserDefinedAssetPath(config.Branding.LogoURL)
+
return app, nil
}
@@ -244,8 +257,6 @@ func (a *Application) AssetPath(asset string) string {
}
func (a *Application) Serve() error {
- a.Config.Server.AssetsHash = assets.PublicFSHash
-
// TODO: add gzip support, static files must have their gzipped contents cached
// TODO: add HTTPS support
mux := http.NewServeMux()