feat: add platform configuration tables and admin settings
Add four DB-backed configuration tables for site-wide settings: site_settings (logo, top-left title, header/footer text with zh/en variants), upload_configs (master switch, default size, storage dir), upload_file_types (per-extension whitelist with per-type size limits), and download_baseurls (multiple download sources with priority/default). - Models, AutoMigrate, and first-run seed (18 common file types) - Process-level config cache warmed at startup, refreshed on admin save - SetUserContext injects cached site settings into templates - base.html renders logo (local upload or external URL), title, header banner, and footer with i18n fallback - Upload validator drives avatar uploads (form + AJAX) through the configured switch/type/size policy - Admin pages for site/upload/download settings with i18n keys Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+100
@@ -85,6 +85,9 @@ var translations = map[Lang]map[string]string{
|
||||
"profile_save": "Save Changes",
|
||||
"profile_saved": "Profile updated.",
|
||||
"profile_wrong_password": "Current password is incorrect.",
|
||||
"profile_upload_invalid": "File type not allowed.",
|
||||
"profile_upload_disabled": "Uploads are currently disabled.",
|
||||
"profile_upload_too_large": "File is too large. Limit: %s",
|
||||
"gender_male": "Male",
|
||||
"gender_female": "Female",
|
||||
"gender_other": "Other",
|
||||
@@ -133,6 +136,53 @@ var translations = map[Lang]map[string]string{
|
||||
"article_col_status": "Status",
|
||||
"article_col_published": "Published",
|
||||
"article_col_actions": "Actions",
|
||||
|
||||
// Settings (platform configuration)
|
||||
"settings_nav": "Platform Settings",
|
||||
"settings_saved": "Settings saved.",
|
||||
"settings_site_title": "Site Settings",
|
||||
"settings_site_desc": "Logo, top-left title, header banner, and footer text.",
|
||||
"settings_logo": "Logo",
|
||||
"settings_logo_url": "Logo URL (external link)",
|
||||
"settings_logo_upload": "Or upload a logo image",
|
||||
"settings_logo_clear": "Remove current logo",
|
||||
"settings_logo_text_zh": "Site Title (Chinese)",
|
||||
"settings_logo_text_en": "Site Title (English)",
|
||||
"settings_header_text_zh": "Header Banner Text (Chinese)",
|
||||
"settings_header_text_en": "Header Banner Text (English)",
|
||||
"settings_footer_text_zh": "Footer Text (Chinese)",
|
||||
"settings_footer_text_en": "Footer Text (English)",
|
||||
"settings_leave_blank": "Leave blank to use the built-in default.",
|
||||
"settings_save": "Save",
|
||||
"settings_upload_title": "Upload Settings",
|
||||
"settings_upload_desc": "Attachment upload policy and permitted file types.",
|
||||
"settings_uploads_enabled":"Enable attachments",
|
||||
"settings_default_size": "Default max size (MB)",
|
||||
"settings_storage_dir": "Storage sub-directory",
|
||||
"settings_file_types": "Permitted File Types",
|
||||
"settings_add_type": "Add File Type",
|
||||
"settings_extension": "Extension",
|
||||
"settings_mime": "MIME Type",
|
||||
"settings_category": "Category",
|
||||
"settings_max_size": "Max Size (MB)",
|
||||
"settings_enabled": "Enabled",
|
||||
"settings_actions": "Actions",
|
||||
"settings_toggle": "Toggle",
|
||||
"settings_delete": "Delete",
|
||||
"settings_update": "Update",
|
||||
"settings_download_title": "Download Settings",
|
||||
"settings_download_desc": "Base URLs used to build attachment download links.",
|
||||
"settings_add_url": "Add Base URL",
|
||||
"settings_url_name": "Name",
|
||||
"settings_base_url": "Base URL",
|
||||
"settings_priority": "Priority",
|
||||
"settings_is_default": "Default",
|
||||
"settings_set_default": "Set Default",
|
||||
"cat_image": "Image",
|
||||
"cat_document": "Document",
|
||||
"cat_archive": "Archive",
|
||||
"cat_video": "Video",
|
||||
"cat_other": "Other",
|
||||
},
|
||||
ZH: {
|
||||
// 导航
|
||||
@@ -203,6 +253,9 @@ var translations = map[Lang]map[string]string{
|
||||
"profile_save": "保存修改",
|
||||
"profile_saved": "个人信息已更新。",
|
||||
"profile_wrong_password": "当前密码错误。",
|
||||
"profile_upload_invalid": "不允许的文件类型。",
|
||||
"profile_upload_disabled": "上传功能已关闭。",
|
||||
"profile_upload_too_large": "文件过大。限制:%s",
|
||||
"gender_male": "男",
|
||||
"gender_female": "女",
|
||||
"gender_other": "其他",
|
||||
@@ -251,6 +304,53 @@ var translations = map[Lang]map[string]string{
|
||||
"article_col_status": "状态",
|
||||
"article_col_published": "发布时间",
|
||||
"article_col_actions": "操作",
|
||||
|
||||
// 平台设置
|
||||
"settings_nav": "平台设置",
|
||||
"settings_saved": "设置已保存。",
|
||||
"settings_site_title": "站点设置",
|
||||
"settings_site_desc": "Logo、左上角标题、顶部横幅文本和页脚文本。",
|
||||
"settings_logo": "Logo",
|
||||
"settings_logo_url": "Logo 链接(外链地址)",
|
||||
"settings_logo_upload": "或上传 Logo 图片",
|
||||
"settings_logo_clear": "移除当前 Logo",
|
||||
"settings_logo_text_zh": "站点标题(中文)",
|
||||
"settings_logo_text_en": "站点标题(英文)",
|
||||
"settings_header_text_zh": "顶部横幅文本(中文)",
|
||||
"settings_header_text_en": "顶部横幅文本(英文)",
|
||||
"settings_footer_text_zh": "页脚文本(中文)",
|
||||
"settings_footer_text_en": "页脚文本(英文)",
|
||||
"settings_leave_blank": "留空则使用内置默认值。",
|
||||
"settings_save": "保存",
|
||||
"settings_upload_title": "上传设置",
|
||||
"settings_upload_desc": "附件上传策略与允许的文件类型。",
|
||||
"settings_uploads_enabled":"启用附件上传",
|
||||
"settings_default_size": "默认最大大小(MB)",
|
||||
"settings_storage_dir": "存储子目录",
|
||||
"settings_file_types": "允许的文件类型",
|
||||
"settings_add_type": "添加文件类型",
|
||||
"settings_extension": "扩展名",
|
||||
"settings_mime": "MIME 类型",
|
||||
"settings_category": "分组",
|
||||
"settings_max_size": "最大大小(MB)",
|
||||
"settings_enabled": "启用",
|
||||
"settings_actions": "操作",
|
||||
"settings_toggle": "切换",
|
||||
"settings_delete": "删除",
|
||||
"settings_update": "更新",
|
||||
"settings_download_title": "下载设置",
|
||||
"settings_download_desc": "用于拼接附件下载链接的基础地址。",
|
||||
"settings_add_url": "添加基础地址",
|
||||
"settings_url_name": "名称",
|
||||
"settings_base_url": "基础地址",
|
||||
"settings_priority": "优先级",
|
||||
"settings_is_default": "默认",
|
||||
"settings_set_default": "设为默认",
|
||||
"cat_image": "图片",
|
||||
"cat_document": "文档",
|
||||
"cat_archive": "压缩包",
|
||||
"cat_video": "视频",
|
||||
"cat_other": "其他",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user