activeadmin 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (255) hide show
  1. data/CHANGELOG.rdoc +15 -1
  2. data/Gemfile +41 -11
  3. data/LICENSE +5 -0
  4. data/README.rdoc +202 -87
  5. data/Rakefile +51 -15
  6. data/activeadmin.gemspec +310 -131
  7. data/cucumber.yml +1 -0
  8. data/features/comments/commenting.feature +81 -0
  9. data/features/comments/viewing_index.feature +19 -0
  10. data/features/edit_page.feature +77 -0
  11. data/features/first_boot.feature +16 -0
  12. data/features/global_navigation.feature +30 -0
  13. data/features/index/formats.feature +10 -0
  14. data/features/index/index_as_block.feature +15 -0
  15. data/features/index/index_as_blog.feature +50 -0
  16. data/features/index/index_as_grid.feature +45 -0
  17. data/features/index/index_as_table.feature +79 -0
  18. data/features/index/index_scopes.feature +52 -0
  19. data/features/index/pagination.feature +23 -0
  20. data/features/new_page.feature +75 -0
  21. data/features/registering_assets.feature +35 -0
  22. data/features/registering_resources.feature +33 -0
  23. data/features/show/default_content.feature +43 -0
  24. data/features/show/page_title.feature +33 -0
  25. data/features/sidebar_sections.feature +128 -0
  26. data/features/specifying_actions.feature +16 -0
  27. data/features/step_definitions/action_item_steps.rb +7 -0
  28. data/features/step_definitions/additional_web_steps.rb +67 -0
  29. data/features/step_definitions/asset_steps.rb +7 -0
  30. data/features/step_definitions/attribute_steps.rb +15 -0
  31. data/features/step_definitions/comment_steps.rb +8 -0
  32. data/features/step_definitions/configuration_steps.rb +31 -0
  33. data/features/step_definitions/factory_steps.rb +28 -0
  34. data/features/step_definitions/flash_steps.rb +3 -0
  35. data/features/step_definitions/format_steps.rb +7 -0
  36. data/features/step_definitions/index_scope_steps.rb +20 -0
  37. data/features/step_definitions/pagination_steps.rb +8 -0
  38. data/features/step_definitions/sidebar_steps.rb +11 -0
  39. data/features/step_definitions/tab_steps.rb +3 -0
  40. data/features/step_definitions/user_steps.rb +20 -0
  41. data/features/step_definitions/web_steps.rb +219 -0
  42. data/features/support/env.rb +88 -0
  43. data/features/support/paths.rb +48 -0
  44. data/features/users/logging_in.feature +34 -0
  45. data/features/users/logging_out.feature +13 -0
  46. data/lib/active_admin.rb +155 -79
  47. data/lib/active_admin/abstract_view_factory.rb +95 -0
  48. data/lib/active_admin/action_items.rb +4 -15
  49. data/lib/active_admin/arbre.rb +23 -0
  50. data/lib/active_admin/arbre/attributes.rb +20 -0
  51. data/lib/active_admin/arbre/class_list.rb +28 -0
  52. data/lib/active_admin/arbre/collection.rb +27 -0
  53. data/lib/active_admin/arbre/context.rb +8 -0
  54. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  55. data/lib/active_admin/arbre/document.rb +42 -0
  56. data/lib/active_admin/arbre/element.rb +151 -0
  57. data/lib/active_admin/arbre/html.rb +84 -0
  58. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  59. data/lib/active_admin/arbre/tag.rb +129 -0
  60. data/lib/active_admin/arbre/text_node.rb +35 -0
  61. data/lib/active_admin/callbacks.rb +87 -0
  62. data/lib/active_admin/comments.rb +73 -0
  63. data/lib/active_admin/comments/comment.rb +15 -0
  64. data/lib/active_admin/comments/configuration.rb +16 -0
  65. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  66. data/lib/active_admin/comments/resource_helper.rb +17 -0
  67. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  68. data/lib/active_admin/comments/views.rb +3 -0
  69. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  70. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  71. data/lib/active_admin/component.rb +22 -0
  72. data/lib/active_admin/controller_action.rb +12 -0
  73. data/lib/active_admin/dashboards.rb +0 -2
  74. data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
  75. data/lib/active_admin/dashboards/section.rb +5 -14
  76. data/lib/active_admin/devise.rb +43 -0
  77. data/lib/active_admin/dsl.rb +202 -0
  78. data/lib/active_admin/event.rb +31 -0
  79. data/lib/active_admin/form_builder.rb +68 -50
  80. data/lib/active_admin/iconic.rb +51 -0
  81. data/lib/active_admin/iconic/icons.rb +142 -0
  82. data/lib/active_admin/namespace.rb +102 -16
  83. data/lib/active_admin/renderer.rb +18 -3
  84. data/lib/active_admin/resource.rb +110 -9
  85. data/lib/active_admin/resource/belongs_to.rb +31 -0
  86. data/lib/active_admin/resource_controller.rb +45 -260
  87. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  88. data/lib/active_admin/resource_controller/actions.rb +53 -0
  89. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  90. data/lib/active_admin/resource_controller/collection.rb +142 -0
  91. data/lib/active_admin/resource_controller/filters.rb +58 -0
  92. data/lib/active_admin/resource_controller/form.rb +42 -0
  93. data/lib/active_admin/resource_controller/menu.rb +29 -0
  94. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  95. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  96. data/lib/active_admin/resource_controller/sidebars.rb +38 -0
  97. data/lib/active_admin/scope.rb +17 -0
  98. data/lib/active_admin/sidebar.rb +8 -47
  99. data/lib/active_admin/stylesheets/active_admin.scss +418 -0
  100. data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
  101. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
  102. data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
  103. data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
  104. data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
  105. data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
  106. data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
  107. data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
  108. data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
  109. data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
  110. data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
  111. data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
  112. data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
  113. data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
  114. data/lib/active_admin/version.rb +1 -1
  115. data/lib/active_admin/view_factory.rb +21 -0
  116. data/lib/active_admin/view_helpers.rb +17 -100
  117. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  118. data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -0
  119. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  120. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  121. data/lib/active_admin/view_helpers/filter_form_helper.rb +174 -0
  122. data/lib/active_admin/view_helpers/form_helper.rb +12 -0
  123. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  124. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  125. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  126. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  127. data/lib/active_admin/view_helpers/status_tag_helper.rb +13 -0
  128. data/lib/active_admin/view_helpers/table_helper.rb +12 -0
  129. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  130. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  131. data/lib/active_admin/views.rb +8 -0
  132. data/lib/active_admin/views/action_items.rb +17 -0
  133. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  134. data/lib/active_admin/views/components/columns.rb +49 -0
  135. data/lib/active_admin/views/components/paginated_collection.rb +74 -0
  136. data/lib/active_admin/views/components/panel.rb +26 -0
  137. data/lib/active_admin/views/components/scopes.rb +64 -0
  138. data/lib/active_admin/views/components/sidebar_section.rb +30 -0
  139. data/lib/active_admin/views/components/table_for.rb +174 -0
  140. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  141. data/lib/active_admin/views/header_renderer.rb +37 -0
  142. data/lib/active_admin/views/index_as_block.rb +24 -0
  143. data/lib/active_admin/views/index_as_blog.rb +89 -0
  144. data/lib/active_admin/views/index_as_grid.rb +49 -0
  145. data/lib/active_admin/views/index_as_table.rb +73 -0
  146. data/lib/active_admin/views/pages/base.rb +138 -0
  147. data/lib/active_admin/views/pages/dashboard.rb +61 -0
  148. data/lib/active_admin/views/pages/edit.rb +27 -0
  149. data/lib/active_admin/views/pages/index.rb +64 -0
  150. data/lib/active_admin/views/pages/new.rb +27 -0
  151. data/lib/active_admin/views/pages/show.rb +56 -0
  152. data/lib/active_admin/views/tabs_renderer.rb +52 -0
  153. data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  154. data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  155. data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
  156. data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
  157. data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
  158. data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
  159. data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
  160. data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
  161. data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
  162. data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
  163. data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
  164. data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
  165. data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
  166. data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
  167. data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
  168. data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
  169. data/lib/generators/active_admin/install/install_generator.rb +18 -3
  170. data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
  171. data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
  172. data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
  173. data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
  174. data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
  175. data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
  176. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
  177. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
  178. data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
  179. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  180. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  181. data/spec/integration/belongs_to_spec.rb +42 -0
  182. data/spec/integration/index_as_table_spec.rb +0 -119
  183. data/spec/integration/layout_spec.rb +3 -37
  184. data/spec/spec_helper.rb +89 -50
  185. data/spec/support/integration_example_group.rb +37 -0
  186. data/spec/support/rails_template.rb +21 -9
  187. data/spec/support/rails_template_with_data.rb +32 -0
  188. data/spec/support/templates/cucumber.rb +28 -0
  189. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  190. data/spec/unit/action_builder_spec.rb +19 -7
  191. data/spec/unit/action_items_spec.rb +16 -30
  192. data/spec/unit/active_admin_spec.rb +10 -22
  193. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  194. data/spec/unit/arbre/html/element_spec.rb +224 -0
  195. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  196. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  197. data/spec/unit/arbre/html_spec.rb +185 -0
  198. data/spec/unit/auto_link_spec.rb +38 -0
  199. data/spec/unit/belongs_to_spec.rb +44 -0
  200. data/spec/unit/breadcrumbs_spec.rb +110 -0
  201. data/spec/unit/comments_spec.rb +53 -0
  202. data/spec/unit/component_spec.rb +18 -0
  203. data/spec/unit/components/attributes_table_spec.rb +100 -0
  204. data/spec/unit/components/columns_spec.rb +75 -0
  205. data/spec/unit/components/panel_spec.rb +31 -0
  206. data/spec/unit/components/sidebar_section_spec.rb +37 -0
  207. data/spec/unit/components/table_for_spec.rb +130 -0
  208. data/spec/unit/dashboard_controller_spec.rb +26 -0
  209. data/spec/unit/dashboard_section_spec.rb +10 -17
  210. data/spec/unit/display_name_spec.rb +29 -0
  211. data/spec/unit/event_spec.rb +41 -0
  212. data/spec/unit/filter_form_builder_spec.rb +99 -77
  213. data/spec/unit/form_builder_spec.rb +69 -69
  214. data/spec/unit/namespace_spec.rb +61 -3
  215. data/spec/unit/pretty_format_spec.rb +35 -0
  216. data/spec/unit/registration_spec.rb +40 -1
  217. data/spec/unit/renderer_spec.rb +8 -0
  218. data/spec/unit/resource_controller_spec.rb +105 -6
  219. data/spec/unit/resource_spec.rb +78 -11
  220. data/spec/unit/routing_spec.rb +82 -6
  221. data/spec/unit/scope_spec.rb +31 -0
  222. data/spec/unit/tabs_renderer_spec.rb +24 -2
  223. data/spec/unit/view_factory_spec.rb +16 -0
  224. metadata +268 -82
  225. data/.gitignore +0 -25
  226. data/active_admin.gemspec +0 -22
  227. data/lib/active_admin/action_builder.rb +0 -60
  228. data/lib/active_admin/breadcrumbs.rb +0 -26
  229. data/lib/active_admin/dashboards/renderer.rb +0 -45
  230. data/lib/active_admin/dashboards/section_renderer.rb +0 -28
  231. data/lib/active_admin/filters.rb +0 -189
  232. data/lib/active_admin/pages.rb +0 -11
  233. data/lib/active_admin/pages/base.rb +0 -92
  234. data/lib/active_admin/pages/edit.rb +0 -21
  235. data/lib/active_admin/pages/index.rb +0 -58
  236. data/lib/active_admin/pages/index/blog.rb +0 -65
  237. data/lib/active_admin/pages/index/table.rb +0 -48
  238. data/lib/active_admin/pages/index/thumbnails.rb +0 -40
  239. data/lib/active_admin/pages/new.rb +0 -21
  240. data/lib/active_admin/pages/show.rb +0 -54
  241. data/lib/active_admin/table_builder.rb +0 -162
  242. data/lib/active_admin/tabs_renderer.rb +0 -39
  243. data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
  244. data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
  245. data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
  246. data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
  247. data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
  248. data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
  249. data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
  250. data/spec/integration/index_as_blog_spec.rb +0 -65
  251. data/spec/integration/index_as_thumbnails_spec.rb +0 -43
  252. data/spec/integration/new_view_spec.rb +0 -52
  253. data/spec/integration/show_view_spec.rb +0 -91
  254. data/spec/unit/sidebar_spec.rb +0 -96
  255. data/spec/unit/table_builder_spec.rb +0 -162
@@ -0,0 +1,47 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedViews::Base
3
+
4
+ module Callbacks
5
+ extend ActiveSupport::Concern
6
+ include ::ActiveAdmin::Callbacks
7
+
8
+ included do
9
+ define_active_admin_callbacks :build, :create, :update, :save, :destroy
10
+ end
11
+
12
+ protected
13
+
14
+ def build_resource
15
+ object = super
16
+ run_build_callbacks object
17
+ object
18
+ end
19
+
20
+ def create_resource(object)
21
+ run_create_callbacks object do
22
+ save_resource(object)
23
+ end
24
+ end
25
+
26
+ def save_resource(object)
27
+ run_save_callbacks object do
28
+ object.save
29
+ end
30
+ end
31
+
32
+ def update_resource(object, attributes)
33
+ object.attributes = attributes
34
+ run_update_callbacks object do
35
+ save_resource(object)
36
+ end
37
+ end
38
+
39
+ def destroy_resource(object)
40
+ run_destroy_callbacks object do
41
+ object.destroy
42
+ end
43
+ end
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,142 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedViews::Base
3
+
4
+ # This module deals with the retrieval of collections for resources
5
+ # within the resource controller.
6
+ module Collection
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ before_filter :setup_pagination_for_csv
11
+ end
12
+
13
+ module BaseCollection
14
+ protected
15
+
16
+ def collection
17
+ get_collection_ivar || set_collection_ivar(active_admin_collection)
18
+ end
19
+
20
+ def active_admin_collection
21
+ scoped_collection
22
+ end
23
+
24
+
25
+ # Override this method in your controllers to modify the start point
26
+ # of our searches and index.
27
+ #
28
+ # This method should return an ActiveRecord::Relation object so that
29
+ # the searching and filtering can be applied on top
30
+ #
31
+ # Note, unless you are doing something special, you should use the
32
+ # scope_to method from the Scoping module instead of overriding this
33
+ # method.
34
+ def scoped_collection
35
+ end_of_association_chain
36
+ end
37
+ end
38
+
39
+
40
+ module Sorting
41
+ protected
42
+
43
+ def active_admin_collection
44
+ sort_order(super)
45
+ end
46
+
47
+ def sort_order(chain)
48
+ params[:order] ||= active_admin_config.sort_order
49
+ if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
50
+ chain.order("#{$1} #{$2}")
51
+ else
52
+ chain # just return the chain
53
+ end
54
+ end
55
+ end
56
+
57
+
58
+ module Search
59
+ protected
60
+
61
+ def active_admin_collection
62
+ search(super)
63
+ end
64
+
65
+ def search(chain)
66
+ @search = chain.search(clean_search_params(params[:q]))
67
+ @search.relation
68
+ end
69
+
70
+ def clean_search_params(search_params)
71
+ return {} unless search_params.is_a?(Hash)
72
+ search_params = search_params.dup
73
+ search_params.delete_if do |key, value|
74
+ value == ""
75
+ end
76
+ search_params
77
+ end
78
+ end
79
+
80
+
81
+ module Scoping
82
+ protected
83
+
84
+ def active_admin_collection
85
+ scope_collection(super)
86
+ end
87
+
88
+ def scope_collection(chain)
89
+ if current_scope
90
+ @before_scope_collection = chain
91
+
92
+ # ActiveRecord::Base isn't a relation, so let's help you out
93
+ return chain if current_scope.scope_method == :all
94
+
95
+ if current_scope.scope_method
96
+ chain.send(current_scope.scope_method)
97
+ else
98
+ instance_exec chain, &current_scope.scope_block
99
+ end
100
+ else
101
+ chain
102
+ end
103
+ end
104
+
105
+ def current_scope
106
+ @current_scope ||= if params[:scope]
107
+ active_admin_config.get_scope_by_id(params[:scope]) if params[:scope]
108
+ else
109
+ active_admin_config.default_scope
110
+ end
111
+ end
112
+ end
113
+
114
+
115
+ module Pagination
116
+ protected
117
+
118
+ def active_admin_collection
119
+ paginate(super)
120
+ end
121
+
122
+ # Allow more records for csv files
123
+ def setup_pagination_for_csv
124
+ @per_page = 10_000 if request.format == 'text/csv'
125
+ end
126
+
127
+ def paginate(chain)
128
+ chain.paginate(:page => params[:page], :per_page => @per_page || ActiveAdmin.default_per_page)
129
+ end
130
+ end
131
+
132
+ # Include all the Modules. BaseCollection must be first
133
+ # and pagination should be last
134
+ include BaseCollection
135
+ include Sorting
136
+ include Search
137
+ include Scoping
138
+ include Pagination
139
+
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,58 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedViews::Base
3
+
4
+ module Filters
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ helper_method :filters_config
9
+ end
10
+
11
+ module ClassMethods
12
+ def filter(attribute, options = {})
13
+ return false if attribute.nil?
14
+ @filters ||= []
15
+ @filters << options.merge(:attribute => attribute)
16
+ end
17
+
18
+ def filters_config
19
+ @filters && @filters.any? ? @filters : default_filters_config
20
+ end
21
+
22
+ def reset_filters!
23
+ @filters = []
24
+ end
25
+
26
+ # Returns a sane set of filters by default for the object
27
+ def default_filters_config
28
+ default_association_filters + default_content_filters
29
+ end
30
+
31
+ # Returns a default set of filters for the associations
32
+ def default_association_filters
33
+ if resource_class.respond_to?(:reflections)
34
+ resource_class.reflections.collect{|name, r| { :attribute => name }}
35
+ else
36
+ []
37
+ end
38
+ end
39
+
40
+ # Returns a default set of filters for the content columns
41
+ def default_content_filters
42
+ if resource_class.respond_to?(:content_columns)
43
+ resource_class.content_columns.collect{|c| { :attribute => c.name.to_sym } }
44
+ else
45
+ []
46
+ end
47
+ end
48
+ end
49
+
50
+ protected
51
+
52
+ def filters_config
53
+ self.class.filters_config
54
+ end
55
+ end
56
+
57
+ end
58
+ end
@@ -0,0 +1,42 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedViews::Base
3
+ module Form
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ helper_method :form_config
8
+ end
9
+
10
+ module ClassMethods
11
+
12
+ def form_config=(config)
13
+ @form_config = config
14
+ end
15
+
16
+ def form_config
17
+ @form_config ||= default_form_config
18
+ end
19
+
20
+ def reset_form_config!
21
+ @form_config = nil
22
+ end
23
+
24
+ def default_form_config
25
+ config = {}
26
+ config[:block] = lambda do |f|
27
+ f.inputs
28
+ f.buttons
29
+ end
30
+ config
31
+ end
32
+ end
33
+
34
+ protected
35
+
36
+ def form_config
37
+ @form_config ||= self.class.form_config
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,29 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedViews::Base
3
+ module Menu
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ before_filter :set_current_tab
8
+ helper_method :current_menu
9
+ end
10
+
11
+ protected
12
+
13
+ def current_menu
14
+ active_admin_config.namespace.menu
15
+ end
16
+
17
+ # Set's @current_tab to be name of the tab to mark as current
18
+ # Get's called through a before filter
19
+ def set_current_tab
20
+ @current_tab = if active_admin_config.belongs_to? && parent?
21
+ active_admin_config.belongs_to_config.target.menu_item_name
22
+ else
23
+ [active_admin_config.parent_menu_item_name, active_admin_config.menu_item_name].compact.join("/")
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,53 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedViews::Base
3
+
4
+ module PageConfigurations
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ helper_method :index_config
9
+ helper_method :show_config
10
+ end
11
+
12
+ module ClassMethods
13
+
14
+ def set_page_config(page, options, &block)
15
+ active_admin_config.page_configs[page] = ActiveAdmin::PageConfig.new(options, &block)
16
+ end
17
+
18
+ def get_page_config(page)
19
+ active_admin_config.page_configs[page]
20
+ end
21
+
22
+ def reset_page_config!(page)
23
+ active_admin_config.page_configs[page] = nil
24
+ end
25
+
26
+ # Define the getting and re-setter for each configurable page
27
+ [:index, :show].each do |page|
28
+ # eg: index_config
29
+ define_method :"#{page}_config" do
30
+ get_page_config(page)
31
+ end
32
+
33
+ # eg: reset_index_config!
34
+ define_method :"reset_#{page}_config!" do
35
+ reset_page_config! page
36
+ end
37
+ end
38
+
39
+ end
40
+
41
+ protected
42
+
43
+ def index_config
44
+ @index_config ||= self.class.index_config
45
+ end
46
+
47
+ def show_config
48
+ @show_config ||= self.class.show_config
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,36 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedViews::Base
3
+
4
+ # This module deals with scoping entire controllers to a relation
5
+ module Scoping
6
+ extend ActiveSupport::Concern
7
+
8
+ protected
9
+
10
+ # Override the default InheritedResource #begin_of_association_chain to allow
11
+ # the scope to be defined in the active admin configuration.
12
+ #
13
+ # If scope_to is a proc, we eval it, otherwise we call the method on the controller.
14
+ def begin_of_association_chain
15
+ return nil unless active_admin_config.scope_to
16
+ case active_admin_config.scope_to
17
+ when Proc
18
+ instance_eval &active_admin_config.scope_to
19
+ when Symbol
20
+ send active_admin_config.scope_to
21
+ else
22
+ raise ArgumentError, "#scope_to accepts a symbol or a block"
23
+ end
24
+ end
25
+
26
+ # Overriding from InheritedResources::BaseHelpers
27
+ #
28
+ # Returns the method for the association chain when using
29
+ # the scope_to option
30
+ def method_for_association_chain
31
+ active_admin_config.scope_to_association_method || super
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,38 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedViews::Base
3
+
4
+ module Sidebars
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ self.class_inheritable_accessor :sidebar_sections
9
+ self.sidebar_sections = []
10
+ end
11
+
12
+ module ClassMethods
13
+ def sidebar(name, options = {}, &block)
14
+ self.sidebar_sections << ActiveAdmin::Sidebar::Section.new(name, options, &block)
15
+ end
16
+
17
+ def clear_sidebar_sections!
18
+ self.sidebar_sections = []
19
+ end
20
+
21
+ def sidebar_sections_for(action)
22
+ sidebar_sections.select{|section| section.display_on?(action) }
23
+ end
24
+ end
25
+
26
+ protected
27
+
28
+ def skip_sidebar!
29
+ @skip_sidebar = true
30
+ end
31
+
32
+ def skip_sidebar?
33
+ @skip_sidebar == true
34
+ end
35
+ end
36
+
37
+ end
38
+ end