增加评论通知与订阅通知功能
This commit is contained in:
parent
199a8ae617
commit
b6f0502a93
|
@ -6,5 +6,6 @@ class Admin::DashboardController < ApplicationController
|
|||
@posts_count = Post.all.size
|
||||
@comments_count = Comment.all.size
|
||||
@visited_count = Post.all.inject(0) { |res, p| res + p.visited_count }
|
||||
@subscribes_count = Subscribe.all.size
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,4 +12,10 @@ class Comment
|
|||
validates :email, presence: true,:format => /@/
|
||||
validates :content, presence: true
|
||||
validates_presence_of :post_id
|
||||
|
||||
after_create do
|
||||
if ENV['SENDCLOUD_USER'].present? && ENV['ADMIN_USER'].present? && ENV['ADMIN_USER'] =~ /@/
|
||||
NewCommentWorker.perform_async(self.name, self.content, self.post.title, ENV['ADMIN_USER'])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,9 +3,9 @@ class Subscribe
|
|||
field :email, type: String
|
||||
field :enable, type: Mongoid::Boolean, default: true
|
||||
|
||||
validates :email, presence: true, format: /@/
|
||||
validates :email, presence: true, uniqueness: true, format: /@/
|
||||
|
||||
def self.subscribe_list
|
||||
Subscribe.all.map(&:email).join(";")
|
||||
Subscribe.all.where(enable: true).map(&:email).join(";")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -17,4 +17,7 @@
|
|||
tr
|
||||
td 总浏览量
|
||||
td #{@visited_count}
|
||||
tr
|
||||
td 总订阅量
|
||||
td #{@subscribes_count}
|
||||
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
class NewCommentWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
def perform(name, content, title, to)
|
||||
logger.info "[mail] new comment mail: name=#{name}, content=#{content}, title=#{title}, to=#{to}"
|
||||
response = send_mail(name, content, title, to)
|
||||
logger.info "[mail] result is #{response}"
|
||||
ensure
|
||||
logger.info "[mail] new comment mail end: name=#{name}, content=#{content}, title=#{title}, to=#{to}"
|
||||
end
|
||||
|
||||
def send_mail(name, content, title, to)
|
||||
response = RestClient.post "https://sendcloud.sohu.com/webapi/mail.send.xml",
|
||||
{
|
||||
:api_user => "postmaster@#{ENV['SENDCLOUD_USER']}.sendcloud.org",
|
||||
:api_key => ENV['SENDCLOUD_PASSWORD'],
|
||||
:from => ENV['SENDCLOUD_FROM'],
|
||||
:fromname => ENV['SENDCLOUD_FROMNAME'],
|
||||
:to => to,
|
||||
:subject => "你的博客又有新的评论",
|
||||
:html => <<-EOF
|
||||
<p>很高兴的通知你, 你的博客有新的评论:</p>
|
||||
|
||||
<p>评论人: #{name}</p>
|
||||
|
||||
<p>评论内容: #{content}</p>
|
||||
|
||||
<p>被评论博客: #{title}</p>
|
||||
EOF
|
||||
}
|
||||
return response
|
||||
end
|
||||
end
|
||||
|
|
@ -2,7 +2,11 @@ class NewPostWorker
|
|||
include Sidekiq::Worker
|
||||
|
||||
def perform(title, to)
|
||||
send_mail(title, to)
|
||||
logger.info "[mail] new post mail: title=#{title}, to=#{to}"
|
||||
response = send_mail(title, to)
|
||||
logger.info "[mail] result is #{response}"
|
||||
ensure
|
||||
logger.info "[mail] new post mail end: title=#{title}, to=#{to}"
|
||||
end
|
||||
|
||||
def send_mail(title, to)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# 必须配置的
|
||||
SITE_NAME: "WinDy's Blog"
|
||||
# 后台登录的用户名与密码, 不填的话无法管理后台
|
||||
# 建议使用个人邮箱, 如果同时配置了 SENDCLOUD_USER, 则启用邮件通知, 源代码参考: /app/models/comment.rb
|
||||
ADMIN_USER: 'admin'
|
||||
ADMIN_PASSWORD: 'admin'
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
FactoryGirl.define do
|
||||
factory :subscribe do
|
||||
email "MyString"
|
||||
email "tester@mail.com"
|
||||
enable false
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
require 'spec_helper'
|
||||
describe Subscribe do
|
||||
it "validates should be ok" do
|
||||
expect(create(:subscribe)).to be_true
|
||||
end
|
||||
|
||||
it 'uniqueness' do
|
||||
create(:subscribe)
|
||||
two = build(:subscribe)
|
||||
expect(two.save).to be_false
|
||||
end
|
||||
|
||||
it "default is true" do
|
||||
subscribe = Subscribe.create(email: 'a@b')
|
||||
expect(subscribe.enable).to be_true
|
||||
end
|
||||
|
||||
it "subscribe_list" do
|
||||
subscribe = Subscribe.create(email: 'a@b')
|
||||
subscribe = Subscribe.create(email: 'a1@b')
|
||||
expect(Subscribe.subscribe_list.split(';').size).to eq(2)
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue