philomena/lib/philomena_web/templates/topic/show.html.slime
VcSaJen 269caabd5e
Return some BoR functionality to forums ()
* return some BoR functionality to forums

- Added searching by forum slug
- Display forum/topic/post-num in search results for each post
- Display who locked topic for moderators

* fix topic position bug (Fixes )
2021-05-09 13:21:45 -04:00

163 lines
6.5 KiB
Text

- route = fn p -> Routes.forum_topic_path(@conn, :show, @forum, @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: Routes.profile_path(@conn, :show, @topic.deleted_by))
p
= link(to: Routes.forum_topic_hide_path(@conn, :delete, @forum, @topic), method: :delete, class: "button") do
i.fas.fa-check>
' Restore
/ Header section
.block
.block__header
=> link(@forum.name, to: Routes.forum_path(@conn, :show, @forum))
' »
=> link(@topic.title, to: Routes.forum_topic_path(@conn, :show, @forum, @topic))
= if not @topic.hidden_from_users or can?(@conn, :hide, @topic) do
a href=Routes.post_path(@conn, :index, pq: "topic_id:#{@topic.id}")
i.fa.fa-fw.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__options
' 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, (!post.destroyed_content or can?(@conn, :hide, 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: Routes.profile_path(@conn, :show, @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
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: Routes.forum_topic_stick_path(@conn, :delete, @forum, @topic), method: :delete, class: "button") do
i.fas.fa-thumbtack>
' Unstick
- else
= link(to: Routes.forum_topic_stick_path(@conn, :create, @forum, @topic), method: :post, class: "button") do
i.fas.fa-thumbtack>
' Stick
= if @topic.locked_at do
= link(to: Routes.forum_topic_lock_path(@conn, :delete, @forum, @topic), method: :delete, class: "button") do
i.fas.fa-unlock>
' Unlock
- else
= form_for :topic, Routes.forum_topic_lock_path(@conn, :create, @forum, @topic), [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, Routes.forum_topic_path(@conn, :update, @forum, @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, Routes.forum_topic_move_path(@conn, :create, @forum, @topic), [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, Routes.forum_topic_hide_path(@conn, :create, @forum, @topic), [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.