Forum: Anpinnen pro Thema/global + Admin-Berechtigung (v1303)
- Anpinnen-Scope: pin_scope ('global' | 'kategorie'). Global haelt oben in
jeder Ansicht; Themen-Pin nur in der gefilterten Kategorie (nicht in 'Alle').
- Bugfix Berechtigung: Forum pruefte nur is_moderator -> Admins ohne das Flag
wurden ausgesperrt. Neuer Helper _can_moderate() = rolle in (admin,moderator)
ODER is_moderator, an allen 7 Forum-Checks + beiden Frontend-isMod-Gates.
- Thread-Detail-Toolbar (nur Admin/Mod): 'Global anpinnen' / 'Im Thema anpinnen'
/ 'Loesen' + Status- und Badge-Anzeige nach Scope.
- DB-Migration forum_threads.pin_scope (idempotent, Default 'global').
- Tests: tests/test_forum_pinning.py (Berechtigung + Scope-Sortierung).
This commit is contained in:
parent
901df5468c
commit
ac0814e687
9 changed files with 175 additions and 36 deletions
|
|
@ -86,14 +86,14 @@
|
|||
<title>Ban Yaro</title>
|
||||
|
||||
<!-- Theme + theme-color Statusleiste vor CSS setzen -->
|
||||
<script src="/js/boot-early.js?v=1302"></script>
|
||||
<script src="/js/boot-early.js?v=1303"></script>
|
||||
|
||||
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
|
||||
<link rel="stylesheet" href="/css/design-system.css?v=1302">
|
||||
<link rel="stylesheet" href="/css/layout.css?v=1302">
|
||||
<link rel="stylesheet" href="/css/components.css?v=1302">
|
||||
<link rel="stylesheet" href="/css/utilities.css?v=1302">
|
||||
<link rel="stylesheet" href="/css/lists.css?v=1302">
|
||||
<link rel="stylesheet" href="/css/design-system.css?v=1303">
|
||||
<link rel="stylesheet" href="/css/layout.css?v=1303">
|
||||
<link rel="stylesheet" href="/css/components.css?v=1303">
|
||||
<link rel="stylesheet" href="/css/utilities.css?v=1303">
|
||||
<link rel="stylesheet" href="/css/lists.css?v=1303">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
|
@ -624,12 +624,12 @@
|
|||
<div id="modal-container"></div>
|
||||
|
||||
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
|
||||
<script src="/js/api.js?v=1302"></script>
|
||||
<script src="/js/ui.js?v=1302"></script>
|
||||
<script src="/js/app.js?v=1302"></script>
|
||||
<script src="/js/worlds.js?v=1302"></script>
|
||||
<script src="/js/offline-indicator.js?v=1302"></script>
|
||||
<script src="/js/contact-form.js?v=1302"></script>
|
||||
<script src="/js/api.js?v=1303"></script>
|
||||
<script src="/js/ui.js?v=1303"></script>
|
||||
<script src="/js/app.js?v=1303"></script>
|
||||
<script src="/js/worlds.js?v=1303"></script>
|
||||
<script src="/js/offline-indicator.js?v=1303"></script>
|
||||
<script src="/js/contact-form.js?v=1303"></script>
|
||||
|
||||
<!-- Feature-Seiten werden lazy geladen -->
|
||||
|
||||
|
|
@ -639,7 +639,7 @@
|
|||
|
||||
|
||||
<!-- Boot: Offline-Banner + SW-Registration (extrahiert für CSP) -->
|
||||
<script src="/js/boot.js?v=1302"></script>
|
||||
<script src="/js/boot.js?v=1303"></script>
|
||||
|
||||
|
||||
</body>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue