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:
2026-06-21 23:50:52 +08:00
parent 0014bdb9ff
commit 1933ea86b4
9 changed files with 271 additions and 28 deletions

View File

@ -1,6 +1,19 @@
<footer>
<div class="container footer-content">
<p class="copyright">&copy; {{.CopyrightStart}}-{{.CurrentYear}} {{.SiteName}}{{if .Framework}} | {{.Framework}}{{end}}{{if .CanAccessAdmin}} | <a href="/admin">管理面板</a>{{end}}</p>
{{$hasCompliance := or .OperatorName .ICPNumber .ICPLicense .PoliceNumber .WenWangWen .AlgorithmFiling .PrivacyURL .TermsURL}}
{{if $hasCompliance}}
<p class="footer-compliance">
{{if .PrivacyURL}}{{if ne .PrivacyURL ""}}{{safeHTML .PrivacyURL}}{{end}}{{end}}
{{if .TermsURL}}{{if ne .TermsURL ""}} | {{safeHTML .TermsURL}}{{end}}{{end}}
{{if .OperatorName}}{{if ne .OperatorName ""}} | {{.OperatorName}}{{end}}{{end}}
{{if .ICPNumber}}{{if ne .ICPNumber ""}} | {{safeHTML .ICPNumber}}{{end}}{{end}}
{{if .ICPLicense}}{{if ne .ICPLicense ""}} | {{safeHTML .ICPLicense}}{{end}}{{end}}
{{if .PoliceNumber}}{{if ne .PoliceNumber ""}} | {{safeHTML .PoliceNumber}}{{end}}{{end}}
{{if .WenWangWen}}{{if ne .WenWangWen ""}} | {{safeHTML .WenWangWen}}{{end}}{{end}}
{{if .AlgorithmFiling}}{{if ne .AlgorithmFiling ""}} | {{safeHTML .AlgorithmFiling}}{{end}}{{end}}
</p>
{{end}}
</div>
</footer>
<script src="/static/js/common.js?v={{assetV "/static/js/common.js"}}" nonce="{{.CSPNonce}}"></script>