Sha256: 27eee4bf96253b61f02599c71ebcfa38000920770cd8ac082961658283e923f9

Contents?: true

Size: 1.92 KB

Versions: 5

Compression:

Stored size: 1.92 KB

Contents

module ControllerExtensions    # for inclusion into ApplicationController

  def self.included(base)
    
    base.class_eval do
      before_filter :set_reader_for_user
      before_filter :set_reader
      helper_method :current_reader_session, :current_reader, :current_reader=
    end

  protected

    def current_reader_session
      return @current_reader_session if @current_reader_session.is_a?(ReaderSession)
      @current_reader_session = ReaderSession.find
      Reader.current = @current_reader_session.record if @current_reader_session
      @current_reader_session
    end

    def current_reader_session=(reader_session)
      @current_reader_session = reader_session
    end

    def current_reader
      current_reader_session.record if current_reader_session
    end

    def current_reader=(reader)
      if reader && reader.is_a?(Reader)
        current_reader_session = ReaderSession.create!(reader)
      else
        current_reader_session.destroy
      end
    end
    
    def set_reader_for_user
      if current_user
        current_reader_session = ReaderSession.create!(Reader.find_or_create_for_user(current_user))
      end
    end

    def set_reader
      Reader.current = current_reader
    end

    def store_location(location = request.request_uri)
      session[:return_to] = location
    end

    def redirect_back_or_to(default)
      redirect_to(session[:return_to] || default)
      session[:return_to] = nil
    end

    def redirect_back_with_format(format = 'html')
      Rails.logger.warn "<<< redirect_back_with_format. session[:return_to] is #{session[:return_to].inspect}"
      address = session[:return_to]
      previous_format = File.extname(address)
      raise StandardError, "Can't add format to an already formatted url: #{address}" unless previous_format.blank? || previous_format == format
      redirect_to address + ".#{format}"    # nasty! but necessary for inline login.
    end

  end
end







Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
radiant-reader-extension-1.3.10 lib/controller_extensions.rb
radiant-reader-extension-1.3.9 lib/controller_extensions.rb
radiant-reader-extension-1.3.8 lib/controller_extensions.rb
radiant-reader-extension-1.3.7 lib/controller_extensions.rb
radiant-reader-extension-1.3.6 lib/controller_extensions.rb