pageConfig

package
v0.2.69 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 7, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FriendShipLinks  = `friendShipLinks`
	SponsorsPage     = `sponsors`
	SiteSettings     = `siteSettings`
	EmailSettings    = `emailSetting`
	Announcement     = `announcement`
	SecuritySettings = `securitySettings`
	PostingSettings  = `postingSettings`
	HttpNotify       = `httpNotify`
	OAuthSettings    = `oauthSettings`
	SiteTheme        = `siteTheme`
	SiteChrome       = `siteChrome`
	Version          = `version`
	Migration        = `migration`
)
View Source
const AppMigrationVersion uint32 = 21

Variables

This section is empty.

Functions

func CreateOrSave

func CreateOrSave(entity *Entity) int64

func GetConfigByPageType added in v0.0.5

func GetConfigByPageType[T any](pageType string, defaultValue T) T

func GetMigrationVersion added in v0.2.6

func GetMigrationVersion() uint32

func NormalizeSiteThemeDefinition added in v0.2.25

func NormalizeSiteThemeDefinition(theme *SiteThemeDefinition, defaults []SiteThemeDefinition, fallback SiteThemeDefinition)

func SaveConfig added in v0.2.69

func SaveConfig(pageType string, config string) error

SaveConfig stores one typed page configuration and reports persistence errors to callers that need transactional configuration reloads.

func SyncMigrationVersion added in v0.2.6

func SyncMigrationVersion(version uint32) error

Types

type AnnouncementConfig added in v0.0.9

type AnnouncementConfig struct {
	Enabled     bool   `json:"enabled"`               // 是否启用公告
	Content     string `json:"content"`               // 公告内容
	PublishedAt string `json:"publishedAt,omitempty"` // 公告生效时间
	HtmlContent string `json:"-"`                     // 预渲染后的 HTML,仅服务端使用
}

AnnouncementConfig 公告设置配置

func (AnnouncementConfig) GetHtmlContent added in v0.1.2

func (itself AnnouncementConfig) GetHtmlContent() string

func (*AnnouncementConfig) PrepareHTML added in v0.1.2

func (itself *AnnouncementConfig) PrepareHTML()

type ChromeGroup added in v0.2.45

type ChromeGroup struct {
	ID        string       `json:"id"`
	Title     string       `json:"title"`
	I18nLabel string       `json:"i18nLabel"`
	Items     []ChromeItem `json:"items"`
}

type ChromeItem added in v0.2.45

type ChromeItem struct {
	ID        string `json:"id"`
	Enabled   bool   `json:"enabled"`
	Type      string `json:"type"`
	Label     string `json:"label"`
	I18nLabel string `json:"i18nLabel"`
	URL       string `json:"url"`
}

type Entity

type Entity struct {
	Id        uint64    `gorm:"primaryKey;column:id;autoIncrement;not null;" json:"id"`                              // 主键
	PageType  string    `gorm:"column:page_type;uniqueIndex;type:varchar(128);not null;default:'';" json:"pageType"` // 页面类型
	Config    string    `gorm:"column:config;type:text;" json:"content"`                                             //
	CreatedAt time.Time `gorm:"column:created_at;index;autoCreateTime;<-:create;" json:"createdAt"`                  //
	UpdatedAt time.Time `gorm:"column:updated_at;autoUpdateTime;" json:"updatedAt"`
}

func GetByPageType

func GetByPageType(pageType string) (entity Entity)

func (*Entity) TableName

func (itself *Entity) TableName() string

type FooterInfo added in v0.1.1

type FooterInfo struct {
	Primary []PItem      `json:"primary"`
	List    []FooterItem `json:"list"`
}

type FooterItem added in v0.0.8

type FooterItem struct {
	Name string `json:"name"`
	Url  string `json:"url"`
}

type FriendLinksGroup added in v0.0.5

type FriendLinksGroup struct {
	Name  string     `json:"name,omitempty"`
	Emoji string     `json:"emoji,omitempty"`
	Color string     `json:"color,omitempty"`
	Links []LinkItem `json:"links"`
}

type HttpNotifyConfig added in v0.2.39

type HttpNotifyConfig struct {
	Enabled   bool                 `json:"enabled"`
	Endpoints []HttpNotifyEndpoint `json:"endpoints"`
}

type HttpNotifyEndpoint added in v0.2.39

type HttpNotifyEndpoint struct {
	Id                 string   `json:"id"`
	Name               string   `json:"name"`
	Enabled            bool     `json:"enabled"`
	URL                string   `json:"url"`
	Secret             string   `json:"secret"`
	Events             []string `json:"events"`
	TimeoutSeconds     int      `json:"timeoutSeconds"`
	FailureCount       int      `json:"failureCount"`
	LastError          string   `json:"lastError"`
	AbnormalTerminated bool     `json:"abnormalTerminated"`
}

type LinkItem added in v0.0.5

type LinkItem struct {
	Name    string `json:"name"`
	Desc    string `json:"desc"`
	Url     string `json:"url"`
	LogoUrl string `json:"logoUrl"`
	Status  int    `json:"status"`
}

type MailSettingsConfig added in v0.0.8

type MailSettingsConfig struct {
	// SMTP服务器设置
	EnableMail   bool   `json:"enableMail"`
	SmtpHost     string `json:"smtpHost"`
	SmtpPort     int    `json:"smtpPort"`
	UseSSL       bool   `json:"useSSL"`
	SmtpUsername string `json:"smtpUsername"`
	SmtpPassword string `json:"smtpPassword"`
	FromName     string `json:"fromName"`
	FromEmail    string `json:"fromEmail"`
}

MailSettingsConfig 邮件设置配置

type OAuthProviderConfig added in v0.2.69

type OAuthProviderConfig struct {
	Enabled      bool   `json:"enabled"`
	ClientID     string `json:"clientId"`
	ClientSecret string `json:"clientSecret"`
}

type OAuthSettingsConfig added in v0.2.69

type OAuthSettingsConfig struct {
	GitHub  OAuthProviderConfig  `json:"github"`
	Google  OAuthProviderConfig  `json:"google"`
	Discord OAuthProviderConfig  `json:"discord"`
	Custom  []OIDCProviderConfig `json:"custom"`
}

OAuthSettingsConfig stores credentials for built-in providers and user-defined OpenID Connect providers. Callback URLs are derived from the site URL and are deliberately not persisted.

type OIDCProviderConfig added in v0.2.69

type OIDCProviderConfig struct {
	Key          string   `json:"key"`
	DisplayName  string   `json:"displayName"`
	Enabled      bool     `json:"enabled"`
	ClientID     string   `json:"clientId"`
	ClientSecret string   `json:"clientSecret"`
	DiscoveryURL string   `json:"discoveryUrl"`
	Scopes       []string `json:"scopes"`
}

type PItem added in v0.0.8

type PItem struct {
	Content string `json:"content"`
}

type PostingContent added in v0.1.1

type PostingContent struct {
	TextControl struct {
		MinPostLength              int `json:"minPostLength"`
		MaxPostLength              int `json:"maxPostLength"`
		MinTitleLength             int `json:"minTitleLength"`
		MaxTitleLength             int `json:"maxTitleLength"`
		NewUserPostCooldownMinutes int `json:"newUserPostCooldownMinutes"`
		MaxDailyTopicsPerUser      int `json:"maxDailyTopicsPerUser"`
	} `json:"textControl"`
	UploadControl struct {
		AllowAttachments             bool     `json:"allowAttachments"`
		AuthorizedExtensions         []string `json:"authorizedExtensions"`
		MaxAttachmentSizeKb          int      `json:"maxAttachmentSizeKb"`
		MaxDailyUploadsPerUser       int      `json:"maxDailyUploadsPerUser"`
		NewUserUploadCooldownMinutes int      `json:"newUserUploadCooldownMinutes"`
	} `json:"uploadControl"`
}

func GetPostingSettingsConfig added in v0.2.62

func GetPostingSettingsConfig(defaultValue PostingContent) PostingContent

type SecurityAndRegistration added in v0.1.1

type SecurityAndRegistration struct {
	EnableSignup            bool     `json:"enableSignup"`
	EnableEmailVerification bool     `json:"enableEmailVerification"`
	AllowedDomains          []string `json:"allowedDomains"`
}

type SiteChromeConfig added in v0.2.45

type SiteChromeConfig struct {
	Header        []ChromeItem  `json:"header"`
	MainMenu      []ChromeItem  `json:"mainMenu"`
	Resources     []ChromeItem  `json:"resources"`
	SidebarGroups []ChromeGroup `json:"sidebarGroups"`
	FooterInfo    FooterInfo    `json:"footerInfo"`
	BrandType     string        `json:"brandType"`
	BrandText     string        `json:"brandText"`
	BrandImage    string        `json:"brandImage"`
}

type SiteSettingsConfig added in v0.0.8

type SiteSettingsConfig struct {
	// 站点基本信息
	SiteName        string `json:"siteName"`
	SiteDescription string `json:"siteDescription"`
	SiteKeywords    string `json:"siteKeywords"`
	SiteUrl         string `json:"siteUrl"`
	SiteEmail       string `json:"siteEmail"`
	ExternalLinks   string `json:"externalLinks"`
}

SiteSettingsConfig 站点设置配置

type SiteThemeConfig added in v0.2.23

type SiteThemeConfig struct {
	Version     int                   `json:"version"`
	Enabled     bool                  `json:"enabled"`
	Themes      []SiteThemeDefinition `json:"themes"`
	Prepublish  *SiteThemePrepublish  `json:"prepublish,omitempty"`
	PublishedAt string                `json:"publishedAt,omitempty"`
}

type SiteThemeDefinition added in v0.2.23

type SiteThemeDefinition struct {
	Name        string          `json:"name"`
	Label       string          `json:"label"`
	ColorScheme string          `json:"colorScheme"`
	Tokens      SiteThemeTokens `json:"tokens"`
}

func FirstSiteThemeDefinition added in v0.2.25

func FirstSiteThemeDefinition(themes []SiteThemeDefinition) SiteThemeDefinition

func NormalizeSiteThemeDefinitions added in v0.2.25

func NormalizeSiteThemeDefinitions(themes []SiteThemeDefinition, defaults []SiteThemeDefinition, fallback SiteThemeDefinition) []SiteThemeDefinition

type SiteThemePrepublish added in v0.2.25

type SiteThemePrepublish struct {
	Enabled   bool                  `json:"enabled"`
	Themes    []SiteThemeDefinition `json:"themes"`
	UpdatedAt string                `json:"updatedAt,omitempty"`
}

type SiteThemeTokens added in v0.2.24

type SiteThemeTokens struct {
	ColorBase100          string `json:"color-base-100"`
	ColorBase200          string `json:"color-base-200"`
	ColorBase300          string `json:"color-base-300"`
	ColorBaseContent      string `json:"color-base-content"`
	ColorIconMuted        string `json:"color-icon-muted"`
	ColorLine             string `json:"color-line"`
	ColorPrimary          string `json:"color-primary"`
	ColorPrimaryContent   string `json:"color-primary-content"`
	ColorSecondary        string `json:"color-secondary"`
	ColorSecondaryContent string `json:"color-secondary-content"`
	ColorAccent           string `json:"color-accent"`
	ColorAccentContent    string `json:"color-accent-content"`
	ColorNeutral          string `json:"color-neutral"`
	ColorNeutralContent   string `json:"color-neutral-content"`
	ColorInfo             string `json:"color-info"`
	ColorInfoContent      string `json:"color-info-content"`
	ColorSuccess          string `json:"color-success"`
	ColorSuccessContent   string `json:"color-success-content"`
	ColorWarning          string `json:"color-warning"`
	ColorWarningContent   string `json:"color-warning-content"`
	ColorError            string `json:"color-error"`
	ColorErrorContent     string `json:"color-error-content"`
	RadiusSelector        string `json:"radius-selector"`
	RadiusField           string `json:"radius-field"`
	RadiusBox             string `json:"radius-box"`
	SizeSelector          string `json:"size-selector"`
	SizeField             string `json:"size-field"`
	Border                string `json:"border"`
	Depth                 string `json:"depth"`
}

func (SiteThemeTokens) AppendCSSVariables added in v0.2.25

func (tokens SiteThemeTokens) AppendCSSVariables(sb *strings.Builder)

func (SiteThemeTokens) BaseColor added in v0.2.25

func (tokens SiteThemeTokens) BaseColor() string

func (*SiteThemeTokens) NormalizeFrom added in v0.2.25

func (tokens *SiteThemeTokens) NormalizeFrom(defaults SiteThemeTokens)

type SponsorItem added in v0.0.8

type SponsorItem struct {
	Link      string `json:"link"`
	Message   string `json:"message"`
	AvatarUrl string `json:"avatarUrl"`
	Name      string `json:"name"`
}

type Sponsors added in v0.0.8

type Sponsors struct {
	Level0 []SponsorItem `json:"level0"`
	Level1 []SponsorItem `json:"level1"`
	Level2 []SponsorItem `json:"level2"`
	Level3 []SponsorItem `json:"level3"`
}

type SponsorsConfig added in v0.0.8

type SponsorsConfig struct {
	Sponsors Sponsors          `json:"sponsors"`
	Content  SponsorsPageIntro `json:"content"`
	Contact  SponsorsContact   `json:"contact"`
	Rules    []SponsorsRule    `json:"rules"`
}

type SponsorsContact added in v0.2.2

type SponsorsContact struct {
	Title       string `json:"title"`
	Description string `json:"description"`
	ButtonText  string `json:"buttonText"`
	ButtonLink  string `json:"buttonLink"`
}

type SponsorsPageIntro added in v0.2.2

type SponsorsPageIntro struct {
	Title       string `json:"title"`
	Description string `json:"description"`
}

type SponsorsRule added in v0.2.2

type SponsorsRule struct {
	Content string `json:"content"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL