Skip to content

Commit c68345f

Browse files
committed
Factored away the Config class into Resource::* modules
1 parent 476b8d2 commit c68345f

File tree

14 files changed

+135
-120
lines changed

14 files changed

+135
-120
lines changed

lib/active_admin.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ module ActiveAdmin
1919
autoload :BaseController, 'active_admin/base_controller'
2020
autoload :ControllerAction, 'active_admin/controller_action'
2121
autoload :CSVBuilder, 'active_admin/csv_builder'
22-
autoload :Config, 'active_admin/config'
2322
autoload :Dashboards, 'active_admin/dashboards'
2423
autoload :DependencyChecker, 'active_admin/dependency_checker'
2524
autoload :Deprecation, 'active_admin/deprecation'

lib/active_admin/config.rb

Lines changed: 0 additions & 68 deletions
This file was deleted.

lib/active_admin/config/naming.rb

Lines changed: 0 additions & 35 deletions
This file was deleted.

lib/active_admin/page.rb

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,34 @@ module ActiveAdmin
77
# The instance of the current page is available in PageController and views
88
# by calling the #active_admin_config method.
99
#
10-
class Page < Config
10+
class Page
11+
# The namespace this config belongs to
12+
attr_reader :namespace
13+
14+
# The class this resource wraps. If you register the Post model, Resource#resource
15+
# will point to the Post class
16+
#
17+
# @todo Refactor Namespace so that it doesn't require a Config to have a resource.
18+
attr_reader :resource
19+
1120
attr_reader :name
1221

13-
def initialize(namespace, name, options)
14-
@namespace = namespace
15-
@name = name
16-
@options = options
22+
module Base
23+
def initialize(namespace, name, options)
24+
@namespace = namespace
25+
@name = name
26+
@options = options
27+
end
1728
end
1829

30+
include Base
31+
include Resource::Controllers
32+
include Resource::PageConfigs
33+
include Resource::Sidebars
34+
include Resource::ActionItems
35+
include Resource::Menu
36+
include Resource::Naming
37+
1938
# plural_resource_name is singular
2039
def plural_resource_name
2140
name
@@ -24,5 +43,16 @@ def plural_resource_name
2443
def resource_name
2544
name
2645
end
46+
47+
def belongs_to?
48+
false
49+
end
50+
51+
def add_default_action_items
52+
end
53+
54+
def add_default_sidebar_sections
55+
end
56+
2757
end
2858
end

lib/active_admin/resource.rb

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
require 'active_admin/resource/action_items'
2+
require 'active_admin/resource/controllers'
3+
require 'active_admin/resource/menu'
4+
require 'active_admin/resource/page_configs'
25
require 'active_admin/resource/naming'
36
require 'active_admin/resource/scopes'
47
require 'active_admin/resource/sidebars'
@@ -13,13 +16,22 @@ module ActiveAdmin
1316
# The instance of the current resource is available in ResourceController and views
1417
# by calling the #active_admin_config method.
1518
#
16-
class Resource < Config
19+
class Resource
1720

1821
# Event dispatched when a new resource is registered
1922
RegisterEvent = 'active_admin.resource.register'.freeze
2023

2124
autoload :BelongsTo, 'active_admin/resource/belongs_to'
2225

26+
# The namespace this config belongs to
27+
attr_reader :namespace
28+
29+
# The class this resource wraps. If you register the Post model, Resource#resource
30+
# will point to the Post class
31+
#
32+
# @todo Refactor Namespace so that it doesn't require a Config to have a resource.
33+
attr_reader :resource
34+
2335
# An array of member actions defined for this resource
2436
attr_reader :member_actions
2537

@@ -52,17 +64,18 @@ def initialize(namespace, resource, options = {})
5264
end
5365

5466
include Base
67+
include Controllers
68+
include PageConfigs
5569
include ActionItems
5670
include Naming
5771
include Scopes
5872
include Sidebars
59-
73+
include Menu
6074

6175
def resource_table_name
6276
resource.quoted_table_name
6377
end
6478

65-
6679
# Returns the named route for an instance of this resource
6780
def route_instance_path
6881
[route_prefix, controller.resources_configuration[:self][:route_instance_name], 'path'].compact.join('_').to_sym
@@ -131,5 +144,5 @@ def default_options
131144
def default_csv_builder
132145
@default_csv_builder ||= CSVBuilder.default_for_resource(resource)
133146
end
134-
end # class Resource < Config
147+
end # class Resource
135148
end # module ActiveAdmin

lib/active_admin/resource/action_items.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
module ActiveAdmin
44

5-
class Resource < Config
5+
class Resource
66
module ActionItems
77

88
# Add the default action items to a resource when it's
@@ -42,6 +42,11 @@ def clear_action_items!
4242
@action_items = []
4343
end
4444

45+
# Used by active_admin Base view
46+
def action_items?
47+
!!@action_items && @action_items.any?
48+
end
49+
4550
private
4651

4752
# Adds the default action items to each resource

lib/active_admin/resource/belongs_to.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module ActiveAdmin
2-
class Resource < Config
2+
class Resource
33
class BelongsTo
44

55
class TargetNotFound < StandardError; end
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
module ActiveAdmin
2+
class Resource
3+
module Controllers
4+
5+
# Returns a properly formatted controller name for this
6+
# config within its namespace
7+
def controller_name
8+
[namespace.module_name, plural_camelized_resource_name + "Controller"].compact.join('::')
9+
end
10+
11+
# Returns the controller for this config
12+
def controller
13+
@controller ||= controller_name.constantize
14+
end
15+
16+
# Returns the routes prefix for this config
17+
def route_prefix
18+
namespace.module_name.try(:underscore)
19+
end
20+
21+
# Returns a symbol for the route to use to get to the
22+
# collection of this resource
23+
def route_collection_path
24+
route = [
25+
route_prefix,
26+
controller.resources_configuration[:self][:route_collection_name],
27+
'path'
28+
]
29+
30+
route.compact.join('_').to_sym
31+
end
32+
33+
end
34+
end
35+
end

lib/active_admin/config/menu.rb renamed to lib/active_admin/resource/menu.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module ActiveAdmin
2-
class Config
2+
class Resource
33
module Menu
44

55
# Set the menu options. To not add this resource to the menu, just

lib/active_admin/resource/naming.rb

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module ActiveAdmin
2-
class Resource < Config
2+
class Resource
33
module Naming
44
# Returns the name to call this resource such as "Bank Account"
55
def resource_name
@@ -15,6 +15,25 @@ def plural_resource_name
1515
@plural_resource_name ||= resource_name.pluralize
1616
end
1717

18+
# A camelized safe representation for this resource
19+
def camelized_resource_name
20+
resource_name.titleize.gsub(' ', '')
21+
end
22+
23+
def plural_camelized_resource_name
24+
plural_resource_name.titleize.gsub(' ', '')
25+
end
26+
27+
# An underscored safe representation internally for this resource
28+
def underscored_resource_name
29+
camelized_resource_name.underscore
30+
end
31+
32+
# Returns the plural and underscored version of this resource. Useful for element id's.
33+
def plural_underscored_resource_name
34+
plural_camelized_resource_name.underscore
35+
end
36+
1837
private
1938

2039
# @return [String] Titleized human name via ActiveRecord I18n or nil

0 commit comments

Comments
 (0)