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]) 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! 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 private def set_section @section = "comments" end end