Rollen neu geschnitten, Seitenzahl korrigiert, frühere Konten
Der Forums-Abgleich las von 25 Archivseiten nur zwei. WoltLab verlinkt in der Blätterleiste nur die Nachbarseiten und führt die Gesamtzahl in einem eigenen Element; ausgewertet wurden aber die Links. Alles jenseits von Seite zwei war damit unsichtbar - etwa ein Antrag auf Seite vier, der deshalb nie ankam. Die Rollen verlaufen jetzt zwischen erfassen und gewähren statt zwischen Alltag und Verwaltung: Editoren erfassen Käufe und führen Datei-Import, GExtension- und Forums-Abgleich samt Entscheidung über Anträge durch. Kulanz zu vergeben bleibt Administratoren, ebenso das Auflösen unklarer Pakete, weil dabei Kulanz entstehen kann. Dazu lassen sich frühere Steam- und Forumskonten am Spieler hinterlegen. Abgleich und Import prüfen sie mit, sodass ein Kontowechsel die Zuordnung nicht abreißen lässt. Steam-Kennungen werden dabei auf dieselbe Form gebracht wie die Hauptangabe, und eine Kennung kann nicht zwei Spielern gehören.
This commit is contained in:
@@ -16,7 +16,7 @@ import type {
|
||||
|
||||
export default function Forum() {
|
||||
const { can } = useSession();
|
||||
const admin = can('ADMIN');
|
||||
const darfEntscheiden = can('EDITOR');
|
||||
|
||||
const [threads, setThreads] = useState<ForumThread[]>([]);
|
||||
const [notices, setNotices] = useState<ForumThread[]>([]);
|
||||
@@ -88,7 +88,7 @@ export default function Forum() {
|
||||
die hier mit passendem Forum-Namen erfasst sind.
|
||||
</p>
|
||||
</div>
|
||||
{admin && (
|
||||
{darfEntscheiden && (
|
||||
<button type="button" className="btn btn-primary" disabled={busy} onClick={() => void scan()}>
|
||||
{busy ? 'Lese Forum …' : 'Forum abgleichen'}
|
||||
</button>
|
||||
@@ -124,7 +124,7 @@ export default function Forum() {
|
||||
<a className="btn btn-small btn-ghost" href={thread.url} target="_blank" rel="noreferrer">
|
||||
Thread öffnen
|
||||
</a>
|
||||
{admin && (
|
||||
{darfEntscheiden && (
|
||||
<button type="button" className="btn btn-small" onClick={() => void dismiss(thread)}>
|
||||
Erledigt
|
||||
</button>
|
||||
@@ -141,7 +141,7 @@ export default function Forum() {
|
||||
|
||||
{threads.length === 0 ? (
|
||||
<p className="muted">
|
||||
Keine offenen Anträge. {admin && 'Über „Forum abgleichen" nach neuen suchen.'}
|
||||
Keine offenen Anträge. {darfEntscheiden && 'Über „Forum abgleichen" nach neuen suchen.'}
|
||||
</p>
|
||||
) : (
|
||||
<ul className="cc-list">
|
||||
@@ -170,12 +170,12 @@ export default function Forum() {
|
||||
</p>
|
||||
</div>
|
||||
<div className="cc-actions">
|
||||
{admin && !thread.player && (
|
||||
{darfEntscheiden && !thread.player && (
|
||||
<button type="button" className="btn btn-small" onClick={() => setAssigning(thread)}>
|
||||
Spieler zuordnen
|
||||
</button>
|
||||
)}
|
||||
{admin && (
|
||||
{darfEntscheiden && (
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-small btn-primary"
|
||||
|
||||
Reference in New Issue
Block a user