Sha256: 7f421f8d898e5a58ae2054594425fffef98c144deac0b2551574c8f08ba6bd2e

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

module Spread
  module Controller
    def self.included(base)
      base.extend(ClassMethods)
    end
    
    module ClassMethods
      
      def spread(action)
        mailer = construct_mailer
        construct_action(action, mailer)
      end
      
      def construct_mailer
        mailer = Class.new(ActionMailer::Base) do
          def email(email, url)
            recipients email
            body :url => url
          end
        end
        mailer.template_root = "#{RAILS_ROOT}/vendor/plugins/spread/templates/"
        mailer
      end
      
      def construct_action(action, mailer)
        define_method action do
          if request.post?
            if params[:email].blank?
              flash[:error] = "Email cannot be blank"
            else
              mailer.deliver_email(params[:email], params[:url])
              flash[:notice] = "An email has been sent to #{params[:email]}"
              redirect_to params[:url] || "/" and return
            end
          end
          render :file => "#{RAILS_ROOT}/vendor/plugins/spread/templates/form.html.erb"
        end
      end
      
    end
  end
end

ActionController::Base.send :include, Spread::Controller

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
spread-0.5 lib/spread/controller.rb