Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spam2: Moderator's Queue feature #8196

Merged
merged 12 commits into from
Aug 5, 2020
3 changes: 2 additions & 1 deletion app/assets/javascripts/spam2.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ function pagination(id, url) {
function search_table(filter, url) {
localStorage.setItem('filter', filter);
localStorage.setItem('page-select', pageselect);
window.location = url + filter + "/" + $("#pageselect").val();
window.location = url + filter + "/30";
localStorage.setItem('page-select', "30");
}

function batch_nav(bulk) {
Expand Down
26 changes: 5 additions & 21 deletions app/assets/stylesheets/spam2.css
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,6 @@
width: 100%;
}

#card-top {
margin-top: 2vh;
}

#bulk-nav {
margin-top: 2vh;
margin-bottom: 1vh;
Expand All @@ -68,6 +64,7 @@
text-align: center;
line-height: 1.6;
}

.border-curve {
border-radius: 40px;
}
Expand All @@ -76,24 +73,14 @@
color: white !important;
}

#col-search {
cursor: text;
text-align: left !important;
margin-top: 2px;
}

#col-select {
margin-top: 2px;
}

.page-table {
width: 100%;
margin-top: 10px;
}

.card .navbar .nav .nav-item .active {
color: blue;
border-bottom: 2px blue solid;
color: #343a40;
border-bottom: 2px #343a40 solid;
}

.spam-alert {
Expand All @@ -106,18 +93,15 @@
#table-card,
#bulk-nav,
.nav_top,
.page-table,
#card-top {
.page-table
{
margin-left: 5vw;
width: 90vw;
}
.nav_title {
font-size: 18px;
margin-bottom: 10px;
}
#card-top .card-header {
font-size: 18px;
}
#info-btn {
margin-left: 5vw;
}
Expand Down
149 changes: 149 additions & 0 deletions app/controllers/batch_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
class BatchController < ApplicationController
before_action :require_user

def batch_spam
if logged_in_as(%w(moderator admin))
user_spamed = []
node_spamed = 0
params[:ids].split(',').uniq.each do |nid|
node = Node.find nid
node_spamed += 1
node.spam
user = node.author
user_spamed << user.id
user.ban
end
flash[:notice] = node_spamed.to_s + ' nodes spammed and ' + user_spamed.length.to_s + ' users banned.'
redirect_to '/spam2'
else
flash[:error] = 'Only admins and moderators can mark a batch spam.'
redirect_to '/dashboard'
end
end

def batch_publish
if logged_in_as(%w(moderator admin))
node_published = 0
user_published = []
params[:ids].split(',').uniq.each do |nid|
node = Node.find nid
node_published += 1
node.publish
user = node.author
user.unban
user_published << user.id
end
flash[:notice] = node_published.to_s + ' nodes published and ' + user_published.length.to_s + ' users unbanned.'
redirect_to '/spam2'
else
flash[:error] = 'Only admins and moderators can batch publish.'
redirect_to '/dashboard'
end
end

def batch_delete
if logged_in_as(%w(moderator admin))
node_delete = 0
params[:ids].split(',').uniq.each do |nid|
node = Node.find nid
node_delete += 1
node.delete
end
flash[:notice] = node_delete.to_s + ' nodes deleted'
redirect_back fallback_location: root_path
else
flash[:error] = 'Only admins and moderators can batch delete.'
redirect_to '/dashboard'
end
end

def batch_ban
if logged_in_as(%w(admin moderator))
user_ban = []
params[:ids].split(',').uniq.each do |nid|
node = Node.find nid
user = node.author
user_ban << user.id
user.ban
end
flash[:notice] = user_ban.length.to_s + ' users banned.'
redirect_back fallback_location: root_path
else
flash[:error] = 'Only admins and moderators can ban users.'
redirect_to '/dashboard'
end
end

def batch_unban
unbanned_users = []
if logged_in_as(%w(moderator admin))
params[:ids].split(',').uniq.each do |node_id|
node = Node.find node_id
user_unban = node.author
unbanned_users << user_unban.id
user_unban.unban
end
flash[:notice] = unbanned_users.length.to_s + ' users unbanned.'
redirect_back fallback_location: root_path
else
flash[:error] = 'Only admins and moderators can unban users.'
redirect_to '/dashboard'
end
end

def batch_ban_user
users = []
if logged_in_as(%w(admin moderator))
params[:ids].split(',').uniq.each do |user_id|
user_ban = User.find user_id
users << user_ban.id
user_ban.ban
end
flash[:notice] = users.length.to_s + ' users banned.'
redirect_back fallback_location: root_path
else
flash[:error] = 'Only moderators can moderate users.'
redirect_to '/dashboard'
end
end

def batch_unban_user
if logged_in_as(%w(moderator admin))
params[:ids].split(',').uniq.each do |id|
unban_user = User.find id
unban_user.unban
end
flash[:notice] = 'Success! users unbanned.'
redirect_back fallback_location: root_path
else
flash[:error] = 'Only admins and moderators can moderate users.'
redirect_to '/dashboard'
end
end

def batch_comment
if logged_in_as(%w(moderator admin))
comment_total = 0
params[:ids].split(',').uniq.each do |cid|
comment = Comment.find cid
comment_total += 1
case params[:type]
when 'publish'
comment.publish
when 'spam'
comment.spam
user.ban
when 'delete'
comment.delete
else
flash[:notice] = 'Invalid Url'
end
end
flash[:notice] = comment_total.to_s + ' comment moderated'
redirect_back fallback_location: root_path
else
flash[:error] = 'Only admins and moderators can moderate comments.'
redirect_to '/dashboard'
end
end
end
Loading