Forum Message UI Improvement (Thesis Board #3470) #61
@ -26,4 +26,6 @@ public interface ProjectForumService {
|
|||||||
List<Pair<ProjectThread, ForumPost>> latestPost(Project a, int amount);
|
List<Pair<ProjectThread, ForumPost>> latestPost(Project a, int amount);
|
||||||
|
|
||||||
boolean hasUnreadThreads(Project project, User user);
|
boolean hasUnreadThreads(Project project, User user);
|
||||||
|
|
||||||
|
int getUnreadThreadsCount(Project project, User user);
|
||||||
}
|
}
|
||||||
|
@ -106,6 +106,7 @@ public class ProjectForumServiceImpl implements ProjectForumService {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getUnreadThreadsCount(Project project, User user) {
|
public int getUnreadThreadsCount(Project project, User user) {
|
||||||
List<ProjectThread> threads = getThreads(project);
|
List<ProjectThread> threads = getThreads(project);
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
@ -1,13 +1,31 @@
|
|||||||
package se.su.dsv.scipro.forum.panels;
|
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.basic.Label;
|
||||||
import org.apache.wicket.markup.html.panel.Panel;
|
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) {
|
public NumberOfMessagesPanel(final String id) {
|
||||||
super(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();
|
||||||
|
}
|
||||||
|
@ -214,10 +214,8 @@ public class SupervisorMyProjectsPanel extends Panel {
|
|||||||
SupervisorThreadedForumPage.getPageParameters(projectModel.getObject()));
|
SupervisorThreadedForumPage.getPageParameters(projectModel.getObject()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
// WebMarkupContainer container = new WebMarkupContainer(id);
|
// WebMarkupContainer container = new WebMarkupContainer(id);
|
||||||
// container.setOutputMarkupId(true);
|
// container.setOutputMarkupId(true);
|
||||||
/*
|
/*
|
||||||
@ -226,15 +224,17 @@ public class SupervisorMyProjectsPanel extends Panel {
|
|||||||
//container.add(new NumberOfMessagesPanel("counter"));
|
//container.add(new NumberOfMessagesPanel("counter"));
|
||||||
|
|
||||||
//item.add(container);
|
//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 fragment = new Fragment(id, "parentMarkupId", SupervisorMyProjectsPanel.this);
|
||||||
|
|
||||||
fragment.add(new AbstractReadStatePanel("flag", AbstractReadStatePanel.ShowReadStateTooltip.ENABLED) {
|
fragment.add(new AbstractReadStatePanel("flag", AbstractReadStatePanel.ShowReadStateTooltip.ENABLED) {
|
||||||
@Override
|
@Override
|
||||||
protected boolean isRead() {
|
protected boolean isRead() {
|
||||||
return !projectForumService.hasUnreadThreads(projectModel.getObject(),
|
return msgCount == 0;
|
||||||
SciProSession.get().getUser());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -243,7 +243,13 @@ public class SupervisorMyProjectsPanel extends Panel {
|
|||||||
SupervisorThreadedForumPage.getPageParameters(projectModel.getObject()));
|
SupervisorThreadedForumPage.getPageParameters(projectModel.getObject()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
fragment.add(new NumberOfMessagesPanel("counter"));
|
|
||||||
|
fragment.add(new NumberOfMessagesPanel("counter") {
|
||||||
|
@Override
|
||||||
|
public int getMessageCount() {
|
||||||
|
return msgCount;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
item.add(fragment);
|
item.add(fragment);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user