diff --git a/app/mailers/task_mailer.rb b/app/mailers/task_mailer.rb index 5b40db5..9aa6b54 100644 --- a/app/mailers/task_mailer.rb +++ b/app/mailers/task_mailer.rb @@ -1,5 +1,7 @@ class TaskMailer < ActionMailer::Base + include EmailTemplateHelper + def target_notification(task, message) @message = extract_message(message) @target = task.target.name @@ -33,15 +35,13 @@ class TaskMailer < ActionMailer::Base @requestor = task.requestor.name @environment = task.requestor.environment.name @url = url_for(:host => task.requestor.environment.default_hostname, :controller => 'home') - @email_template = task.email_template - template_params = {:environment => task.requestor.environment, :task => task} - mail( + mail_with_template( to: task.requestor.notification_emails, from: self.class.generate_from(task), - subject: @email_template.present? ? @email_template.parsed_subject(template_params) : '[%s] %s' % [task.requestor.environment.name, task.target_notification_description], - body: @email_template.present? ? @email_template.parsed_body(template_params) : nil, - content_type: @email_template.present? ? "text/html" : nil + subject: '[%s] %s' % [task.requestor.environment.name, task.target_notification_description], + email_template: task.email_template, + template_params: {:environment => task.requestor.environment, :task => task, :message => @message, :url => @url, :requestor => task.requestor} ) end diff --git a/app/models/change_password.rb b/app/models/change_password.rb index f3c7a9a..2773579 100644 --- a/app/models/change_password.rb +++ b/app/models/change_password.rb @@ -26,6 +26,13 @@ class ChangePassword < Task validates_presence_of :password_confirmation, :on => :update, :if => lambda { |change| change.status != Task::Status::CANCELLED } validates_confirmation_of :password, :if => lambda { |change| change.status != Task::Status::CANCELLED } + before_save :set_email_template + + def set_email_template + template = environment.email_templates.find_by_template_type(:user_change_password) + data[:email_template_id] = template.id unless template.nil? + end + def environment requestor.environment unless requestor.nil? end diff --git a/app/models/email_template.rb b/app/models/email_template.rb index 2b18be1..6554bc6 100644 --- a/app/models/email_template.rb +++ b/app/models/email_template.rb @@ -23,7 +23,8 @@ class EmailTemplate < ActiveRecord::Base :task_rejection => {:description => _('Task Rejection'), :owner_type => Profile}, :task_acceptance => {:description => _('Task Acceptance'), :owner_type => Profile}, :organization_members => {:description => _('Organization Members'), :owner_type => Profile}, - :user_activation => {:description => _('User Activation'), :unique => true, :owner_type => Environment} + :user_activation => {:description => _('User Activation'), :unique => true, :owner_type => Environment}, + :user_change_password => {:description => _('Change User Password'), :unique => true, :owner_type => Environment} } end diff --git a/app/models/task.rb b/app/models/task.rb index adbc30c..c4a84e8 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -245,7 +245,8 @@ class Task < ActiveRecord::Base def to_liquid HashWithIndifferentAccess.new({ :requestor => requestor, - :reject_explanation => reject_explanation + :reject_explanation => reject_explanation, + :code => code }) end diff --git a/test/unit/change_password_test.rb b/test/unit/change_password_test.rb index 6e8ce9e..7282989 100644 --- a/test/unit/change_password_test.rb +++ b/test/unit/change_password_test.rb @@ -71,4 +71,10 @@ class ChangePasswordTest < ActiveSupport::TestCase assert_match(/#{task.requestor.name} wants to change its password/, email.subject) end + should 'set email template when it exists' do + template = EmailTemplate.create!(:template_type => :user_change_password, :name => 'template1', :owner => Environment.default) + task = ChangePassword.create!(:requestor => person) + assert_equal template.id, task.email_template_id + end + end diff --git a/test/unit/email_template_test.rb b/test/unit/email_template_test.rb index ff8f1ce..e44d4a6 100644 --- a/test/unit/email_template_test.rb +++ b/test/unit/email_template_test.rb @@ -42,7 +42,7 @@ class EmailTemplateTest < ActiveSupport::TestCase should 'return available types when the owner is an environment' do template = EmailTemplate.new(:owner => Environment.default) - assert_equal [:user_activation], template.available_types.symbolize_keys.keys + assert_equal [:user_activation, :user_change_password], template.available_types.symbolize_keys.keys end should 'return available types when the owner is a profile' do -- libgit2 0.21.2