From 0525f8956023099cade6a5fd30921b76bc160fed Mon Sep 17 00:00:00 2001 From: Tom Zhao <tom.zhao@dsv.su.se> Date: Tue, 17 Dec 2024 09:45:14 +0100 Subject: [PATCH] 3470: Add logic to retrieve actual message counts --- .../dsv/scipro/forum/ProjectForumService.java | 2 ++ .../scipro/forum/ProjectForumServiceImpl.java | 1 + .../forum/panels/NumberOfMessagesPanel.java | 22 +++++++++++++++++-- .../panels/SupervisorMyProjectsPanel.java | 22 ++++++++++++------- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumService.java b/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumService.java index d3b1c35773..018e4736fa 100644 --- a/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumService.java +++ b/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumService.java @@ -26,4 +26,6 @@ public interface ProjectForumService { List<Pair<ProjectThread, ForumPost>> latestPost(Project a, int amount); boolean hasUnreadThreads(Project project, User user); + + int getUnreadThreadsCount(Project project, User user); } diff --git a/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumServiceImpl.java b/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumServiceImpl.java index 878d2c2050..2743d0cc3d 100644 --- a/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumServiceImpl.java +++ b/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumServiceImpl.java @@ -106,6 +106,7 @@ public class ProjectForumServiceImpl implements ProjectForumService { return false; } + @Override public int getUnreadThreadsCount(Project project, User user) { List<ProjectThread> threads = getThreads(project); int count = 0; diff --git a/view/src/main/java/se/su/dsv/scipro/forum/panels/NumberOfMessagesPanel.java b/view/src/main/java/se/su/dsv/scipro/forum/panels/NumberOfMessagesPanel.java index b7a5900689..932b62f302 100644 --- a/view/src/main/java/se/su/dsv/scipro/forum/panels/NumberOfMessagesPanel.java +++ b/view/src/main/java/se/su/dsv/scipro/forum/panels/NumberOfMessagesPanel.java @@ -1,13 +1,31 @@ package se.su.dsv.scipro.forum.panels; +import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.Model; -public class NumberOfMessagesPanel extends Panel { +public abstract class NumberOfMessagesPanel extends Panel { + + private Model<String> model = Model.of(""); public NumberOfMessagesPanel(final String id) { super(id); - add(new Label("msgCount", " (0)")); + add(new Label("msgCount", model)); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + super.onComponentTag(tag); + + int count = getMessageCount(); + + if (count > 0) { + model.setObject("(" + count + ")"); + } + } + + public abstract int getMessageCount(); } diff --git a/view/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMyProjectsPanel.java b/view/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMyProjectsPanel.java index 9e1860c856..53ff74a577 100755 --- a/view/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMyProjectsPanel.java +++ b/view/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMyProjectsPanel.java @@ -214,27 +214,27 @@ public class SupervisorMyProjectsPanel extends Panel { SupervisorThreadedForumPage.getPageParameters(projectModel.getObject())); } }); - */ - - //WebMarkupContainer container = new WebMarkupContainer(id); - //container.setOutputMarkupId(true); + // WebMarkupContainer container = new WebMarkupContainer(id); + // container.setOutputMarkupId(true); /* container */ //container.add(new NumberOfMessagesPanel("counter")); //item.add(container); - // todo: reconsider name of this id, needs to be improved. + //boolean hasUnreadThreads = projectForumService.hasUnreadThreads(projectModel.getObject(), SciProSession.get().getUser()); + int msgCount = projectForumService.getUnreadThreadsCount(projectModel.getObject(), SciProSession.get().getUser()); + + // todo: reconsider name of this id, needs to be improved. Fragment fragment = new Fragment(id, "parentMarkupId", SupervisorMyProjectsPanel.this); fragment.add(new AbstractReadStatePanel("flag", AbstractReadStatePanel.ShowReadStateTooltip.ENABLED) { @Override protected boolean isRead() { - return !projectForumService.hasUnreadThreads(projectModel.getObject(), - SciProSession.get().getUser()); + return msgCount == 0; } @Override @@ -243,7 +243,13 @@ public class SupervisorMyProjectsPanel extends Panel { SupervisorThreadedForumPage.getPageParameters(projectModel.getObject())); } }); - fragment.add(new NumberOfMessagesPanel("counter")); + + fragment.add(new NumberOfMessagesPanel("counter") { + @Override + public int getMessageCount() { + return msgCount; + } + }); item.add(fragment); }