Forum Message UI Improvement (Thesis Board #3470) #61

Merged
tozh4728 merged 20 commits from 3470-forum-msg-ui-improvement into develop 2024-12-19 15:28:23 +01:00
4 changed files with 37 additions and 10 deletions
Showing only changes of commit 0525f89560 - Show all commits

View File

@ -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);
}

View File

@ -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;

View File

@ -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();
}

View File

@ -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);
}