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,31 @@
1
+ module ActiveAdmin
2
+ class Resource
3
+ class BelongsTo
4
+
5
+ class TargetNotFound < StandardError; end
6
+
7
+ # The resource which initiated this relationship
8
+ attr_reader :owner
9
+
10
+ def initialize(owner_resource, target_name, options = {})
11
+ @owner, @target_name = owner_resource, target_name
12
+ @options = options
13
+ end
14
+
15
+ # Returns the target resource class or raises an exception if it doesn't exist
16
+ def target
17
+ namespace.resources[@target_name.to_s.camelize] or
18
+ raise TargetNotFound, "Could not find registered resource #{@target_name} in #{namespace.name} with #{namespace.resources.keys.inspect}"
19
+ end
20
+
21
+ def namespace
22
+ @owner.namespace
23
+ end
24
+
25
+ def optional?
26
+ @options[:optional]
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -1,323 +1,108 @@
1
1
  require 'inherited_views'
2
- require 'active_admin/pages'
2
+ require 'active_admin/resource_controller/actions'
3
+ require 'active_admin/resource_controller/action_builder'
4
+ require 'active_admin/resource_controller/callbacks'
5
+ require 'active_admin/resource_controller/collection'
6
+ require 'active_admin/resource_controller/filters'
7
+ require 'active_admin/resource_controller/form'
8
+ require 'active_admin/resource_controller/menu'
9
+ require 'active_admin/resource_controller/page_configurations'
10
+ require 'active_admin/resource_controller/scoping'
11
+ require 'active_admin/resource_controller/sidebars'
3
12
 
4
13
  module ActiveAdmin
5
14
  class ResourceController < ::InheritedViews::Base
6
15
 
7
- # Add our views to the view path
8
- ActionController::Base.append_view_path File.expand_path('../views', __FILE__)
9
16
  self.default_views = 'active_admin_default'
10
17
 
11
18
  helper ::ActiveAdmin::ViewHelpers
12
19
 
13
- layout 'active_admin'
20
+ layout false
14
21
 
15
- class_inheritable_accessor :form_config
16
-
17
- include ActiveAdmin::Breadcrumbs
18
- include ActiveAdmin::Sidebar
19
- include ActiveAdmin::ActionItems
20
- include ActiveAdmin::Filters
21
- include ActiveAdmin::ActionBuilder
22
-
23
22
  respond_to :html, :xml, :json
24
23
  respond_to :csv, :only => :index
25
24
 
26
- add_breadcrumb "Dashboard", "/admin"
25
+ before_filter :authenticate_active_admin_user
27
26
 
28
- before_filter :add_section_breadcrumb
29
- before_filter :set_current_tab
30
- before_filter :setup_pagination_for_csv
27
+ include ActiveAdmin::ActionItems
28
+ include Actions
29
+ include ActionBuilder
30
+ include Callbacks
31
+ include Collection
32
+ include Filters
33
+ include Form
34
+ include Menu
35
+ include PageConfigurations
36
+ include Scoping
37
+ include Sidebars
31
38
 
32
39
  class << self
40
+
33
41
  # Reference to the Resource object which initialized
34
42
  # this controller
35
43
  attr_accessor :active_admin_config
36
44
 
37
45
  def active_admin_config=(config)
38
46
  @active_admin_config = config
39
- defaults :resource_class => config.resource
40
- end
41
-
42
- def set_page_config(page, config)
43
- active_admin_config.page_configs[page] = config
44
- end
45
-
46
- def get_page_config(page)
47
- active_admin_config.page_configs[page]
47
+ defaults :resource_class => config.resource,
48
+ :route_prefix => config.route_prefix,
49
+ :instance_name => config.underscored_resource_name
48
50
  end
49
51
 
50
- def reset_page_config!(page)
51
- active_admin_config.page_configs[page] = nil
52
- end
53
-
54
-
55
- # Setting the menu options
56
- def menu(options = {})
57
- active_admin_config.menu(options)
58
- end
59
-
60
- # Scope this controller to some object which has a relation
61
- # to the resource. Can either accept a block or a symbol
62
- # of a method to call.
63
- #
64
- # Eg:
65
- #
66
- # ActiveAdmin.register Post do
67
- # scope_to :current_user
68
- # end
69
- #
70
- # Then every time we instantiate and object, it would call
71
- #
72
- # current_user.posts.build
73
- #
74
- # By default Active Admin will use the resource name to build a
75
- # method to call as the association. If its different, you can
76
- # pass in the association_method as an option.
77
- #
78
- # scope_to :current_user, :association_method => :blog_posts
79
- #
80
- # will result in the following
81
- #
82
- # current_user.blog_posts.build
83
- #
84
- def scope_to(*args, &block)
85
- options = args.extract_options!
86
- method = args.first
87
-
88
- active_admin_config.scope_to = block_given? ? block : method
89
- active_admin_config.scope_to_association_method = options[:association_method]
90
- end
91
-
92
- #
93
- # Index Config
94
- #
95
-
96
- # Configure the index page for the resource
97
- def index(options = {}, &block)
98
- options[:as] ||= :table
99
- set_page_config :index, ActiveAdmin::PageConfig.new(options, &block)
100
- end
101
-
102
- # Configure the show page for the resource
103
- def show(options = {}, &block)
104
- set_page_config :show, ActiveAdmin::PageConfig.new(options, &block)
105
- end
106
-
107
- # Define the getting and re-setter for each configurable page
108
- [:index, :show].each do |page|
109
- # eg: index_config
110
- define_method :"#{page}_config" do
111
- get_page_config(page)
112
- end
113
-
114
- # eg: reset_index_config!
115
- define_method :"reset_#{page}_config!" do
116
- reset_page_config! page
117
- end
118
- end
119
-
120
-
121
- #
122
- # Form Config
123
- #
124
-
125
- def form(options = {}, &block)
126
- options[:block] = block
127
- self.form_config = options
128
- end
129
-
130
- def form_config
131
- read_inheritable_attribute(:form_config) || default_form_config
132
- end
133
-
134
- def reset_form_config!
135
- self.form_config = nil
136
- end
137
-
138
- def default_form_config
139
- config = {}
140
- config[:block] = lambda do |f|
141
- f.inputs
142
- f.buttons
143
- end
144
- config
145
- end
146
-
52
+ public :belongs_to
147
53
  end
148
54
 
149
55
  # Default Sidebar Sections
150
- sidebar :filters, :only => :index do
151
- active_admin_filters_form_for @search, filters_config
56
+ sidebar :filters, :only => :index, :icon => :magnifying_glass do
57
+ active_admin_filters_form_for assigns["search"], filters_config
152
58
  end
153
59
 
154
60
  # Default Action Item Links
155
61
  action_item :only => :show do
156
62
  if controller.action_methods.include?('edit')
157
- link_to "Edit #{active_admin_config.resource_name}", edit_resource_path(resource)
63
+ link_to(icon(:pen) + "Edit #{active_admin_config.resource_name}", edit_resource_path(resource))
158
64
  end
159
65
  end
160
66
 
161
67
  action_item :only => :show do
162
68
  if controller.action_methods.include?("destroy")
163
- link_to "Delete #{active_admin_config.resource_name}",
69
+ link_to(icon(:trash_stroke) + "Delete #{active_admin_config.resource_name}",
164
70
  resource_path(resource),
165
- :method => :delete, :confirm => "Are you sure you want to delete this?"
71
+ :method => :delete, :confirm => "Are you sure you want to delete this?")
166
72
  end
167
73
  end
168
74
 
169
75
  action_item :except => [:new, :show] do
170
76
  if controller.action_methods.include?('new')
171
- link_to "New #{active_admin_config.resource_name}", new_resource_path
172
- end
173
- end
174
-
175
- #
176
- # Actions
177
- #
178
-
179
- def index
180
- index! do |format|
181
- format.html { render_or_default 'index' }
182
- format.csv {
183
- @csv_columns = resource_class.columns.collect{ |column| column.name.to_sym }
184
- render_or_default 'index'
185
- }
186
- end
187
- end
188
-
189
- private
190
-
191
- def collection
192
- get_collection_ivar || set_collection_ivar(active_admin_collection)
193
- end
194
-
195
- def active_admin_collection
196
- chain = scoped_collection
197
- chain = sort_order(chain)
198
- chain = search(chain)
199
- chain = paginate(chain)
200
- chain
201
- end
202
-
203
- # Override this method in your controllers to modify the start point
204
- # of our searches and index.
205
- #
206
- # This method should return an ActiveRecord::Relation object so that
207
- # the searching and filtering can be applied on top
208
- def scoped_collection
209
- end_of_association_chain
210
- end
211
-
212
- def begin_of_association_chain
213
- return nil unless active_admin_config.scope_to
214
- case active_admin_config.scope_to
215
- when Proc
216
- instance_eval &active_admin_config.scope_to
217
- when Symbol
218
- send active_admin_config.scope_to
219
- else
220
- raise ArgumentError, "#scope_to accepts a symbol or a block"
77
+ link_to(icon(:plus_alt) + "New #{active_admin_config.resource_name}", new_resource_path)
221
78
  end
222
79
  end
223
80
 
224
- # Overriding from InheritedResources::BaseHelpers
225
- #
226
- # Returns the method for the association chain when using
227
- # the scope_to option
228
- def method_for_association_chain
229
- active_admin_config.scope_to_association_method || super
230
- end
81
+ protected
231
82
 
232
- # Allow more records for csv files
233
- def setup_pagination_for_csv
234
- @per_page = 10_000 if request.format == 'text/csv'
83
+ # Calls the authentication method as defined in ActiveAdmin.authentication_method
84
+ def authenticate_active_admin_user
85
+ send(ActiveAdmin.authentication_method) if ActiveAdmin.authentication_method
235
86
  end
236
87
 
237
- def paginate(chain)
238
- chain.paginate(:page => params[:page], :per_page => @per_page || ActiveAdmin.default_per_page)
88
+ def current_active_admin_user
89
+ send(ActiveAdmin.current_user_method) if ActiveAdmin.current_user_method
239
90
  end
91
+ helper_method :current_active_admin_user
240
92
 
241
- def sort_order(chain)
242
- params[:order] ||= active_admin_config.sort_order
243
- if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
244
- chain.order("#{$1} #{$2}")
245
- else
246
- chain # just return the chain
247
- end
248
- end
249
-
250
- def search(chain)
251
- @search = chain.search(clean_search_params(params[:q]))
252
- end
253
-
254
- def clean_search_params(search_params)
255
- return {} unless search_params.is_a?(Hash)
256
- search_params = search_params.dup
257
- search_params.delete_if do |key, value|
258
- value == ""
259
- end
260
- search_params
261
- end
262
-
263
- # Gets called as a before filter to set the section's breadcrumb
264
- def add_section_breadcrumb
265
- add_breadcrumb active_admin_config.plural_resource_name, collection_path
266
- end
267
-
268
- # Set's @current_tab to be name of the tab to mark as current
269
- # Get's called through a before filter
270
- def set_current_tab
271
- @current_tab = active_admin_config.parent_menu_item_name ||
272
- active_admin_config.menu_item_name
93
+ def current_active_admin_user?
94
+ !current_active_admin_user.nil?
273
95
  end
96
+ helper_method :current_active_admin_user?
274
97
 
275
98
  def active_admin_config
276
99
  self.class.active_admin_config
277
100
  end
278
101
  helper_method :active_admin_config
279
102
 
280
- def index_config
281
- @index_config ||= self.class.index_config
282
- end
283
- helper_method :index_config
284
-
285
- def show_config
286
- @show_config ||= self.class.show_config
287
- end
288
- helper_method :show_config
289
-
290
- def form_config
291
- @form_config ||= self.class.form_config
292
- end
293
- helper_method :form_config
294
-
295
- def current_menu
296
- active_admin_config.namespace.menu
297
- end
298
- helper_method :current_menu
299
-
300
- def skip_sidebar!
301
- @skip_sidebar = true
302
- end
303
- helper_method :skip_sidebar!
304
-
305
- def skip_sidebar?
306
- @skip_sidebar == true
307
- end
308
- helper_method :skip_sidebar?
309
-
310
103
  # Returns the renderer class to use for the given action.
311
- #
312
- # TODO: This needs to be wrapped into a default config as well
313
- # as overrideable on each controller
314
104
  def renderer_for(action)
315
- {
316
- :index => ::ActiveAdmin::Pages::Index,
317
- :new => ::ActiveAdmin::Pages::New,
318
- :show => ::ActiveAdmin::Pages::Show,
319
- :edit => ::ActiveAdmin::Pages::Edit
320
- }[action]
105
+ ActiveAdmin.view_factory["#{action}_page"]
321
106
  end
322
107
  helper_method :renderer_for
323
108
 
@@ -0,0 +1,21 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedViews::Base
3
+
4
+ module ActionBuilder
5
+ extend ActiveSupport::Concern
6
+
7
+ module ClassMethods
8
+
9
+ def clear_member_actions!
10
+ active_admin_config.clear_member_actions!
11
+ end
12
+
13
+ def clear_collection_actions!
14
+ active_admin_config.clear_collection_actions!
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,53 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedViews::Base
3
+
4
+ # All the controller actions are defined here. They all use
5
+ # the render_or_default method provided by InheritedViews which
6
+ # tries to render the view in the user's application, then falls
7
+ # back the view declared by Active Admin.
8
+ module Actions
9
+ def index
10
+ index! do |format|
11
+ format.html do
12
+ render_or_default 'index'
13
+ end
14
+ format.csv do
15
+ @csv_columns = resource_class.columns.collect{ |column| column.name.to_sym }
16
+ render_or_default 'index'
17
+ end
18
+ end
19
+ end
20
+
21
+ def new
22
+ new! do |format|
23
+ format.html { render_or_default 'new' }
24
+ end
25
+ end
26
+
27
+ def create
28
+ create! do |success, failure|
29
+ failure.html { render_or_default 'new' }
30
+ end
31
+ end
32
+
33
+ def show
34
+ show! do |format|
35
+ format.html { render_or_default 'show' }
36
+ end
37
+ end
38
+
39
+ def edit
40
+ edit! do |format|
41
+ format.html { render_or_default 'edit' }
42
+ end
43
+ end
44
+
45
+ def update
46
+ update! do |success, failure|
47
+ failure.html { render_or_default 'edit' }
48
+ end
49
+ end
50
+ end
51
+
52
+ end
53
+ end