diff --git a/src/main/java/org/olat/modules/fo/ui/ForumController.java b/src/main/java/org/olat/modules/fo/ui/ForumController.java index 867f17f5ef0ddadd4be22768f32027be632331ff..b6bc42177f18c7803dde99a7baa9a64dc1aa2369 100644 --- a/src/main/java/org/olat/modules/fo/ui/ForumController.java +++ b/src/main/java/org/olat/modules/fo/ui/ForumController.java @@ -208,6 +208,7 @@ public class ForumController extends BasicController implements GenericEventList } } else if(viewCtrl == source) { if(event == Event.BACK_EVENT) { + reloadThreadList |= viewCtrl.hasMarkedNewMessages(); doThreadList(ureq); } else if(event instanceof DeleteThreadEvent) { reloadThreadList = true; @@ -219,6 +220,7 @@ public class ForumController extends BasicController implements GenericEventList } } else if(userViewCtrl == source) { if(event == Event.BACK_EVENT) { + reloadThreadList |= userViewCtrl.hasMarkedNewMessages(); cleanUpMessageViews(); doUserList(ureq); } else if(event instanceof SelectMessageEvent) { diff --git a/src/main/java/org/olat/modules/fo/ui/MessageListController.java b/src/main/java/org/olat/modules/fo/ui/MessageListController.java index 4ddd179269ae1e10b68b4db1d4e2699395d7e4bc..fec754d4dbf0c883818c746d07f108e97a27a4a2 100644 --- a/src/main/java/org/olat/modules/fo/ui/MessageListController.java +++ b/src/main/java/org/olat/modules/fo/ui/MessageListController.java @@ -148,6 +148,7 @@ public class MessageListController extends BasicController implements GenericEve private Message thread; private boolean reloadList; + private boolean hasMarkedNewMessages; private final Forum forum; private final boolean guestOnly; @@ -211,6 +212,13 @@ public class MessageListController extends BasicController implements GenericEve CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, getIdentity(), forum); } + /** + * @return true if the controller has marked some new messages as seen + */ + public boolean hasMarkedNewMessages() { + return hasMarkedNewMessages; + } + @Override protected void doDispose() { CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, forum); @@ -495,24 +503,7 @@ public class MessageListController extends BasicController implements GenericEve */ private void orderMessagesThreaded(List<MessageLight> messages, List<MessageLight> orderedList, MessageLight startMessage) { if (messages == null || orderedList == null || startMessage == null) return; - /* - Iterator<MessageLight> iterMsg = messages.iterator(); - while (iterMsg.hasNext()) { - MessageLight msg = iterMsg.next(); - if (msg.getParentKey() == null) { - orderedList.add(msg); - List<MessageLight> copiedMessages = new ArrayList<>(messages); - copiedMessages.remove(msg); - messages = copiedMessages; - continue; - } - if ((msg.getParentKey() != null) && (msg.getParentKey().equals(startMessage.getKey()))) { - orderedList.add(msg); - orderMessagesThreaded(messages, orderedList, msg); - } - } - */ - + Map<Long, MessageNode> messagesMap = new HashMap<>(); if(startMessage != null) { messagesMap.put(startMessage.getKey(), new MessageNode(startMessage)); @@ -563,6 +554,7 @@ public class MessageListController extends BasicController implements GenericEve private void markRead(MessageLight message) { if(!guestOnly) { forumManager.markAsRead(getIdentity(), forum, message); + hasMarkedNewMessages = true; } }