Sha256: 28ece798382ba267fc144c860d1c98355341639c149254ab37d988201b4789e1

Contents?: true

Size: 1.66 KB

Versions: 6

Compression:

Stored size: 1.66 KB

Contents

class RailsEmailPreview::EmailsController < RailsEmailPreview::ApplicationController
  include ERB::Util
  before_filter :load_preview_class, except: :index
  before_filter :set_email_preview_locale

  # list screen
  def index
    @preview_class_names = (RailsEmailPreview.preview_classes || []).map { |klass| klass.is_a?(String) ? klass : klass.name }
  end

  # preview screen
  def show
    I18n.with_locale @email_locale do
      @part_type = params[:part_type] || 'text/html'
      @mail      = @preview_class.new.send(params[:mail_action])
    end
    render
  end

  # render actual email content
  def show_raw
    I18n.with_locale @email_locale do
      @mail = @preview_class.new.send(params[:mail_action])
      RailsEmailPreview.run_before_render(@mail)
      if @part_type == 'raw'
        body = "<pre id='raw_message'>#{html_escape(@mail.to_s)}</pre>"
      else
        if @mail.multipart?
          body_part = (@part_type =~ /html/ ? @mail.html_part : @mail.text_part)
        else
          body_part = @mail
        end
        body = body_part.body
        if body_part.content_type =~ /plain/
          body = "<pre id='message_body'>#{body}</body>"
        end
      end
      render text: body, layout: false
    end
  end

  protected

  def set_email_preview_locale
    @email_locale = (params[:email_locale] || I18n.locale).to_s
  end

  private

  def load_preview_class
    @preview_class = (RailsEmailPreview.preview_classes || []).find { |pc|
      (pc.is_a?(String) ? pc : pc.name).underscore == params[:mail_class]
    }
    @preview_class = @preview_class.constantize if @preview_class.is_a?(String)
    @part_type = params[:part_type] || 'text/html'
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rails_email_preview-0.1.5 app/controllers/rails_email_preview/emails_controller.rb
rails_email_preview-0.1.4 app/controllers/rails_email_preview/emails_controller.rb
rails_email_preview-0.1.3 app/controllers/rails_email_preview/emails_controller.rb
rails_email_preview-0.1.2 app/controllers/rails_email_preview/emails_controller.rb
rails_email_preview-0.1.1 app/controllers/rails_email_preview/emails_controller.rb
rails_email_preview-0.1.0 app/controllers/rails_email_preview/emails_controller.rb