activeadmin 0.2.2 → 0.3.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 (277) hide show
  1. data/.gitignore +34 -0
  2. data/.travis.yml +4 -0
  3. data/.yardopts +8 -0
  4. data/CHANGELOG.md +177 -0
  5. data/Gemfile +21 -32
  6. data/Guardfile +8 -0
  7. data/README.rdoc +75 -14
  8. data/Rakefile +7 -100
  9. data/activeadmin.gemspec +21 -353
  10. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/admin_notes_icon.png +0 -0
  11. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  12. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  16. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/loading.gif +0 -0
  17. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow.gif +0 -0
  18. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow_dark.gif +0 -0
  19. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/orderable.png +0 -0
  20. data/app/assets/javascripts/active_admin/base.js +12 -0
  21. data/{lib/generators/active_admin/install/templates/active_admin_vendor.js → app/assets/javascripts/active_admin/vendor.js} +0 -0
  22. data/{lib/active_admin/stylesheets/active_admin.scss → app/assets/stylesheets/active_admin/_base.css.scss} +58 -82
  23. data/{lib/active_admin/stylesheets/active_admin/_forms.scss → app/assets/stylesheets/active_admin/_forms.css.scss} +94 -5
  24. data/{lib/active_admin/stylesheets/active_admin/_header.scss → app/assets/stylesheets/active_admin/_header.css.scss} +13 -11
  25. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  26. data/{lib/active_admin/stylesheets/active_admin/_typography.scss → app/assets/stylesheets/active_admin/_typography.css.scss} +0 -0
  27. data/{lib/active_admin/stylesheets/active_admin/_comments.scss → app/assets/stylesheets/active_admin/components/_comments.css.scss} +0 -0
  28. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  29. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
  30. data/{lib/active_admin/stylesheets/active_admin/mixins/_all.scss → app/assets/stylesheets/active_admin/mixins/_all.css.scss} +0 -0
  31. data/{lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss → app/assets/stylesheets/active_admin/mixins/_buttons.css.scss} +0 -0
  32. data/{lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss → app/assets/stylesheets/active_admin/mixins/_gradients.css.scss} +8 -0
  33. data/{lib/active_admin/stylesheets/active_admin/mixins/_icons.scss → app/assets/stylesheets/active_admin/mixins/_icons.css.scss} +0 -0
  34. data/{lib/active_admin/stylesheets/active_admin/mixins/_reset.scss → app/assets/stylesheets/active_admin/mixins/_reset.css.scss} +0 -0
  35. data/{lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss → app/assets/stylesheets/active_admin/mixins/_rounded.css.scss} +0 -0
  36. data/{lib/active_admin/stylesheets/active_admin/mixins/_sections.scss → app/assets/stylesheets/active_admin/mixins/_sections.css.scss} +9 -2
  37. data/{lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss → app/assets/stylesheets/active_admin/mixins/_shadows.css.scss} +1 -1
  38. data/{lib/active_admin/stylesheets/active_admin/mixins/_variables.scss → app/assets/stylesheets/active_admin/mixins/_variables.css.scss} +12 -3
  39. data/{lib/active_admin/views/templates/active_admin_dashboard → app/views/active_admin/dashboard}/index.html.arb +0 -0
  40. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/reset_password_instructions.html.erb +0 -0
  41. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/unlock_instructions.html.erb +0 -0
  42. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/edit.html.erb +0 -0
  43. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/new.html.erb +0 -0
  44. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/sessions/new.html.erb +1 -1
  45. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/shared/_links.erb +0 -0
  46. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/unlocks/new.html.erb +0 -0
  47. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/edit.html.arb +0 -0
  48. data/app/views/active_admin/resource/index.csv.erb +20 -0
  49. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/index.html.arb +0 -0
  50. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/new.html.arb +0 -0
  51. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/show.html.arb +0 -0
  52. data/app/views/layouts/active_admin.html.arb +1 -0
  53. data/{lib/active_admin/views/templates → app/views}/layouts/active_admin_logged_out.html.erb +8 -4
  54. data/docs/0-installation.md +50 -0
  55. data/docs/1-general-configuration.md +43 -0
  56. data/docs/2-resource-customization.md +35 -0
  57. data/docs/3-index-pages.md +55 -0
  58. data/docs/3-index-pages/index-as-block.md +16 -0
  59. data/docs/3-index-pages/index-as-blog.md +61 -0
  60. data/docs/3-index-pages/index-as-grid.md +21 -0
  61. data/docs/3-index-pages/index-as-table.md +90 -0
  62. data/docs/4-csv-format.md +14 -0
  63. data/docs/5-forms.md +39 -0
  64. data/docs/6-show-screens.md +22 -0
  65. data/docs/7-sidebars.md +35 -0
  66. data/docs/8-custom-actions.md +123 -0
  67. data/features/comments/commenting.feature +31 -4
  68. data/features/edit_page.feature +30 -1
  69. data/features/index/filters.feature +35 -0
  70. data/features/index/format_as_csv.feature +46 -0
  71. data/features/index/formats.feature +2 -0
  72. data/features/index/index_as_block.feature +1 -1
  73. data/features/index/index_as_grid.feature +1 -1
  74. data/features/index/index_as_table.feature +2 -0
  75. data/features/index/index_blank_slate.feature +56 -0
  76. data/features/index/pagination.feature +0 -6
  77. data/features/registering_assets.feature +2 -2
  78. data/features/sidebar_sections.feature +7 -8
  79. data/features/specifying_actions.feature +72 -1
  80. data/features/step_definitions/action_item_steps.rb +2 -2
  81. data/features/step_definitions/additional_web_steps.rb +26 -16
  82. data/features/step_definitions/attribute_steps.rb +5 -7
  83. data/features/step_definitions/configuration_steps.rb +9 -9
  84. data/features/step_definitions/factory_steps.rb +4 -3
  85. data/features/step_definitions/format_steps.rb +29 -1
  86. data/features/step_definitions/layout_steps.rb +3 -0
  87. data/features/step_definitions/menu_steps.rb +2 -2
  88. data/features/step_definitions/sidebar_steps.rb +1 -5
  89. data/features/step_definitions/user_steps.rb +8 -2
  90. data/features/step_definitions/web_steps.rb +82 -90
  91. data/features/sti_resource.feature +12 -0
  92. data/features/support/env.rb +12 -10
  93. data/features/support/paths.rb +2 -0
  94. data/features/support/selectors.rb +45 -0
  95. data/lib/active_admin.rb +33 -263
  96. data/lib/active_admin/application.rb +228 -0
  97. data/lib/active_admin/arbre.rb +10 -10
  98. data/lib/active_admin/arbre/{html.rb → builder.rb} +29 -2
  99. data/lib/active_admin/arbre/context.rb +8 -0
  100. data/lib/active_admin/arbre/{attributes.rb → html/attributes.rb} +0 -0
  101. data/lib/active_admin/arbre/{class_list.rb → html/class_list.rb} +0 -0
  102. data/lib/active_admin/arbre/{collection.rb → html/collection.rb} +0 -0
  103. data/lib/active_admin/arbre/{document.rb → html/document.rb} +0 -0
  104. data/lib/active_admin/arbre/{element.rb → html/element.rb} +6 -6
  105. data/lib/active_admin/arbre/{html5_elements.rb → html/html5_elements.rb} +0 -0
  106. data/lib/active_admin/arbre/{tag.rb → html/tag.rb} +0 -0
  107. data/lib/active_admin/arbre/{text_node.rb → html/text_node.rb} +0 -0
  108. data/lib/active_admin/asset_registration.rb +1 -1
  109. data/lib/active_admin/callbacks.rb +5 -3
  110. data/lib/active_admin/comments.rb +3 -3
  111. data/lib/active_admin/comments/comment.rb +6 -0
  112. data/lib/active_admin/comments/configuration.rb +8 -6
  113. data/lib/active_admin/comments/namespace_helper.rb +1 -1
  114. data/lib/active_admin/comments/views/active_admin_comments.rb +1 -1
  115. data/lib/active_admin/csv_builder.rb +45 -0
  116. data/lib/active_admin/dashboards.rb +1 -1
  117. data/lib/active_admin/dashboards/dashboard_controller.rb +3 -10
  118. data/lib/active_admin/dependency_checker.rb +28 -0
  119. data/lib/active_admin/deprecation.rb +36 -0
  120. data/lib/active_admin/devise.rb +14 -3
  121. data/lib/active_admin/dsl.rb +26 -4
  122. data/lib/active_admin/engine.rb +4 -0
  123. data/lib/active_admin/form_builder.rb +18 -9
  124. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  125. data/lib/active_admin/helpers/settings.rb +70 -0
  126. data/lib/active_admin/locales/cs.yml +34 -0
  127. data/lib/active_admin/locales/da.yml +28 -0
  128. data/lib/active_admin/locales/en.yml +40 -0
  129. data/lib/active_admin/locales/es.yml +40 -0
  130. data/lib/active_admin/locales/fr.yml +40 -0
  131. data/lib/active_admin/locales/it.yml +39 -0
  132. data/lib/active_admin/locales/pl.yml +34 -0
  133. data/lib/active_admin/locales/pt-BR.yml +41 -0
  134. data/lib/active_admin/locales/ru.yml +40 -0
  135. data/lib/active_admin/locales/zh_cn.yml +40 -0
  136. data/lib/active_admin/menu_item.rb +6 -0
  137. data/lib/active_admin/namespace.rb +14 -5
  138. data/lib/active_admin/reloader.rb +30 -0
  139. data/lib/active_admin/renderer.rb +1 -1
  140. data/lib/active_admin/resource.rb +45 -88
  141. data/lib/active_admin/resource/action_items.rb +88 -0
  142. data/lib/active_admin/resource/menu.rb +45 -0
  143. data/lib/active_admin/resource/naming.rb +46 -0
  144. data/lib/active_admin/resource/scopes.rb +33 -0
  145. data/lib/active_admin/resource/sidebars.rb +36 -0
  146. data/lib/active_admin/resource_controller.rb +32 -37
  147. data/lib/active_admin/resource_controller/action_builder.rb +1 -1
  148. data/lib/active_admin/resource_controller/actions.rb +66 -40
  149. data/lib/active_admin/resource_controller/callbacks.rb +1 -1
  150. data/lib/active_admin/resource_controller/collection.rb +9 -14
  151. data/lib/active_admin/resource_controller/filters.rb +1 -1
  152. data/lib/active_admin/resource_controller/form.rb +1 -1
  153. data/lib/active_admin/resource_controller/menu.rb +1 -1
  154. data/lib/active_admin/resource_controller/page_configurations.rb +2 -2
  155. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  156. data/lib/active_admin/resource_controller/sidebars.rb +1 -21
  157. data/lib/active_admin/router.rb +85 -0
  158. data/lib/active_admin/sass/active_admin.scss +3 -0
  159. data/lib/active_admin/sass/css_loader.rb +16 -0
  160. data/lib/active_admin/sass/helpers.rb +45 -0
  161. data/lib/active_admin/scope.rb +16 -2
  162. data/lib/active_admin/sidebar_section.rb +41 -0
  163. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  164. data/lib/active_admin/version.rb +1 -1
  165. data/lib/active_admin/view_factory.rb +5 -3
  166. data/lib/active_admin/view_helpers.rb +1 -2
  167. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  168. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  169. data/lib/active_admin/view_helpers/display_helper.rb +1 -1
  170. data/lib/active_admin/view_helpers/filter_form_helper.rb +26 -14
  171. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  172. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
  173. data/lib/active_admin/views/components/attributes_table.rb +2 -2
  174. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  175. data/lib/active_admin/views/components/columns.rb +1 -3
  176. data/lib/active_admin/views/components/paginated_collection.rb +26 -8
  177. data/lib/active_admin/views/components/scopes.rb +13 -8
  178. data/lib/active_admin/views/components/sidebar_section.rb +1 -3
  179. data/lib/active_admin/views/components/status_tag.rb +55 -0
  180. data/lib/active_admin/views/components/table_for.rb +25 -6
  181. data/lib/active_admin/views/header_renderer.rb +20 -4
  182. data/lib/active_admin/views/index_as_block.rb +12 -7
  183. data/lib/active_admin/views/index_as_blog.rb +61 -21
  184. data/lib/active_admin/views/index_as_grid.rb +22 -1
  185. data/lib/active_admin/views/index_as_table.rb +97 -6
  186. data/lib/active_admin/views/pages/base.rb +20 -9
  187. data/lib/active_admin/views/pages/dashboard.rb +7 -4
  188. data/lib/active_admin/views/pages/edit.rb +3 -2
  189. data/lib/active_admin/views/pages/index.rb +30 -5
  190. data/lib/active_admin/views/pages/layout.rb +26 -0
  191. data/lib/active_admin/views/pages/new.rb +3 -2
  192. data/lib/active_admin/views/pages/show.rb +1 -1
  193. data/lib/active_admin/views/tabbed_navigation.rb +94 -0
  194. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  195. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  196. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  197. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  198. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  199. data/lib/generators/active_admin/install/install_generator.rb +2 -4
  200. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +26 -4
  201. data/lib/generators/active_admin/install/templates/dashboards.rb +4 -2
  202. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +2 -2
  203. data/script/local +44 -0
  204. data/script/use_rails +46 -0
  205. data/spec/integration/belongs_to_spec.rb +1 -1
  206. data/spec/integration/default_namespace.rb +77 -0
  207. data/spec/integration/javascript_spec.rb +20 -0
  208. data/spec/integration/stylesheets_spec.rb +41 -0
  209. data/spec/spec_helper.rb +21 -11
  210. data/spec/support/detect_rails_version.rb +10 -0
  211. data/spec/support/integration_example_group.rb +1 -1
  212. data/spec/support/jslint.yml +80 -0
  213. data/spec/support/rails_template.rb +1 -1
  214. data/spec/support/rails_template_with_data.rb +2 -1
  215. data/spec/support/templates/cucumber.rb +0 -4
  216. data/spec/unit/active_admin_spec.rb +8 -44
  217. data/spec/unit/application_spec.rb +78 -0
  218. data/spec/unit/arbre/context_spec.rb +22 -0
  219. data/spec/unit/arbre/html/element_finder_methods_spec.rb +2 -2
  220. data/spec/unit/arbre/html/element_spec.rb +2 -3
  221. data/spec/unit/arbre/html/tag_attributes_spec.rb +2 -2
  222. data/spec/unit/arbre/html/tag_spec.rb +2 -2
  223. data/spec/unit/arbre/html_spec.rb +2 -3
  224. data/spec/unit/auto_link_spec.rb +2 -1
  225. data/spec/unit/belongs_to_spec.rb +2 -1
  226. data/spec/unit/comments_spec.rb +43 -39
  227. data/spec/unit/controller_filters_spec.rb +11 -3
  228. data/spec/unit/csv_builder_spec.rb +83 -0
  229. data/spec/unit/devise_spec.rb +66 -0
  230. data/spec/unit/display_name_spec.rb +2 -2
  231. data/spec/unit/filter_form_builder_spec.rb +6 -3
  232. data/spec/unit/form_builder_spec.rb +20 -2
  233. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  234. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  235. data/spec/unit/helpers/settings_spec.rb +30 -0
  236. data/spec/unit/menu_item_spec.rb +6 -0
  237. data/spec/unit/namespace_spec.rb +68 -19
  238. data/spec/unit/rails_spec.rb +43 -0
  239. data/spec/unit/registration_spec.rb +18 -27
  240. data/spec/unit/reloader_spec.rb +28 -0
  241. data/spec/unit/resource/action_items_spec.rb +62 -0
  242. data/spec/unit/resource/menu_spec.rb +80 -0
  243. data/spec/unit/resource/naming_spec.rb +64 -0
  244. data/spec/unit/resource/scopes_spec.rb +30 -0
  245. data/spec/unit/resource/sidebars_spec.rb +50 -0
  246. data/spec/unit/resource_controller/collection_spec.rb +1 -1
  247. data/spec/unit/resource_controller_spec.rb +29 -24
  248. data/spec/unit/resource_spec.rb +78 -94
  249. data/spec/unit/sass/helpers_spec.rb +47 -0
  250. data/spec/unit/scope_spec.rb +11 -1
  251. data/spec/unit/view_factory_spec.rb +4 -1
  252. data/spec/unit/{components → views/components}/attributes_table_spec.rb +2 -2
  253. data/spec/unit/views/components/blank_slate_spec.rb +15 -0
  254. data/spec/unit/{components → views/components}/columns_spec.rb +2 -2
  255. data/spec/unit/{components → views/components}/panel_spec.rb +1 -3
  256. data/spec/unit/{components → views/components}/sidebar_section_spec.rb +3 -3
  257. data/spec/unit/views/components/status_tag_spec.rb +79 -0
  258. data/spec/unit/{components → views/components}/table_for_spec.rb +2 -1
  259. data/spec/unit/views/pages/layout_spec.rb +22 -0
  260. data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
  261. data/tasks/docs.rake +39 -0
  262. data/tasks/test.rake +55 -0
  263. data/tasks/yard.rake +6 -0
  264. metadata +310 -189
  265. data/CHANGELOG.rdoc +0 -76
  266. data/lib/active_admin/action_items.rb +0 -37
  267. data/lib/active_admin/sidebar.rb +0 -39
  268. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +0 -13
  269. data/lib/active_admin/view_helpers/status_tag_helper.rb +0 -13
  270. data/lib/active_admin/view_helpers/table_helper.rb +0 -12
  271. data/lib/active_admin/views/tabs_renderer.rb +0 -52
  272. data/lib/active_admin/views/templates/active_admin_default/index.csv.erb +0 -2
  273. data/lib/active_admin/views/templates/layouts/active_admin.html.erb +0 -39
  274. data/lib/generators/active_admin/install/templates/active_admin.js +0 -51
  275. data/spec/controllers/index_as_csv_spec.rb +0 -35
  276. data/spec/unit/action_items_spec.rb +0 -27
  277. data/spec/unit/tabs_renderer_spec.rb +0 -56
@@ -2,13 +2,15 @@ module ActiveAdmin
2
2
  module Comments
3
3
 
4
4
  module Configuration
5
+ extend ActiveSupport::Concern
5
6
 
6
- # Set the namespaces that can create and view comments
7
- #
8
- # config.allow_comments_in = [:admin, :root]
9
- #
10
- @@allow_comments_in = [ActiveAdmin.default_namespace]
11
- mattr_accessor :allow_comments_in
7
+ included do
8
+ # Set the namespaces that can create and view comments
9
+ #
10
+ # config.allow_comments_in = [:admin, :root]
11
+ #
12
+ setting :allow_comments_in, [:admin]
13
+ end
12
14
 
13
15
  end
14
16
 
@@ -5,7 +5,7 @@ module ActiveAdmin
5
5
 
6
6
  # Returns true of the namespace allows comments
7
7
  def comments?
8
- ActiveAdmin.allow_comments_in && ActiveAdmin.allow_comments_in.include?(name)
8
+ application.allow_comments_in && application.allow_comments_in.include?(name)
9
9
  end
10
10
 
11
11
  end
@@ -21,7 +21,7 @@ module ActiveAdmin
21
21
  end
22
22
 
23
23
  def record_comments
24
- @record_comments ||= @record.active_admin_comments.where(:namespace => active_admin_namespace.name)
24
+ @record_comments ||= @record.active_admin_comments.where(:namespace => active_admin_namespace.name.to_s)
25
25
  end
26
26
 
27
27
  def build_comments
@@ -0,0 +1,45 @@
1
+ module ActiveAdmin
2
+ # CSVBuilder stores CSV configuration
3
+ #
4
+ # Usage example:
5
+ #
6
+ # csv_builder = CSVBuilder.new
7
+ # csv_builder.column :id
8
+ # csv_builder.column("Name") { |resource| resource.full_name }
9
+ #
10
+ class CSVBuilder
11
+
12
+ # Return a default CSVBuilder for a resource
13
+ # The CSVBuilder's columns would be Id followed by this
14
+ # resource's content columns
15
+ def self.default_for_resource(resource)
16
+ new.tap do |csv_builder|
17
+ csv_builder.column(:id)
18
+ resource.content_columns.each do |content_column|
19
+ csv_builder.column(content_column.name.to_sym)
20
+ end
21
+ end
22
+ end
23
+
24
+ attr_reader :columns
25
+
26
+ def initialize(&block)
27
+ @columns = []
28
+ instance_eval &block if block_given?
29
+ end
30
+
31
+ # Add a column
32
+ def column(name, &block)
33
+ @columns << Column.new(name, block)
34
+ end
35
+
36
+ class Column
37
+ attr_reader :name, :data
38
+
39
+ def initialize(name, block = nil)
40
+ @name = name.is_a?(Symbol) ? name.to_s.titleize : name
41
+ @data = block || name.to_sym
42
+ end
43
+ end
44
+ end
45
+ end
@@ -27,7 +27,7 @@ module ActiveAdmin
27
27
  # Add a new dashboard section to a namespace. If no namespace is given
28
28
  # it will be added to the default namespace.
29
29
  def add_section(name, options = {}, &block)
30
- namespace = options.delete(:namespace) || ActiveAdmin.default_namespace
30
+ namespace = options.delete(:namespace) || ActiveAdmin.application.default_namespace || :root
31
31
  self.sections[namespace] ||= []
32
32
  self.sections[namespace] << Section.new(namespace, name, options, &block)
33
33
  self.sections[namespace].sort!
@@ -2,24 +2,17 @@ module ActiveAdmin
2
2
  module Dashboards
3
3
  class DashboardController < ResourceController
4
4
 
5
- before_filter :skip_sidebar!
6
-
7
5
  actions :index
8
6
 
9
- # Render from here if not overriden
10
- self.default_views = 'active_admin_dashboard'
11
-
12
- clear_action_items!
13
-
14
7
  def index
15
8
  @dashboard_sections = find_sections
16
- render_or_default 'index'
9
+ render 'active_admin/dashboard/index.html.arb'
17
10
  end
18
11
 
19
12
  protected
20
13
 
21
14
  def set_current_tab
22
- @current_tab = "Dashboard"
15
+ @current_tab = I18n.t("active_admin.dashboard")
23
16
  end
24
17
 
25
18
  def find_sections
@@ -37,7 +30,7 @@ module ActiveAdmin
37
30
 
38
31
  # Return the current menu for the view. This is a helper method
39
32
  def current_menu
40
- ActiveAdmin.namespaces[namespace].menu
33
+ ActiveAdmin.application.namespaces[namespace].menu
41
34
  end
42
35
 
43
36
  end
@@ -0,0 +1,28 @@
1
+ require 'rails/version'
2
+
3
+ module ActiveAdmin
4
+ module DependencyChecker
5
+ class << self
6
+ def check!
7
+ if rails_3_1?
8
+ unless meta_search_1_1? && sass_rails_3_1?
9
+ warn "ActiveAdmin requires meta_search >= 1.1.0.pre and sass-rails ~> 3.1.0.rc to work with rails >= 3.1.0"
10
+ end
11
+ end
12
+ end
13
+
14
+ def rails_3_1?
15
+ Rails::VERSION::MAJOR == 3 && Rails::VERSION::MINOR >= 1
16
+ end
17
+
18
+ def meta_search_1_1?
19
+ Gem.loaded_specs['meta_search'].version.to_s >= "1.1"
20
+ end
21
+
22
+ def sass_rails_3_1?
23
+ require 'sass/rails/version'
24
+ Sass::Rails::VERSION >= "3.1"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,36 @@
1
+ module ActiveAdmin
2
+ module Deprecation
3
+ extend self
4
+
5
+ def warn(message, callstack = caller)
6
+ ActiveSupport::Deprecation.warn "Active Admin: #{message}", callstack
7
+ end
8
+
9
+ # Deprecate a method.
10
+ #
11
+ # @param [Module] klass the Class or Module to deprecate the method on
12
+ # @param [Symbol] method the method to deprecate
13
+ # @param [String] message the message to display to the end user
14
+ #
15
+ # Example:
16
+ #
17
+ # class MyClass
18
+ # def my_method
19
+ # # ...
20
+ # end
21
+ # ActiveAdmin::Deprecation.deprecate self, :my_method,
22
+ # "MyClass#my_method is being removed in the next release"
23
+ # end
24
+ #
25
+ def deprecate(klass, method, message)
26
+ klass.class_eval <<-EOC, __FILE__, __LINE__
27
+ alias_method :"deprecated_#{method}", :#{method}
28
+ def #{method}(*args)
29
+ ActiveAdmin::Deprecation.warn('#{message}', caller)
30
+ send(:deprecated_#{method}, *args)
31
+ end
32
+ EOC
33
+ end
34
+
35
+ end
36
+ end
@@ -4,11 +4,18 @@ module ActiveAdmin
4
4
  module Devise
5
5
 
6
6
  def self.config
7
- {
8
- :path => ActiveAdmin.default_namespace,
7
+ config = {
8
+ :path => ActiveAdmin.application.default_namespace,
9
9
  :controllers => ActiveAdmin::Devise.controllers,
10
10
  :path_names => { :sign_in => 'login', :sign_out => "logout" }
11
11
  }
12
+
13
+ if ::Devise.respond_to?(:sign_out_via)
14
+ logout_methods = [::Devise.sign_out_via, ActiveAdmin.application.logout_link_method].flatten.uniq
15
+ config.merge!( :sign_out_via => logout_methods)
16
+ end
17
+
18
+ config
12
19
  end
13
20
 
14
21
  def self.controllers
@@ -27,7 +34,11 @@ module ActiveAdmin
27
34
 
28
35
  # Redirect to the default namespace on logout
29
36
  def root_path
30
- "/#{ActiveAdmin.default_namespace}"
37
+ if ActiveAdmin.application.default_namespace
38
+ "/#{ActiveAdmin.application.default_namespace}"
39
+ else
40
+ "/"
41
+ end
31
42
  end
32
43
  end
33
44
 
@@ -94,8 +94,15 @@ module ActiveAdmin
94
94
  config.scope(*args, &block)
95
95
  end
96
96
 
97
+ # Add a new action item to the resource
98
+ #
99
+ # @param [Hash] options valid keys include:
100
+ # :only: A single or array of controller actions to display
101
+ # this action item on.
102
+ # :except: A single or array of controller actions not to
103
+ # display this action item on.
97
104
  def action_item(options = {}, &block)
98
- controller.action_item(options, &block)
105
+ config.add_action_item(options, &block)
99
106
  end
100
107
 
101
108
  # Configure the index page for the resource
@@ -115,6 +122,23 @@ module ActiveAdmin
115
122
  controller.form_config = options
116
123
  end
117
124
 
125
+ def sidebar(name, options = {}, &block)
126
+ config.sidebar_sections << ActiveAdmin::SidebarSection.new(name, options, &block)
127
+ end
128
+
129
+ # Configure the CSV format
130
+ #
131
+ # For example:
132
+ #
133
+ # csv do
134
+ # column :name
135
+ # column("Author") { |post| post.author.full_name }
136
+ # end
137
+ #
138
+ def csv(&block)
139
+ config.csv_builder = CSVBuilder.new(&block)
140
+ end
141
+
118
142
  # Member Actions give you the functionality of defining both the
119
143
  # action and the route directly from your ActiveAdmin registration
120
144
  # block.
@@ -181,11 +205,9 @@ module ActiveAdmin
181
205
  # Filters
182
206
  delegate :filter, :to => :controller
183
207
 
184
- # Sidebar
185
- delegate :sidebar, :to => :controller
186
208
 
187
209
  # Standard rails filters
188
- delegate :before_filter, :after_filter, :around_filter, :to => :controller
210
+ delegate :before_filter, :skip_before_filter, :after_filter, :around_filter, :to => :controller
189
211
 
190
212
  # Specify which actions to create in the controller
191
213
  #
@@ -0,0 +1,4 @@
1
+ module ActiveAdmin
2
+ class Engine < Rails::Engine
3
+ end
4
+ end
@@ -4,7 +4,7 @@ module ActiveAdmin
4
4
  class FormBuilder < ::Formtastic::SemanticFormBuilder
5
5
 
6
6
  attr_reader :form_buffers
7
-
7
+
8
8
  def initialize(*args)
9
9
  @form_buffers = ["".html_safe]
10
10
  super
@@ -20,7 +20,9 @@ module ActiveAdmin
20
20
  # The input method returns a properly formatted string for
21
21
  # its contents, so we want to skip the internal buffering
22
22
  # while building up its contents
23
- def input(*args)
23
+ def input(method, *args)
24
+ return if polymorphic_belongs_to_association?(method)
25
+
24
26
  content = with_new_form_buffer { super }
25
27
  return content.html_safe unless @inputs_with_block
26
28
  form_buffers.last << content.html_safe
@@ -38,18 +40,18 @@ module ActiveAdmin
38
40
  content = with_new_form_buffer{ super }
39
41
  form_buffers.last << content.html_safe
40
42
  end
41
-
43
+
42
44
  def cancel_link(url = nil, html_options = {}, li_attributes = {})
43
45
  li_attributes[:class] ||= "cancel"
44
46
  url ||= {:action => "index"}
45
- template.content_tag(:li, (template.link_to "Cancel", url, html_options), li_attributes)
47
+ template.content_tag(:li, (template.link_to I18n.t('active_admin.cancel'), url, html_options), li_attributes)
46
48
  end
47
-
49
+
48
50
  def commit_button_with_cancel_link
49
51
  content = commit_button
50
52
  content << cancel_link
51
53
  end
52
-
54
+
53
55
  def datepicker_input(method, options)
54
56
  options = options.dup
55
57
  options[:input_html] ||= {}
@@ -67,7 +69,7 @@ module ActiveAdmin
67
69
  form_block = proc do |has_many_form|
68
70
  block.call(has_many_form) + if has_many_form.object.new_record?
69
71
  template.content_tag :li do
70
- template.link_to "Delete", "#", :onclick => "$(this).closest('.has_many_fields').remove(); return false;", :class => "button"
72
+ template.link_to I18n.t('active_admin.has_many_delete'), "#", :onclick => "$(this).closest('.has_many_fields').remove(); return false;", :class => "button"
71
73
  end
72
74
  else
73
75
  end
@@ -88,7 +90,7 @@ module ActiveAdmin
88
90
  end
89
91
 
90
92
  js = template.escape_javascript(js)
91
- js = template.link_to "Add New #{association.to_s.singularize.titlecase}", "#", :onclick => "$(this).before('#{js}'.replace(/NEW_RECORD/g, new Date().getTime())); return false;", :class => "button"
93
+ js = template.link_to I18n.t('active_admin.has_many_new', :model => association.to_s.singularize.titlecase), "#", :onclick => "$(this).before('#{js}'.replace(/NEW_RECORD/g, new Date().getTime())); return false;", :class => "button"
92
94
 
93
95
  form_buffers.last << js.html_safe
94
96
  end
@@ -98,12 +100,19 @@ module ActiveAdmin
98
100
 
99
101
  private
100
102
 
103
+ # Pass in a method to check if it's a polymorphic association
104
+ def polymorphic_belongs_to_association?(method)
105
+ reflection = reflection_for(method)
106
+
107
+ reflection && reflection.macro == :belongs_to && reflection.options[:polymorphic]
108
+ end
109
+
101
110
  def with_new_form_buffer
102
111
  form_buffers << "".html_safe
103
112
  return_value = yield
104
113
  form_buffers.pop
105
114
  return_value
106
115
  end
107
-
116
+
108
117
  end
109
118
  end
@@ -0,0 +1,23 @@
1
+ module ActiveAdmin
2
+ module ScopeChain
3
+ # Scope an ActiveRecord::Relation chain
4
+ #
5
+ # Example:
6
+ # scope_chain(Scope.new(:published), Article)
7
+ # # => Article.published
8
+ #
9
+ # @param scope The <ActiveAdmin::Scope> we want to scope on
10
+ # @param chain The ActiveRecord::Relation chain or ActiveRecord::Base class to scope
11
+ # @return <ActiveRecord::Relation or ActiveRecord::Base> The scoped relation chain
12
+ #
13
+ def scope_chain(scope, chain)
14
+ if scope.scope_method
15
+ chain.send(scope.scope_method)
16
+ elsif scope.scope_block
17
+ instance_exec chain, &scope.scope_block
18
+ else
19
+ chain
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,70 @@
1
+ require 'active_support/concern'
2
+
3
+ module ActiveAdmin
4
+
5
+ # Adds a class method to a class to create settings with default values.
6
+ #
7
+ # Example:
8
+ #
9
+ # class Configuration
10
+ # include ActiveAdmin::Settings
11
+ #
12
+ # setting :site_title, "Default Site Title"
13
+ # end
14
+ #
15
+ # conf = Configuration.new
16
+ # conf.site_title #=> "Default Site Title"
17
+ # conf.site_title = "Override Default"
18
+ # conf.site_title #=> "Override Default"
19
+ #
20
+ module Settings
21
+ extend ActiveSupport::Concern
22
+
23
+ module InstanceMethods
24
+
25
+ def read_default_setting(name)
26
+ default_settings[name]
27
+ end
28
+
29
+ private
30
+
31
+ def default_settings
32
+ self.class.default_settings
33
+ end
34
+
35
+ end
36
+
37
+ module ClassMethods
38
+
39
+ def setting(name, default)
40
+ default_settings[name] = default
41
+ attr_accessor(name)
42
+
43
+ # Create an accessor that grabs from the defaults
44
+ # if @name has not been set yet
45
+ class_eval <<-EOC, __FILE__, __LINE__ + 1
46
+ def #{name}
47
+ if instance_variable_defined? :@#{name}
48
+ @#{name}
49
+ else
50
+ read_default_setting(:#{name})
51
+ end
52
+ end
53
+ EOC
54
+ end
55
+
56
+ def deprecated_setting(name, default, message = nil)
57
+ message = message || "The #{name} setting is deprecated and will be removed."
58
+ setting(name, default)
59
+
60
+ ActiveAdmin::Deprecation.deprecate self, name, message
61
+ ActiveAdmin::Deprecation.deprecate self, :"#{name}=", message
62
+ end
63
+
64
+ def default_settings
65
+ @default_settings ||= {}
66
+ end
67
+
68
+ end
69
+ end
70
+ end