feat(mod): help-center tickets queue with reduced PII
Co-authored-by: Cursor <[email protected]>
This commit is contained in:
1 parent
01126207dc
commit
b6b8625246
31 files changed
+502
-82
No files matched your search
@@ -25,12 +25,16 @@ function revalidateHelpCenterTicketPaths(ticketId: bigint) {
|
||||
const id = String(ticketId);
|
||||
revalidatePath("/admin/help-tickets");
|
||||
revalidatePath(`/admin/help-tickets/${id}`);
|
||||
revalidatePath("/mod/help-tickets");
|
||||
revalidatePath(`/mod/help-tickets/${id}`);
|
||||
revalidatePath("/help/tickets");
|
||||
revalidatePath(`/help/tickets/${id}`);
|
||||
}
|
||||
|
||||
const HELP_TICKET_EDIT = [PERMS.TICKETS_EDIT, PERMS.MOD_TICKETS_EDIT] as const;
|
||||
|
||||
export const replyHelpCenterTicket = adminAction(
|
||||
{ permission: PERMS.TICKETS_EDIT, schema: replyHelpCenterTicketSchema },
|
||||
{ permission: HELP_TICKET_EDIT, schema: replyHelpCenterTicketSchema },
|
||||
async (ctx) => {
|
||||
const ticketId = ctx.data.ticketId;
|
||||
const ticket = await prisma.websiteHelpCenterTickets.findUnique({
|
||||
@@ -72,7 +76,7 @@ export const replyHelpCenterTicket = adminAction(
|
||||
);
|
||||
|
||||
export const closeHelpCenterTicket = adminAction(
|
||||
{ permission: PERMS.TICKETS_EDIT, schema: helpCenterTicketIdSchema },
|
||||
{ permission: HELP_TICKET_EDIT, schema: helpCenterTicketIdSchema },
|
||||
async (ctx) => {
|
||||
const ticketId = ctx.data.ticketId;
|
||||
const ticket = await prisma.websiteHelpCenterTickets.findUnique({
|
||||
@@ -104,7 +108,7 @@ export const closeHelpCenterTicket = adminAction(
|
||||
);
|
||||
|
||||
export const reopenHelpCenterTicket = adminAction(
|
||||
{ permission: PERMS.TICKETS_EDIT, schema: helpCenterTicketIdSchema },
|
||||
{ permission: HELP_TICKET_EDIT, schema: helpCenterTicketIdSchema },
|
||||
async (ctx) => {
|
||||
const ticketId = ctx.data.ticketId;
|
||||
const ticket = await prisma.websiteHelpCenterTickets.findUnique({
|
||||
|
||||
@@ -42,10 +42,15 @@ export function AdminHelpTicketDetail({
|
||||
ticket,
|
||||
messages: initialMessages,
|
||||
canEdit,
|
||||
listHref = "/admin/help-tickets",
|
||||
hideRequesterContact = false,
|
||||
}: {
|
||||
ticket: HelpTicketInfo;
|
||||
messages: ThreadMessage[];
|
||||
canEdit: boolean;
|
||||
listHref?: string;
|
||||
/** Hide email/IP-style contact for mod-lite surfaces. */
|
||||
hideRequesterContact?: boolean;
|
||||
}) {
|
||||
const t = useTranslations("pages.admin.helpTickets");
|
||||
const [messages, setMessages] = useState(initialMessages);
|
||||
@@ -92,7 +97,7 @@ export function AdminHelpTicketDetail({
|
||||
return (
|
||||
<div className="space-y-6">
|
||||
<div className="flex items-start gap-4">
|
||||
<Link href="/admin/help-tickets">
|
||||
<Link href={listHref}>
|
||||
<Button variant="ghost" size="icon" aria-label={t("backToList")}>
|
||||
<ArrowLeft className="h-4 w-4" />
|
||||
</Button>
|
||||
@@ -241,7 +246,11 @@ export function AdminHelpTicketDetail({
|
||||
</CardHeader>
|
||||
<CardContent className="space-y-2">
|
||||
<Link
|
||||
href={`/admin/users/show/${ticket.creator.id}`}
|
||||
href={
|
||||
hideRequesterContact
|
||||
? `/u/${encodeURIComponent(ticket.creator.username)}`
|
||||
: `/admin/users/show/${ticket.creator.id}`
|
||||
}
|
||||
className="flex items-center gap-2 text-sm font-medium hover:text-primary"
|
||||
>
|
||||
<User className="h-3.5 w-3.5" />
|
||||
@@ -250,7 +259,7 @@ export function AdminHelpTicketDetail({
|
||||
{t("rankLabel", { rank: ticket.creator.rank })}
|
||||
</Badge>
|
||||
</Link>
|
||||
{ticket.creator.mail ? (
|
||||
{!hideRequesterContact && ticket.creator.mail ? (
|
||||
<div className="flex items-center gap-2 text-xs text-muted-foreground">
|
||||
<Mail className="h-3 w-3" />
|
||||
{ticket.creator.mail}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { notFound, redirect } from "next/navigation";
|
||||
import { getMinStaffRank } from "@/lib/admin/min-staff-rank";
|
||||
import { positiveBigInt } from "@/lib/api";
|
||||
import { canAccess, getAdminContext, PERMS } from "@/lib/permissions";
|
||||
import { prisma } from "@/lib/prisma";
|
||||
@@ -6,8 +7,6 @@ import { AdminHelpTicketDetail } from "./admin-help-ticket-detail";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
|
||||
const STAFF_RANK_THRESHOLD = 4;
|
||||
|
||||
export default async function AdminHelpTicketDetailPage({
|
||||
params,
|
||||
}: {
|
||||
@@ -70,6 +69,7 @@ export default async function AdminHelpTicketDetailPage({
|
||||
|
||||
const userById = new Map(users.map((u) => [u.id, u]));
|
||||
const openerId = ticket.userId;
|
||||
const minStaffRank = await getMinStaffRank();
|
||||
|
||||
const messages = [
|
||||
{
|
||||
@@ -86,7 +86,7 @@ export default async function AdminHelpTicketDetailPage({
|
||||
...replies.map((r) => {
|
||||
const user = userById.get(r.userId);
|
||||
const isStaff =
|
||||
r.userId !== openerId && (user?.rank ?? 0) >= STAFF_RANK_THRESHOLD;
|
||||
r.userId !== openerId && (user?.rank ?? 0) >= minStaffRank;
|
||||
return {
|
||||
key: String(r.id),
|
||||
userId: r.userId,
|
||||
|
||||
@@ -19,8 +19,10 @@ export interface HelpTicketRow {
|
||||
|
||||
export function HelpTicketsTable({
|
||||
data,
|
||||
basePath = "/admin/help-tickets",
|
||||
}: {
|
||||
data: PaginatedResult<HelpTicketRow>;
|
||||
basePath?: string;
|
||||
}) {
|
||||
const t = useTranslations("pages.admin.helpTickets");
|
||||
|
||||
@@ -36,7 +38,7 @@ export function HelpTicketsTable({
|
||||
#{row.id}
|
||||
</span>
|
||||
<Link
|
||||
href={`/admin/help-tickets/${row.id}`}
|
||||
href={`${basePath}/${row.id}`}
|
||||
className="font-medium truncate hover:underline"
|
||||
>
|
||||
{row.title}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+16
-1
@@ -1,4 +1,13 @@
|
||||
import { Ban, Gavel, LogOut, Radio, Shield, Ticket, Users } from "lucide-react";
|
||||
import {
|
||||
Ban,
|
||||
Gavel,
|
||||
LifeBuoy,
|
||||
LogOut,
|
||||
Radio,
|
||||
Shield,
|
||||
Ticket,
|
||||
Users,
|
||||
} from "lucide-react";
|
||||
import Link from "next/link";
|
||||
import { redirect } from "next/navigation";
|
||||
import { getTranslations } from "next-intl/server";
|
||||
@@ -59,6 +68,12 @@ export default async function ModLayout({ children }: { children: ReactNode }) {
|
||||
icon: Ticket,
|
||||
show: showTickets,
|
||||
},
|
||||
{
|
||||
href: "/mod/help-tickets",
|
||||
label: t("nav.helpTickets"),
|
||||
icon: LifeBuoy,
|
||||
show: showTickets,
|
||||
},
|
||||
{
|
||||
href: "/mod/actions",
|
||||
label: t("nav.actions"),
|
||||
|
||||
+59
-27
File diff suppressed because it is too large.
Load diff
@@ -49,6 +49,7 @@ const MOD_ROUTES: Array<[string, string]> = [
|
||||
["actions", "PERMS.MOD_ACTIONS"],
|
||||
["bans", "PERMS.MOD_BANS_VIEW"],
|
||||
["tickets", "PERMS.MOD_TICKETS_VIEW"],
|
||||
["help-tickets", "PERMS.MOD_TICKETS_VIEW"],
|
||||
["team", "PERMS.MOD_TEAM_VIEW"],
|
||||
];
|
||||
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3008,7 +3008,8 @@
|
||||
"bans": "Bans",
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"tickets": "CMS tickets",
|
||||
"helpTickets": "Help-center tickets",
|
||||
"team": "Team"
|
||||
},
|
||||
"stats": {
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"modsOnline": "Mods online",
|
||||
"quickActions": "Quick actions",
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"openTickets": "Open CMS tickets",
|
||||
"openHelpTickets": "Open help tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
}
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3015,7 +3015,8 @@
|
||||
"bans": "Ban",
|
||||
"fullAdmin": "Admin completo",
|
||||
"backToSite": "Torna al sito",
|
||||
"tickets": "Ticket",
|
||||
"tickets": "Ticket CMS",
|
||||
"helpTickets": "Ticket help center",
|
||||
"team": "Team"
|
||||
},
|
||||
"stats": {
|
||||
@@ -3024,7 +3025,8 @@
|
||||
"modsOnline": "Mod online",
|
||||
"quickActions": "Azioni rapide",
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Ticket aperti",
|
||||
"openTickets": "Ticket CMS aperti",
|
||||
"openHelpTickets": "Help ticket aperti",
|
||||
"team": "Team mod",
|
||||
"teamHint": "Staff online e carico"
|
||||
}
|
||||
|
||||
@@ -3013,7 +3013,8 @@
|
||||
"bans": "Bans",
|
||||
"fullAdmin": "Volledige admin",
|
||||
"backToSite": "Terug naar site",
|
||||
"tickets": "Tickets",
|
||||
"tickets": "CMS-tickets",
|
||||
"helpTickets": "Helpcenter-tickets",
|
||||
"team": "Team"
|
||||
},
|
||||
"stats": {
|
||||
@@ -3022,7 +3023,8 @@
|
||||
"modsOnline": "Mods online",
|
||||
"quickActions": "Snelle acties",
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"openTickets": "Open CMS-tickets",
|
||||
"openHelpTickets": "Open help-tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & werklast"
|
||||
}
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3005,7 +3005,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3015,7 +3016,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3007,7 +3007,8 @@
|
||||
"fullAdmin": "Full admin",
|
||||
"backToSite": "Back to site",
|
||||
"tickets": "Tickets",
|
||||
"team": "Team"
|
||||
"team": "Team",
|
||||
"helpTickets": "Help-center tickets"
|
||||
},
|
||||
"stats": {
|
||||
"openCfh": "Open CFH",
|
||||
@@ -3017,7 +3018,8 @@
|
||||
"quickActionsHint": "Kick, mute, alert",
|
||||
"openTickets": "Open tickets",
|
||||
"team": "Mod team",
|
||||
"teamHint": "Online staff & workload"
|
||||
"teamHint": "Online staff & workload",
|
||||
"openHelpTickets": "Open help tickets"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user