Sha256: d44669202517c71353a99413ffa2bad4e5862573da9cbd34a3e7cdbde6f154dc

Contents?: true

Size: 1.58 KB

Versions: 20

Compression:

Stored size: 1.58 KB

Contents

module Carnival
  class Action
    include Rails.application.routes.url_helpers
    PARTIAL_DEFAULT = :default
    PARTIAL_DELETE = :delete
    PARTIAL_REMOTE = :remote

    def initialize(name, params={})
      @name = name
      @params = params
      @partial = default_partial
      @path = params[:path] if params[:path].present?
      @controller = params[:controller]
      @route_name = params[:route_name]
    end

    def path(presenter, extra_params={})
      if @path.nil?
        params = {controller: @controller || presenter.controller_name, action: @name}
      elsif !@path[:controller].nil?
        params = @path
      else
        params = {path: @path}
      end
      params = params.merge(extra_params) if extra_params.present?
      params = params.merge(:only_path => true)
      if @route_name
        Rails.application.routes.url_helpers.send(@route_name, params)
      else
        url_for(params)
      end
    end

    def show(record)
      return true if !params[:show_func]
      return true if !record.respond_to? params[:show_func]
      record.send params[:show_func]
    end

    def partial
      @partial
    end

    def params
      @params
    end

    def name
      @name
    end

    def remote?
      @params[:remote]
    end

    def target
      return :record if @params[:target].nil?
      @params[:target]
    end

    def default_partial()
      if [:new, :edit, :show].include?(@name)
        PARTIAL_DEFAULT
      elsif @name == :destroy
        PARTIAL_DELETE
      elsif remote?
        PARTIAL_REMOTE
      else
        PARTIAL_DEFAULT
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
carnival-0.3.0 app/models/carnival/action.rb
carnival-0.2.8 app/models/carnival/action.rb
carnival-0.2.7 app/models/carnival/action.rb
carnival-0.2.6 app/models/carnival/action.rb
carnival-0.2.5 app/models/carnival/action.rb
carnival-0.2.4 app/models/carnival/action.rb
carnival-0.2.3 app/models/carnival/action.rb
carnival-0.1.10 app/models/carnival/action.rb
carnival-0.2.2 app/models/carnival/action.rb
carnival-0.2.1 app/models/carnival/action.rb
carnival-0.2.0 app/models/carnival/action.rb
carnival-0.1.9 app/models/carnival/action.rb
carnival-0.1.8 app/models/carnival/action.rb
carnival-0.1.7 app/models/carnival/action.rb
carnival-0.1.6 app/models/carnival/action.rb
carnival-0.1.5 app/models/carnival/action.rb
carnival-0.1.3 app/models/carnival/action.rb
carnival-0.1.2 app/models/carnival/action.rb
carnival-0.1.1 app/models/carnival/action.rb
carnival-0.1.0 app/models/carnival/action.rb