Skip to content

Commit

Permalink
Spam2: Moderator's Queue feature (publiclab#8196)
Browse files Browse the repository at this point in the history
* queue feature spam2

* indentation issue

* bulk moderation for comments and tag count in queue

* indentation

* moderator queue

* batch controller

* first-timmer issue

* tag filter

* queue indentation

* all tags filter queue
  • Loading branch information
keshavsethi authored and lagunasmel committed Mar 2, 2021
1 parent 2eaf711 commit 2ba89a2
Show file tree
Hide file tree
Showing 14 changed files with 586 additions and 382 deletions.
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

0 comments on commit 2ba89a2

Please sign in to comment.