class Admin::CommentsController < Admin::AdminController before_action :set_section def index @comments = Comment.where(status: :published).order(updated_at: :desc).paginate(page: params[:page], per_page: 20) end def pending @comments = Comment.where(status: :pending).order(updated_at: :desc).paginate(page: params[:page], per_page: 20) end def accept @comment = Comment.find(params[:id]) @comment.status = :published @comment.save! if @comment.reply_to and @comment.reply_to.email != @comment.blog.user.email and @comment.reply_to.email != current_user.email CommentMailer.with(comment: @comment).reply_comment_email.deliver_later end flash.notice = "Comment successfully published." redirect_to pending_admin_comments_url end def reject @comment = Comment.find(params[:id]) @comment.status = :rejected @comment.save! flash.notice = "Comment successfully rejected." redirect_to pending_admin_comments_url end def mark_spam @comment = Comment.find(params[:id]) perform_mark_spam(@comment) flash.notice = "Comment successfully marked as spam." redirect_back fallback_location: pending_admin_comments_url end def destroy if Comment.destroy(params[:id]) flash.notice = "Comment successfully deleted." else flash.alert = "Could not delete comment." end redirect_to admin_comments_url end def mass if params[:mass_action] == "Delete" Comment.destroy_by(id: params[:comment_ids]) flash.notice = "Comments successfully deleted." elsif params[:mass_action] == "Mark Spam" @comments = Comment.find(params[:comment_ids]) @comments.each do |comment| perform_mark_spam(comment) end flash.notice = "Comments successfully marked as spam." end redirect_back fallback_location: pending_admin_comments_url end private def set_section @section = "comments" end def perform_mark_spam(comment) akismet_params = { type: "comment", text: comment.body, created_at: comment.created_at, author: comment.username, author_email: comment.email, author_url: comment.website, post_url: url_for(comment.blog), post_modified_at: comment.blog.updated_at, referrer: comment.referrer } Akismet.spam comment.request_ip, comment.user_agent, akismet_params comment.destroy! end end