fixed notification system and added a new tenant notifications receipt table to track read status and filter messages by scope.

This commit is contained in:
Codex Agent
2025-12-17 10:57:19 +01:00
parent 0aae494945
commit d64839ba2f
31 changed files with 1089 additions and 127 deletions

View File

@@ -73,6 +73,12 @@
"photoLimit": "This event reached its photo upload limit.",
"goToBilling": "Manage subscription"
},
"common": {
"loadMore": "Load more",
"processing": "Processing…",
"close": "Close",
"reset": "Reset"
},
"limits": {
"photosTitle": "Photo limit",
"photosWarning": "Only {{remaining}} of {{limit}} photo uploads remaining.",

View File

@@ -145,6 +145,13 @@
}
}
},
"common": {
"all": "All",
"loadMore": "Load more",
"processing": "Processing…",
"close": "Close",
"reset": "Reset"
},
"photos": {
"moderation": {
"title": "Moderate photos",
@@ -169,6 +176,7 @@
"all": "All",
"featured": "Highlights",
"hidden": "Hidden",
"pending": "Pending",
"photobooth": "Photobooth",
"search": "Search uploads …",
"count": "{{count}} uploads",
@@ -181,11 +189,76 @@
"show": "Show",
"feature": "Set highlight",
"unfeature": "Remove highlight",
"approve": "Approve",
"delete": "Delete",
"copy": "Copy link",
"copySuccess": "Link copied"
}
},
"limits": {
"photosBlocked": "Upload limit reached. Buy more photos to continue.",
"photosWarning": "{{remaining}} of {{limit}} photos remaining.",
"guestsBlocked": "Guest limit reached.",
"guestsWarning": "{{remaining}} of {{limit}} guests remaining.",
"galleryExpired": "Gallery expired. Extend to keep it online.",
"galleryWarningDay": "Gallery expires in {{days}} day.",
"galleryWarningDays": "Gallery expires in {{days}} days.",
"buyMorePhotos": "Buy more photos",
"extendGallery": "Extend gallery",
"buyMoreGuests": "Add more guests"
},
"notificationLogs": {
"photoLimit": {
"title": "Photo limit reached",
"body": "{{event}} reached its photo limit of {{limit}}."
},
"guestLimit": {
"title": "Guest limit reached",
"body": "{{event}} reached its guest limit of {{limit}}."
},
"eventLimit": {
"title": "Event quota reached",
"body": "Your package allows no more events. Limit: {{limit}}."
},
"galleryWarning": {
"title": "Gallery expiring soon",
"body": "{{event}} expires in {{days}} days."
},
"galleryExpired": {
"title": "Gallery expired",
"body": "{{event}} gallery is offline. Extend to reactivate."
},
"photoThreshold": {
"title": "Photo usage warning",
"body": "{{event}} is at {{used}} / {{limit}} photos."
},
"guestThreshold": {
"title": "Guest usage warning",
"body": "{{event}} is at {{used}} / {{limit}} guests."
},
"generic": {
"body": "Notification sent via {{channel}}."
},
"filterEmpty": "No notifications for this event.",
"clearFilter": "Show all notifications",
"filter": {
"unread": "Unread",
"read": "Read",
"all": "All"
},
"scope": {
"all": "All scopes",
"photos": "Photos",
"guests": "Guests",
"gallery": "Gallery",
"events": "Events",
"package": "Package",
"general": "General"
},
"markAllRead": "Mark all read",
"markFailed": "Could not update notifications.",
"unread": "Unread"
},
"events": {
"detail": {
"kpi": {
@@ -312,6 +385,9 @@
"eventTasks": {
"title": "Tasks & missions",
"subtitle": "Curate mission cards and tasks for this event.",
"search": "Search tasks",
"emotionFilter": "Emotion filter",
"allEmotions": "All",
"actions": {
"back": "Back to overview",
"assign": "Assign selected tasks"
@@ -327,6 +403,8 @@
"emotions": {
"error": "Could not load emotions."
},
"manageEmotions": "Manage emotions",
"manageEmotionsHint": "Filter and keep your taxonomy tidy.",
"alerts": {
"notFoundTitle": "Event not found",
"notFoundDescription": "Please return to the event list."
@@ -1840,7 +1918,9 @@
"visibilityFailed": "Visibility could not be changed.",
"featureSuccess": "Marked as highlight",
"unfeatureSuccess": "Highlight removed",
"featureFailed": "Highlight could not be changed"
"featureFailed": "Highlight could not be changed",
"approveSuccess": "Photo approved",
"approveFailed": "Approval failed."
},
"mobileProfile": {
"title": "Profile",
@@ -1973,6 +2053,7 @@
"mobileNotifications": {
"title": "Notifications",
"empty": "No notifications yet.",
"filterByEvent": "Filter by event"
"filterByEvent": "Filter by event",
"unknownEvent": "Event"
}
}