Skip to content

Commit

Permalink
Can now add a single cc address at issue creation. Can't figure out a…
Browse files Browse the repository at this point in the history
…n elegant way to dynamically increase the number of inputs. Right now i'm looking for a num_cc_fields parameter that you can use to render extras if necessary.

Those addresses that are put into the form will also get CCed on the originating email, as well as subsequent emails involving that issue...
  • Loading branch information
peelman committed Jul 15, 2010
1 parent 819be39 commit c26cea1
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 12 deletions.
3 changes: 2 additions & 1 deletion app/models/cc_address.rb
@@ -1,5 +1,6 @@
class CcAddress < ActiveRecord::Base
belongs_to :issue
validates_presence_of :issue_id, :mail

validates_presence_of :mail
validates_format_of :mail, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
end
13 changes: 5 additions & 8 deletions app/views/issues/cc_addresses/_new.rhtml
@@ -1,10 +1,7 @@
<p id="p-cc-addresses">
<%= issue.id %>
<div id="div-cc-addresses">
<%- form.fields_for :cc_addresses do |cc_address_form| %>
<p>
<%= cc_address_form.text_field :mail, :size => 50 %>
<%= cc_address_form.hidden_field :issue_id, :value => @issue.id %>
<input type="button" value="+" />
</p>
<p id="cc-address-0">
<%= cc_address_form.text_field :mail, :size => 50, :label => 'CC Address' %>
</p>
<%- end %>
</p>
</div>
13 changes: 10 additions & 3 deletions lib/cc_addresses_issue_show_hook.rb
Expand Up @@ -26,9 +26,16 @@ def evaluate_if_option(if_option, context)
end

class ShowCcAddressesHook < Redmine::Hook::ViewListener
render_on :view_issues_show_description_bottom, :partial => "issues/cc_addresses", :if => :has_permission?
render_on :view_issues_form_details_bottom, :partial => "issues/cc_addresses/new"
render_on :view_issues_show_description_bottom, :partial => "issues/cc_addresses", :if => :can_view_cc_addresses?
render_on :view_issues_form_details_bottom, :partial => "issues/cc_addresses/new", :if => :can_add_cc_addresses?

def controller_issues_new_prepare(context = {})
num_cc_fields = (context[:params][:num_cc_fields].to_i != 0) ? context[:params][:num_cc_fields].to_i : 1
num_cc_fields.times do
context[:issue].cc_addresses.build
end
end

private
def protect_against_forgery?
false
Expand All @@ -40,5 +47,5 @@ def can_view_cc_addresses?(context)

def can_add_cc_addresses?(context)
context[:project].module_enabled?('cc_addresses') and User.current.allowed_to?(:add_cc_addresses, context[:project])
end
end
end
1 change: 1 addition & 0 deletions lib/redmine_cc_addresses/issue_patch.rb
Expand Up @@ -7,6 +7,7 @@ def self.included(base) # :nodoc:
base.class_eval do
belongs_to :deliverable
has_many :cc_addresses, :class_name => 'CcAddress', :foreign_key => 'issue_id', :dependent => :delete_all
accepts_nested_attributes_for :cc_addresses, :reject_if => lambda { |cc_address| cc_address[:mail].blank? }, :allow_destroy => true
end
end
end
Expand Down
6 changes: 6 additions & 0 deletions lib/redmine_cc_addresses/mailer_patch.rb
Expand Up @@ -6,6 +6,7 @@ def self.included(base) # :nodoc:
base.send(:include, MailerInstanceMethods)
base.class_eval do
alias_method_chain :issue_edit, :cc_addresses
alias_method_chain :issue_add, :cc_addresses
end
end
end
Expand All @@ -17,5 +18,10 @@ def issue_edit_with_cc_addresses(journal)
cc_addresses = issue.cc_addresses.collect {|m| m.mail}
cc << cc_addresses
end
def issue_add_with_cc_addresses(issue)
issue_add_without_cc_addresses(issue)
cc_addresses = issue.cc_addresses.collect {|m| m.mail}
cc << cc_addresses
end
end
end

0 comments on commit c26cea1

Please sign in to comment.