Merge branch 'module/messagebus' into dev
All checks were successful
Build Docker Image / Docker-Build (push) Successful in 2m27s
Build Docker Image / Clean-Registry (push) Successful in 0s

This commit is contained in:
2026-01-20 20:22:09 +01:00
6 changed files with 91 additions and 30 deletions

View File

@@ -16,8 +16,8 @@ import java.util.Map;
public class ProjectEvent extends Event<Project>{
private final UmbrellaUser newMember;
private UmbrellaUser newMember;
public ProjectEvent(UmbrellaUser initiator, Project project, EventType type){
super(initiator, PROJECT, project, type);
newMember = null;
@@ -49,12 +49,12 @@ public class ProjectEvent extends Event<Project>{
}
private Translatable describeCreate() {
var head = t("You have been added to the new project '{project}', created by {user}':\n\n{body}", Field.PROJECT, payload().name(), BODY, payload().description(), USER, initiator().name());
var head = t("You have been added to the new project '{project}', created by {user}:\n\n{body}", Field.PROJECT, payload().name(), BODY, payload().description(), USER, initiator().name());
return t("{head}\n\n{link}","head",head,"link",link());
}
private Translatable describeMemberAdded() {
var head = t("'{name}' has been added to '{project}' by '{user}'.",NAME,newMember.name(),Field.PROJECT,payload().name(),USER,initiator().name());
var head = t("'{name}' has been added to '{object}' by '{user}'.",NAME,newMember.name(),Field.OBJECT,payload().name(),USER,initiator().name());
return t("{head}\n\n{link}","head",head,"link",link());
}
@@ -63,6 +63,11 @@ public class ProjectEvent extends Event<Project>{
return t("{head}\n\n{link}","head",head,"link",link());
}
@Override
protected Map<String, Object> filter(Map<String, Object> map) {
map.remove(MEMBERS);
return super.filter(map);
}
@Override
public boolean isIntendedFor(UmbrellaUser user) {
@@ -76,9 +81,11 @@ public class ProjectEvent extends Event<Project>{
return t("You can view/edit this project at {base_url}/project/{id}/view",ID,payload().id());
}
@Override
public Translatable subject() {
return t("{user} edited {object}",USER,initiator(),OBJECT,payload().name());
}
}
return switch (eventType()){
case CREATE -> t("The project '{project}' has been created", Field.PROJECT, payload().name());
case DELETE -> t("The project '{project}' has been deleted",Field.PROJECT, payload().name());
case MEMBER_ADDED, UPDATE -> t("Project '{project}' was edited",Field.PROJECT,payload().name());
};
}}

View File

@@ -50,11 +50,6 @@ public class TaskEvent extends Event<Task>{
};
}
private Translatable describeMemberAdded() {
var head = t("'{name}' has been added to '{task}' by '{user}'.",NAME,newMember.name(),Field.TASK,payload().name(),USER,initiator().name());
return t("{head}\n\n{link}","head",head,"link",link());
}
private Translatable describeCreate() {
String parentName = null;
var pid = payload().parentTaskId();
@@ -71,6 +66,11 @@ public class TaskEvent extends Event<Task>{
return t("{head}\n\n{link}","head",head,"link",link());
}
private Translatable describeMemberAdded() {
var head = t("'{name}' has been added to '{object}' by '{user}'.",NAME,newMember.name(), OBJECT,payload().name(),USER,initiator().name());
return t("{head}\n\n{link}","head",head,"link",link());
}
private Translatable describeUpdate() {
var head = t("Changes in task '{task}':\n\n{body}",Field.TASK,payload().name(),BODY,diff().orElse(""));
return t("{head}\n\n{link}","head",head,"link",link());

View File

@@ -107,7 +107,7 @@
</script>
<fieldset class="message settings">
<legend>{t('message settings')}</legend>
<legend>{t('notification settings')}</legend>
<p>{t('When shall messages be delivered?')}</p>
<table>
<tbody>
@@ -143,7 +143,7 @@
</td>
<td>
<label>
<input type="checkbox" onchange={selectTime} bind:checked={at8} />{t('8 am')}
<input type="checkbox" onchange={selectTime} bind:checked={at8} />{t('8:00 am')}
</label>
<label>
<input type="checkbox" onchange={selectTime} bind:checked={at9} />{t('9:00 am')}

View File

@@ -14,7 +14,7 @@
<legend>
{t('your_profile')}
<button onclick={() => router.navigate(`/user/${user.id}/edit`)}>{t('edit')}</button>
<!-- <button onclick={() => router.navigate(`/message/settings`)}>{t('settings')}</button> -->
<button onclick={() => router.navigate(`/message/settings`)}>{t('notification settings')}</button>
</legend>
<table>

View File

@@ -1,4 +1,19 @@
{
"8:00 am": "8:00 Uhr",
"9:00 am": "9:00 Uhr",
"10:00 am": "10:00 Uhr",
"11:00 am": "11:00 Uhr",
"1:00 pm": "13:00 Uhr",
"2:00 pm": "14:00 Uhr",
"3:00 pm": "15:00 Uhr",
"4:00 pm": "16:00 Uhr",
"5:00 pm": "17:00 Uhr",
"6:00 pm": "18:00 Uhr",
"7:00 pm": "19:00 Uhr",
"8:00 pm": "20:00 Uhr",
"9:00 pm": "21:00 Uhr",
"10:00 pm": "22:00 Uhr",
"abort": "abbrechen",
"actions": "Aktionen",
"add_login_service": "Login-Service anlegen",
@@ -18,6 +33,7 @@
"by": "von",
"cancel": "abbrechen",
"Changes in project '{project}':\n\n{body}": "Änderungen an Projekt '{project}':\n\n{body}",
"Changes in task '{task}':\n\n{body}": "Änderungen an Aufgabe '{task}':\n\n{body}",
"choose_type": "Typ wählen",
"click_to_edit": "Anklicken zum Bearbeiten",
@@ -25,6 +41,7 @@
"client_secret": "Client-Geheimnis",
"close_settings": "Einstellungen schließen",
"code": "Code",
"collect messages and send them at": "Nachriten sammeln und zustellen um",
"color": "Farbe",
"connect_service": "mit Service verbinden",
"connected_services": "verbundene Login-Services",
@@ -153,9 +170,11 @@
"hours": "Stunden",
"id": "Id",
"i don`t want to receive email notifications!": "Ich möchte keine Email-Benachrichtigungen!",
"impersonate": "zu Nutzer wechseln",
"IMPERSONATE": "Nutzer wechseln",
"index_page": "Aufgabenübersicht",
"instantly": "sofort",
"invert_filter": "Filter umkehren",
"invoice": "Rechnung",
"item": "Artikel",
@@ -189,7 +208,6 @@
"members": "Mitarbeiter",
"message": "Nachricht",
"messages": "Benachrichtigungen",
"message settings": "Benachrichtigungs-Einstellungen",
"miscellaneous_settings": "sonstige Einstellungen",
"missing_new_item_id": "Alter Artikel-ID ({0}) wurde keine neue ID zugeordnet!",
"mismatch": "ungleich",
@@ -228,11 +246,13 @@
"new_property": "neue Eigenschaft",
"no_bookmark_for_urlid": "Kein Lesezeichen zur URL-ID {0}",
"no_company": "keine Firma",
"noon": "12:00 Uhr",
"no_project_for_id": "Kein Projekt mit ID {0} gefunden!",
"no_task_for_id": "Keine Aufgabe mit ID {0} gefunden!",
"note": "Notiz",
"note ({id})": "Notiz ({id})",
"notes": "Notizen",
"notification settings": "Benachrichtigungs-Einstellungen",
"not_recent_version": "Die ist nicht die neuste Version dieser Seite!",
"number": "Nummer",
@@ -266,6 +286,7 @@
"processing_code": "Code wird verarbeitet…",
"project": "Projekt",
"project ({id})": "Projekt ({id})",
"Project '{project}' was edited": "Projekt '{project}' wurde bearbeitet",
"projects": "Projekte",
"properties": "Eigenschaften",
"property": "Eigenschaft",
@@ -343,9 +364,12 @@
"tax_rate": "Steuersatz",
"template": "Vorlage",
"theme": "Design",
"The project '{project}' has been created":"Das Projekt '{project}' wurde angelegt",
"The project '{project}' has been deleted": "Das Projekt '{project}' wurde gelöscht",
"The project '{project}' has been deleted by {user}": "Das Projekt '{project}' wurde von {user} gelöscht",
"The task '{task}' has been created": "Die Aufgabe '{task}' wurde angelegt",
"The task '{task}' has been deleted": "Die Aufgabe '{task}' wurde gelöscht",
"The task '{task}' has been deleted by {user}": "Die Aufgabe '{task}' wurde von {user} bearbeitet",
"The task '{task}' has been deleted by {user}": "Die Aufgabe '{task}' wurde von {user} gelöscht",
"time ({id})": "Zeit ({id})",
"times": "Zeiten",
"timetracking": "Zeiterfassung",
@@ -378,21 +402,24 @@
"user_deleted_entity": "{user} hat \"{entity}\" gelöscht",
"user_updated_entity": "{user} hat \"{entity}\" bearbeitet",
"value": "Wert",
"version": "Version",
"version_of": "Version {version} von {element}",
"visible_to_guests": "Für Besucher sichtbar",
"website": "Website",
"welcome" : "Willkommen, {0}",
"When shall messages be delivered?": "Wann sollen Nachrichten zugestellt werden?",
"wiki": "Wiki",
"wikis": "Wiki-Seiten",
"wiki page": "Wiki-Seite",
"wiki pages": "Wiki-Seiten",
"wiki_pages": "Wiki-Seiten",
"value": "Wert",
"version": "Version",
"version_of": "Version {version} von {element}",
"visible_to_guests": "Für Besucher sichtbar",
"year": "Jahr",
"You can view/edit this project at {base_url}/project/{id}/view": "Du kannst dieses Projekt unter {base_url}/project/{id}/view ansehen/bearbeiten.",
"You can view/edit this task at {base_url}/task/{id}/view": "Du kannst diese Aufgabe unter {base_url}/task/{id}/view ansehen/bearbeiten.",
"You have been added to the new project '{project}', created by {user}:\n\n{body}": "Du wurdest zum neuen Projekt '{project}', angelegt von {user}, hinzugefügt:\n\n{body}",
"Your token to create a new password" : "Ihr Token zum Erstellen eines neuen Passworts",
"your_profile": "dein Profil"
}

View File

@@ -1,4 +1,19 @@
{
"8:00 am": "8:00 am",
"9:00 am": "9:00 am",
"10:00 am": "10:00 am",
"11:00 am": "11:00 am",
"1:00 pm": "1:00 pm",
"2:00 pm": "2:00 pm",
"3:00 pm": "3:00 pm",
"4:00 pm": "4:00 pm",
"5:00 pm": "5:00 pm",
"6:00 pm": "6:00 pm",
"7:00 pm": "7:00 pm",
"8:00 pm": "8:00 pm",
"9:00 pm": "9:00 pm",
"10:00 pm": "10:00 pm",
"abort": "abort",
"actions": "actions",
"add_login_service": "add login service",
@@ -18,6 +33,7 @@
"by": "by",
"cancel": "cancel",
"Changes in project '{project}':\n\n{body}": "Changes in project '{project}':\n\n{body}",
"Changes in task '{task}':\n\n{body}": "Changes in task '{task}':\n\n{body}",
"choose_type": "choose type",
"click_to_edit": "click to edit",
@@ -25,6 +41,7 @@
"client_secret": "client secret",
"close_settings": "close settings",
"code": "code",
"collect messages and send them at": "collect messages and send them at",
"color": "color",
"connect_service": "connect with service",
"connected_services": "connected login services",
@@ -81,8 +98,8 @@
"do_login" : "do login",
"do_open" : "open",
"do_send" : "send",
"due_date": "due date",
"drag_n_drop": "drag & drop",
"due_date": "due date",
"duration": "duration",
"easy_list": "Easy List",
@@ -153,9 +170,11 @@
"hours": "hours",
"id": "ID",
"i don`t want to receive email notifications!": "i don`t want to receive email notifications!",
"impersonate": "impersonate",
"IMPERSONATE": "impersonate",
"index_page": "task overview",
"instantly": "instantly",
"invert_filter": "Filter umkehren",
"invoice": "invoice",
"item": "Item",
@@ -189,7 +208,6 @@
"members": "members",
"message": "message",
"messages": "messages",
"message settings": "message settings",
"miscellaneous_settings": "miscellaneous settings",
"missing_new_item_id": "Old item id ({0}) has no new counterpart!",
"mismatch": "mismatch",
@@ -219,7 +237,7 @@
"my files": "my files",
"name": "Name",
"'{name}' has been added to '{task}' by '{user}'.": "'{name}' has been added to '{task}' by '{user}'.",
"'{name}' has been added to '{object}' by '{user}'.": "'{name}' has been added to '{object}' by '{user}'.",
"net_price": "net price",
"net_sum": "net sum",
"new_contact": "new contact",
@@ -228,11 +246,13 @@
"new_property": "new property",
"no_bookmark_for_urlid": "No bookmark with urlId {0}",
"no_company": "no company",
"noon": "noon",
"no_project_for_id": "No project found for id {0}",
"no_task_for_id": "No task found for id {0}",
"note": "note",
"note ({id})":"note ({id})",
"notes": "notes",
"notification settings": "notification settings",
"not_recent_version": "This is not the current version of this page!",
"number": "number",
@@ -266,6 +286,7 @@
"processing_code": "processing code…",
"project": "project",
"project ({id})": "project ({id})",
"Project '{project}' was edited": "Project '{project}' was edited",
"projects": "projects",
"properties": "properties",
"property": "property",
@@ -343,6 +364,9 @@
"tax_rate": "tax rate",
"template": "template",
"theme": "design",
"The project '{project}' has been created":"The project '{project}' has been created",
"The project '{project}' has been deleted": "The project '{project}' has been deleted",
"The project '{project}' has been deleted by {user}": "The project '{project}' has been deleted by {user}",
"The task '{task}' has been created": "The task '{task}' has been created",
"The task '{task}' has been deleted": "The task '{task}' has been deleted",
"The task '{task}' has been deleted by {user}": "The task '{task}' has been deleted by {user}",
@@ -378,21 +402,24 @@
"user_deleted_entity": "{user} deleted \"{entity}\"",
"user_updated_entity": "{user} updated \"{entity}\"",
"value": "value",
"version": "version",
"version_of": "version {version} of {element}",
"visible_to_guests": "visible to guests",
"website": "website",
"welcome" : "Welcome, {0}",
"When shall messages be delivered?": "When shall messages be delivered?",
"wiki": "Wiki",
"wikis": "wiki pages",
"wiki page": "wiki page",
"wiki pages": "wiki pages",
"wiki_pages": "wiki pages",
"value": "value",
"version": "version",
"version_of": "version {version} of {element}",
"visible_to_guests": "visible to guests",
"year": "year",
"You can view/edit this project at {base_url}/project/{id}/view": "You can view/edit this project at {base_url}/project/{id}/view",
"You can view/edit this task at {base_url}/task/{id}/view": "You can view/edit this task at {base_url}/task/{id}/view",
"You have been added to the new project '{project}', created by {user}:\n\n{body}": "You have been added to the new project '{project}', created by {user}:\n\n{body}",
"Your token to create a new password" : "Your token to create a new password",
"your_profile": "your profile"
}