Files
go_blog/handlers/helpers.go
T
kevinandClaude Fable 5 0c5bcde7da feat: make home welcome/subtitle configurable and fix settings render
Add home_welcome and home_subtitle fields (zh/en) to site_settings so
the home page heading and subtitle are editable from the admin panel,
falling back to the i18n defaults when empty. Wire them through the
config cache, SetUserContext, DefaultData, and home.html.

Fix the /admin/settings/site page rendering blank: Go templates cannot
invoke methods on an interface{}-wrapped struct, so pre-compute
SiteLogoIsURL in the handler instead of calling .Site.LogoIsURL() in
the template.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-21 20:41:45 +08:00

61 lines
1.8 KiB
Go

package handlers
import (
"github.com/gin-gonic/gin"
)
// DefaultData builds a base gin.H map populated with values set by the
// SetUserContext middleware (translations, language, auth state). Handlers
// add page-specific fields on top and pass it to c.HTML().
func DefaultData(c *gin.Context) gin.H {
tr, _ := c.Get("tr")
isLoggedIn, _ := c.Get("is_logged_in")
username, _ := c.Get("username")
lang, _ := c.Get("lang")
switchLang, _ := c.Get("switch_lang")
avatar, _ := c.Get("avatar")
displayName, _ := c.Get("display_name")
role, _ := c.Get("role")
siteSetting, _ := c.Get("site_setting")
siteLogo, _ := c.Get("site_logo")
siteLogoIsURL, _ := c.Get("site_logo_is_url")
siteLogoText, _ := c.Get("site_logo_text")
siteHeaderText, _ := c.Get("site_header_text")
siteHomeWelcome, _ := c.Get("site_home_welcome")
siteHomeSubtitle, _ := c.Get("site_home_subtitle")
siteFooterText, _ := c.Get("site_footer_text")
return gin.H{
"Tr": tr,
"IsLoggedIn": isLoggedIn,
"Username": username,
"Lang": lang,
"SwitchLang": switchLang,
"Avatar": avatar,
"DisplayName": displayName,
"Role": role,
"SiteSetting": siteSetting,
"SiteLogo": siteLogo,
"SiteLogoIsURL": siteLogoIsURL,
"SiteLogoText": siteLogoText,
"SiteHeaderText": siteHeaderText,
"SiteHomeWelcome": siteHomeWelcome,
"SiteHomeSubtitle": siteHomeSubtitle,
"SiteFooterText": siteFooterText,
}
}
// getTr is a convenience helper that returns the translation map from the
// Gin context, falling back to an empty map if not set.
func getTr(c *gin.Context) map[string]string {
tr, ok := c.Get("tr")
if !ok {
return map[string]string{}
}
m, ok := tr.(map[string]string)
if !ok {
return map[string]string{}
}
return m
}