class AdminIt::Resource
Constants
- COLLECTIONS
- CONTEXTS
- SINGLE
Attributes
entity_class[R]
name[R]
plural[R]
Public Class Methods
new( name, entity_class = nil, menu: true, destroyable: true, auto_filters: true )
click to toggle source
# File lib/admin_it/resource.rb, line 72 def initialize( name, entity_class = nil, menu: true, destroyable: true, auto_filters: true ) name = name.ensure_symbol! @name, @entity_class = name, entity_class if @entity_class.nil? begin @entity_class = Object.const_get(name.to_s.camelize) # !PORTABLE rescue NameError raise ArgumentError, "Can't find entity class for #{name}" end end import_data_module run_callbacks :initialize do @fields = Hash[default_fields.map { |f| [f.field_name, f] }] @filters = if auto_filters Hash[default_filters.map { |f| [f.filter_name, f] }] else {} end @contexts = Hash[default_contexts.map { |c| [c.context_name, c] }] @menu = menu == true @destroyable = destroyable == true @plural = name.to_s.pluralize # !POTABLE @default_context = nil end end
Public Instance Methods
[](name)
click to toggle source
# File lib/admin_it/resource.rb, line 118 def [](name) context(name) end
collection(&block)
click to toggle source
# File lib/admin_it/resource.rb, line 33 def collection(&block) return unless block_given? hash = dsl_get(:contexts, {}) hash.select { |_, c| c.collection? }.each { |_, c| c.dsl_eval(&block) } end
collection_path()
click to toggle source
# File lib/admin_it/resource.rb, line 147 def collection_path AdminIt::Engine.routes.url_helpers.send("#{plural}_path") end
collections()
click to toggle source
# File lib/admin_it/resource.rb, line 155 def collections contexts.select { |c| c.collection? } end
confirm_destroy?()
click to toggle source
# File lib/admin_it/resource.rb, line 110 def confirm_destroy? @confirm_destroy.nil? ? @confirm_destroy = true : @confirm_destroy == true end
context(name)
click to toggle source
# File lib/admin_it/resource.rb, line 122 def context(name) @contexts[name.ensure_symbol] end
contexts()
click to toggle source
# File lib/admin_it/resource.rb, line 126 def contexts @contexts.values end
contexts_names()
click to toggle source
# File lib/admin_it/resource.rb, line 139 def contexts_names @contexts.map(&:context_name) end
default_context(value = nil)
click to toggle source
# File lib/admin_it/resource.rb, line 130 def default_context(value = nil) return @default_context unless @default_context.nil? if collections.size > 0 @default_context = collections.first.context_name elsif singles.size > 0 @default_context = singles.first.context_name end end
define_controller()
click to toggle source
# File lib/admin_it/resource.rb, line 163 def define_controller c_name = "#{name.to_s.camelize}Controller" # !PORTABLE resource = self c_class = Class.new(AdminIt.config.controller) do @resource = resource include AdminIt::Controller resource.contexts.each do |_context| define_method(_context.context_name) { load_context(_context) } if _context < SavableSingleContext define_method _context.save_action do load_context(_context) { context.save_entity } end end end if resource.destroyable? define_method :destroy do load_context(resource[:show]) { context.destroy_entity } end end end AdminIt.const_set(c_name, c_class) contexts.each { |c| c.controller_class = c_class } end
destroyable?()
click to toggle source
# File lib/admin_it/resource.rb, line 114 def destroyable? @destroyable.nil? ? @destroyable = true : @destroyable == true end
display_name()
click to toggle source
# File lib/admin_it/resource.rb, line 143 def display_name @display_name ||= i18n_display_name || default_display_name end
single(&block)
click to toggle source
# File lib/admin_it/resource.rb, line 39 def single(&block) return unless block_given? hash = dsl_get(:contexts, {}) hash.select { |_, c| c.single? }.each { |_, c| c.dsl_eval(&block) } end
single_path(entity)
click to toggle source
# File lib/admin_it/resource.rb, line 151 def single_path(entity) AdminIt::Engine.routes.url_helpers.send("#{name}_path", entity) end
singles()
click to toggle source
# File lib/admin_it/resource.rb, line 159 def singles contexts.select { |c| c.single? } end
Protected Instance Methods
i18n_display_name()
click to toggle source
# File lib/admin_it/resource.rb, line 213 def i18n_display_name I18n .t!("admin_it.resources.#{name}.display_name.plural") .split(' ') .map { |s| s.mb_chars.capitalize } .join(' ') rescue I18n::MissingTranslationData nil end
sanitize_entity_class()
click to toggle source
# File lib/admin_it/resource.rb, line 196 def sanitize_entity_class @entity_class = @name.to_s.camelize if @entity_class.nil? # !PORTABLE if @entity_class.is_a?(Symbol) @entity_class = @entity_class.to_s.camelize # !PORTABLE end if @entity_class.is_a?(String) begin @entity_class = Object.const_get(@entity_class) rescue NameError @entity_class = Object end end unless @entity_class.is_a?(Class) fail ArgumentError, 'Wrong entity class' end end
Private Instance Methods
import_data_module()
click to toggle source
# File lib/admin_it/resource.rb, line 225 def import_data_module data_module = AdminIt.data_module(entity_class) return unless data_module.is_a?(Module) resource_module = data_module.const_get(:Resource) extend(resource_module) if resource_module.is_a?(Module) rescue NameError nil end