Update mod internal backend to be safer and more intuitive (#3869)

This commit is contained in:
Ben Halpern 2019-08-28 23:26:32 -04:00 committed by GitHub
parent c9e1f1fcf3
commit 917bc14eae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 9 deletions

View file

@ -3,11 +3,11 @@ class Internal::ModsController < Internal::ApplicationController
def index
@mods = if params[:state] == "tag"
User.with_role(:tag_moderator, :any).page(params[:page]).per(50)
User.with_role(:tag_moderator, :any).page(params[:page]).per(50).includes(:notes)
elsif params[:state] == "potential"
User.order("comments_count DESC").page(params[:page]).per(100)
User.order("comments_count DESC").page(params[:page]).per(100).includes(:notes)
else
User.with_role(:trusted).page(params[:page]).per(50)
User.with_role(:trusted).page(params[:page]).per(50).includes(:notes)
end
@mods = @mods.where("users.username ILIKE :search OR users.name ILIKE :search", search: "%#{params[:search]}%") if params[:search].present?
end

View file

@ -1,6 +1,7 @@
module AssignTagModerator
def self.add_trusted_role(user)
return if user.has_role?(:trusted)
return if user.has_role?(:banned)
user.add_role :trusted
user.update(email_community_mod_newsletter: true)

View file

@ -23,23 +23,25 @@
</h3>
<%= paginate @mods %>
<div class="wrapper" style="font-weight: 600; border-bottom: 2px solid black; grid-template-columns: 15% 30% 15% 15% 22%;">
<div class="wrapper" style="font-weight: 600; border-bottom: 2px solid black; grid-template-columns: 15% 25% 13% 13% 20% 14%;">
<div>ID</div>
<div>Username</div>
<div>Profile</div>
<div>Comments</div>
<div>Badges</div>
<div>Last Comment</div>
<% if params[:state] == "potential" %>
<div>Action</div>
<% end %>
</div>
<% @mods.each do |user| %>
<div class="wrapper" style="border-bottom: 1px solid grey; padding: 10px; grid-template-columns: 15% 30% 15% 15% 22%;">
<div><%= user.id %></div>
<div><a href="/internal/users/<%= user.id %>">@<%= user.username %></a></div>
<div class="wrapper" style="border-top: 1px solid grey; padding: 10px; grid-template-columns: 15% 25% 13% 13% 20% 14%; font-size: 0.9em">
<div><a href="/internal/users/<%= user.id %>"><%= user.id %></a></div>
<div><a href="<%= user.path %>">@<%= user.username %></a></div>
<div><%= user.comments_count %></div>
<div><%= user.badge_achievements_count %></div>
<div><%= time_ago_in_words user.last_comment_at %> ago</div>
<% if params[:state] == "potential" && !user.trusted %>
<div>
<div style="font-size: 0.8em;">
<%= form_for([:internal, user], url: "/internal/mods/#{user.id}", method: :patch) do |f| %>
<%#= f.hidden_field :id, value: user.id %>
<%= f.submit "Make Trusted Mod" %>
@ -47,5 +49,38 @@
</div>
<% end %>
</div>
<% if user.notes.any? %>
<details closed>
<summary style="cursor: pointer; font-weight: bold; padding: 7px 12px; background: #f0f3f7"><%= pluralize user.notes.size, "Note" %></summary>
<ul>
<% user.notes.each do |note| %>
<li>
<b><%= note.reason %>:</b> <%= note.content %> <em>—<%= note.created_at.strftime("%B %e, %Y") %></em>
</li>
<% end %>
</ul>
</details>
<% end %>
<% end %>
<%= paginate @mods %>
<br /><br />
<script>
function submitForms() {
var form = $(this);
var valuesToSubmit = $(this).serialize();
$.ajax({
type: "POST",
url: $(this).attr('action'), //sumbits it to the given url of the form
data: valuesToSubmit,
// dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
}).success(function (json) {
console.log("success")
form.parents(".wrapper").addClass("highlighted-no-border")
});
return false; // prevents normal behaviour
}
$('.wrapper').on("submit", "form", submitForms)
</script>

View file

@ -119,6 +119,10 @@
border: 20px solid black;
}
.highlighted-no-border {
background: #2effa8 !important;
}
.highlighted-border {
border: 20px solid black;
}