Sha256: 7a752abfd34c1b5451a2a95f8b0b631de07e353c7fc4e5422dd8c5e2a6c6ab2f

Contents?: true

Size: 1.84 KB

Versions: 8

Compression:

Stored size: 1.84 KB

Contents

module Qadmin
  class Configuration
    
    attr_accessor :controller_klass,
                  :model_name, 
                  :model_instance_name, 
                  :model_collection_name, 
                  :model_human_name, 
                  :available_actions, 
                  :display_columns,
                  :column_headers,
                  :multipart_forms,
                  :default_scope,
                  :ports,
                  :controls
    
    def initialize(options = {})
      extract_model_from_options(options)
      self.available_actions = Qadmin::OptionSet.new([:index, :show, :new, :create, :edit, :update, :destroy], options[:available_actions] || {})
      self.display_columns   = Qadmin::OptionSet.new(model_column_names, options[:display_columns] || {})
      self.multipart_forms   = options[:multipart_forms] || false
      self.default_scope     = options[:default_scope]   || false
      self.ports             = options[:ports]           || false
      self.controls          = options[:controls]        || []
      self.column_headers    = HashWithIndifferentAccess.new(options[:column_headers] || {})
    end
    
    def model_klass
      self.model_name.constantize
    end
    
    protected
    def extract_model_from_options(options = {})
      self.controller_klass      = options[:controller_klass]
      self.model_name            = options[:model_name] || controller_klass.to_s.demodulize.gsub(/Controller/,'').singularize
      self.model_instance_name   = options[:model_instance_name] || model_name.underscore
      self.model_collection_name = options[:model_collection_name] || model_instance_name.pluralize    
      self.model_human_name      = options[:model_human_name] || model_instance_name.humanize
    end
    
    def model_column_names
      model_klass.column_names
    rescue
      []
    end
    
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
quirkey-qadmin-0.2.0 lib/qadmin/configuration.rb
quirkey-qadmin-0.2.1 lib/qadmin/configuration.rb
quirkey-qadmin-0.2.2 lib/qadmin/configuration.rb
quirkey-qadmin-0.2.3 lib/qadmin/configuration.rb
qadmin-0.2.2 lib/qadmin/configuration.rb
qadmin-0.2.1 lib/qadmin/configuration.rb
qadmin-0.2.0 lib/qadmin/configuration.rb
qadmin-0.2.3 lib/qadmin/configuration.rb