email notifications management

This commit is contained in:
Kyle Drake 2015-01-06 19:45:38 -08:00
parent be8ad1a888
commit 8a0e121f29
4 changed files with 69 additions and 1 deletions

View file

@ -247,6 +247,19 @@ post '/settings/change_email' do
redirect '/settings#email'
end
post '/settings/change_email_notification' do
require_login
owner = current_site.owner
owner.send_emails = params[:send_emails]
owner.send_comment_emails = params[:send_comment_emails]
owner.send_follow_emails = params[:send_follow_emails]
owner.save_changes validate: false
flash[:success] = 'Email notification settings have been updated.'
redirect '/settings#email'
end
post '/settings/create_child' do
require_login

View file

@ -733,7 +733,7 @@ class Site < Sequel::Model
if can_email?(args[:col])
EmailWorker.perform_async({
from: FROM_EMAIL,
to: email,
to: owner.email,
subject: args[:subject],
body: args[:body]
})

View file

@ -48,6 +48,22 @@ describe 'site/settings' do
@site.email.wont_equal @new_email
EmailWorker.jobs.empty?.must_equal true
end
it 'should update email preferences' do
uncheck 'send_emails'
uncheck 'send_comment_emails'
uncheck 'send_follow_emails'
@site.send_emails.must_equal true
@site.send_comment_emails.must_equal true
@site.send_follow_emails.must_equal true
click_button 'Update Notification Settings'
@site.reload
@site.send_emails.must_equal false
@site.send_comment_emails.must_equal false
@site.send_follow_emails.must_equal false
end
end
describe 'change password' do

View file

@ -9,4 +9,43 @@
<div>
<input class="btn-Action" type="submit" value="Change Email">
</div>
</form>
<h2>Email Notification Settings</h2>
<form method="POST" action="/settings/change_email_notification">
<%== csrf_token_input_html %>
<p>
Receive Emails:
<input name="send_emails" type="hidden" value="false">
<input name="send_emails" type="checkbox" value="true"
<% if current_site.owner.send_emails %>
checked
<% end %>
>
</p>
<p>
Receive Comment Emails:
<input name="send_comment_emails" type="hidden" value="false">
<input name="send_comment_emails" type="checkbox" value="true"
<% if current_site.owner.send_comment_emails %>
checked
<% end %>
>
</p>
<p>
Receive Follow Emails:
<input name="send_follow_emails" type="hidden" value="false">
<input name="send_follow_emails" type="checkbox" value="true"
<% if current_site.owner.send_follow_emails %>
checked
<% end %>
>
</p>
<div>
<input class="btn-Action" type="submit" value="Update Notification Settings">
</div>
</form>