feat: 注册准则阅读控制 + Footer 合规信息
准则阅读(三层控制): - registration.show_guidelines — 弹窗/复选框模式 - registration.force_guidelines — 是否强制倒计时+滚动 - registration.guidelines_timer — 倒计时秒数 Footer 合规(8 字段,空值不显示,链接纯手写): - site.operator_name / site.icp_number / site.icp_license - site.police_number / site.wenwangwen / site.algorithm_filing - site.privacy_url / site.terms_url - 新增 safeHTML 模板函数输出不转义 HTML
This commit is contained in:
@ -61,6 +61,93 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 合规信息 -->
|
||||
<div class="settings-section">
|
||||
<div class="section-title">合规信息</div>
|
||||
<div class="section-body">
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">运营主体</span>
|
||||
<span class="setting-desc">页脚展示的运营方名称</span>
|
||||
</div>
|
||||
<div class="setting-input-wrap">
|
||||
<input type="text" id="setting-site-operator" class="setting-input" placeholder="留空则不显示" value="{{.OperatorName}}">
|
||||
<button class="btn btn-sm btn-primary btn-save" data-key="site.operator_name" data-input="setting-site-operator">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">隐私政策</span>
|
||||
<span class="setting-desc">纯手写 HTML,如 <a href="/privacy">隐私政策</a></span>
|
||||
</div>
|
||||
<div class="setting-input-wrap">
|
||||
<input type="text" id="setting-site-privacy" class="setting-input" placeholder="留空则不显示" value="{{.PrivacyURL}}">
|
||||
<button class="btn btn-sm btn-primary btn-save" data-key="site.privacy_url" data-input="setting-site-privacy">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">服务条款</span>
|
||||
<span class="setting-desc">纯手写 HTML,如 <a href="/terms">服务条款</a></span>
|
||||
</div>
|
||||
<div class="setting-input-wrap">
|
||||
<input type="text" id="setting-site-terms" class="setting-input" placeholder="留空则不显示" value="{{.TermsURL}}">
|
||||
<button class="btn btn-sm btn-primary btn-save" data-key="site.terms_url" data-input="setting-site-terms">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">ICP 备案</span>
|
||||
<span class="setting-desc">纯手写 HTML,如 <a href="https://beian.miit.gov.cn">京ICP备XXXX号</a></span>
|
||||
</div>
|
||||
<div class="setting-input-wrap">
|
||||
<input type="text" id="setting-site-icp" class="setting-input" placeholder="留空则不显示" value="{{.ICPNumber}}">
|
||||
<button class="btn btn-sm btn-primary btn-save" data-key="site.icp_number" data-input="setting-site-icp">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">ICP 经营许可证</span>
|
||||
<span class="setting-desc">纯手写 HTML,留空则不显示</span>
|
||||
</div>
|
||||
<div class="setting-input-wrap">
|
||||
<input type="text" id="setting-site-icp-license" class="setting-input" placeholder="留空则不显示" value="{{.ICPLicense}}">
|
||||
<button class="btn btn-sm btn-primary btn-save" data-key="site.icp_license" data-input="setting-site-icp-license">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">公安备案</span>
|
||||
<span class="setting-desc">纯手写 HTML,留空则不显示</span>
|
||||
</div>
|
||||
<div class="setting-input-wrap">
|
||||
<input type="text" id="setting-site-police" class="setting-input" placeholder="留空则不显示" value="{{.PoliceNumber}}">
|
||||
<button class="btn btn-sm btn-primary btn-save" data-key="site.police_number" data-input="setting-site-police">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">文网文</span>
|
||||
<span class="setting-desc">纯手写 HTML,留空则不显示</span>
|
||||
</div>
|
||||
<div class="setting-input-wrap">
|
||||
<input type="text" id="setting-site-wenwangwen" class="setting-input" placeholder="留空则不显示" value="{{.WenWangWen}}">
|
||||
<button class="btn btn-sm btn-primary btn-save" data-key="site.wenwangwen" data-input="setting-site-wenwangwen">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">算法备案</span>
|
||||
<span class="setting-desc">纯手写 HTML,留空则不显示</span>
|
||||
</div>
|
||||
<div class="setting-input-wrap">
|
||||
<input type="text" id="setting-site-algorithm-filing" class="setting-input" placeholder="留空则不显示" value="{{.AlgorithmFiling}}">
|
||||
<button class="btn btn-sm btn-primary btn-save" data-key="site.algorithm_filing" data-input="setting-site-algorithm-filing">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 维护设置 -->
|
||||
<div class="settings-section">
|
||||
<div class="section-title">维护设置</div>
|
||||
@ -92,6 +179,36 @@
|
||||
<span class="toggle-slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">弹窗显示准则</span>
|
||||
<span class="setting-desc">注册时弹窗展示社区准则(关闭后仅显示复选框)</span>
|
||||
</div>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="registration-show-guidelines" data-key="registration.show_guidelines">
|
||||
<span class="toggle-slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">强制阅读准则</span>
|
||||
<span class="setting-desc">弹窗模式下要求倒计时+滚动到底部(关闭后弹窗可直接确认)</span>
|
||||
</div>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="registration-force-guidelines" data-key="registration.force_guidelines">
|
||||
<span class="toggle-slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">阅读倒计时</span>
|
||||
<span class="setting-desc">强制阅读时的倒计时秒数</span>
|
||||
</div>
|
||||
<div class="setting-input-wrap">
|
||||
<input type="number" id="setting-guidelines-timer" class="setting-input" placeholder="60" min="1" style="width:100px" value="{{.GuidelinesTimer}}">
|
||||
<button class="btn btn-sm btn-primary btn-save" data-key="registration.guidelines_timer" data-input="setting-guidelines-timer">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user