refactor(housekeeping): modal confirm, bulk delete, search debounce, audit inline, form reset
Local Build and Deploy / deploy (push) Successful in 1m6s
Local Build and Deploy / deploy (push) Successful in 1m6s
- Replace browser confirm() with custom ConfirmModal component - Add search debounce (300ms) before syncing URL params - Reset add-permission form after successful submit - Add bulk select/delete with checkbox column and bulkDeletePermissions action - AuditSection fetches logs server-side via getAuditLogs and shows inline table - Add 10 new i18n keys (cancel, confirm, confirmDeletePermission, confirmBulkDelete, deleteSelected, confirmClearAllDesc, auditTime, auditUser, auditAction, auditTarget) synced to all 22 locales
This commit is contained in:
1 parent
d693d169dd
commit
f1e4e32a1e
25 files changed
+645
-137
No files matched your search
@@ -870,4 +870,27 @@ export async function clearAllPermissions(): Promise<void> {
|
||||
revalidatePath("/admin/housekeeping");
|
||||
}
|
||||
|
||||
export async function bulkDeletePermissions(
|
||||
ids: bigint[],
|
||||
): Promise<{ count: number }> {
|
||||
await requirePermission(PERMS.SETTINGS_EDIT);
|
||||
|
||||
if (!ids.length) return { count: 0 };
|
||||
|
||||
const userId = await currentUserId();
|
||||
|
||||
await prisma.websiteHousekeepingPermissions.deleteMany({
|
||||
where: { id: { in: ids } },
|
||||
});
|
||||
|
||||
await logAudit({
|
||||
userId: userId ?? 0,
|
||||
action: "housekeeping.permission.bulk_delete",
|
||||
target: "WebsiteHousekeepingPermissions",
|
||||
after: { deletedCount: ids.length },
|
||||
});
|
||||
|
||||
revalidatePath("/admin/housekeeping");
|
||||
return { count: ids.length };
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -3,7 +3,9 @@ import { redirect } from "next/navigation";
|
||||
import { getTranslations } from "next-intl/server";
|
||||
import { canAccess, getAdminContext, PERMS } from "@/lib/permissions";
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import { getAuditLogs } from "@/lib/services/audit";
|
||||
import {
|
||||
AuditSection,
|
||||
ExportSection,
|
||||
ImportSection,
|
||||
ManageSection,
|
||||
@@ -77,6 +79,11 @@ export default async function AdminHousekeeping({
|
||||
|
||||
const allGroups = [...new Set([...GROUPS, ...Object.keys(groupCounts)])];
|
||||
|
||||
const auditLogs = await getAuditLogs({
|
||||
search: "housekeeping",
|
||||
perPage: 25,
|
||||
}).catch(() => null);
|
||||
|
||||
return (
|
||||
<main>
|
||||
<div className="admin-tabs mb-4">
|
||||
@@ -308,20 +315,7 @@ export default async function AdminHousekeeping({
|
||||
</section>
|
||||
)}
|
||||
|
||||
{tab === "audit" && (
|
||||
<section>
|
||||
<h2 className="admin-section-title">{t("auditTitle")}</h2>
|
||||
<p className="text-xs text-[var(--admin-text-muted)] -mt-2 mb-3">
|
||||
{t("auditHint")}
|
||||
</p>
|
||||
<div className="admin-card">
|
||||
<p className="text-sm opacity-70">{t("auditLogsAt")}</p>
|
||||
<Link href="/admin/logs/audit" className="btn btn-outline mt-2">
|
||||
{t("viewAuditLogs")}
|
||||
</Link>
|
||||
</div>
|
||||
</section>
|
||||
)}
|
||||
{tab === "audit" && <AuditSection initialLogs={auditLogs} />}
|
||||
</main>
|
||||
);
|
||||
}
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Стаи",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Pokoje",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Værelser",
|
||||
|
||||
+11
-1
@@ -1922,7 +1922,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Räume",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Δωμάτια",
|
||||
|
||||
+11
-1
@@ -1895,6 +1895,12 @@
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"confirmClearAll": "Delete ALL permissions? This action cannot be undone!",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"colGroup": "Group",
|
||||
"colDepends": "Depends on",
|
||||
"colPermission": "Permission",
|
||||
@@ -1957,7 +1963,11 @@
|
||||
"auditTitle": "Permission audit log",
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs"
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Rooms",
|
||||
|
||||
+11
-1
@@ -1922,7 +1922,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Salas",
|
||||
|
||||
+11
-1
@@ -1922,7 +1922,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Salons",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Sobe",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Szobák",
|
||||
|
||||
+11
-1
@@ -1922,7 +1922,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Stanze",
|
||||
|
||||
+11
-1
@@ -1895,6 +1895,12 @@
|
||||
"cancel": "Annuleren"
|
||||
},
|
||||
"confirmClearAll": "ALLE permissies verwijderen? Dit kan niet ongedaan worden gemaakt!",
|
||||
"confirmClearAllDesc": "Dit verwijdert alle permissies uit de database. Weet je het zeker?",
|
||||
"confirmDeletePermission": "Deze permissie permanent verwijderen?",
|
||||
"confirmBulkDelete": "{count} geselecteerde permissies verwijderen?",
|
||||
"deleteSelected": "Verwijder {count} geselecteerd",
|
||||
"cancel": "Annuleren",
|
||||
"confirm": "Bevestigen",
|
||||
"colGroup": "Groep",
|
||||
"colDepends": "Afhankelijk van",
|
||||
"colPermission": "Permissie",
|
||||
@@ -1957,7 +1963,11 @@
|
||||
"auditTitle": "Permissie auditlog",
|
||||
"auditHint": "Alle wijzigingen aan housekeeping permissies worden gelogd.",
|
||||
"auditLogsAt": "Auditlogs zijn beschikbaar op de Auditlog-pagina.",
|
||||
"viewAuditLogs": "Bekijk auditlogs"
|
||||
"viewAuditLogs": "Bekijk auditlogs",
|
||||
"auditTime": "Tijd",
|
||||
"auditUser": "Gebruiker",
|
||||
"auditAction": "Actie",
|
||||
"auditTarget": "Doel"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Kamers",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Rom",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Pokoje",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Quartos",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Camerele",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Rooms",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Izby",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Собе",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Rum",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Odalar",
|
||||
|
||||
+11
-1
@@ -1958,7 +1958,17 @@
|
||||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||||
"viewAuditLogs": "View audit logs",
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors"
|
||||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||||
"confirmDeletePermission": "Delete this permission permanently?",
|
||||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||||
"deleteSelected": "Delete {count} selected",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"auditTime": "Time",
|
||||
"auditUser": "User",
|
||||
"auditAction": "Action",
|
||||
"auditTarget": "Target"
|
||||
},
|
||||
"rooms": {
|
||||
"title": "Кімнати",
|
||||
|
||||
Reference in new issue
Block a user