From 01126207dc920a0a7a64e32d696a0896b917b5f5 Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Tue, 28 Jul 2026 20:22:50 +0200 Subject: [PATCH] fix(admin): live online widget, ticket queue clarity, i18n+contract coverage Co-authored-by: Cursor --- src/app/admin/commandocentrum/page.tsx | 25 ++++++- src/app/admin/help-tickets/page.tsx | 14 ++++ src/app/admin/tickets/page.tsx | 14 ++++ src/lib/admin-operations-contract.test.ts | 33 +++++++++ src/messages/bg.json | 85 +++++++++++++++++++++-- src/messages/cs.json | 85 +++++++++++++++++++++-- src/messages/da.json | 85 +++++++++++++++++++++-- src/messages/de.json | 85 +++++++++++++++++++++-- src/messages/el.json | 85 +++++++++++++++++++++-- src/messages/en.json | 12 ++-- src/messages/es.json | 85 +++++++++++++++++++++-- src/messages/fr.json | 85 +++++++++++++++++++++-- src/messages/hr.json | 85 +++++++++++++++++++++-- src/messages/hu.json | 85 +++++++++++++++++++++-- src/messages/it.json | 18 +++-- src/messages/nl.json | 18 +++-- src/messages/no.json | 85 +++++++++++++++++++++-- src/messages/pl.json | 85 +++++++++++++++++++++-- src/messages/pt.json | 85 +++++++++++++++++++++-- src/messages/ro.json | 85 +++++++++++++++++++++-- src/messages/ru.json | 85 +++++++++++++++++++++-- src/messages/sk.json | 85 +++++++++++++++++++++-- src/messages/sr.json | 85 +++++++++++++++++++++-- src/messages/sv.json | 85 +++++++++++++++++++++-- src/messages/tr.json | 85 +++++++++++++++++++++-- src/messages/uk.json | 85 +++++++++++++++++++++-- 26 files changed, 1635 insertions(+), 114 deletions(-) diff --git a/src/app/admin/commandocentrum/page.tsx b/src/app/admin/commandocentrum/page.tsx index b6dddfe0..8b45fbf6 100644 --- a/src/app/admin/commandocentrum/page.tsx +++ b/src/app/admin/commandocentrum/page.tsx @@ -53,6 +53,7 @@ export default async function CommandoCentrum() { emulatorOnline, maintenance, activity, + onlineUsersRaw, ] = await Promise.all([ prisma.user.count({ where: { online: "1" } }).catch(() => 0), prisma.user.count().catch(() => -1), @@ -70,8 +71,30 @@ export default async function CommandoCentrum() { .catch( () => [] as Awaited>, ), + prisma.user + .findMany({ + where: { online: "1" }, + select: { + id: true, + username: true, + look: true, + lastOnline: true, + }, + orderBy: { lastOnline: "desc" }, + take: 40, + }) + .catch(() => []), ]); + const onlineUsers = onlineUsersRaw.map((u) => ({ + id: u.id, + username: u.username, + look: u.look, + roomId: null as number | null, + roomName: null as string | null, + lastActivity: u.lastOnline > 0 ? new Date(u.lastOnline * 1000) : new Date(), + })); + const staffIds = Array.from( new Set(activity.map((a) => Number(a.userId))), ).filter((n) => n > 0); @@ -134,7 +157,7 @@ export default async function CommandoCentrum() { {/* ── Online users widget ───────────────────────────────── */}

{t("onlineUsers")}

- +
{/* ── Server info + diagnostics ──────────────────────────── */} diff --git a/src/app/admin/help-tickets/page.tsx b/src/app/admin/help-tickets/page.tsx index ae92e586..01e64a89 100644 --- a/src/app/admin/help-tickets/page.tsx +++ b/src/app/admin/help-tickets/page.tsx @@ -160,6 +160,20 @@ export default async function AdminHelpTicketsPage({ return (
+
+

{t("queueHint")}

+

+ + {t("queueOtherCta")} + +

+
diff --git a/src/app/admin/tickets/page.tsx b/src/app/admin/tickets/page.tsx index 1829171c..97139634 100644 --- a/src/app/admin/tickets/page.tsx +++ b/src/app/admin/tickets/page.tsx @@ -116,6 +116,20 @@ export default async function AdminTicketsPage({ return (
+
+

{t("queueHint")}

+

+ + {t("queueOtherCta")} + +

+
= [ ["shop", "PERMS.SHOP_VIEW"], ["transactions", "PERMS.SHOP_VIEW"], ["vouchers", "PERMS.SHOP_VIEW"], + ["marketplace", "PERMS.SHOP_VIEW"], ["vpn", "PERMS.SETTINGS_VIEW"], ["ip", "PERMS.SETTINGS_VIEW"], ["maintenance", "PERMS.SETTINGS_VIEW"], @@ -32,11 +33,25 @@ const ROUTES: Array<[string, string]> = [ ["badges", "PERMS.CATALOG_VIEW"], ["teams", "PERMS.USERS_VIEW"], ["applications", "PERMS.USERS_VIEW"], + ["guilds", "PERMS.USERS_VIEW"], + ["tickets", "PERMS.TICKETS_VIEW"], + ["help-tickets", "PERMS.TICKETS_VIEW"], + ["permissions", "PERMS.PERMISSIONS_MANAGE"], + ["housekeeping", "PERMS.SETTINGS_VIEW"], ["logs", "PERMS.LOGS_VIEW"], ["catalog", "PERMS.CATALOG_VIEW"], ["rooms/edit/[id]", "PERMS.ROOMS_EDIT"], ]; +const MOD_ROUTES: Array<[string, string]> = [ + ["", "requireMod"], + ["cfh", "PERMS.MOD_CFH_VIEW"], + ["actions", "PERMS.MOD_ACTIONS"], + ["bans", "PERMS.MOD_BANS_VIEW"], + ["tickets", "PERMS.MOD_TICKETS_VIEW"], + ["team", "PERMS.MOD_TEAM_VIEW"], +]; + const ACTION_GATES: Array<[string, string]> = [ ["admin-settings.ts", "PERMS.SETTINGS_EDIT"], ["admin-theme.ts", "PERMS.SETTINGS_EDIT"], @@ -54,6 +69,11 @@ const ACTION_GATES: Array<[string, string]> = [ ["admin-alerts.ts", "PERMS.NOTIFICATIONS_EDIT"], ["commandocentrum.ts", "PERMS.RCON_EXECUTE"], ["translations.ts", "PERMS.SETTINGS_EDIT"], + ["tickets.ts", "PERMS.TICKETS_EDIT"], + ["admin-help-tickets.ts", "PERMS.TICKETS_EDIT"], + ["permissions.ts", "PERMS.PERMISSIONS_MANAGE"], + ["admin-guilds.ts", "PERMS.USERS_EDIT"], + ["moderation.ts", "PERMS.MODERATION_EDIT"], ]; describe("admin operations route contract", () => { @@ -63,6 +83,19 @@ describe("admin operations route contract", () => { expect(readFileSync(path, "utf8"), path).toContain(permission); }); + it.each(MOD_ROUTES)("provides and guards /mod/%s", (route, permission) => { + const path = + route === "" ? "src/app/mod/page.tsx" : `src/app/mod/${route}/page.tsx`; + expect(existsSync(path), path).toBe(true); + const source = readFileSync(path, "utf8"); + const layout = readFileSync("src/app/mod/layout.tsx", "utf8"); + if (permission === "requireMod") { + expect(layout).toContain("requireMod"); + } else { + expect(source).toContain(permission); + } + }); + it("guards radio section via layout", () => { const path = "src/app/admin/radio/layout.tsx"; expect(existsSync(path), path).toBe(true); diff --git a/src/messages/bg.json b/src/messages/bg.json index 819e5bce..f85fd185 100644 --- a/src/messages/bg.json +++ b/src/messages/bg.json @@ -23,7 +23,8 @@ "closeMenu": "Затваряне на менюто", "drawBadge": "Начертайте значка", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} онлайн", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Табло за управление", @@ -2213,7 +2215,24 @@ "auditTarget": "Цел", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Стаи", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/cs.json b/src/messages/cs.json index eda9854b..0808f164 100644 --- a/src/messages/cs.json +++ b/src/messages/cs.json @@ -23,7 +23,8 @@ "closeMenu": "Zavřít nabídku", "drawBadge": "Nakreslete odznak", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} online", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Dashboard", @@ -2213,7 +2215,24 @@ "auditTarget": "Cíl", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Pokoje", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/da.json b/src/messages/da.json index 6cec6eb7..222a158b 100644 --- a/src/messages/da.json +++ b/src/messages/da.json @@ -23,7 +23,8 @@ "closeMenu": "Luk menuen", "drawBadge": "Tegn badge", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} online", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Dashboard", @@ -2213,7 +2215,24 @@ "auditTarget": "Mål", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Værelser", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/de.json b/src/messages/de.json index a723bdb2..bcf1781c 100644 --- a/src/messages/de.json +++ b/src/messages/de.json @@ -23,7 +23,8 @@ "closeMenu": "Close menu", "drawBadge": "Abzeichen zeichnen", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} online", @@ -876,7 +877,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Dashboard", @@ -2183,7 +2185,24 @@ "auditTarget": "Ziel", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Räume", @@ -2412,7 +2431,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2674,7 +2695,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2769,6 +2792,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "radioRequests": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/el.json b/src/messages/el.json index 0df5df9e..2973315c 100644 --- a/src/messages/el.json +++ b/src/messages/el.json @@ -23,7 +23,8 @@ "closeMenu": "Κλείσιμο μενού", "drawBadge": "Σχεδιάστε το σήμα", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} στο διαδίκτυο", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Ταμπλό", @@ -2213,7 +2215,24 @@ "auditTarget": "Στόχος", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Δωμάτια", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/en.json b/src/messages/en.json index 3db79903..7ae4d09a 100644 --- a/src/messages/en.json +++ b/src/messages/en.json @@ -1492,8 +1492,10 @@ "settingsSaved": "VPN settings saved successfully" }, "tickets": { - "title": "Tickets", - "subtitle": "Support tickets from players", + "title": "CMS support desk", + "subtitle": "Internal CMS tickets (assignee, priority, staff workflow). Not the same as help-center tickets from /help.", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets", "noTickets": "No active tickets", "searchPlaceholder": "Search subject, user, category or ID…", "presetActive": "Active", @@ -1510,7 +1512,9 @@ }, "helpTickets": { "title": "Help center tickets", - "subtitle": "Player tickets from /help/tickets", + "subtitle": "Tickets players open at /help/tickets. Separate from the CMS support desk.", + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk", "noTickets": "No open help center tickets", "searchPlaceholder": "Search title, user or ID…", "presetOpen": "Open", @@ -2520,7 +2524,7 @@ "events": "Events", "eventsSubtitle": "Hotel events and event types", "tickets": "Support desk", - "ticketsSubtitle": "CMS tickets, help-center tickets, and reply templates", + "ticketsSubtitle": "Two separate queues: CMS support desk and public help-center tickets", "staffAccess": "Ranks & permissions", "staffAccessSubtitle": "Staff ranks and live access. Archive is compare/export only.", "analytics": "Analytics", diff --git a/src/messages/es.json b/src/messages/es.json index 43a4d3fd..aa7efe20 100644 --- a/src/messages/es.json +++ b/src/messages/es.json @@ -23,7 +23,8 @@ "closeMenu": "Close menu", "drawBadge": "Diseñar insignia", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} en línea", @@ -876,7 +877,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Panel", @@ -2183,7 +2185,24 @@ "auditTarget": "Objetivo", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Salas", @@ -2412,7 +2431,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2674,7 +2695,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2769,6 +2792,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "radioRequests": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/fr.json b/src/messages/fr.json index c087a173..ea7bcf4f 100644 --- a/src/messages/fr.json +++ b/src/messages/fr.json @@ -23,7 +23,8 @@ "closeMenu": "Close menu", "drawBadge": "Dessiner un badge", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} en ligne", @@ -876,7 +877,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Tableau de bord", @@ -2183,7 +2185,24 @@ "auditTarget": "Cible", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Salons", @@ -2412,7 +2431,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2674,7 +2695,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2769,6 +2792,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "radioRequests": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/hr.json b/src/messages/hr.json index 2f450102..bac4c8ad 100644 --- a/src/messages/hr.json +++ b/src/messages/hr.json @@ -23,7 +23,8 @@ "closeMenu": "Zatvori izbornik", "drawBadge": "Nacrtajte značku", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} online", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Nadzorna ploča", @@ -2213,7 +2215,24 @@ "auditTarget": "cilj", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Sobe", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/hu.json b/src/messages/hu.json index edc5bcd7..a9aa845d 100644 --- a/src/messages/hu.json +++ b/src/messages/hu.json @@ -23,7 +23,8 @@ "closeMenu": "Menü bezárása", "drawBadge": "Rajzolj jelvényt", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} online", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Irányítópult", @@ -2213,7 +2215,24 @@ "auditTarget": "Cél", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Szobák", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/it.json b/src/messages/it.json index a35dc58f..3a2a0f9e 100644 --- a/src/messages/it.json +++ b/src/messages/it.json @@ -1467,8 +1467,8 @@ "settingsSaved": "Impostazioni VPN salvate con successo" }, "tickets": { - "title": "Ticket", - "subtitle": "Ticket di supporto dai giocatori", + "title": "Supporto CMS", + "subtitle": "Ticket interni CMS (assegnatario, priorita, workflow staff). Non sono i ticket del help center /help.", "noTickets": "Nessun ticket attivo", "searchPlaceholder": "Cerca oggetto, utente, categoria o ID…", "presetActive": "Attivi", @@ -1481,11 +1481,13 @@ "colPriority": "Priorità", "colAssigned": "Assegnato", "colDate": "Data", - "meta": "di {user} · {count} msg · {category}" + "meta": "di {user} · {count} msg · {category}", + "queueHint": "Questa coda e il supporto CMS. I ticket del help center pubblici stanno nella tab Help-center tickets.", + "queueOtherCta": "Apri help-center tickets" }, "helpTickets": { - "title": "Ticket centro assistenza", - "subtitle": "Ticket dei giocatori da /help/tickets", + "title": "Ticket help center", + "subtitle": "Ticket aperti dai player su /help/tickets. Separati dal supporto CMS.", "noTickets": "Nessun ticket aperto nel centro assistenza", "searchPlaceholder": "Cerca titolo, utente o ID…", "presetOpen": "Aperti", @@ -1516,7 +1518,9 @@ "replied": "Risposta inviata.", "closed": "Ticket chiuso.", "reopened": "Ticket riaperto." - } + }, + "queueHint": "Questa coda e il help center pubblico. I ticket del supporto CMS stanno nella tab Support desk.", + "queueOtherCta": "Apri supporto CMS" }, "cfh": { "title": "Call for Help", @@ -2791,7 +2795,7 @@ "events": "Eventi", "eventsSubtitle": "Eventi hotel e tipi evento", "tickets": "Assistenza", - "ticketsSubtitle": "Ticket CMS, ticket centro assistenza e template risposte", + "ticketsSubtitle": "Due code separate: supporto CMS e ticket help center pubblici", "staffAccess": "Gradi e permessi", "staffAccessSubtitle": "Gradi staff e accesso live. L'archivio e solo confronto/export.", "analytics": "Analitiche", diff --git a/src/messages/nl.json b/src/messages/nl.json index 5eb6d7d0..85ce59a6 100644 --- a/src/messages/nl.json +++ b/src/messages/nl.json @@ -2842,7 +2842,7 @@ "events": "Evenementen", "eventsSubtitle": "Hotel-evenementen en evenementtypes", "tickets": "Supportbalie", - "ticketsSubtitle": "CMS-tickets, helpcentrum-tickets en antwoordtemplates", + "ticketsSubtitle": "Twee aparte wachtrijen: CMS support desk en publieke helpcenter-tickets", "staffAccess": "Rangen & rechten", "staffAccessSubtitle": "Staffrangen en live toegang. Archief is alleen vergelijken/exporteren.", "analytics": "Analytics", @@ -2851,8 +2851,8 @@ "devopsSubtitle": "Servicegezondheid en emulatorfouten" }, "tickets": { - "title": "Tickets", - "subtitle": "Ondersteuningstickets van spelers", + "title": "CMS support desk", + "subtitle": "Interne CMS-tickets (assignee, prioriteit, staff-workflow). Niet hetzelfde als helpcenter-tickets van /help.", "noTickets": "Geen actieve tickets", "searchPlaceholder": "Zoek op onderwerp, gebruiker, categorie of ID…", "presetActive": "Actief", @@ -2865,11 +2865,13 @@ "colPriority": "Prioriteit", "colAssigned": "Toegewezen", "colDate": "Datum", - "meta": "door {user} · {count} berichten · {category}" + "meta": "door {user} · {count} berichten · {category}", + "queueHint": "Deze wachtrij is de CMS support desk. Speler-helpcenter tickets staan onder Help-center tickets.", + "queueOtherCta": "Open helpcenter-tickets" }, "helpTickets": { - "title": "Helpcentrum-tickets", - "subtitle": "Spelertickets van /help/tickets", + "title": "Helpcenter-tickets", + "subtitle": "Tickets die spelers openen op /help/tickets. Apart van de CMS support desk.", "noTickets": "Geen open helpcentrum-tickets", "searchPlaceholder": "Zoek op titel, gebruiker of ID…", "presetOpen": "Open", @@ -2900,7 +2902,9 @@ "replied": "Antwoord verzonden.", "closed": "Ticket gesloten.", "reopened": "Ticket heropend." - } + }, + "queueHint": "Deze wachtrij is het publieke helpcenter. CMS support desk tickets staan onder Support desk.", + "queueOtherCta": "Open CMS support desk" }, "cfh": { "title": "Call for Help", diff --git a/src/messages/no.json b/src/messages/no.json index 6af8e7e7..293f104f 100644 --- a/src/messages/no.json +++ b/src/messages/no.json @@ -23,7 +23,8 @@ "closeMenu": "Lukk menyen", "drawBadge": "Tegn merke", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} online", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Dashbord", @@ -2213,7 +2215,24 @@ "auditTarget": "Mål", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Rom", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/pl.json b/src/messages/pl.json index b036db91..f0e62e01 100644 --- a/src/messages/pl.json +++ b/src/messages/pl.json @@ -23,7 +23,8 @@ "closeMenu": "Zamknij menu", "drawBadge": "Narysuj odznakę", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} online", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Pulpit nawigacyjny", @@ -2213,7 +2215,24 @@ "auditTarget": "Cel", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Pokoje", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/pt.json b/src/messages/pt.json index c52feaa9..3c755610 100644 --- a/src/messages/pt.json +++ b/src/messages/pt.json @@ -23,7 +23,8 @@ "closeMenu": "Fechar menu", "drawBadge": "Desenhar distintivo", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} on-line", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Painel", @@ -2213,7 +2215,24 @@ "auditTarget": "Alvo", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Quartos", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/ro.json b/src/messages/ro.json index a70b84bf..afee8c92 100644 --- a/src/messages/ro.json +++ b/src/messages/ro.json @@ -23,7 +23,8 @@ "closeMenu": "Închide meniul", "drawBadge": "Trage insigna", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} online", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Tabloul de bord", @@ -2213,7 +2215,24 @@ "auditTarget": "țintă", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Camerele", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/ru.json b/src/messages/ru.json index be4b6e72..99e3d7e2 100644 --- a/src/messages/ru.json +++ b/src/messages/ru.json @@ -23,7 +23,8 @@ "closeMenu": "Закрыть меню", "drawBadge": "Нарисуйте значок", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} онлайн", @@ -904,7 +905,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Панель управления", @@ -2211,7 +2213,24 @@ "auditTarget": "Target", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Rooms", @@ -2440,7 +2459,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2702,7 +2723,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2797,6 +2820,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2942,6 +2990,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/sk.json b/src/messages/sk.json index 83a774f1..41dc55a0 100644 --- a/src/messages/sk.json +++ b/src/messages/sk.json @@ -23,7 +23,8 @@ "closeMenu": "Zatvoriť ponuku", "drawBadge": "Nakreslite odznak", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} online", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Dashboard", @@ -2213,7 +2215,24 @@ "auditTarget": "Cieľ", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Izby", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/sr.json b/src/messages/sr.json index 82dd7485..41fac32c 100644 --- a/src/messages/sr.json +++ b/src/messages/sr.json @@ -23,7 +23,8 @@ "closeMenu": "Затвори мени", "drawBadge": "Нацртај значку", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} на мрежи", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Дасхбоард", @@ -2213,7 +2215,24 @@ "auditTarget": "Таргет", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Собе", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/sv.json b/src/messages/sv.json index 9c340a1b..74dcb1a0 100644 --- a/src/messages/sv.json +++ b/src/messages/sv.json @@ -23,7 +23,8 @@ "closeMenu": "Stäng menyn", "drawBadge": "Rita märke", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} online", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Instrumentbräda", @@ -2213,7 +2215,24 @@ "auditTarget": "Mål", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Rum", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/tr.json b/src/messages/tr.json index fa98d740..68055874 100644 --- a/src/messages/tr.json +++ b/src/messages/tr.json @@ -23,7 +23,8 @@ "closeMenu": "Menüyü kapat", "drawBadge": "Rozet çiz", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} çevrimiçi", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Kontrol Paneli", @@ -2213,7 +2215,24 @@ "auditTarget": "Hedef", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Odalar", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": { diff --git a/src/messages/uk.json b/src/messages/uk.json index 86441cff..8188b74e 100644 --- a/src/messages/uk.json +++ b/src/messages/uk.json @@ -23,7 +23,8 @@ "closeMenu": "Закрити меню", "drawBadge": "Намалюйте значок", "events": "Events", - "polls": "Polls" + "polls": "Polls", + "mod": "Mod" }, "header": { "online": "{count} {hotel} онлайн", @@ -906,7 +907,8 @@ "chatLog": "Chat log", "commandLog": "Command log", "tradeLog": "Trade log", - "tools": "Tools" + "tools": "Tools", + "guilds": "Guilds" }, "dashboard": { "title": "Приладова панель", @@ -2213,7 +2215,24 @@ "auditTarget": "Цільова", "selectAllMatching": "Select all {count} matching", "save": "Save", - "importTitle": "Import permissions" + "importTitle": "Import permissions", + "legacyBannerTitle": "Use Permissions to change who can do what", + "legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.", + "legacyBannerCta": "Open Permissions", + "writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.", + "tabCompare": "ACL compare", + "tabExportOnly": "Export archive", + "compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).", + "compareAligned": "{count} aligned", + "compareMissingAcl": "{count} missing in ACL", + "compareMismatch": "{count} rank mismatch", + "colAclPresent": "In ACL", + "colAclMinRank": "ACL min rank", + "colStatus": "Status", + "statusAligned": "Aligned", + "statusMissingAcl": "Missing in ACL", + "statusMismatch": "Rank differs", + "exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival." }, "rooms": { "title": "Кімнати", @@ -2442,7 +2461,9 @@ "colPriority": "Priority", "colAssigned": "Assigned", "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" + "meta": "by {user} · {count} msg · {category}", + "queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.", + "queueOtherCta": "Open help-center tickets" }, "cfh": { "title": "Call for Help", @@ -2704,7 +2725,9 @@ "replied": "Reply sent.", "closed": "Ticket closed.", "reopened": "Ticket reopened." - } + }, + "queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.", + "queueOtherCta": "Open CMS support desk" }, "marketplace": { "title": "Marketplace", @@ -2799,6 +2822,31 @@ "less": "Less", "more": "More" } + }, + "guilds": { + "title": "Guilds", + "subtitle": "Hotel groups and membership", + "totalGuilds": "Guilds", + "searchPlaceholder": "Search by name, description or ID…", + "search": "Search", + "empty": "No guilds found.", + "loadError": "Could not load guilds (database unavailable).", + "colId": "ID", + "colBadge": "Badge", + "colName": "Name", + "colOwner": "Owner", + "colMembers": "Members", + "colCreated": "Created", + "colThreads": "Forum threads", + "colRoom": "Room", + "colUser": "User", + "colLevel": "Level", + "colJoined": "Joined", + "members": "Members", + "noMembers": "No members.", + "back": "Back to guilds", + "viewPublic": "Open public page", + "disband": "Disband guild" } }, "error": { @@ -2944,6 +2992,33 @@ "voteCount": "{count} ({pct}%)", "totalVotes": "{count} total votes", "textResponses": "{count} free-text responses" + }, + "mod": { + "title": "Moderation panel", + "badge": "Mod", + "overviewTitle": "Moderator overview", + "overviewSubtitle": "CFH, quick actions and bans without full admin access.", + "shortcutsTitle": "Shortcuts", + "nav": { + "overview": "Overview", + "cfh": "Call for Help", + "actions": "Quick actions", + "bans": "Bans", + "fullAdmin": "Full admin", + "backToSite": "Back to site", + "tickets": "Tickets", + "team": "Team" + }, + "stats": { + "openCfh": "Open CFH", + "bansToday": "Bans today", + "modsOnline": "Mods online", + "quickActions": "Quick actions", + "quickActionsHint": "Kick, mute, alert", + "openTickets": "Open tickets", + "team": "Mod team", + "teamHint": "Online staff & workload" + } } }, "emails": {