21: def create
22: @newsletter_subscription = @newsletter.newsletter_subscriptions.build(params[:newsletter_subscription])
23:
24: addresses = params[:newsletter_subscription][:mail].split(/[,|\s|;]/).reject { |x| x.blank? }
25:
26: if addresses.length == 1
27: @newsletter_subscription = @newsletter.newsletter_subscriptions.build(params[:newsletter_subscription])
28: else
29: params[:mode] += "_BULK"
30: end
31:
32: case params[:mode]
33: when 'add_BULK'
34: cnt_before = @newsletter.newsletter_subscriptions.count
35: addresses.each do |addr|
36: @newsletter.newsletter_subscriptions.create(:mail => addr) if NewsletterBlacklist.find_by_mail(addr).nil?
37: end
38: flash[:notice] = "Added #{@newsletter.newsletter_subscriptions.count-cnt_before} new addresses."
39: redirect_to newsletter_newsletter_subscriptions_path(@newsletter)
40: return false
41: when 'remove_BULK'
42: subs = @newsletter.newsletter_subscriptions.find_all_by_mail(addresses)
43: flash[:notice] = "Removing"
44: subs.each do |s|
45: s.destroy
46: end
47: redirect_to newsletter_newsletter_subscriptions_path(@newsletter)
48: return false
49: when 'add'
50: respond_to do |format|
51: if @newsletter_subscription.save
52: flash[:notice] = 'newsletter_subscription was successfully created.'
53: format.html { redirect_to( newsletter_newsletter_subscriptions_path(@newsletter)) }
54: format.xml { render :xml => @newsletter_subscription, :status => :created, :location => @newsletter_subscription }
55: else
56: format.html { render :action => "new" }
57: format.xml { render :xml => @newsletter_subscription.errors, :status => :unprocessable_entity }
58: end
59: end
60: return false
61: when 'remove'
62: subscription = @newsletter.newsletter_subscriptions.find_by_mail(params[:newsletter_subscription][:mail])
63: if subscription
64: subscription.delete
65: redirect_to newsletter_newsletter_subscriptions_path(@newsletter)
66: return false
67: else
68: flash[:error] = t(:subscription_not_found)
69: end
70: else
71: flash[:notice] = "Unknown Mode in #{__FILE__}, #{__LINE__}, #{params[:mode]}"
72: end
73: render :action => "new"
74: end