diff --git a/app/assets/javascripts/spam2.js b/app/assets/javascripts/spam2.js index c3258824c19..5853697836a 100644 --- a/app/assets/javascripts/spam2.js +++ b/app/assets/javascripts/spam2.js @@ -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) { diff --git a/app/assets/stylesheets/spam2.css b/app/assets/stylesheets/spam2.css index 704b6024318..fbce44aa2bb 100644 --- a/app/assets/stylesheets/spam2.css +++ b/app/assets/stylesheets/spam2.css @@ -49,10 +49,6 @@ width: 100%; } -#card-top { - margin-top: 2vh; -} - #bulk-nav { margin-top: 2vh; margin-bottom: 1vh; @@ -68,6 +64,7 @@ text-align: center; line-height: 1.6; } + .border-curve { border-radius: 40px; } @@ -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 { @@ -106,8 +93,8 @@ #table-card, #bulk-nav, .nav_top, - .page-table, - #card-top { + .page-table + { margin-left: 5vw; width: 90vw; } @@ -115,9 +102,6 @@ font-size: 18px; margin-bottom: 10px; } - #card-top .card-header { - font-size: 18px; - } #info-btn { margin-left: 5vw; } diff --git a/app/controllers/batch_controller.rb b/app/controllers/batch_controller.rb new file mode 100644 index 00000000000..aaf9dec52a6 --- /dev/null +++ b/app/controllers/batch_controller.rb @@ -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 diff --git a/app/controllers/spam2_controller.rb b/app/controllers/spam2_controller.rb index fdf86fee2a5..94d7f29509f 100644 --- a/app/controllers/spam2_controller.rb +++ b/app/controllers/spam2_controller.rb @@ -16,8 +16,6 @@ def _spam else @nodes.where(status: [0, 4]).order('changed DESC') end - @node_unmoderated_count = Node.where(status: 4).size - @node_flag_count = Node.where('flag > ?', 0).size else flash[:error] = 'Only moderators can moderate posts.' redirect_to '/dashboard' @@ -48,6 +46,32 @@ def _spam_flags end end + def _spam_queue + if logged_in_as(%w(moderator admin)) + @tags_followed = TagSelection.where(following: true, user_id: current_user.id) + @tag_queue = case params[:tag] + when 'everything' + TagSelection.where(following: true, user_id: current_user.id) + else + tids = Tag.where(name: params[:tag]).collect(&:tid) + TagSelection.where(following: true, tid: tids, user_id: current_user.id) + end + nodes = [] + @tag_queue.each do |tag_queue_name| + nodes += NodeTag.where(tid: tag_queue_name.tid).collect(&:nid) + end + @queue = Node.where(status: [0, 4]).or(Node.where('flag > ?', 0)) + .where(nid: nodes, type: %w(note page)) + .paginate(page: params[:page], per_page: 30) + .order('changed DESC') + .distinct + render template: 'spam2/_spam' + else + flash[:error] = 'Only moderators can moderate posts.' + redirect_to '/dashboard' + end + end + def _spam_users if logged_in_as(%w(moderator admin)) @users = User.paginate(page: params[:page], per_page: params[:pagination]) @@ -61,8 +85,6 @@ def _spam_users else @users.where('rusers.status = 1') end - @user_active_count = User.where('rusers.status = 1').size - @user_ban_count = User.where('rusers.status = 0').size render template: 'spam2/_spam' else flash[:error] = 'Only moderators can moderate other users.' @@ -73,7 +95,7 @@ def _spam_users def _spam_revisions if logged_in_as(%w(admin moderator)) @revisions = Revision.where(status: 0) - .paginate(page: params[:page], per_page: 50) + .paginate(page: params[:page], per_page: 30) .order('timestamp DESC') render template: 'spam2/_spam' else @@ -97,8 +119,6 @@ def _spam_comments .or(@comments.where('flag > ?', 0)) .order('timestamp DESC') end - @comment_unmoderated_count = Comment.where(status: 4).size - @comment_flag_count = Comment.where('flag > ?', 0).size render template: 'spam2/_spam' else flash[:error] = 'Only moderators can moderate comments.' @@ -106,126 +126,6 @@ def _spam_comments end end - 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.size.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.size.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.size.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.size.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.size.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 flag_node @node = Node.find params[:id] @node.flag_node diff --git a/app/views/spam2/_comments.html.erb b/app/views/spam2/_comments.html.erb index 543bf22d3c6..ad0133efc44 100644 --- a/app/views/spam2/_comments.html.erb +++ b/app/views/spam2/_comments.html.erb @@ -1,6 +1,13 @@ @@ -24,19 +40,19 @@ $(document).ready(function () {
@@ -59,16 +75,16 @@ $(document).ready(function () {