diff options
Diffstat (limited to 'src')
4 files changed, 24 insertions, 13 deletions
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java b/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java index d3e7712..1ddffa8 100644 --- a/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java +++ b/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java @@ -44,10 +44,12 @@ import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.MapKey; import javax.persistence.OneToMany; +import javax.persistence.OrderBy; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; +import org.hibernate.annotations.Where; @Entity @Table(name = "posts", schema = "benki") @@ -113,6 +115,12 @@ public abstract class Post<Text extends PostText<?>> extends PanacheEntityBase { @JsonbTransient public Collection<LazychatMessage> referrers; + @ManyToMany(mappedBy = "referees") + @OrderBy("date DESC") + @Where(clause = "scope = 'comment'") + @JsonbTransient + public Collection<LazychatMessage> comments; + @OneToMany( mappedBy = "post", fetch = FetchType.LAZY, @@ -216,6 +224,9 @@ public abstract class Post<Text extends PostText<?>> extends PanacheEntityBase { cb = cb.where("post.scope").eq(Scope.top_level); + cb = cb.leftJoinFetch("post.comments", "comment"); + cb = cb.fetch("comment.texts"); + return cb; } @@ -393,16 +404,6 @@ public abstract class Post<Text extends PostText<?>> extends PanacheEntityBase { } } - public Collection<LazychatMessage> getComments() { - return referrers.stream() - .filter(l -> l.scope == Scope.comment) - .sorted( - Comparator.comparing( - (LazychatMessage l) -> Objects.requireNonNullElse(l.date, OffsetDateTime.MIN)) - .reversed()) - .toList(); - } - public enum Visibility { PUBLIC, SEMIPRIVATE, diff --git a/src/main/resources/META-INF/resources/cms2/base.css b/src/main/resources/META-INF/resources/cms2/base.css index d68e07e..14d4f7a 100644 --- a/src/main/resources/META-INF/resources/cms2/base.css +++ b/src/main/resources/META-INF/resources/cms2/base.css @@ -323,7 +323,7 @@ a.bookmark-title { color: #555; } -.post-self-link, .comment-self-link { +.post-self-link, .comment-self-link, .comment-box-self-link { padding-left: 5px; padding-right: 5px; } @@ -379,7 +379,7 @@ article.lazychat-message > header, .comment-info { line-height: 1em; } -a.post-link, a.comment-link { +a.post-link, a.comment-link, a.comment-box-link { text-decoration: none; } diff --git a/src/main/resources/templates/PostResource/postList.html b/src/main/resources/templates/PostResource/postList.html index 2f932ec..8c66e1d 100644 --- a/src/main/resources/templates/PostResource/postList.html +++ b/src/main/resources/templates/PostResource/postList.html @@ -66,6 +66,11 @@ <a class="post-link" href="/posts/{post.id}"> <span class="post-self-link">#</span> </a> + {#if post.comments.size() > 0} + <a class="comment-box-link" href="/posts/{post.id}#comment-box-{post.id}"> + <span class="comment-box-self-link">({post.comments.size()})</span> + </a> + {/if} <a href="{post.uri}" class="bookmark-title"> <h2 class="bookmark-title"><span class="bookmark-symbol">🔖 </span> {post.title}</h2>. @@ -103,6 +108,11 @@ <a class="post-link" href="/posts/{post.id}"> <span class="post-self-link">#</span> </a> + {#if post.comments.size() > 0} + <a class="comment-box-link" href="/posts/{post.id}#comment-box-{post.id}"> + <span class="comment-box-self-link">({post.comments.size()})</span> + </a> + {/if} </div> </header> diff --git a/src/main/resources/templates/tags/commentBox.html b/src/main/resources/templates/tags/commentBox.html index 40cec4a..abe73f5 100644 --- a/src/main/resources/templates/tags/commentBox.html +++ b/src/main/resources/templates/tags/commentBox.html @@ -1,7 +1,7 @@ {@java.lang.Integer postId} {@java.util.List<eu.mulk.mulkcms2.benki.lazychat.LazychatMessage> comments} -<div class="comment-box"> +<div class="comment-box" id="comment-box-{postId}"> <script type="module" src="/lib.js"></script> <script type="module" src="/posts/commentBox.js"></script> |