201 lines
11 KiB
Text
201 lines
11 KiB
Text
<% title t("views.moderations.actions.meta.title2", title: @moderatable.title) %>
|
|
|
|
<%= javascript_packs_with_chunks_tag "commentModPage", defer: true %>
|
|
|
|
<% cache(release_adjusted_cache_key("mod-styling")) do %>
|
|
<style>
|
|
<%= Rails.application.assets["moderators.css"].to_s.html_safe %>
|
|
</style>
|
|
<% end %>
|
|
|
|
<% if flash[:error].present? %>
|
|
<div class="crayons-banner crayons-banner--error" role="alert">
|
|
<%= flash[:error] %>
|
|
</div>
|
|
<% end %>
|
|
|
|
<div class="container mod-container" style="text-align: center">
|
|
<h2><a href="<%= @moderatable.path %>" rel="nofollow"><%= @moderatable.title %></a></h2>
|
|
<h3><a href="<%= @moderatable.user.path %>">@<%= @moderatable.user.username %></a></h3>
|
|
<% if @moderatable.class.name == "Article" &&
|
|
(Tag.where(requires_approval: true).pluck(:name) & @moderatable.decorate.cached_tag_list_array).any? &&
|
|
(current_user.any_admin? || @tag_moderator_tags.any? { |tag| @moderatable.tag_list.include?(tag.name) }) %>
|
|
<%= form_tag "/article_approvals", method: "post" do %>
|
|
<%= hidden_field_tag(:id, @moderatable.id) %>
|
|
<% if @moderatable.approved %>
|
|
<%= hidden_field_tag(:approved, false) %>
|
|
<button class="crayons-btn crayons-btn--secondary approval-button approval-removal"><%= t("views.moderations.actions.approve.remove") %></button>
|
|
<% else %>
|
|
<%= hidden_field_tag(:approved, true) %>
|
|
<button class="crayons-btn approval-button"><%= t("views.moderations.actions.approve.add") %></button>
|
|
<% end %>
|
|
<% end %>
|
|
<hr />
|
|
<% end %>
|
|
|
|
<div id="content-mod-actions" class="flex justify-around">
|
|
<button class="reaction-button <%= Reaction.cached_any_reactions_for?(@moderatable, current_user, "thumbsup") ? "reacted" : "" %>"
|
|
data-reactable-id="<%= @moderatable.id %>"
|
|
data-category="thumbsup"
|
|
data-reactable-type="<%= @moderatable.class.name %>">
|
|
<div class="reaction-button-circle">
|
|
<%= crayons_icon_tag("twemoji/thumb-up", native: true, width: 32, height: 32, title: t("views.moderations.actions.thumb_up")) %>
|
|
<%= crayons_icon_tag("checkmark", class: "reaction-checkmark", title: t("views.moderations.actions.checkmark")) %>
|
|
</div>
|
|
<span class="vote-text"><%= t("views.moderations.actions.vote_up") %></span>
|
|
</button>
|
|
<button class="reaction-button <%= Reaction.cached_any_reactions_for?(@moderatable, current_user, "thumbsdown") ? "reacted" : "" %>"
|
|
data-reactable-id="<%= @moderatable.id %>"
|
|
data-category="thumbsdown"
|
|
data-reactable-type="<%= @moderatable.class.name %>">
|
|
<div class="reaction-button-circle">
|
|
<%= crayons_icon_tag("twemoji/thumb-down", native: true, width: 32, height: 32, title: t("views.moderations.actions.thumb_down")) %>
|
|
<%= crayons_icon_tag(:checkmark, class: "reaction-checkmark", title: t("views.moderations.actions.checkmark")) %>
|
|
</div>
|
|
<span class="vote-text"><%= t("views.moderations.actions.vote_down") %></span>
|
|
</button>
|
|
<button class="reaction-button <%= Reaction.cached_any_reactions_for?(@moderatable, current_user, "vomit") ? "reacted" : "" %>"
|
|
data-reactable-id="<%= @moderatable.id %>"
|
|
data-category="vomit"
|
|
data-reactable-type="<%= @moderatable.class.name %>">
|
|
<div class="reaction-button-circle">
|
|
<%= crayons_icon_tag("twemoji/suspicious", native: true, width: 32, height: 32, title: t("views.moderations.actions.suspicious")) %>
|
|
<%= crayons_icon_tag(:checkmark, class: "reaction-checkmark", title: t("views.moderations.actions.checkmark")) %>
|
|
</div>
|
|
<span class="vote-text"><%= t("views.moderations.actions.flag_to_admins") %></span>
|
|
</button>
|
|
</div>
|
|
|
|
<% if current_user.super_admin? && @moderatable.class.name == "Article" %>
|
|
<h3> <a href="<%= @moderatable.path %>/edit"><%= t("views.moderations.actions.edit.post") %></a> |
|
|
<a href="/resource_admin/articles/<%= @moderatable.id %>" data-no-instant><%= t("views.moderations.actions.edit.resource_admin") %></a> |
|
|
<a href="<%= admin_article_path(@moderatable.id) %>" data-no-instant><%= t("views.moderations.actions.edit.article_admin") %></a></h3>
|
|
<% elsif current_user.super_admin? && @moderatable.class.name == "Comment" %>
|
|
<h3> <a href="/admin/comments/<%= @moderatable.id %>" data-no-instant><%= t("views.moderations.actions.edit.comment_admin") %></a> |
|
|
<a href="<%= admin_user_path(@moderatable.user_id) %>" data-no-instant><%= t("views.moderations.actions.edit.user_admin") %></a></h3>
|
|
<% end %>
|
|
<p>
|
|
<b style="font-size:1em"><%= t("views.moderations.actions.hint.subtitle") %></b>
|
|
</p>
|
|
<p>
|
|
<%= t("views.moderations.actions.hint.desc_html") %>
|
|
</p>
|
|
<div class="tag-mod-form" style="display: flex; flex-direction: column; align-items: center;">
|
|
<h2><%= t("views.moderations.actions.abusive.subtitle_html", user: link_to(@moderatable.user.username, @moderatable.user.path)) %></h2>
|
|
<button class="reaction-button <%= Reaction.cached_any_reactions_for?(@moderatable.user, current_user, "vomit") ? "reacted" : "" %>"
|
|
data-reactable-id="<%= @moderatable.user.id %>"
|
|
data-category="vomit"
|
|
data-reactable-type="<%= @moderatable.user.class.name %>">
|
|
<div class="reaction-button-circle">
|
|
<%= crayons_icon_tag("twemoji/suspicious", native: true, title: t("views.moderations.actions.suspicious")) %>
|
|
<%= crayons_icon_tag(:checkmark, class: "reaction-checkmark", title: t("views.moderations.actions.checkmark")) %>
|
|
</div>
|
|
<span class="vote-text"><%= t("views.moderations.actions.flag", username: @moderatable.user.username) %></span>
|
|
</button>
|
|
<p>
|
|
<%= t("views.moderations.actions.abusive.desc_html") %>
|
|
</p>
|
|
</div>
|
|
<% if current_user.any_admin? && @moderatable.class.name == "Comment" && !@moderatable.deleted %>
|
|
<div class="crayons-card crayons-card--secondary p-4 flex items-center">
|
|
<div class="fw-medium flex-1" style="text-align: left;">
|
|
<p class="fw-bold fs-xl"><%= t("views.moderations.actions.delete.subtitle") %></p>
|
|
</div>
|
|
<div class="flex">
|
|
<%= button_to t("views.moderations.actions.delete.button"), comment_admin_delete_path(@moderatable.id), method: :patch, class: "crayons-btn crayons-btn--secondary ml-2" %>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
<% if @hidden_comments.present? %>
|
|
<div class="tag-mod-form">
|
|
<h2><%= t("views.moderations.actions.hidden.subtitle") %></h2>
|
|
<form>
|
|
<ul id="hidden-comments">
|
|
<% @hidden_comments.each do |comment| %>
|
|
<li>
|
|
<a href="<%= comment.path %>"><%= t("views.moderations.actions.hidden.by", user: comment.user.username) %></a>
|
|
</li>
|
|
<% end %>
|
|
</ul>
|
|
</form>
|
|
</div>
|
|
<% end %>
|
|
<% if @allowed_to_adjust %>
|
|
<div class="tag-mod-form">
|
|
<h2><%= t("views.moderations.actions.tag.subtitle") %></h2>
|
|
<%= form_for(@tag_adjustment) do |f| %>
|
|
<%= t("views.moderations.actions.tag.live_html", tags: @moderatable.tag_list) %><br>
|
|
<% if @tag_adjustment.errors.any? %>
|
|
<div id="error_explanation">
|
|
<h2><%= t("views.moderations.actions.errors", count: @tag_adjustment.errors.count) %></h2>
|
|
<ul>
|
|
<% @tag_adjustment.errors.full_messages.each do |message| %>
|
|
<li><%= message %></li>
|
|
<% end %>
|
|
</ul>
|
|
</div>
|
|
<% end %>
|
|
<%= f.hidden_field :article_id, value: @moderatable.id %>
|
|
<% if current_user.any_admin? || @tag_moderator_tags.any? { |tag| @moderatable.tag_list.include?(tag.name) } %>
|
|
<div class="tag-mod-addition-radio">
|
|
<%= f.radio_button :adjustment_type, "removal", required: true %>
|
|
<%= f.label :adjustment_type, t("views.moderations.actions.tag.remove"), value: "removal" %>
|
|
</div>
|
|
<% end %>
|
|
<% if @moderatable.tag_list.size < 4 %>
|
|
<div class="tag-mod-addition-radio">
|
|
<%= f.radio_button :adjustment_type, "addition", required: true %>
|
|
<%= f.label :adjustment_type, t("views.moderations.actions.tag.add"), value: "addition" %>
|
|
</div>
|
|
<% end %>
|
|
<% if current_user.super_admin? %>
|
|
<%= f.text_field :tag_name, placeholder: t("views.moderations.actions.tag.tag_name"), required: true %>
|
|
<% else %>
|
|
<%= f.select :tag_name, @tag_moderator_tags, { prompt: t("views.moderations.actions.tag.select") }, required: true %>
|
|
<% end %>
|
|
<%= f.text_area :reason_for_adjustment, placeholder: t("views.moderations.actions.tag.reason"), required: true %>
|
|
<%= f.submit t("views.moderations.actions.tag.submit") %>
|
|
<% end %>
|
|
<% if @adjustments.present? %>
|
|
<% @adjustments.each do |adjustment| %>
|
|
<% if current_user.any_admin? || adjustment.user_id == current_user.id %>
|
|
<%= form_for(adjustment, url: "/tag_adjustments/#{adjustment.id}",
|
|
html: { method: :delete, onsubmit: "return confirm('#{t('views.moderations.actions.tag.undo.confirm', type: t("views.moderations.actions.tag.undo.type.#{adjustment.adjustment_type}"), tag: adjustment.tag_name)}')" }) do |f| %>
|
|
<%= t("views.moderations.actions.tag.#{adjustment.adjustment_type == 'removal' ? 'removed' : 'added'}_html", tag: adjustment.tag_name) %>
|
|
<%= f.submit t("views.moderations.actions.tag.undo.button"), id: "undo" %>
|
|
<% end %>
|
|
<% end %>
|
|
<% end %>
|
|
<% end %>
|
|
</div>
|
|
<% end %>
|
|
|
|
<% if @moderatable.class.name == "Article" %>
|
|
<div class="tag-mod-form">
|
|
<% @rating_vote = RatingVote.where(article_id: @moderatable.id, user_id: current_user.id).first %>
|
|
<% rating_hash = { "Novice" => 1, "Beginner" => 2, "Mid-level" => 3, "Advanced" => 4, "Expert" => 5 } %>
|
|
|
|
<h2><%= t("views.moderations.actions.experience.heading2") %></h2>
|
|
|
|
<% rating_hash.each do |rating_name, rating_level| %>
|
|
<button
|
|
value="<%= rating_level %>"
|
|
name="rating_vote_<%= rating_level %>"
|
|
id="js__rating__vote__<%= rating_level %>"
|
|
class="level-rating-button article-mod-page <%= "selected" if @rating_vote&.rating.to_d == rating_level.to_d %>"
|
|
data-user-id="<%= current_user.id %>"
|
|
data-article-id="<%= @moderatable.id %>"
|
|
data-group="experience_level"
|
|
style="margin: 0.5rem 0;">
|
|
<div class="level-rating-content">
|
|
<span class="level-rating-number"><%= t("views.moderations.actions.experience.from", lvl: rating_level) %></span>
|
|
<span class="level-rating-text"><%= t("views.moderations.actions.experience.level.#{rating_name}") %></span>
|
|
</div>
|
|
</button>
|
|
<% end %>
|
|
<p>
|
|
<%= t("views.moderations.actions.experience.desc_html") %>
|
|
</p>
|
|
</div>
|
|
<% end %>
|
|
</div>
|