{@java.util.List<eu.mulk.mulkcms2.benki.posts.Day> postDays}
{@java.lang.String pageTitle}
{@java.lang.Boolean showBookmarkForm}
{@java.lang.Boolean hasPreviousPage}
{@java.lang.Boolean hasNextPage}
{@java.lang.Integer previousCursor}
{@java.lang.Integer nextCursor}
{@java.lang.Integer pageSize}
{@java.lang.String searchQuery}

{#include base.html}

{#title}Benki {pageTitle}{/title}
{#siteSection}{pageTitle}{/siteSection}

{#nav}{#navbar siteSection=pageTitle /}

{#head}
  <link href="{feedUri}" rel="alternate" type="application/atom+xml" />

  {#if showBookmarkForm || showLazychatForm}
  <script type="module" src="/lib.js"></script>
  {/if}
{/head}

{#body}

{#if showBookmarkForm}
  <elix-expandable-section id="bookmark-submission-pane">
    <h2 slot="header" class="small-title expandable-section-title"><button class="pure-button">Create New Bookmark</button></h2>
    <section id="bookmark-submission">
      <mlk-bookmark-submission-form id="bookmark-submission-form"></mlk-bookmark-submission-form>
    </section>
  </elix-expandable-section>
{/if}

{#if showLazychatForm}
  <elix-expandable-section id="lazychat-submission-pane">
    <h2 slot="header" class="small-title expandable-section-title"><button class="pure-button">Post Message</button></h2>
    <section id="lazychat-submission">
      <mlk-lazychat-submission-form id="lazychat-submission-form"></mlk-lazychat-submission-form>
    </section>
  </elix-expandable-section>
{/if}

<div class="paging">
  <form id="post-search-bar" method="get" class="pure-form">
    <input placeholder="Search..." value="{searchQuery}" aria-label="Search" id="post-search-query" name="search-query" type="search"/>
    <input type="submit" aria-label="Submit search query" class="pure-button pure-button-primary" value="&#x1f50e;"/>
  </form>
  {#if hasPreviousPage}<a href="?i={previousCursor}&n={pageSize}&search-query={searchQuery}" class="pure-button">⇠ previous page</a>{/if}
  {#if hasNextPage}<a href="?i={nextCursor}&n={pageSize}&search-query={searchQuery}" class="pure-button">next page ⇢</a>{/if}
</div>

<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 {#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}">
                    <span class="post-self-link">#</span>
                  </a>

                  <a href="{uri}" class="bookmark-title">
                    <h1 class="bookmark-title"><span class="bookmark-symbol">🔖 </span> {title}</h1>.
                  </a>
                </div>
              </header>

              <div class="bookmark-controls">
                {#if showBookmarkForm}
                <button class="pure-button bookmark-edit-button">Edit</button>
                {/if}
              </div>

              <section class="bookmark-description post-content">
                {descriptionHtml.raw}
              </section>

              <section class="comment-box"></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}">
                    <span class="post-self-link">#</span>
                  </a>
                </div>
              </header>

              <div class="lazychat-message-controls">
                {#if showLazychatForm}
                <button class="pure-button lazychat-edit-button">Edit</button>
                {/if}
              </div>

              <section class="lazychat-message-content post-content">
                {contentHtml.raw}
              </section>
            </article>
          {/if}
        {/with}
      {/for}
    </div>
  {/for}
</section>

<div class="paging">
  {#if hasPreviousPage}<a href="?i={previousCursor}&n={pageSize}&search-query={searchQuery}" class="pure-button">⇠ previous page</a>{/if}
  <span class="filler"></span>
  {#if hasNextPage}<a href="?i={nextCursor}&n={pageSize}&search-query={searchQuery}" class="pure-button">next page ⇢</a>{/if}
</div>

{/body}

{/include}
