- route = fn p -> ~p"/forums/#{@forum}/topics/#{@topic}?#{p}" end
- pagination = render PhilomenaWeb.PaginationView, "_pagination.html", page: @posts, route: route, last: true

h1 = @topic.title

= if @topic.hidden_from_users do
  .block.block--fixed.block--danger
    h4 This topic has been deleted by a moderator
    p
      strong> Reason:
      em
        = @topic.deletion_reason

    = if can?(@conn, :hide, @topic) do
      p
        strong> Deleted by:
        em
          strong
            = link(@topic.deleted_by.name, to: ~p"/profiles/#{@topic.deleted_by}")

      p
        = link(to: ~p"/forums/#{@forum}/topics/#{@topic}/hide", method: :delete, class: "button") do
          i.fas.fa-check>
          ' Restore

/ Header section
.block
  .block__header
    => link(@forum.name, to: ~p"/forums/#{@forum}")
    ' &raquo;
    => link(@topic.title, to: ~p"/forums/#{@forum}/topics/#{@topic}")

    = if not @topic.hidden_from_users or can?(@conn, :hide, @topic) do
      a href=~p"/posts?#{[pq: "topic_id:#{@topic.id}"]}"
        i.fa.icon--padded.small.fa-search>
        ' Search Posts
      .flex.flex--wrap.block__header.block__header--light.page__header
        .flex--fixed.page__pagination
          = pagination
        .flex--fixed.block__header__item.page__info
          ' Started by
          => render PhilomenaWeb.UserAttributionView, "_anon_user.html", object: @topic, conn: @conn
        .page__info
          .flex.flex--center-distributed
            .flex--fixed.block__header__item
              ' Posted
              =< pretty_time(@topic.created_at)
            .flex--fixed.block__header__item
              => @topic.post_count - 1
              ' replies
            = if not @topic.hidden_from_users do
              = render PhilomenaWeb.Topic.SubscriptionView, "_subscription.html", forum: @forum, topic: @topic, watching: @watching, conn: @conn

= if not @topic.hidden_from_users or can?(@conn, :hide, @topic) do
  / Display the poll, if any
  = if @topic.poll do
    = render PhilomenaWeb.Topic.PollView, "_display.html", Map.put(assigns, :poll, @topic.poll)

  / The actual posts
  .posts-area
    .post-list
      = for {post, body} <- @posts, can_view_communication?(@conn, post) do
        = render PhilomenaWeb.PostView, "_post.html", conn: @conn, post: post, body: body

      = if @conn.assigns.advert do
        = render PhilomenaWeb.AdvertView, "_box.html", advert: @conn.assigns.advert, conn: @conn

      / Footer section
      .block
        .block__header.block__header--light.page__header
          .page__pagination = pagination

      = if @topic.locked_at do
        .block.block--fixed.block--warning
          h4 This topic has been locked to new posts from non-moderators.
          p
            ' Locked
            => pretty_time(@topic.locked_at)

          p
            ' Lock reason:
            em = @topic.lock_reason

          = if can?(@conn, :hide, @topic) and not is_nil(@topic.locked_by) do
            p
              ' Locked by:
              em
                strong
                  = link(@topic.locked_by.name, to: ~p"/profiles/#{@topic.locked_by}")

  / Post form
  = cond do
    - @conn.assigns.current_ban ->
      = render PhilomenaWeb.BanView, "_ban_reason.html", conn: @conn

    - @topic.hidden_from_users ->
      .block.block--fixed.block--danger
        h4 Cannot reply to a deleted topic.

    - @topic.post_count < 200_000 and can?(@conn, :create_post, @topic) ->
      = render PhilomenaWeb.Topic.PostView, "_form.html", conn: @conn, forum: @forum, topic: @topic, changeset: @changeset

    - @topic.post_count >= 200_000 ->
      h3 Okay, we're impressed
      p You're looking at a thread with over 200,000 posts in it!
      p For various reasons, we'd like to ask you to start a new topic.

    - true ->

  = if can?(@conn, :hide, @topic) do
    .block__content.block__content--top-border
      input.toggle-box id="administrator_tools" type="checkbox" checked=false
      label for="administrator_tools" Manage Topic
      .toggle-box-container
        .toggle-box-container__content
          p
            = if not @topic.hidden_from_users do
              = if @topic.sticky do
                = link(to: ~p"/forums/#{@forum}/topics/#{@topic}/stick", method: :delete, class: "button") do
                  i.fas.fa-thumbtack>
                  ' Unstick

              - else
                = link(to: ~p"/forums/#{@forum}/topics/#{@topic}/stick", method: :post, class: "button") do
                  i.fas.fa-thumbtack>
                  ' Stick

              = if @topic.locked_at do
                = link(to: ~p"/forums/#{@forum}/topics/#{@topic}/lock", method: :delete, class: "button") do
                  i.fas.fa-unlock>
                  ' Unlock

              - else
                = form_for :topic, ~p"/forums/#{@forum}/topics/#{@topic}/lock", [method: :post, class: "hform"], fn f ->
                  .field
                    = text_input f, :lock_reason, class: "input hform__text", placeholder: "Lock reason", required: true
                    = submit class: "hform__button button" do
                      i.fas.fa-lock>
                      ' Lock

              = form_for @topic_changeset, ~p"/forums/#{@forum}/topics/#{@topic}", [method: :put, class: "hform"], fn f ->
                .field
                  = text_input f, :title, class: "input hform__text", placeholder: "New Title"
                  = submit class: "hform__button button" do
                    i.fas.fa-pen>
                    ' Set Title

              = form_for :topic, ~p"/forums/#{@forum}/topics/#{@topic}/move", [method: :post, class: "hform"], fn f ->
                .field
                  = select f, :target_forum_id, Enum.map(@conn.assigns.forums, &{&1.name, &1.id}), class: "input hform__text"
                  = submit class: "hform__button button" do
                    i.fas.fa-truck>
                    ' Move

              = form_for :topic, ~p"/forums/#{@forum}/topics/#{@topic}/hide", [method: :post, class: "hform"], fn f ->
                .field
                  = text_input f, :deletion_reason, class: "input hform__text", placeholder: "Deletion reason", required: true
                  = submit class: "hform__button button" do
                    i.fas.fa-trash>
                    ' Delete

            - else
              | Moderation tools unavailable for deleted topics.
