activeadmin 0.3.4 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +3 -0
  3. data/CHANGELOG.md +164 -5
  4. data/CONTRIBUTING.md +113 -0
  5. data/Gemfile +7 -9
  6. data/LICENSE +1 -1
  7. data/README.rdoc +19 -20
  8. data/activeadmin.gemspec +4 -2
  9. data/app/assets/javascripts/active_admin/application.js +9 -0
  10. data/app/assets/javascripts/active_admin/base.js +4 -12
  11. data/app/assets/stylesheets/active_admin/_base.css.scss +17 -341
  12. data/app/assets/stylesheets/active_admin/_forms.css.scss +13 -7
  13. data/app/assets/stylesheets/active_admin/_header.css.scss +23 -4
  14. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
  15. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  16. data/app/assets/stylesheets/active_admin/components/_buttons.scss +12 -0
  17. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +2 -0
  18. data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  19. data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  20. data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
  21. data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  22. data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
  23. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
  24. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +101 -0
  25. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +43 -2
  26. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +2 -1
  27. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +50 -13
  28. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +9 -1
  29. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +7 -5
  30. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +1 -0
  31. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +9 -0
  33. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +1 -0
  34. data/app/assets/stylesheets/active_admin/pages/_dashboard.scss +5 -0
  35. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  36. data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
  37. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +26 -0
  38. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +44 -0
  39. data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
  40. data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
  41. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  42. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  43. data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
  44. data/app/views/active_admin/page/index.html.arb +1 -0
  45. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  46. data/cucumber.yml +3 -2
  47. data/docs/1-general-configuration.md +46 -10
  48. data/docs/6-show-screens.md +7 -0
  49. data/docs/8-custom-actions.md +12 -2
  50. data/docs/9-custom-pages.md +84 -0
  51. data/features/belongs_to.feature +27 -0
  52. data/features/comments/commenting.feature +3 -2
  53. data/features/dashboard.feature +18 -0
  54. data/features/development_reloading.feature +43 -0
  55. data/features/index/filter_with_check_boxes.feature +25 -0
  56. data/features/index/index_as_table.feature +14 -0
  57. data/features/index/index_scopes.feature +59 -0
  58. data/features/index/pagination.feature +19 -1
  59. data/features/menu.feature +22 -2
  60. data/features/registering_assets.feature +2 -2
  61. data/features/registering_pages.feature +66 -0
  62. data/features/specifying_actions.feature +5 -0
  63. data/features/step_definitions/action_item_steps.rb +2 -6
  64. data/features/step_definitions/action_link_steps.rb +7 -0
  65. data/features/step_definitions/additional_web_steps.rb +11 -3
  66. data/features/step_definitions/asset_steps.rb +5 -1
  67. data/features/step_definitions/breadcrumb_steps.rb +5 -0
  68. data/features/step_definitions/comment_steps.rb +3 -3
  69. data/features/step_definitions/configuration_steps.rb +69 -13
  70. data/features/step_definitions/dashboard_steps.rb +7 -3
  71. data/features/step_definitions/factory_steps.rb +9 -2
  72. data/features/step_definitions/flash_steps.rb +9 -1
  73. data/features/step_definitions/format_steps.rb +9 -1
  74. data/features/step_definitions/index_scope_steps.rb +18 -6
  75. data/features/step_definitions/member_link_steps.rb +7 -0
  76. data/features/step_definitions/pagination_steps.rb +2 -2
  77. data/features/step_definitions/site_title_steps.rb +15 -0
  78. data/features/step_definitions/tab_steps.rb +1 -1
  79. data/features/step_definitions/user_steps.rb +1 -1
  80. data/features/step_definitions/web_steps.rb +4 -4
  81. data/features/support/paths.rb +6 -0
  82. data/features/users/logging_out.feature +11 -0
  83. data/lib/active_admin.rb +26 -10
  84. data/lib/active_admin/application.rb +64 -22
  85. data/lib/active_admin/arbre.rb +0 -1
  86. data/lib/active_admin/arbre/builder.rb +8 -5
  87. data/lib/active_admin/arbre/context.rb +1 -1
  88. data/lib/active_admin/arbre/html/attributes.rb +1 -1
  89. data/lib/active_admin/arbre/html/class_list.rb +0 -4
  90. data/lib/active_admin/arbre/html/collection.rb +2 -2
  91. data/lib/active_admin/arbre/html/document.rb +1 -1
  92. data/lib/active_admin/arbre/html/element.rb +19 -9
  93. data/lib/active_admin/arbre/html/tag.rb +3 -3
  94. data/lib/active_admin/arbre/html/text_node.rb +2 -2
  95. data/lib/active_admin/asset_registration.rb +15 -2
  96. data/lib/active_admin/base_controller.rb +61 -0
  97. data/lib/active_admin/{resource_controller → base_controller}/menu.rb +1 -1
  98. data/lib/active_admin/callbacks.rb +16 -18
  99. data/lib/active_admin/comments.rb +48 -54
  100. data/lib/active_admin/comments/comment.rb +13 -2
  101. data/lib/active_admin/comments/namespace_helper.rb +1 -1
  102. data/lib/active_admin/comments/views/active_admin_comments.rb +7 -3
  103. data/lib/active_admin/dashboards.rb +4 -0
  104. data/lib/active_admin/dashboards/dashboard_controller.rb +21 -5
  105. data/lib/active_admin/dsl.rb +6 -159
  106. data/lib/active_admin/event.rb +5 -3
  107. data/lib/active_admin/filter_form_builder.rb +53 -0
  108. data/lib/active_admin/form_builder.rb +25 -19
  109. data/lib/active_admin/helpers/settings.rb +6 -10
  110. data/lib/active_admin/inputs.rb +14 -0
  111. data/lib/active_admin/inputs/datepicker_input.rb +11 -0
  112. data/lib/active_admin/inputs/filter_base.rb +46 -0
  113. data/lib/active_admin/inputs/filter_check_boxes_input.rb +40 -0
  114. data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
  115. data/lib/active_admin/inputs/filter_numeric_input.rb +55 -0
  116. data/lib/active_admin/inputs/filter_select_input.rb +23 -0
  117. data/lib/active_admin/inputs/filter_string_input.rb +22 -0
  118. data/lib/active_admin/locales/ca.yml +44 -0
  119. data/lib/active_admin/locales/cs.yml +14 -10
  120. data/lib/active_admin/locales/de.yml +44 -0
  121. data/lib/active_admin/locales/en.yml +5 -0
  122. data/lib/active_admin/locales/hr.yml +40 -0
  123. data/lib/active_admin/locales/hu.yml +45 -0
  124. data/lib/active_admin/locales/it.yml +11 -6
  125. data/lib/active_admin/locales/ko.yml +40 -0
  126. data/lib/active_admin/locales/lv.yml +43 -0
  127. data/lib/active_admin/locales/nl.yml +40 -0
  128. data/lib/active_admin/locales/no-NB.yml +40 -0
  129. data/lib/active_admin/locales/pl.yml +7 -1
  130. data/lib/active_admin/locales/pt-BR.yml +6 -2
  131. data/lib/active_admin/menu_item.rb +25 -17
  132. data/lib/active_admin/namespace.rb +48 -33
  133. data/lib/active_admin/page.rb +65 -0
  134. data/lib/active_admin/page_controller.rb +15 -0
  135. data/lib/active_admin/page_dsl.rb +21 -0
  136. data/lib/active_admin/page_presenter.rb +30 -0
  137. data/lib/active_admin/reloader.rb +109 -42
  138. data/lib/active_admin/resource.rb +38 -44
  139. data/lib/active_admin/resource/action_items.rb +5 -0
  140. data/lib/active_admin/resource/belongs_to.rb +4 -2
  141. data/lib/active_admin/resource/controllers.rb +35 -0
  142. data/lib/active_admin/resource/menu.rb +1 -2
  143. data/lib/active_admin/resource/naming.rb +53 -31
  144. data/lib/active_admin/resource/page_presenters.rb +28 -0
  145. data/lib/active_admin/resource/scopes.rb +16 -3
  146. data/lib/active_admin/resource/sidebars.rb +4 -0
  147. data/lib/active_admin/resource_collection.rb +88 -0
  148. data/lib/active_admin/resource_controller.rb +18 -54
  149. data/lib/active_admin/resource_controller/action_builder.rb +1 -1
  150. data/lib/active_admin/resource_controller/actions.rb +8 -8
  151. data/lib/active_admin/resource_controller/callbacks.rb +1 -1
  152. data/lib/active_admin/resource_controller/collection.rb +8 -4
  153. data/lib/active_admin/resource_controller/filters.rb +1 -1
  154. data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
  155. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  156. data/lib/active_admin/resource_controller/sidebars.rb +1 -1
  157. data/lib/active_admin/resource_dsl.rb +157 -0
  158. data/lib/active_admin/router.rb +21 -14
  159. data/lib/active_admin/scope.rb +15 -3
  160. data/lib/active_admin/version.rb +1 -1
  161. data/lib/active_admin/view_factory.rb +4 -3
  162. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -10
  163. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +25 -21
  164. data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -150
  165. data/lib/active_admin/views/components/attributes_table.rb +1 -1
  166. data/lib/active_admin/views/components/columns.rb +4 -4
  167. data/lib/active_admin/views/components/paginated_collection.rb +42 -13
  168. data/lib/active_admin/views/components/panel.rb +8 -0
  169. data/lib/active_admin/views/components/scopes.rb +24 -18
  170. data/lib/active_admin/views/components/status_tag.rb +6 -5
  171. data/lib/active_admin/views/components/table_for.rb +6 -2
  172. data/lib/active_admin/views/header_renderer.rb +31 -12
  173. data/lib/active_admin/views/index_as_block.rb +2 -2
  174. data/lib/active_admin/views/index_as_blog.rb +3 -3
  175. data/lib/active_admin/views/index_as_grid.rb +4 -4
  176. data/lib/active_admin/views/index_as_table.rb +13 -6
  177. data/lib/active_admin/views/pages/base.rb +4 -4
  178. data/lib/active_admin/views/pages/form.rb +49 -0
  179. data/lib/active_admin/views/pages/index.rb +18 -6
  180. data/lib/active_admin/views/pages/page.rb +24 -0
  181. data/lib/active_admin/views/pages/show.rb +1 -1
  182. data/lib/generators/active_admin/assets/assets_generator.rb +19 -1
  183. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +38 -12
  184. data/lib/generators/active_admin/install/templates/dashboards.rb +6 -0
  185. data/script/use_rails +14 -7
  186. data/spec/spec_helper.rb +9 -14
  187. data/spec/spec_helper_without_rails.rb +10 -0
  188. data/spec/support/detect_rails_version.rb +22 -3
  189. data/spec/support/integration_example_group.rb +5 -7
  190. data/spec/support/rails_template.rb +11 -0
  191. data/spec/support/rails_template_with_data.rb +25 -0
  192. data/spec/support/templates/cucumber_with_reloading.rb +5 -0
  193. data/spec/unit/active_admin_spec.rb +8 -0
  194. data/spec/unit/application_spec.rb +48 -2
  195. data/spec/unit/arbre/context_spec.rb +1 -1
  196. data/spec/unit/arbre/html/element_finder_methods_spec.rb +58 -2
  197. data/spec/unit/arbre/html/element_spec.rb +18 -5
  198. data/spec/unit/arbre/html/tag_attributes_spec.rb +3 -3
  199. data/spec/unit/arbre/html/tag_spec.rb +1 -1
  200. data/spec/unit/arbre/html_spec.rb +32 -22
  201. data/spec/unit/asset_registration_spec.rb +9 -3
  202. data/spec/unit/auto_link_spec.rb +2 -2
  203. data/spec/unit/base_controller_shared_examples.rb +28 -0
  204. data/spec/unit/base_controller_spec.rb +8 -0
  205. data/spec/unit/belongs_to_spec.rb +30 -33
  206. data/spec/unit/comments_spec.rb +45 -15
  207. data/spec/unit/config_shared_examples.rb +119 -0
  208. data/spec/unit/dashboard_controller_spec.rb +44 -0
  209. data/spec/unit/event_spec.rb +6 -0
  210. data/spec/unit/filter_form_builder_spec.rb +9 -0
  211. data/spec/unit/form_builder_spec.rb +8 -14
  212. data/spec/unit/menu_item_spec.rb +25 -20
  213. data/spec/unit/namespace/register_page_spec.rb +102 -0
  214. data/spec/unit/namespace/register_resource_spec.rb +188 -0
  215. data/spec/unit/namespace_spec.rb +11 -183
  216. data/spec/unit/page_controller_spec.rb +8 -0
  217. data/spec/unit/page_spec.rb +60 -0
  218. data/spec/unit/reloader_spec.rb +82 -38
  219. data/spec/unit/resource/menu_spec.rb +1 -51
  220. data/spec/unit/resource/naming_spec.rb +25 -20
  221. data/spec/unit/resource/page_presenters_spec.rb +32 -0
  222. data/spec/unit/resource/scopes_spec.rb +13 -0
  223. data/spec/unit/resource_collection_spec.rb +101 -0
  224. data/spec/unit/resource_controller_spec.rb +40 -32
  225. data/spec/unit/{registration_spec.rb → resource_registration_spec.rb} +0 -0
  226. data/spec/unit/resource_spec.rb +8 -24
  227. data/spec/unit/routing_spec.rb +50 -1
  228. data/spec/unit/scope_spec.rb +18 -4
  229. data/spec/unit/views/components/paginated_collection_spec.rb +163 -0
  230. data/spec/unit/views/components/panel_spec.rb +9 -0
  231. data/spec/unit/views/components/status_tag_spec.rb +9 -0
  232. data/spec/unit/views/tabbed_navigation_spec.rb +2 -1
  233. data/tasks/test.rake +44 -26
  234. metadata +176 -69
  235. data/app/assets/javascripts/active_admin/vendor.js +0 -382
  236. data/lib/active_admin/arbre/core_extensions.rb +0 -5
  237. data/lib/active_admin/comments/configuration.rb +0 -18
  238. data/lib/active_admin/page_config.rb +0 -15
  239. data/lib/active_admin/resource_controller/form.rb +0 -42
  240. data/lib/active_admin/resource_controller/page_configurations.rb +0 -53
  241. data/lib/active_admin/views/pages/edit.rb +0 -28
  242. data/lib/active_admin/views/pages/new.rb +0 -28
  243. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +0 -427
  244. data/spec/integration/belongs_to_spec.rb +0 -42
@@ -1,5 +1,4 @@
1
1
  require "active_admin/arbre/builder"
2
- require "active_admin/arbre/core_extensions"
3
2
  require "active_admin/arbre/context"
4
3
  require "active_admin/arbre/html/element"
5
4
  require "active_admin/arbre/html/attributes"
@@ -65,7 +65,7 @@ module Arbre
65
65
  # Render the blocks contents
66
66
  if block_given?
67
67
  with_current_dom_context tag do
68
- insert_text_node_if_string(yield)
68
+ append_return_block(yield)
69
69
  end
70
70
  end
71
71
  end
@@ -98,10 +98,13 @@ module Arbre
98
98
  end
99
99
  alias_method :within, :with_current_dom_context
100
100
 
101
- # Inserts a text node if the tag is a string
102
- def insert_text_node_if_string(tag)
103
- if tag.is_a?(String)
104
- current_dom_context << Arbre::HTML::TextNode.from_string(tag)
101
+ # Appends the value to the current DOM element if there are no
102
+ # existing DOM Children and it responds to #to_s
103
+ def append_return_block(tag)
104
+ return nil if current_dom_context.children?
105
+
106
+ if !tag.is_a?(Arbre::HTML::Element) && tag.respond_to?(:to_s)
107
+ current_dom_context << Arbre::HTML::TextNode.from_string(tag.to_s)
105
108
  end
106
109
  end
107
110
  end
@@ -35,7 +35,7 @@ module Arbre
35
35
  if defined?(@cached_html)
36
36
  @cached_html
37
37
  else
38
- html = to_html
38
+ html = to_s
39
39
  @cached_html = html if html.length > 0
40
40
  html
41
41
  end
@@ -3,7 +3,7 @@ module Arbre
3
3
 
4
4
  class Attributes < Hash
5
5
 
6
- def to_html
6
+ def to_s
7
7
  self.collect do |name, value|
8
8
  "#{html_escape(name)}=\"#{html_escape(value)}\""
9
9
  end.join(" ")
@@ -15,10 +15,6 @@ module Arbre
15
15
  alias :<< :add
16
16
 
17
17
  def to_s
18
- to_html
19
- end
20
-
21
- def to_html
22
18
  to_a.join(" ")
23
19
  end
24
20
 
@@ -16,9 +16,9 @@ module Arbre
16
16
  self.class.new(super)
17
17
  end
18
18
 
19
- def to_html
19
+ def to_s
20
20
  self.collect do |element|
21
- element.to_html
21
+ element.to_s
22
22
  end.join.html_safe
23
23
  end
24
24
  end
@@ -21,7 +21,7 @@ module Arbre
21
21
  '<!DOCTYPE html>'.html_safe
22
22
  end
23
23
 
24
- def to_html
24
+ def to_s
25
25
  doctype + super
26
26
  end
27
27
 
@@ -35,7 +35,7 @@ module Arbre
35
35
 
36
36
  def build(*args, &block)
37
37
  # Render the block passing ourselves in
38
- insert_text_node_if_string(block.call(self)) if block
38
+ append_return_block(block.call(self)) if block
39
39
  end
40
40
 
41
41
  def add_child(child)
@@ -70,6 +70,10 @@ module Arbre
70
70
  add_child(child)
71
71
  end
72
72
 
73
+ def children?
74
+ @children.any?
75
+ end
76
+
73
77
  def parent=(parent)
74
78
  @parent = parent
75
79
  end
@@ -97,12 +101,22 @@ module Arbre
97
101
  end
98
102
  alias_method :find_by_tag, :get_elements_by_tag_name
99
103
 
104
+ def get_elements_by_class_name(class_name)
105
+ elements = Collection.new
106
+ children.each do |child|
107
+ elements << child if child.class_list =~ /#{class_name}/
108
+ elements.concat(child.get_elements_by_tag_name(tag_name))
109
+ end
110
+ elements
111
+ end
112
+ alias_method :find_by_class, :get_elements_by_class_name
113
+
100
114
  def content
101
- children.to_html
115
+ children.to_s
102
116
  end
103
117
 
104
118
  def html_safe
105
- to_html
119
+ to_s
106
120
  end
107
121
 
108
122
  def indent_level
@@ -110,18 +124,14 @@ module Arbre
110
124
  end
111
125
 
112
126
  def each(&block)
113
- [to_html].each(&block)
114
- end
115
-
116
- def to_s
117
- to_html
127
+ [to_s].each(&block)
118
128
  end
119
129
 
120
130
  def to_str
121
131
  to_s
122
132
  end
123
133
 
124
- def to_html
134
+ def to_s
125
135
  content
126
136
  end
127
137
 
@@ -65,14 +65,14 @@ module Arbre
65
65
 
66
66
  # Returns a string of classes
67
67
  def class_names
68
- class_list.to_html
68
+ class_list.to_s
69
69
  end
70
70
 
71
71
  def class_list
72
72
  get_attribute(:class) || set_attribute(:class, ClassList.new)
73
73
  end
74
74
 
75
- def to_html
75
+ def to_s
76
76
  indent("<#{tag_name}#{attributes_html}>", content, "</#{tag_name}>").html_safe
77
77
  end
78
78
 
@@ -118,7 +118,7 @@ module Arbre
118
118
 
119
119
 
120
120
  def attributes_html
121
- attributes.any? ? " " + attributes.to_html : nil
121
+ attributes.any? ? " " + attributes.to_s : nil
122
122
  end
123
123
 
124
124
  def set_for_attribute(record)
@@ -26,8 +26,8 @@ module Arbre
26
26
  nil
27
27
  end
28
28
 
29
- def to_html
30
- ERB::Util.html_escape(@content.to_html)
29
+ def to_s
30
+ ERB::Util.html_escape(@content.to_s)
31
31
  end
32
32
  end
33
33
 
@@ -3,8 +3,8 @@ module ActiveAdmin
3
3
 
4
4
  # Stylesheets
5
5
 
6
- def register_stylesheet(name)
7
- stylesheets << name
6
+ def register_stylesheet(*args)
7
+ stylesheets << ActiveAdmin::Stylesheet.new(*args)
8
8
  end
9
9
 
10
10
  def stylesheets
@@ -31,4 +31,17 @@ module ActiveAdmin
31
31
  end
32
32
 
33
33
  end
34
+
35
+ # Wrapper class for stylesheet registration
36
+ class Stylesheet
37
+
38
+ attr_reader :options, :path
39
+
40
+ def initialize(*args)
41
+ @options = args.extract_options!
42
+ @path = args.first if args.first
43
+ end
44
+
45
+ end
46
+
34
47
  end
@@ -0,0 +1,61 @@
1
+ require 'inherited_resources'
2
+ require 'active_admin/base_controller/menu'
3
+
4
+ module ActiveAdmin
5
+ # BaseController for ActiveAdmin.
6
+ # It implements ActiveAdmin controllers core features.
7
+ class BaseController < ::InheritedResources::Base
8
+ helper ::ActiveAdmin::ViewHelpers
9
+
10
+ layout 'active_admin'
11
+
12
+ before_filter :only_render_implemented_actions
13
+ before_filter :authenticate_active_admin_user
14
+
15
+ class << self
16
+ # Ensure that this method is available for the DSL
17
+ public :actions
18
+
19
+ # Reference to the Resource object which initialized
20
+ # this controller
21
+ attr_accessor :active_admin_config
22
+ end
23
+
24
+ # By default Rails will render un-implemented actions when the view exists. Becuase Active
25
+ # Admin allows you to not render any of the actions by using the #actions method, we need
26
+ # to check if they are implemented.
27
+ def only_render_implemented_actions
28
+ raise AbstractController::ActionNotFound unless action_methods.include?(params[:action])
29
+ end
30
+
31
+ include Menu
32
+
33
+ private
34
+
35
+ # Calls the authentication method as defined in ActiveAdmin.authentication_method
36
+ def authenticate_active_admin_user
37
+ send(active_admin_namespace.authentication_method) if active_admin_namespace.authentication_method
38
+ end
39
+
40
+ def current_active_admin_user
41
+ send(active_admin_namespace.current_user_method) if active_admin_namespace.current_user_method
42
+ end
43
+ helper_method :current_active_admin_user
44
+
45
+ def current_active_admin_user?
46
+ !current_active_admin_user.nil?
47
+ end
48
+ helper_method :current_active_admin_user?
49
+
50
+ def active_admin_config
51
+ self.class.active_admin_config
52
+ end
53
+ helper_method :active_admin_config
54
+
55
+ def active_admin_namespace
56
+ active_admin_config.namespace
57
+ end
58
+ helper_method :active_admin_namespace
59
+
60
+ end
61
+ end
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedResources::Base
2
+ class BaseController < ::InheritedResources::Base
3
3
  module Menu
4
4
  extend ActiveSupport::Concern
5
5
 
@@ -2,25 +2,23 @@ module ActiveAdmin
2
2
  module Callbacks
3
3
  extend ActiveSupport::Concern
4
4
 
5
- module InstanceMethods
6
- protected
5
+ protected
7
6
 
8
- # Simple callback system. Implements before and after callbacks for
9
- # use within the controllers.
10
- #
11
- # We didn't use the ActiveSupport callbacks becuase they do not support
12
- # passing in any arbitrary object into the callback method (which we
13
- # need to do)
14
-
15
- def call_callback_with(method, *args)
16
- case method
17
- when Symbol
18
- send(method, *args)
19
- when Proc
20
- instance_exec(*args, &method)
21
- else
22
- raise "Please register with callbacks using a symbol or a block/proc."
23
- end
7
+ # Simple callback system. Implements before and after callbacks for
8
+ # use within the controllers.
9
+ #
10
+ # We didn't use the ActiveSupport callbacks becuase they do not support
11
+ # passing in any arbitrary object into the callback method (which we
12
+ # need to do)
13
+
14
+ def call_callback_with(method, *args)
15
+ case method
16
+ when Symbol
17
+ send(method, *args)
18
+ when Proc
19
+ instance_exec(*args, &method)
20
+ else
21
+ raise "Please register with callbacks using a symbol or a block/proc."
24
22
  end
25
23
  end
26
24
 
@@ -1,4 +1,3 @@
1
- require 'active_admin/comments/configuration'
2
1
  require 'active_admin/comments/comment'
3
2
  require 'active_admin/comments/views'
4
3
  require 'active_admin/comments/show_page_helper'
@@ -6,7 +5,7 @@ require 'active_admin/comments/namespace_helper'
6
5
  require 'active_admin/comments/resource_helper'
7
6
 
8
7
  # Add the comments configuration
9
- ActiveAdmin::Application.send :include, ActiveAdmin::Comments::Configuration
8
+ ActiveAdmin::Application.inheritable_setting :allow_comments, true
10
9
 
11
10
  # Add the comments module to ActiveAdmin::Namespace
12
11
  ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
@@ -18,71 +17,66 @@ ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
18
17
  ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
19
18
 
20
19
  # Generate a Comment resource when namespaces are registered
21
- ActiveAdmin::Event.subscribe ActiveAdmin::Namespace::RegisterEvent do |namespace|
22
- if namespace.comments?
23
- namespace.register ActiveAdmin::Comment, :as => 'Comment' do
24
- actions :index, :show, :create
20
+ ActiveAdmin::Event.subscribe ActiveAdmin::Application::LoadEvent do |app|
21
+ app.namespaces.values.each do |namespace|
22
+ if namespace.comments?
23
+ namespace.register ActiveAdmin::Comment, :as => 'Comment' do
24
+ actions :index, :show, :create
25
25
 
26
- # Don't display in the menu
27
- menu false
26
+ # Don't display in the menu
27
+ menu false
28
28
 
29
- # Don't allow comments on comments
30
- config.comments = false
29
+ # Don't allow comments on comments
30
+ config.comments = false
31
31
 
32
- # Filter Comments by date
33
- filter :resource_type
34
- filter :body
35
- filter :created_at
32
+ # Filter Comments by date
33
+ filter :resource_type
34
+ filter :body
35
+ filter :created_at
36
36
 
37
- # Only view comments in this namespace
38
- scope :all, :default => true do |comments|
39
- comments.where(:namespace => active_admin_config.namespace.name.to_s)
40
- end
37
+ # Only view comments in this namespace
38
+ scope :all, :default => true do |comments|
39
+ comments.where(:namespace => active_admin_config.namespace.name.to_s)
40
+ end
41
41
 
42
- # Always redirect to the resource on show
43
- before_filter :only => :show do
44
- flash[:notice] = flash[:notice].dup if flash[:notice]
45
- comment = ActiveAdmin::Comment.find(params[:id])
46
- resource_config = active_admin_config.namespace.resource_for(comment.resource.class)
47
- redirect_to send(resource_config.route_instance_path, comment.resource)
48
- end
42
+ # Always redirect to the resource on show
43
+ before_filter :only => :show do
44
+ flash[:notice] = flash[:notice].dup if flash[:notice]
45
+ comment = ActiveAdmin::Comment.find(params[:id])
46
+ resource_config = active_admin_config.namespace.resource_for(comment.resource.class)
47
+ redirect_to send(resource_config.route_instance_path, comment.resource)
48
+ end
49
49
 
50
- # Store the author and namespace
51
- before_save do |comment|
52
- comment.namespace = active_admin_config.namespace.name
53
- comment.author = current_active_admin_user
54
- end
50
+ # Store the author and namespace
51
+ before_save do |comment|
52
+ comment.namespace = active_admin_config.namespace.name
53
+ comment.author = current_active_admin_user
54
+ end
55
55
 
56
- # Redirect to the resource show page when failing to add a comment
57
- # TODO: Provide helpers to make such kind of customization much simpler
58
- controller do
59
- def create
60
- create! do |success, failure|
61
- failure.html do
62
- resource_config = active_admin_config.namespace.resource_for(@comment.resource.class)
63
- flash[:error] = "Comment wasn't saved, text was empty."
64
- redirect_to send(resource_config.route_instance_path, @comment.resource)
56
+ # Redirect to the resource show page when failing to add a comment
57
+ # TODO: Provide helpers to make such kind of customization much simpler
58
+ controller do
59
+ def create
60
+ create! do |success, failure|
61
+ failure.html do
62
+ resource_config = active_admin_config.namespace.resource_for(@comment.resource.class)
63
+ flash[:error] = "Comment wasn't saved, text was empty."
64
+ redirect_to send(resource_config.route_instance_path, @comment.resource)
65
+ end
65
66
  end
66
67
  end
67
68
  end
68
- end
69
-
70
69
 
71
- # Display as a table
72
- index do
73
- column("Resource"){|comment| auto_link(comment.resource) }
74
- column("Author"){|comment| auto_link(comment.author) }
75
- column :body
70
+ # Display as a table
71
+ index do
72
+ column("Resource"){|comment| auto_link(comment.resource) }
73
+ column("Author"){|comment| auto_link(comment.author) }
74
+ column :body
75
+ end
76
76
  end
77
77
  end
78
78
  end
79
79
  end
80
80
 
81
- # Register for comments when new resources are registered
82
- ActiveAdmin::Event.subscribe ActiveAdmin::Resource::RegisterEvent do |resource|
83
- if resource.comments?
84
- resource.resource.has_many :active_admin_comments, :class_name => "ActiveAdmin::Comment",
85
- :as => :resource,
86
- :dependent => :destroy
87
- end
88
- end
81
+ # @deprecated #allow_comments_on - Remove in 0.5.0
82
+ ActiveAdmin::Application.deprecated_setting :allow_comments_in, [], 'The "allow_comments_in = []" setting is deprecated and will be remove by Active Admin 0.5.0. Please use "allow_comments = true|false" instead.'