Use generic page template for bookmark and lazy chat lists.

Change-Id: I86cc78c8164d6672d8b5cfbc2a3433954068967e
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/Bookmark.java b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/Bookmark.java
index 8beda97..ea62af3 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/Bookmark.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/Bookmark.java
@@ -56,4 +56,14 @@
       @CheckForNull Integer count) {
     return findViewable(Bookmark.class, session, viewer, owner, cursor, count);
   }
+
+  @Override
+  public boolean isBookmark() {
+    return true;
+  }
+
+  @Override
+  public boolean isLazychatMessage() {
+    return false;
+  }
 }
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
index 1f57c74..d026a1a 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
@@ -75,9 +75,9 @@
   @ConfigProperty(name = "mulkcms.bookmarks.default-max-results")
   int defaultMaxResults;
 
-  @ResourcePath("benki/bookmarks/bookmarkList.html")
+  @ResourcePath("benki/posts/postList.html")
   @Inject
-  Template bookmarkList;
+  Template postList;
 
   @ResourcePath("benki/bookmarks/newBookmark.html")
   @Inject
@@ -104,9 +104,11 @@
     var session = entityManager.unwrap(Session.class);
     var q = Bookmark.findViewable(session, identity, null, cursor, maxResults);
 
-    return bookmarkList
+    return postList
         .data("posts", q.posts)
         .data("feedUri", "/bookmarks/feed")
+        .data("pageTitle", "Bookmarks")
+        .data("showBookmarkForm", false)
         .data("authenticated", !identity.isAnonymous())
         .data("hasPreviousPage", q.prevCursor != null)
         .data("hasNextPage", q.nextCursor != null)
@@ -129,9 +131,11 @@
     var session = entityManager.unwrap(Session.class);
     var q = Bookmark.findViewable(session, identity, owner, cursor, maxResults);
 
-    return bookmarkList
+    return postList
         .data("posts", q.posts)
         .data("feedUri", String.format("/bookmarks/~%s/feed", ownerName))
+        .data("pageTitle", "Bookmarks")
+        .data("showBookmarkForm", false)
         .data("authenticated", !identity.isAnonymous())
         .data("hasPreviousPage", q.prevCursor != null)
         .data("hasNextPage", q.nextCursor != null)
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java b/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java
index 898eeb4..7d75bb4 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java
@@ -75,6 +75,10 @@
       inverseJoinColumns = @JoinColumn(name = "target"))
   public Set<Role> targets;
 
+  public abstract boolean isBookmark();
+
+  public abstract boolean isLazychatMessage();
+
   protected static <T extends Post> CriteriaQuery<T> queryViewable(
       Class<T> entityClass,
       SecurityIdentity readerIdentity,
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatMessage.java b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatMessage.java
index 4e58259..4c7f6a0 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatMessage.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatMessage.java
@@ -46,4 +46,14 @@
       @CheckForNull Integer count) {
     return findViewable(LazychatMessage.class, session, viewer, owner, cursor, count);
   }
+
+  @Override
+  public boolean isBookmark() {
+    return false;
+  }
+
+  @Override
+  public boolean isLazychatMessage() {
+    return true;
+  }
 }
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java
index 4284d96..cb89e71 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java
@@ -40,9 +40,9 @@
   @ConfigProperty(name = "mulkcms.lazychat.default-max-results")
   int defaultMaxResults;
 
-  @ResourcePath("benki/lazychat/lazychatList.html")
+  @ResourcePath("benki/posts/postList.html")
   @Inject
-  Template lazychatList;
+  Template postList;
 
   @Inject SecurityIdentity identity;
 
@@ -59,9 +59,10 @@
     var session = entityManager.unwrap(Session.class);
     var q = LazychatMessage.findViewable(session, identity, null, cursor, maxResults);
 
-    return lazychatList
+    return postList
         .data("posts", q.posts)
-        .data("authenticated", !identity.isAnonymous())
+        .data("pageTitle", "Lazy Chat")
+        .data("showBookmarkForm", false)
         .data("hasPreviousPage", q.prevCursor != null)
         .data("hasNextPage", q.nextCursor != null)
         .data("previousCursor", q.prevCursor)
@@ -83,9 +84,10 @@
     var session = entityManager.unwrap(Session.class);
     var q = LazychatMessage.findViewable(session, identity, owner, cursor, maxResults);
 
-    return lazychatList
+    return postList
         .data("posts", q.posts)
-        .data("authenticated", !identity.isAnonymous())
+        .data("pageTitle", "Lazy Chat")
+        .data("showBookmarkForm", false)
         .data("hasPreviousPage", q.prevCursor != null)
         .data("hasNextPage", q.nextCursor != null)
         .data("previousCursor", q.prevCursor)