From 25ad4231c79398f8b7dfe4c36e486378eb9b21de Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Mon, 26 Jan 2026 20:44:42 +0100 Subject: [PATCH] extended translations for wiki events, fixed bug in Translatable.argMao Signed-off-by: Stephan Richter --- .../umbrella/messagebus/events/WikiEvent.java | 53 +++++++++++++++++-- .../umbrella/core/model/Translatable.java | 2 +- translations/src/main/resources/de.json | 11 +++- translations/src/main/resources/en.json | 7 +++ 4 files changed, 65 insertions(+), 8 deletions(-) diff --git a/bus/src/main/java/de/srsoftware/umbrella/messagebus/events/WikiEvent.java b/bus/src/main/java/de/srsoftware/umbrella/messagebus/events/WikiEvent.java index 8bf9af3c..984958d5 100644 --- a/bus/src/main/java/de/srsoftware/umbrella/messagebus/events/WikiEvent.java +++ b/bus/src/main/java/de/srsoftware/umbrella/messagebus/events/WikiEvent.java @@ -1,23 +1,34 @@ /* © SRSoftware 2025 */ package de.srsoftware.umbrella.messagebus.events; -import static de.srsoftware.umbrella.core.constants.Field.OBJECT; -import static de.srsoftware.umbrella.core.constants.Field.USER; +import static de.srsoftware.umbrella.core.constants.Field.*; import static de.srsoftware.umbrella.core.constants.Module.WIKI; import static de.srsoftware.umbrella.core.model.Translatable.t; +import static de.srsoftware.umbrella.messagebus.events.Event.EventType.MEMBER_ADDED; +import de.srsoftware.umbrella.core.constants.Field; +import de.srsoftware.umbrella.core.exceptions.UmbrellaException; import de.srsoftware.umbrella.core.model.*; import java.util.Collection; import java.util.Map; public class WikiEvent extends Event{ + private final UmbrellaUser newMember; + public WikiEvent(UmbrellaUser initiator, WikiPage page, EventType type){ super(initiator, WIKI, page, type); + newMember = null; } public WikiEvent(UmbrellaUser initiator, WikiPage page, Map oldData){ super(initiator, WIKI, page, oldData); + newMember = null; + } + + public WikiEvent(UmbrellaUser initiator, WikiPage page, UmbrellaUser newMember){ + super(initiator,WIKI,page,MEMBER_ADDED); + this.newMember = newMember; } @Override @@ -27,12 +38,44 @@ public class WikiEvent extends Event{ @Override public Translatable describe() { - return diff().map(UnTranslatable::new).map(Translatable.class::cast) - .orElseGet(() -> t("[TODO: {object}.describe]",OBJECT,this.getClass().getSimpleName())); + return switch (eventType()){ + case CREATE -> describeCreate(); + case DELETE -> describeDelete(); + case MEMBER_ADDED -> describeMemberAdded(); + case UPDATE -> describeUpdate(); + }; } + public Translatable describeCreate(){ + var head = t("New wiki page {name} has been created"); + return t("{head}:\n\n{object}\n\n{link}","head",head,OBJECT,payload().content(),"link",link()); + } + + public Translatable describeDelete(){ + return t("The wiki page '{page}' has been deleted by {user}", "page", payload().id(), USER, initiator().name()); + } + + public Translatable describeMemberAdded(){ + var head = t("'{name}' has been added to '{object}' by '{user}'.",NAME,newMember.name(), OBJECT,payload().id(),USER,initiator().name()); + return t("{head}\n\n{link}","head",head,"link",link()); + } + + private Translatable describeUpdate() { + var head = t("Changes in wiki page '{id}':\n\n{body}",Field.ID,payload().id(),BODY,diff().orElse("")); + return t("{head}\n\n{link}","head",head,"link",link()); + } + + private Translatable link() { + return t("You can view/edit this wiki page at {base_url}/wiki/{id}/view",ID,payload().id()); + } + + @Override public Translatable subject() { - return t("{user} edited {object}",USER,initiator(),OBJECT,payload()); + return switch (eventType()){ + case CREATE -> t("The wiki page '{name}' has been created", Field.NAME, payload().id()); + case DELETE -> t("The wiki page '{name}' has been deleted",Field.NAME, payload().id()); + case MEMBER_ADDED, UPDATE -> t("wiki page '{name}' was edited",Field.NAME,payload().id()); + }; } } diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/Translatable.java b/core/src/main/java/de/srsoftware/umbrella/core/model/Translatable.java index fefd3890..bdebd58a 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/model/Translatable.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/model/Translatable.java @@ -22,7 +22,7 @@ public class Translatable { int i = 0; while (i+1