summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2020-04-26 13:14:21 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2020-04-26 18:38:45 +0200
commit369e698b0761a0c0abb460e92d680ae441374422 (patch)
treee1fb9358f85fe07bf28fcea8923dafb573d6aca3 /src/main
parentb3ff7ac842c385bb7c1a99d794a0c57830f58ea7 (diff)
KB54 Group posts by date, use floating to make style sheet even more compact.
Change-Id: I41346eb51481d4c2c4e7066373fba5b7073e3e4f
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/eu/mulk/mulkcms2/benki/posts/PostResource.java31
-rw-r--r--src/main/resources/META-INF/resources/cms2/base.css65
-rw-r--r--src/main/resources/templates/benki/posts/postList.html68
3 files changed, 122 insertions, 42 deletions
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/posts/PostResource.java b/src/main/java/eu/mulk/mulkcms2/benki/posts/PostResource.java
index 92e2f4e..1fa7a26 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/posts/PostResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/posts/PostResource.java
@@ -61,11 +61,18 @@ public abstract class PostResource {
private static final Logger log = Logger.getLogger(PostResource.class);
- private static final DateTimeFormatter htmlDateFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
+ private static final DateTimeFormatter htmlDateTimeFormatter =
+ DateTimeFormatter.ISO_OFFSET_DATE_TIME;
- private static final DateTimeFormatter humanDateFormatter =
+ private static final DateTimeFormatter humanDateTimeFormatter =
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG, FormatStyle.SHORT);
+ private static final DateTimeFormatter htmlDateFormatter =
+ DateTimeFormatter.ISO_LOCAL_DATE;
+
+ private static final DateTimeFormatter humanDateFormatter =
+ DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
+
private static final int pageKeyBytes = 32;
protected static final JsonProvider jsonProvider = JsonProvider.provider();
@@ -331,7 +338,7 @@ public abstract class PostResource {
if (x == null) {
return null;
}
- return humanDateFormatter.format(x);
+ return humanDateTimeFormatter.format(x);
}
@TemplateExtension
@@ -340,6 +347,24 @@ public abstract class PostResource {
if (x == null) {
return null;
}
+ return htmlDateTimeFormatter.format(x);
+ }
+
+ @TemplateExtension
+ @CheckForNull
+ static String humanDate(@CheckForNull TemporalAccessor x) {
+ if (x == null) {
+ return null;
+ }
+ return humanDateFormatter.format(x);
+ }
+
+ @TemplateExtension
+ @CheckForNull
+ static String htmlDate(@CheckForNull TemporalAccessor x) {
+ if (x == null) {
+ return null;
+ }
return htmlDateFormatter.format(x);
}
diff --git a/src/main/resources/META-INF/resources/cms2/base.css b/src/main/resources/META-INF/resources/cms2/base.css
index 11a2e70..e4ef41b 100644
--- a/src/main/resources/META-INF/resources/cms2/base.css
+++ b/src/main/resources/META-INF/resources/cms2/base.css
@@ -171,8 +171,17 @@ body > footer {
border-top: lightgray solid 1px;
}
+.post-day {
+ margin: 0.5em 0;
+}
+
+.bookmark-title-section {
+ display: inline;
+}
+
a.bookmark-title {
text-decoration: none;
+ margin-right: 1em;
}
h1.bookmark-title {
@@ -182,42 +191,64 @@ h1.bookmark-title {
display: inline;
}
-.bookmark-info {
+.post-day-info {
+ font-size: smaller;
font-style: italic;
+}
+
+.post-owner {
font-size: smaller;
+ color: #555;
+}
+
+.post-self-link {
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+.bookmark-info {
+ font-style: italic;
margin: 0;
padding: 0;
flex: auto;
}
+.bookmark-controls {
+ float: right;
+}
+
article.bookmark {
- margin: 0.5em 0;
border: 1px solid #e0b0b0;
padding: 0.3em;
background: #f8f0f0;
}
article.bookmark > header {
- display: flex
+ display: inline-flex;
+ margin-right: 5px;
+}
+
+.post-with-nonempty-body > header {
+ float: left;
}
.lazychat-message-info {
font-style: italic;
- font-size: smaller;
margin: 0;
padding: 0;
flex: auto;
}
article.lazychat-message {
- margin: 0.5em 0;
border: 1px solid #a0c0c0;
padding: 0.3em;
background: #f0f8f0;
}
article.lazychat-message > header {
- display: flex
+ display: flex;
+ float: left;
+ margin-right: 5px;
}
a.post-link {
@@ -250,7 +281,27 @@ elix-expandable-section.editor-pane::part(header) {
}
.lazychat-message-controls {
- flex: initial;
+ float: right;
+}
+
+.post-content > :first-child {
+ margin-top: 0;
+}
+
+.post-content > :last-child {
+ margin-bottom: 0;
+}
+
+.bookmark-description > :nth-child(2) {
+ margin-top: 0;
+}
+
+.bookmark-description > blockquote :first-child {
+ margin-top: 0;
+}
+
+.bookmark-description > blockquote :last-child {
+ margin-bottom: 0;
}
.paging {
diff --git a/src/main/resources/templates/benki/posts/postList.html b/src/main/resources/templates/benki/posts/postList.html
index 2911be4..f178927 100644
--- a/src/main/resources/templates/benki/posts/postList.html
+++ b/src/main/resources/templates/benki/posts/postList.html
@@ -54,67 +54,71 @@
<section id="main-content">
{#for day in postDays}
<div class="post-day">
+ <div class="post-day-info">
+ <time datetime="{day.date.htmlDate}">{day.date.humanDate}</time>
+ </div>
+
{#for post in day.posts}
{#with post}
{#if post.isBookmark}
- <article class="bookmark">
+ <article class="bookmark {#if descriptionHtml != ""}post-with-nonempty-body{/if}">
+ <section class="bookmark-editor post-editor">
+ {#if showBookmarkForm}
+ <elix-expandable-panel class="bookmark-editor-pane editor-pane">
+ <mlk-bookmark-submission-form edited-id="{post.id}"></mlk-bookmark-submission-form>
+ </elix-expandable-panel>
+ {/if}
+ </section>
+
<header>
<div class="bookmark-info">
+ <span class="bookmark-owner post-owner">{owner.firstName}</span>
<a class="post-link" href="/posts/{post.id}">
- <time datetime="{date.htmlDateTime}">{date.humanDateTime}</time>
- <span class="bookmark-owner">{owner.firstName} {owner.lastName}</span>
+ <span class="post-self-link">#</span>
</a>
- </div>
- <div class="bookmark-controls">
- {#if showBookmarkForm}
- <button class="pure-button bookmark-edit-button">Edit</button>
- {/if}
+ <a href="{uri}" class="bookmark-title">
+ <h1 class="bookmark-title">⇢&nbsp;{title}</h1>.
+ </a>
</div>
</header>
- <section class="bookmark-editor post-editor">
+ <div class="bookmark-controls">
{#if showBookmarkForm}
- <elix-expandable-panel class="bookmark-editor-pane editor-pane">
- <mlk-bookmark-submission-form edited-id="{post.id}"></mlk-bookmark-submission-form>
- </elix-expandable-panel>
+ <button class="pure-button bookmark-edit-button">Edit</button>
{/if}
- </section>
-
- <section class="bookmark-title-section">
- <a href="{uri}" class="bookmark-title"><h1 class="bookmark-title">⇢&nbsp;{title}</h1></a>
- </section>
+ </div>
- <section class="bookmark-description">
+ <section class="bookmark-description post-content">
{descriptionHtml.raw}
</section>
</article>
{#else}
<article class="lazychat-message">
+ <section class="lazychat-editor post-editor">
+ {#if showLazychatForm}
+ <elix-expandable-panel class="lazychat-editor-pane editor-pane">
+ <mlk-lazychat-submission-form edited-id="{post.id}"></mlk-lazychat-submission-form>
+ </elix-expandable-panel>
+ {/if}
+ </section>
+
<header>
<div class="lazychat-message-info">
+ <span class="lazychat-message-owner post-owner">{owner.firstName}</span>
<a class="post-link" href="/posts/{post.id}">
- <time datetime="{date.htmlDateTime}">{date.humanDateTime}</time>
- <span class="lazychat-message-owner">{owner.firstName} {owner.lastName}</span>
+ <span class="post-self-link">#</span>
</a>
</div>
-
- <div class="lazychat-message-controls">
- {#if showLazychatForm}
- <button class="pure-button lazychat-edit-button">Edit</button>
- {/if}
- </div>
</header>
- <section class="lazychat-editor post-editor">
+ <div class="lazychat-message-controls">
{#if showLazychatForm}
- <elix-expandable-panel class="lazychat-editor-pane editor-pane">
- <mlk-lazychat-submission-form edited-id="{post.id}"></mlk-lazychat-submission-form>
- </elix-expandable-panel>
+ <button class="pure-button lazychat-edit-button">Edit</button>
{/if}
- </section>
+ </div>
- <section class="lazychat-message-content">
+ <section class="lazychat-message-content post-content">
{contentHtml.raw}
</section>
</article>