feat: 社区准则改为数据库存储
- AuthController 注入 SiteSettings 依赖,RegisterPage 优先从 DB 读取准则 - DB 中 site.guidelines 为空时 fallback 到静态 guidelines.html 文件 - 管理后台站点设置页新增「内容管理」分区,textarea 编辑社区准则 - 添加准则编辑区垂直布局样式
This commit is contained in:
@ -115,6 +115,23 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 内容管理 -->
|
||||
<div class="settings-section">
|
||||
<div class="section-title">内容管理</div>
|
||||
<div class="section-body">
|
||||
<div class="setting-item setting-item-vertical">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">社区准则</span>
|
||||
<span class="setting-desc">注册时需用户阅读并同意,支持 HTML 格式</span>
|
||||
</div>
|
||||
<div class="setting-input-block">
|
||||
<textarea id="setting-site-guidelines" class="setting-textarea" rows="12" placeholder="留空则使用默认准则文件"></textarea>
|
||||
<button class="btn btn-sm btn-primary btn-save-block" data-key="site.guidelines" data-input="setting-site-guidelines">保存准则</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 通用设置 -->
|
||||
<div class="settings-section">
|
||||
<div class="section-title">其他设置</div>
|
||||
|
||||
@ -58,6 +58,35 @@
|
||||
.btn-save { width: 56px; text-align: center; }
|
||||
.btn-save:disabled { opacity: 0.5; cursor: not-allowed; }
|
||||
|
||||
/* --- 垂直布局设置项(用于准则等大文本) --- */
|
||||
.setting-item-vertical {
|
||||
flex-direction: column; align-items: stretch;
|
||||
}
|
||||
.setting-item-vertical .setting-info {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.setting-input-block {
|
||||
display: flex; flex-direction: column; gap: 10px;
|
||||
}
|
||||
.setting-textarea {
|
||||
padding: 10px 12px;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 4px;
|
||||
font-size: 13px; line-height: 1.6;
|
||||
font-family: 'Courier New', Consolas, monospace;
|
||||
resize: vertical;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
outline: none;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
.setting-textarea:focus { border-color: var(--primary); }
|
||||
.btn-save-block {
|
||||
align-self: flex-end;
|
||||
min-width: 80px;
|
||||
}
|
||||
.btn-save-block:disabled { opacity: 0.5; cursor: not-allowed; }
|
||||
|
||||
/* --- 空状态 --- */
|
||||
.settings-empty {
|
||||
text-align: center; padding: 28px 20px;
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
// 已有专属 UI 的设置 key,不在"其他设置"中重复显示
|
||||
var DEDICATED_KEYS = {
|
||||
'site.framework': true, 'site.copyright_start': true,
|
||||
'site.guidelines': true,
|
||||
'maintenance.enabled': true,
|
||||
'registration.enabled': true,
|
||||
'audit.enabled': true, 'audit.username_audit': true, 'audit.avatar_audit': true, 'audit.bio_audit': true
|
||||
@ -51,6 +52,18 @@
|
||||
// 文本输入保存按钮
|
||||
bindSaveButtons();
|
||||
|
||||
// 社区准则文本域
|
||||
var guidelinesEl = document.getElementById('setting-site-guidelines');
|
||||
if (guidelinesEl) {
|
||||
guidelinesEl.value = allSettings['site.guidelines'] || '';
|
||||
var guidelinesBtn = document.querySelector('[data-key="site.guidelines"]');
|
||||
if (guidelinesBtn) {
|
||||
guidelinesBtn.addEventListener('click', function() {
|
||||
updateTextSetting('site.guidelines', guidelinesEl.value, guidelinesBtn);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 其他设置(过滤已有专属UI的key)
|
||||
renderOtherSettings(allSettings);
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user