Sha256: d67779a8f49f11f61954936dbeb6fd2112a16cfaadb103757981cd58b395289f

Contents?: true

Size: 1.98 KB

Versions: 1

Compression:

Stored size: 1.98 KB

Contents

class AdminAssistant
  class Builder
    attr_reader :admin_assistant
    
    def initialize(admin_assistant)
      @admin_assistant = admin_assistant
    end
    
    def actions(*a)
      if a.empty?
        @admin_assistant.actions
      else
        @admin_assistant.actions = a
      end
    end
    
    def inputs
      @admin_assistant.form_settings.inputs
    end
    
    def label(column, label)
      @admin_assistant.custom_column_labels[column.to_s] = label
    end
      
    def form
      yield @admin_assistant.form_settings
    end
      
    def index
      yield @admin_assistant.index_settings
    end
  end
  
  class Settings
    attr_reader :column_names
    
    def initialize(admin_assistant)
      @admin_assistant = admin_assistant
    end
    
    def columns(*args)
      @column_names = args
    end
  end
  
  class FormSettings < Settings
    attr_reader :inputs, :submit_buttons
    
    def initialize(admin_assistant)
      super
      @inputs = {}
      @submit_buttons = []
      @read_only = []
    end
    
    def read_only(*args)
      if args.empty?
        @read_only
      else
        args.each do |arg| @read_only << arg.to_s; end
      end
    end
  end
  
  class IndexSettings < Settings
    attr_reader :actions, :link_to_args, :search_fields, :sort_by
    attr_accessor :total_entries
    
    def initialize(admin_assistant)
      super
      @actions = {}
      @sort_by = 'id desc'
      @boolean_labels = {}
      @link_to_args = {}
      @search_fields = []
    end
    
    def boolean_labels(*args)
      if args.size == 1
        args.first.each do |column_name, pairs|
          @boolean_labels[column_name.to_s] = pairs
        end
      else
        @boolean_labels
      end
    end
    
    def conditions(&block)
      block ? (@conditions = block) : @conditions
    end
    
    def search(*fields)
      @search_fields = fields
    end
    
    def sort_by(*sb)
      if sb.empty?
        @sort_by
      else
        @sort_by = sb
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
admin_assistant-0.0.1 lib/admin_assistant/builder.rb