diff --git a/src/main/java/org/olat/modules/webFeed/managers/FeedNotificationsHandler.java b/src/main/java/org/olat/modules/webFeed/managers/FeedNotificationsHandler.java index 933ed65847f43a8b21e5028cd79bcf5337d633af..708c7b11394de7143d87050f1383e4701c1be234 100644 --- a/src/main/java/org/olat/modules/webFeed/managers/FeedNotificationsHandler.java +++ b/src/main/java/org/olat/modules/webFeed/managers/FeedNotificationsHandler.java @@ -37,6 +37,7 @@ import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; +import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.resource.OresHelper; import org.olat.modules.webFeed.models.Feed; @@ -99,11 +100,8 @@ public abstract class FeedNotificationsHandler implements NotificationsHandler { List<Item> listItems = feedManager.loadItems(feed); List<SubscriptionListItem> items = new ArrayList<>(); for (Item item : listItems) { - if (!item.isDraft() && (compareDate.before(item.getPublishDate()) || compareDate.before(item.getLastModified()))) { - SubscriptionListItem subscriptionItem = createSubscriptionItem(item, p, translator); - if(subscriptionItem != null) { - items.add(subscriptionItem); - } + if (!item.isDraft()) { + appendSubscriptionItem(item, p, compareDate, translator, items); } } si = new SubscriptionInfo(subscriber.getKey(), p.getType(), new TitleItem(title, getCssClassIcon()), items); @@ -115,22 +113,34 @@ public abstract class FeedNotificationsHandler implements NotificationsHandler { return si; } - private SubscriptionListItem createSubscriptionItem(Item item, Publisher p, Translator translator){ + private void appendSubscriptionItem(Item item, Publisher p, Date compareDate, Translator translator, List<SubscriptionListItem> items) { String title = item.getTitle(); String author = item.getAuthor(); String businessPath = p.getBusinessPath(); String urlToSend = BusinessControlFactory.getInstance() .getURLFromBusinessPathString(businessPath); String iconCssClass = item.extraCSSClass(); - Date modDate = item.getPublishDate(); - String desc; - if(modDate == null) { - modDate = item.getLastModified(); - desc = translator.translate("notifications.entry.modified", new String[] { title, author }); - } else { - desc = translator.translate("notifications.entry.published", new String[] { title, author }); + Date publishDate = item.getPublishDate(); + if(publishDate != null) { + if(compareDate.before(publishDate)) { + String desc = translator.translate("notifications.entry.published", new String[] { title, author }); + items.add(new SubscriptionListItem(desc, urlToSend, businessPath, publishDate, iconCssClass)); + } + + if(item.getModifierKey() > 0) { + Date modDate = item.getLastModified(); + if(compareDate.before(modDate)) { + String desc; + String modifier = item.getModifier(); + if(StringHelper.containsNonWhitespace(modifier)) { + desc = translator.translate("notifications.entry.modified", new String[] { title, modifier }); + } else { + desc = translator.translate("notifications.entry.modified", new String[] { title, "???" }); + } + items.add(new SubscriptionListItem(desc, urlToSend, businessPath, modDate, iconCssClass)); + } + } } - return new SubscriptionListItem(desc, urlToSend, businessPath, modDate, iconCssClass); } protected abstract String getCssClassIcon();