Module: Madmin

Defined in:
lib/madmin/search.rb,
lib/madmin.rb,
lib/madmin/menu.rb,
lib/madmin/field.rb,
lib/madmin/engine.rb,
lib/madmin/version.rb,
lib/madmin/resource.rb,
lib/madmin/namespace.rb,
lib/madmin/fields/date.rb,
lib/madmin/fields/enum.rb,
lib/madmin/fields/file.rb,
lib/madmin/fields/json.rb,
lib/madmin/fields/text.rb,
lib/madmin/fields/time.rb,
lib/madmin/fields/float.rb,
lib/madmin/fields/select.rb,
lib/madmin/fields/string.rb,
lib/madmin/fields/boolean.rb,
lib/madmin/fields/decimal.rb,
lib/madmin/fields/has_one.rb,
lib/madmin/fields/integer.rb,
lib/madmin/view_generator.rb,
lib/madmin/fields/currency.rb,
lib/madmin/fields/has_many.rb,
lib/madmin/fields/password.rb,
lib/madmin/fields/date_time.rb,
lib/madmin/fields/rich_text.rb,
lib/madmin/resource_builder.rb,
lib/madmin/fields/attachment.rb,
lib/madmin/fields/belongs_to.rb,
lib/madmin/generator_helpers.rb,
lib/madmin/fields/attachments.rb,
lib/madmin/fields/polymorphic.rb,
app/helpers/madmin/sort_helper.rb,
lib/madmin/fields/nested_has_many.rb,
app/helpers/madmin/application_helper.rb,
app/controllers/madmin/base_controller.rb,
lib/generators/madmin/views/new_generator.rb,
app/controllers/madmin/resource_controller.rb,
lib/generators/madmin/views/edit_generator.rb,
lib/generators/madmin/views/form_generator.rb,
lib/generators/madmin/views/show_generator.rb,
app/controllers/madmin/dashboard_controller.rb,
lib/generators/madmin/field/field_generator.rb,
lib/generators/madmin/views/index_generator.rb,
lib/generators/madmin/views/views_generator.rb,
lib/generators/madmin/views/layout_generator.rb,
app/controllers/madmin/application_controller.rb,
lib/generators/madmin/install/install_generator.rb,
lib/generators/madmin/views/javascript_generator.rb,
lib/generators/madmin/views/navigation_generator.rb,
lib/generators/madmin/resource/resource_generator.rb

Overview

Defined Under Namespace

Modules: ApplicationHelper, Fields, GeneratorHelpers, Generators, NavHelper, SortHelper Classes: ApplicationController, BaseController, DashboardController, Engine, Field, Menu, MissingResource, Namespace, Resource, ResourceBuilder, ResourceController, Search, ViewGenerator

Constant Summary collapse

VERSION =
"2.1.1"

Class Method Summary collapse

Class Method Details

.reset_resources!Object



96
97
98
99
# File 'lib/madmin.rb', line 96

def reset_resources!
  @resources = nil
  menu.reset
end

.resource_by_name(name) ⇒ Object



82
83
84
85
86
87
88
89
90
# File 'lib/madmin.rb', line 82

def resource_by_name(name)
  "#{name}Resource".constantize
rescue NameError
  raise MissingResource, <<~MESSAGE
    #{name}Resource is missing. Create it by running:

        bin/rails generate madmin:resource #{resource_name.split("Resource").first}
  MESSAGE
end

.resource_for(object) ⇒ Object

Returns a Madmin::Resource class for the given object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/madmin.rb', line 49

def resource_for(object)
  if (resource_name = resource_name_for(object)) && Object.const_defined?(resource_name)
    resource_name.constantize

  # STI models should look at the parent
  elsif (resource_name = sti_resource_name_for(object)) && Object.const_defined?(resource_name)
    resource_name.constantize

  else
    raise MissingResource, <<~MESSAGE
      `#{object.class.name}Resource` is missing.

      Create the Madmin resource by running:

          bin/rails generate madmin:resource #{object.class.name}
    MESSAGE
  end
end

.resource_name_for(object) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/madmin.rb', line 68

def resource_name_for(object)
  if object.is_a? ::ActiveStorage::Attached
    "ActiveStorage::AttachmentResource"
  else
    "#{object.class.name}Resource"
  end
end

.resource_namesObject



101
102
103
104
105
# File 'lib/madmin.rb', line 101

def resource_names
  root = Rails.root.join("app/madmin/resources/")
  files = Dir.glob(root.join("**/*.rb"))
  files.sort!.map! { |f| f.split(root.to_s).last.delete_suffix(".rb").classify }
end

.resourcesObject



92
93
94
# File 'lib/madmin.rb', line 92

def resources
  @resources ||= resource_names.map(&:constantize)
end

.sti_resource_name_for(object) ⇒ Object



76
77
78
79
80
# File 'lib/madmin.rb', line 76

def sti_resource_name_for(object)
  if (column = object.class.inheritance_column) && object.class.column_names.include?(column)
    "#{object.class.superclass.base_class.name}Resource"
  end
end