diff --git a/plugins/work_assignment/controllers/myprofile/work_assignment_plugin_cms_controller.rb b/plugins/work_assignment/controllers/myprofile/work_assignment_plugin_cms_controller.rb
index e2c6f83..6be6e7b 100644
--- a/plugins/work_assignment/controllers/myprofile/work_assignment_plugin_cms_controller.rb
+++ b/plugins/work_assignment/controllers/myprofile/work_assignment_plugin_cms_controller.rb
@@ -43,27 +43,27 @@ class WorkAssignmentPluginCmsController < CmsController
@parent = check_parent(params[:id])
@files_id_list = params[:files_id]
@target = ['',@parent.url[:profile], @parent.url[:page]].join('/')
- @contact
+ @email_contact
if request.post? && params[:confirm] == 'true'
@files_paths = []
- @files_id_list = params[:self_files_id]
+ @files_string = params[:self_files_id]
+ @files_id_list = @files_string.split(' ')
@files_id_list.each do |file_id|
@file = environment.articles.find_by_id(file_id)
- @real_file_url = "http://#{@file.url[:host]}:#{@file.url[:port]}/ #{@file.url[:profile]}/#{@file.path}"
+ @real_file_url = "http://#{@file.url[:host]}:#{@file.url[:port]}/#{@file.url[:profile]}/#{@file.path}"
@files_paths << @real_file_url
- unless params[:contact][:message].include? "#{@real_file_url}"
- params[:contact][:message] += "
Clique aqui para acessar o arquivo ou acesse pela URL:
"
- params[:contact][:message] += "
#{@real_file_url}"
+ unless params[:email_contact][:message].include? "#{@real_file_url}"
+ params[:email_contact][:message] += "
Clique aqui para acessar o arquivo ou acesse pela URL:
"
+ params[:email_contact][:message] += "
#{@real_file_url}"
end
end
@message = "AVISO: O aluno deve imprimir este email e entrega-lo na secretaria como comprovante do envio!"
- unless params[:contact][:message].include? "#{@message}"
- params[:contact][:message] += "
#{@message}"
+ unless params[:email_contact][:message].include? "#{@message}"
+ params[:email_contact][:message] += "
#{@message}"
end
-
- @contact = user.build_contact(profile, params[:contact])
- if @contact.deliver
+ @email_contact = user.build_email_contact(params[:email_contact])
+ if @email_contact.deliver
session[:notice] = _('Contact successfully sent')
redirect_to @target
else
@@ -79,7 +79,7 @@ class WorkAssignmentPluginCmsController < CmsController
redirect_to :action => 'index'
end
else
- @contact = user.build_contact(profile)
+ @email_contact = user.build_email_contact()
end
end
diff --git a/plugins/work_assignment/lib/ext/email_contact.rb b/plugins/work_assignment/lib/ext/email_contact.rb
new file mode 100644
index 0000000..4abb642
--- /dev/null
+++ b/plugins/work_assignment/lib/ext/email_contact.rb
@@ -0,0 +1,58 @@
+class EmailContact
+
+ include ActiveModel::Validations
+
+ def initialize(attributes = nil)
+ if attributes
+ attributes.each do |attr,value|
+ self.send("#{attr}=", value)
+ end
+ end
+ end
+
+ attr_accessor :name
+ attr_accessor :subject
+ attr_accessor :message
+ attr_accessor :email
+ attr_accessor :receive_a_copy
+ attr_accessor :reciever
+ attr_accessor :sender
+
+ N_('Subject'); N_('Message'); N_('e-Mail'); N_('Name')
+
+ validates_presence_of :subject, :email, :message, :name
+ validates_format_of :email, :with => Noosfero::Constants::EMAIL_FORMAT, :if => (lambda {|o| !o.email.blank?})
+
+ def deliver
+ return false unless self.valid?
+ EmailContact::EmailSender.notification(self).deliver
+ end
+
+ class EmailSender < ActionMailer::Base
+ def notification(email_contact)
+ @name = email_contact.name
+ @email = email_contact.email
+ @message = email_contact.message
+ @target = email_contact.reciever
+
+ options = {
+ content_type: 'text/html',
+ to: email_contact.reciever,
+ reply_to: email_contact.email,
+ subject: email_contact.subject,
+ from: "#{email_contact.name} <#{email_contact.email}>"
+ }
+
+ if email_contact.sender
+ options.merge!('X-Noosfero-Sender' => email_contact.sender.identifier)
+ end
+
+ if email_contact.receive_a_copy
+ options.merge!(cc: "#{email_contact.name} <#{email_contact.email}>")
+ end
+
+ mail(options)
+ end
+ end
+
+end
diff --git a/plugins/work_assignment/lib/ext/person.rb b/plugins/work_assignment/lib/ext/person.rb
new file mode 100644
index 0000000..0eb64c3
--- /dev/null
+++ b/plugins/work_assignment/lib/ext/person.rb
@@ -0,0 +1,7 @@
+require_dependency 'person'
+
+class Person
+ def build_email_contact(params = {})
+ EmailContact.new(params.merge(:name => name, :email => email, :sender => self))
+ end
+end
\ No newline at end of file
diff --git a/plugins/work_assignment/views/work_assignment_plugin_cms/send_email.html.erb b/plugins/work_assignment/views/work_assignment_plugin_cms/send_email.html.erb
index 3f854b5..d4ef2ee 100644
--- a/plugins/work_assignment/views/work_assignment_plugin_cms/send_email.html.erb
+++ b/plugins/work_assignment/views/work_assignment_plugin_cms/send_email.html.erb
@@ -1,20 +1,20 @@
-<%= error_messages_for 'contact' %>
+<%= error_messages_for 'email_contact' %>
-<%=labelled_form_for :contact do |f| %>
+<%=labelled_form_for :email_contact do |f| %>
<%= hidden_field_tag(:confirm, 'false') %>
<%= hidden_field_tag(:self_files_id, @files_id_list) %>
<%= required_fields_message %>
<%= required f.text_field(:subject) %>
- <%# required f.text_field(:dest) %>
+ <%= required f.text_field(:reciever) %>
<%= required f.text_field(:name) %>
<%= render :file => 'shared/tiny_mce' %>
<%= required f.text_area(:message, :class => 'mceEditor') %>
- <%= labelled_form_field check_box(:contact, :receive_a_copy) + _('I want to receive a copy of the message in my e-mail.'), '' %>
+ <%= labelled_form_field check_box(:email_contact, :receive_a_copy) + _('I want to receive a copy of the message in my e-mail.'), '' %>
<%= submit_button(:send, _('Send'), :onclick => "$('confirm').value = 'true'") %>
<%= submit_button(:cancel, _('Cancel'), :onclick =>"$('confirm').value = 'false'") %>
--
libgit2 0.21.2