mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-11-25 04:47:59 +01:00
163 lines
6.3 KiB
Text
163 lines
6.3 KiB
Text
- 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}")
|
|
' »
|
|
=> 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.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, 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.
|