activeadmin-rails 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (584) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +64 -0
  3. data/.github/ISSUE_TEMPLATE.md +20 -0
  4. data/.github/workflows/ci.yaml +64 -0
  5. data/.github/workflows/daily.yaml +64 -0
  6. data/.github/workflows/pages.yml +72 -0
  7. data/.gitignore +23 -0
  8. data/.mdlrc +1 -0
  9. data/.rubocop.yml +84 -0
  10. data/.simplecov +13 -0
  11. data/.yardopts +7 -0
  12. data/CHANGELOG.md +514 -0
  13. data/CODE_OF_CONDUCT.md +22 -0
  14. data/CONTRIBUTING.md +190 -0
  15. data/Gemfile +51 -0
  16. data/LICENSE +20 -0
  17. data/README.md +84 -0
  18. data/Rakefile +56 -0
  19. data/activeadmin-rails.gemspec +39 -0
  20. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  21. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  22. data/app/assets/images/active_admin/orderable.png +0 -0
  23. data/app/assets/javascripts/active_admin/base.es6 +23 -0
  24. data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
  25. data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
  26. data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
  27. data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
  28. data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
  29. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
  30. data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
  31. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
  32. data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
  33. data/app/assets/javascripts/active_admin/lib/has_many.es6 +89 -0
  34. data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
  35. data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
  36. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
  37. data/app/assets/stylesheets/active_admin/_base.scss +41 -0
  38. data/app/assets/stylesheets/active_admin/_forms.scss +338 -0
  39. data/app/assets/stylesheets/active_admin/_header.scss +156 -0
  40. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
  41. data/app/assets/stylesheets/active_admin/_typography.scss +100 -0
  42. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +6 -0
  43. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
  44. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  45. data/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
  46. data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
  47. data/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
  48. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +149 -0
  49. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +152 -0
  50. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  51. data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  52. data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
  53. data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  54. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  55. data/app/assets/stylesheets/active_admin/components/_pagination.scss +55 -0
  56. data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  57. data/app/assets/stylesheets/active_admin/components/_scopes.scss +13 -0
  58. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +17 -0
  59. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  60. data/app/assets/stylesheets/active_admin/components/_tables.scss +113 -0
  61. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  62. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  63. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -0
  64. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
  65. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
  66. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
  67. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
  68. data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
  69. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  70. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
  71. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +34 -0
  72. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  73. data/app/assets/stylesheets/active_admin/print.scss +287 -0
  74. data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
  75. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
  76. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +41 -0
  77. data/app/views/active_admin/_head.html.erb +14 -0
  78. data/app/views/active_admin/base/_action_items.html.arb +7 -0
  79. data/app/views/active_admin/base/_breadcrumbs.html.arb +8 -0
  80. data/app/views/active_admin/base/_footer.html.arb +11 -0
  81. data/app/views/active_admin/base/_header.html.arb +5 -0
  82. data/app/views/active_admin/base/_sidebar.html.arb +3 -0
  83. data/app/views/active_admin/base/_title_bar.html.arb +9 -0
  84. data/app/views/active_admin/base/_unsupported_browser.html.erb +5 -0
  85. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  86. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  87. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  88. data/app/views/active_admin/devise/passwords/edit.html.erb +18 -0
  89. data/app/views/active_admin/devise/passwords/new.html.erb +15 -0
  90. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  91. data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
  92. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  93. data/app/views/active_admin/devise/shared/_links.erb +33 -0
  94. data/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
  95. data/app/views/active_admin/page/_content.html.arb +1 -0
  96. data/app/views/active_admin/page/index.html.arb +8 -0
  97. data/app/views/active_admin/resource/_filters_form.html.erb +1 -0
  98. data/app/views/active_admin/resource/_form.html.arb +11 -0
  99. data/app/views/active_admin/resource/_index_as_table.html.arb +8 -0
  100. data/app/views/active_admin/resource/_show.html.arb +1 -0
  101. data/app/views/active_admin/resource/edit.html.arb +13 -0
  102. data/app/views/active_admin/resource/index.html.arb +101 -0
  103. data/app/views/active_admin/resource/new.html.arb +13 -0
  104. data/app/views/active_admin/resource/show.html.arb +22 -0
  105. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  106. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  107. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  108. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  109. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  110. data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  111. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  112. data/app/views/layouts/active_admin.html.erb +33 -0
  113. data/app/views/layouts/active_admin_logged_out.html.erb +39 -0
  114. data/codecov.yml +25 -0
  115. data/config/i18n-tasks.yml +26 -0
  116. data/config/locales/ar.yml +133 -0
  117. data/config/locales/bg.yml +118 -0
  118. data/config/locales/bs.yml +119 -0
  119. data/config/locales/ca.yml +104 -0
  120. data/config/locales/cs.yml +107 -0
  121. data/config/locales/da.yml +135 -0
  122. data/config/locales/de-CH.yml +99 -0
  123. data/config/locales/de.yml +142 -0
  124. data/config/locales/el.yml +124 -0
  125. data/config/locales/en-CA.yml +137 -0
  126. data/config/locales/en-GB.yml +137 -0
  127. data/config/locales/en.yml +160 -0
  128. data/config/locales/eo.yml +143 -0
  129. data/config/locales/es-MX.yml +94 -0
  130. data/config/locales/es.yml +160 -0
  131. data/config/locales/fa.yml +117 -0
  132. data/config/locales/fi.yml +110 -0
  133. data/config/locales/fr.yml +139 -0
  134. data/config/locales/he.yml +140 -0
  135. data/config/locales/hr.yml +121 -0
  136. data/config/locales/hu.yml +96 -0
  137. data/config/locales/id.yml +133 -0
  138. data/config/locales/it.yml +142 -0
  139. data/config/locales/ja.yml +139 -0
  140. data/config/locales/ko.yml +118 -0
  141. data/config/locales/lt.yml +140 -0
  142. data/config/locales/lv.yml +90 -0
  143. data/config/locales/nb.yml +128 -0
  144. data/config/locales/nl.yml +142 -0
  145. data/config/locales/pl.yml +166 -0
  146. data/config/locales/pt-BR.yml +141 -0
  147. data/config/locales/pt-PT.yml +90 -0
  148. data/config/locales/ro.yml +94 -0
  149. data/config/locales/ru.yml +139 -0
  150. data/config/locales/sk.yml +107 -0
  151. data/config/locales/sv-SE.yml +133 -0
  152. data/config/locales/tr.yml +142 -0
  153. data/config/locales/uk.yml +134 -0
  154. data/config/locales/vi.yml +132 -0
  155. data/config/locales/zh-CN.yml +141 -0
  156. data/config/locales/zh-TW.yml +133 -0
  157. data/config/mdl_style.rb +9 -0
  158. data/cucumber.yml +6 -0
  159. data/docs/0-installation.md +121 -0
  160. data/docs/1-general-configuration.md +207 -0
  161. data/docs/10-custom-pages.md +148 -0
  162. data/docs/11-decorators.md +66 -0
  163. data/docs/12-arbo-components.md +200 -0
  164. data/docs/13-authorization-adapter.md +288 -0
  165. data/docs/14-gotchas.md +141 -0
  166. data/docs/2-resource-customization.md +480 -0
  167. data/docs/3-index-pages/custom-index.md +39 -0
  168. data/docs/3-index-pages/index-as-block.md +23 -0
  169. data/docs/3-index-pages/index-as-blog.md +73 -0
  170. data/docs/3-index-pages/index-as-grid.md +31 -0
  171. data/docs/3-index-pages/index-as-table.md +259 -0
  172. data/docs/3-index-pages.md +349 -0
  173. data/docs/4-csv-format.md +86 -0
  174. data/docs/5-forms.md +233 -0
  175. data/docs/6-show-pages.md +61 -0
  176. data/docs/7-sidebars.md +63 -0
  177. data/docs/8-custom-actions.md +160 -0
  178. data/docs/9-batch-actions.md +248 -0
  179. data/docs/CNAME +1 -0
  180. data/docs/Gemfile +7 -0
  181. data/docs/README.md +24 -0
  182. data/docs/_config.yml +15 -0
  183. data/docs/_includes/nav_footer_custom.html +3 -0
  184. data/docs/documentation.md +61 -0
  185. data/docs/images/activeadmin.png +0 -0
  186. data/docs/images/divider.png +0 -0
  187. data/docs/images/features.png +0 -0
  188. data/docs/index.css +835 -0
  189. data/docs/index.html +105 -0
  190. data/features/action_item.feature +73 -0
  191. data/features/authorization.feature +64 -0
  192. data/features/authorization_cancan.feature +52 -0
  193. data/features/authorization_pundit.feature +37 -0
  194. data/features/belongs_to.feature +124 -0
  195. data/features/breadcrumb.feature +76 -0
  196. data/features/comments/commenting.feature +178 -0
  197. data/features/comments/viewing_index.feature +18 -0
  198. data/features/create_another.feature +55 -0
  199. data/features/dashboard.feature +16 -0
  200. data/features/decorators.feature +43 -0
  201. data/features/development_reloading.feature +28 -0
  202. data/features/edit_page.feature +116 -0
  203. data/features/favicon.feature +20 -0
  204. data/features/filter_attributes.feature +46 -0
  205. data/features/first_boot.feature +16 -0
  206. data/features/footer.feature +29 -0
  207. data/features/global_navigation.feature +29 -0
  208. data/features/i18n.feature +55 -0
  209. data/features/index/batch_actions.feature +218 -0
  210. data/features/index/filters.feature +251 -0
  211. data/features/index/format_as_csv.feature +273 -0
  212. data/features/index/formats.feature +88 -0
  213. data/features/index/index_as_block.feature +15 -0
  214. data/features/index/index_as_blog.feature +69 -0
  215. data/features/index/index_as_grid.feature +45 -0
  216. data/features/index/index_as_table.feature +291 -0
  217. data/features/index/index_blank_slate.feature +83 -0
  218. data/features/index/index_parameters.feature +75 -0
  219. data/features/index/index_scope_to.feature +56 -0
  220. data/features/index/index_scopes.feature +325 -0
  221. data/features/index/page_title.feature +41 -0
  222. data/features/index/pagination.feature +63 -0
  223. data/features/index/switch_index_view.feature +73 -0
  224. data/features/menu.feature +85 -0
  225. data/features/meta_tags.feature +21 -0
  226. data/features/new_page.feature +136 -0
  227. data/features/registering_assets.feature +34 -0
  228. data/features/registering_pages.feature +237 -0
  229. data/features/registering_resources.feature +33 -0
  230. data/features/renamed_resource.feature +29 -0
  231. data/features/root_to.feature +18 -0
  232. data/features/show/attributes_table_title.feature +54 -0
  233. data/features/show/columns.feature +40 -0
  234. data/features/show/default_content.feature +44 -0
  235. data/features/show/page_title.feature +58 -0
  236. data/features/show/tabs.feature +47 -0
  237. data/features/sidebar_sections.feature +210 -0
  238. data/features/site_title.feature +47 -0
  239. data/features/specifying_actions.feature +118 -0
  240. data/features/step_definitions/action_item_steps.rb +7 -0
  241. data/features/step_definitions/action_link_steps.rb +19 -0
  242. data/features/step_definitions/additional_web_steps.rb +81 -0
  243. data/features/step_definitions/asset_steps.rb +15 -0
  244. data/features/step_definitions/attribute_steps.rb +18 -0
  245. data/features/step_definitions/attributes_table_title_steps.rb +11 -0
  246. data/features/step_definitions/batch_action_steps.rb +78 -0
  247. data/features/step_definitions/blog_steps.rb +3 -0
  248. data/features/step_definitions/breadcrumb_steps.rb +13 -0
  249. data/features/step_definitions/column_steps.rb +8 -0
  250. data/features/step_definitions/comment_steps.rb +32 -0
  251. data/features/step_definitions/configuration_steps.rb +102 -0
  252. data/features/step_definitions/dashboard_steps.rb +15 -0
  253. data/features/step_definitions/factory_steps.rb +35 -0
  254. data/features/step_definitions/filter_steps.rb +57 -0
  255. data/features/step_definitions/flash_steps.rb +11 -0
  256. data/features/step_definitions/footer_steps.rb +21 -0
  257. data/features/step_definitions/format_steps.rb +60 -0
  258. data/features/step_definitions/i18n_steps.rb +11 -0
  259. data/features/step_definitions/index_scope_steps.rb +42 -0
  260. data/features/step_definitions/index_views_steps.rb +3 -0
  261. data/features/step_definitions/layout_steps.rb +3 -0
  262. data/features/step_definitions/member_link_steps.rb +7 -0
  263. data/features/step_definitions/menu_steps.rb +11 -0
  264. data/features/step_definitions/meta_tag_steps.rb +3 -0
  265. data/features/step_definitions/pagination_steps.rb +15 -0
  266. data/features/step_definitions/root_steps.rb +9 -0
  267. data/features/step_definitions/sidebar_steps.rb +11 -0
  268. data/features/step_definitions/site_title_steps.rb +31 -0
  269. data/features/step_definitions/tab_steps.rb +17 -0
  270. data/features/step_definitions/table_steps.rb +116 -0
  271. data/features/step_definitions/user_steps.rb +52 -0
  272. data/features/step_definitions/web_steps.rb +86 -0
  273. data/features/sti_resource.feature +65 -0
  274. data/features/strong_parameters.feature +69 -0
  275. data/features/support/env.rb +129 -0
  276. data/features/support/paths.rb +75 -0
  277. data/features/support/regular_env.rb +7 -0
  278. data/features/support/reload_env.rb +7 -0
  279. data/features/support/selectors.rb +45 -0
  280. data/features/users/logging_in.feature +32 -0
  281. data/features/users/logging_out.feature +29 -0
  282. data/features/users/resetting_password.feature +30 -0
  283. data/gemfiles/rails_42.gemfile +12 -0
  284. data/gemfiles/rails_52.gemfile +15 -0
  285. data/gemfiles/rails_60.gemfile +16 -0
  286. data/gemfiles/rails_61.gemfile +15 -0
  287. data/gemfiles/rails_61_turbolinks.gemfile +15 -0
  288. data/gemfiles/rails_70.gemfile +15 -0
  289. data/gemfiles/rails_70_hotwire.gemfile +15 -0
  290. data/gemfiles/rails_71.gemfile +17 -0
  291. data/lib/active_admin/abstract_view_factory.rb +47 -0
  292. data/lib/active_admin/application.rb +255 -0
  293. data/lib/active_admin/application_settings.rb +42 -0
  294. data/lib/active_admin/asset_registration.rb +29 -0
  295. data/lib/active_admin/authorization_adapter.rb +129 -0
  296. data/lib/active_admin/base_controller/authorization.rb +126 -0
  297. data/lib/active_admin/base_controller/menu.rb +34 -0
  298. data/lib/active_admin/base_controller.rb +91 -0
  299. data/lib/active_admin/batch_actions/controller.rb +45 -0
  300. data/lib/active_admin/batch_actions/resource_extension.rb +151 -0
  301. data/lib/active_admin/batch_actions/views/batch_action_form.rb +45 -0
  302. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +58 -0
  303. data/lib/active_admin/batch_actions/views/selection_cells.rb +38 -0
  304. data/lib/active_admin/batch_actions.rb +16 -0
  305. data/lib/active_admin/callbacks.rb +88 -0
  306. data/lib/active_admin/cancan_adapter.rb +36 -0
  307. data/lib/active_admin/component.rb +5 -0
  308. data/lib/active_admin/controller_action.rb +12 -0
  309. data/lib/active_admin/csv_builder.rb +136 -0
  310. data/lib/active_admin/dependency.rb +96 -0
  311. data/lib/active_admin/deprecation.rb +10 -0
  312. data/lib/active_admin/devise.rb +80 -0
  313. data/lib/active_admin/dsl.rb +193 -0
  314. data/lib/active_admin/dynamic_setting.rb +38 -0
  315. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  316. data/lib/active_admin/engine.rb +22 -0
  317. data/lib/active_admin/error.rb +62 -0
  318. data/lib/active_admin/event.rb +24 -0
  319. data/lib/active_admin/filters/active.rb +29 -0
  320. data/lib/active_admin/filters/active_filter.rb +123 -0
  321. data/lib/active_admin/filters/active_sidebar.rb +50 -0
  322. data/lib/active_admin/filters/dsl.rb +21 -0
  323. data/lib/active_admin/filters/forms.rb +85 -0
  324. data/lib/active_admin/filters/formtastic_addons.rb +79 -0
  325. data/lib/active_admin/filters/resource_extension.rb +153 -0
  326. data/lib/active_admin/filters.rb +11 -0
  327. data/lib/active_admin/form_builder.rb +182 -0
  328. data/lib/active_admin/generators/boilerplate.rb +45 -0
  329. data/lib/active_admin/helpers/collection.rb +19 -0
  330. data/lib/active_admin/helpers/i18n.rb +7 -0
  331. data/lib/active_admin/helpers/optional_display.rb +38 -0
  332. data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
  333. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  334. data/lib/active_admin/inputs/datepicker_input.rb +27 -0
  335. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  336. data/lib/active_admin/inputs/filters/base.rb +44 -0
  337. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  338. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  339. data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
  340. data/lib/active_admin/inputs/filters/date_range_input.rb +49 -0
  341. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  342. data/lib/active_admin/inputs/filters/select_input.rb +58 -0
  343. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  344. data/lib/active_admin/inputs/filters/text_input.rb +25 -0
  345. data/lib/active_admin/inputs.rb +21 -0
  346. data/lib/active_admin/localizers/resource_localizer.rb +35 -0
  347. data/lib/active_admin/localizers.rb +11 -0
  348. data/lib/active_admin/menu.rb +106 -0
  349. data/lib/active_admin/menu_collection.rb +55 -0
  350. data/lib/active_admin/menu_item.rb +79 -0
  351. data/lib/active_admin/namespace.rb +325 -0
  352. data/lib/active_admin/namespace_settings.rb +107 -0
  353. data/lib/active_admin/order_clause.rb +48 -0
  354. data/lib/active_admin/orm/active_record/comments/comment.rb +35 -0
  355. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
  356. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
  357. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +95 -0
  358. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  359. data/lib/active_admin/orm/active_record/comments.rb +99 -0
  360. data/lib/active_admin/orm/active_record.rb +5 -0
  361. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  362. data/lib/active_admin/orm/mongoid.rb +1 -0
  363. data/lib/active_admin/page.rb +114 -0
  364. data/lib/active_admin/page_controller.rb +29 -0
  365. data/lib/active_admin/page_dsl.rb +35 -0
  366. data/lib/active_admin/page_presenter.rb +32 -0
  367. data/lib/active_admin/pundit_adapter.rb +68 -0
  368. data/lib/active_admin/resource/action_items.rb +120 -0
  369. data/lib/active_admin/resource/attributes.rb +47 -0
  370. data/lib/active_admin/resource/belongs_to.rb +48 -0
  371. data/lib/active_admin/resource/controllers.rb +19 -0
  372. data/lib/active_admin/resource/includes.rb +12 -0
  373. data/lib/active_admin/resource/menu.rb +65 -0
  374. data/lib/active_admin/resource/naming.rb +62 -0
  375. data/lib/active_admin/resource/ordering.rb +11 -0
  376. data/lib/active_admin/resource/page_presenters.rb +90 -0
  377. data/lib/active_admin/resource/pagination.rb +23 -0
  378. data/lib/active_admin/resource/routes.rb +134 -0
  379. data/lib/active_admin/resource/scope_to.rb +74 -0
  380. data/lib/active_admin/resource/scopes.rb +52 -0
  381. data/lib/active_admin/resource/sidebars.rb +32 -0
  382. data/lib/active_admin/resource.rb +215 -0
  383. data/lib/active_admin/resource_collection.rb +72 -0
  384. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  385. data/lib/active_admin/resource_controller/data_access.rb +341 -0
  386. data/lib/active_admin/resource_controller/decorators.rb +102 -0
  387. data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
  388. data/lib/active_admin/resource_controller/scoping.rb +31 -0
  389. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  390. data/lib/active_admin/resource_controller/streaming.rb +47 -0
  391. data/lib/active_admin/resource_controller.rb +116 -0
  392. data/lib/active_admin/resource_dsl.rb +221 -0
  393. data/lib/active_admin/router.rb +113 -0
  394. data/lib/active_admin/scope.rb +60 -0
  395. data/lib/active_admin/settings_node.rb +19 -0
  396. data/lib/active_admin/sidebar_section.rb +37 -0
  397. data/lib/active_admin/version.rb +3 -0
  398. data/lib/active_admin/view_factory.rb +10 -0
  399. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  400. data/lib/active_admin/view_helpers/auto_link_helper.rb +45 -0
  401. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +52 -0
  402. data/lib/active_admin/view_helpers/display_helper.rb +95 -0
  403. data/lib/active_admin/view_helpers/download_format_links_helper.rb +58 -0
  404. data/lib/active_admin/view_helpers/fields_for.rb +50 -0
  405. data/lib/active_admin/view_helpers/flash_helper.rb +14 -0
  406. data/lib/active_admin/view_helpers/form_helper.rb +20 -0
  407. data/lib/active_admin/view_helpers/layout_helper.rb +32 -0
  408. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +97 -0
  409. data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
  410. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  411. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  412. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  413. data/lib/active_admin/view_helpers.rb +21 -0
  414. data/lib/active_admin/views/components/action_link.rb +13 -0
  415. data/lib/active_admin/views/components/active_admin_form.rb +163 -0
  416. data/lib/active_admin/views/components/attributes_panel.rb +23 -0
  417. data/lib/active_admin/views/components/attributes_table.rb +94 -0
  418. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  419. data/lib/active_admin/views/components/columns.rb +161 -0
  420. data/lib/active_admin/views/components/dropdown_menu.rb +71 -0
  421. data/lib/active_admin/views/components/index_list.rb +69 -0
  422. data/lib/active_admin/views/components/menu.rb +32 -0
  423. data/lib/active_admin/views/components/menu_item.rb +58 -0
  424. data/lib/active_admin/views/components/paginated_collection.rb +159 -0
  425. data/lib/active_admin/views/components/panel.rb +38 -0
  426. data/lib/active_admin/views/components/scopes.rb +72 -0
  427. data/lib/active_admin/views/components/sidebar_section.rb +34 -0
  428. data/lib/active_admin/views/components/site_title.rb +28 -0
  429. data/lib/active_admin/views/components/status_tag.rb +88 -0
  430. data/lib/active_admin/views/components/table_for.rb +209 -0
  431. data/lib/active_admin/views/components/tabs.rb +40 -0
  432. data/lib/active_admin/views/index_as_block.rb +36 -0
  433. data/lib/active_admin/views/index_as_blog.rb +155 -0
  434. data/lib/active_admin/views/index_as_grid.rb +80 -0
  435. data/lib/active_admin/views/index_as_table.rb +377 -0
  436. data/lib/active_admin/views.rb +8 -0
  437. data/lib/active_admin.rb +132 -0
  438. data/lib/activeadmin-rails.rb +1 -0
  439. data/lib/bug_report_templates/active_admin_main.rb +110 -0
  440. data/lib/generators/active_admin/assets/assets_generator.rb +14 -0
  441. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  442. data/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
  443. data/lib/generators/active_admin/devise/devise_generator.rb +68 -0
  444. data/lib/generators/active_admin/install/install_generator.rb +45 -0
  445. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +300 -0
  446. data/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
  447. data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  448. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
  449. data/lib/generators/active_admin/page/USAGE +8 -0
  450. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  451. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  452. data/lib/generators/active_admin/resource/resource_generator.rb +20 -0
  453. data/lib/generators/active_admin/resource/templates/admin.rb.erb +6 -0
  454. data/lib/ransack_ext.rb +20 -0
  455. data/spec/bug_report_templates_spec.rb +28 -0
  456. data/spec/changelog_spec.rb +15 -0
  457. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
  458. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
  459. data/spec/javascripts/fixtures/checkboxes.html +9 -0
  460. data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
  461. data/spec/javascripts/helpers/SpecHelper.js +3 -0
  462. data/spec/javascripts/support/jasmine.yml +74 -0
  463. data/spec/javascripts/support/jasmine_runner.rb +19 -0
  464. data/spec/rails_helper.rb +67 -0
  465. data/spec/requests/default_namespace_spec.rb +81 -0
  466. data/spec/requests/memory_spec.rb +25 -0
  467. data/spec/requests/pages/form_spec.rb +73 -0
  468. data/spec/requests/pages/index_spec.rb +96 -0
  469. data/spec/requests/pages/layout_spec.rb +59 -0
  470. data/spec/requests/pages/show_spec.rb +38 -0
  471. data/spec/requests/stylesheets_spec.rb +18 -0
  472. data/spec/spec_helper.rb +1 -0
  473. data/spec/support/active_admin_integration_spec_helper.rb +79 -0
  474. data/spec/support/active_admin_request_helpers.rb +39 -0
  475. data/spec/support/rails_template.rb +224 -0
  476. data/spec/support/rails_template_with_data.rb +328 -0
  477. data/spec/support/templates/admin/stores.rb +7 -0
  478. data/spec/support/templates/en.yml +8 -0
  479. data/spec/support/templates/manifest.js +3 -0
  480. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  481. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  482. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  483. data/spec/support/templates/policies/application_policy.rb +44 -0
  484. data/spec/support/templates/policies/category_policy.rb +7 -0
  485. data/spec/support/templates/policies/post_policy.rb +15 -0
  486. data/spec/support/templates/policies/store_policy.rb +11 -0
  487. data/spec/support/templates/policies/user_policy.rb +11 -0
  488. data/spec/support/templates/post_decorator.rb +24 -0
  489. data/spec/unit/abstract_view_factory_spec.rb +78 -0
  490. data/spec/unit/action_builder_spec.rb +160 -0
  491. data/spec/unit/active_admin_spec.rb +11 -0
  492. data/spec/unit/application_spec.rb +180 -0
  493. data/spec/unit/asset_registration_spec.rb +52 -0
  494. data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
  495. data/spec/unit/authorization/controller_authorization_spec.rb +43 -0
  496. data/spec/unit/authorization/index_overriding_spec.rb +23 -0
  497. data/spec/unit/auto_link_spec.rb +103 -0
  498. data/spec/unit/batch_actions/resource_spec.rb +84 -0
  499. data/spec/unit/batch_actions/settings_spec.rb +61 -0
  500. data/spec/unit/belongs_to_spec.rb +76 -0
  501. data/spec/unit/cancan_adapter_spec.rb +43 -0
  502. data/spec/unit/comments_spec.rb +204 -0
  503. data/spec/unit/component_spec.rb +18 -0
  504. data/spec/unit/config_shared_examples.rb +59 -0
  505. data/spec/unit/controller_filters_spec.rb +41 -0
  506. data/spec/unit/csv_builder_spec.rb +321 -0
  507. data/spec/unit/dependency_spec.rb +135 -0
  508. data/spec/unit/devise_spec.rb +110 -0
  509. data/spec/unit/dsl_spec.rb +120 -0
  510. data/spec/unit/dynamic_settings_spec.rb +28 -0
  511. data/spec/unit/filters/active_filter_spec.rb +222 -0
  512. data/spec/unit/filters/active_spec.rb +24 -0
  513. data/spec/unit/filters/filter_form_builder_spec.rb +524 -0
  514. data/spec/unit/filters/resource_spec.rb +128 -0
  515. data/spec/unit/form_builder_spec.rb +1013 -0
  516. data/spec/unit/generators/install_spec.rb +31 -0
  517. data/spec/unit/helpers/collection_spec.rb +68 -0
  518. data/spec/unit/helpers/scope_chain_spec.rb +35 -0
  519. data/spec/unit/i18n_spec.rb +29 -0
  520. data/spec/unit/localizers/resource_localizer_spec.rb +36 -0
  521. data/spec/unit/menu_collection_spec.rb +40 -0
  522. data/spec/unit/menu_item_spec.rb +82 -0
  523. data/spec/unit/menu_spec.rb +60 -0
  524. data/spec/unit/namespace/authorization_spec.rb +27 -0
  525. data/spec/unit/namespace/register_page_spec.rb +99 -0
  526. data/spec/unit/namespace/register_resource_spec.rb +162 -0
  527. data/spec/unit/namespace_spec.rb +132 -0
  528. data/spec/unit/order_clause_spec.rb +81 -0
  529. data/spec/unit/page_controller_spec.rb +5 -0
  530. data/spec/unit/page_spec.rb +128 -0
  531. data/spec/unit/pretty_format_spec.rb +133 -0
  532. data/spec/unit/pundit_adapter_spec.rb +98 -0
  533. data/spec/unit/resource/action_items_spec.rb +83 -0
  534. data/spec/unit/resource/attributes_spec.rb +56 -0
  535. data/spec/unit/resource/includes_spec.rb +21 -0
  536. data/spec/unit/resource/menu_spec.rb +18 -0
  537. data/spec/unit/resource/naming_spec.rb +120 -0
  538. data/spec/unit/resource/ordering_spec.rb +35 -0
  539. data/spec/unit/resource/page_presenters_spec.rb +44 -0
  540. data/spec/unit/resource/pagination_spec.rb +38 -0
  541. data/spec/unit/resource/routes_spec.rb +125 -0
  542. data/spec/unit/resource/scopes_spec.rb +50 -0
  543. data/spec/unit/resource/sidebars_spec.rb +43 -0
  544. data/spec/unit/resource_collection_spec.rb +175 -0
  545. data/spec/unit/resource_controller/data_access_spec.rb +234 -0
  546. data/spec/unit/resource_controller/decorators_spec.rb +94 -0
  547. data/spec/unit/resource_controller/sidebars_spec.rb +37 -0
  548. data/spec/unit/resource_controller_spec.rb +290 -0
  549. data/spec/unit/resource_registration_spec.rb +61 -0
  550. data/spec/unit/resource_spec.rb +320 -0
  551. data/spec/unit/routing_spec.rb +211 -0
  552. data/spec/unit/scope_spec.rb +225 -0
  553. data/spec/unit/settings_node_spec.rb +26 -0
  554. data/spec/unit/view_factory_spec.rb +13 -0
  555. data/spec/unit/view_helpers/breadcrumbs_spec.rb +255 -0
  556. data/spec/unit/view_helpers/display_helper_spec.rb +203 -0
  557. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
  558. data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
  559. data/spec/unit/view_helpers/flash_helper_spec.rb +24 -0
  560. data/spec/unit/view_helpers/form_helper_spec.rb +42 -0
  561. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +138 -0
  562. data/spec/unit/views/components/attributes_table_spec.rb +271 -0
  563. data/spec/unit/views/components/batch_action_selector_spec.rb +43 -0
  564. data/spec/unit/views/components/blank_slate_spec.rb +27 -0
  565. data/spec/unit/views/components/columns_spec.rb +187 -0
  566. data/spec/unit/views/components/index_list_spec.rb +49 -0
  567. data/spec/unit/views/components/index_table_for_spec.rb +127 -0
  568. data/spec/unit/views/components/menu_item_spec.rb +29 -0
  569. data/spec/unit/views/components/menu_spec.rb +168 -0
  570. data/spec/unit/views/components/paginated_collection_spec.rb +249 -0
  571. data/spec/unit/views/components/panel_spec.rb +58 -0
  572. data/spec/unit/views/components/sidebar_section_spec.rb +68 -0
  573. data/spec/unit/views/components/site_title_spec.rb +82 -0
  574. data/spec/unit/views/components/status_tag_spec.rb +265 -0
  575. data/spec/unit/views/components/table_for_spec.rb +441 -0
  576. data/spec/unit/views/components/tabs_spec.rb +99 -0
  577. data/spec/unit/views/index_as_blog_spec.rb +76 -0
  578. data/tasks/docs.rake +64 -0
  579. data/tasks/lint.rake +21 -0
  580. data/tasks/local.rake +25 -0
  581. data/tasks/parallel_tests.rake +66 -0
  582. data/tasks/test.rake +24 -0
  583. data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
  584. metadata +1012 -0
@@ -0,0 +1,68 @@
1
+ require "active_admin/error"
2
+ require "active_admin/dependency"
3
+
4
+ module ActiveAdmin
5
+ module Generators
6
+ class DeviseGenerator < Rails::Generators::NamedBase
7
+ desc "Creates an admin user and uses Devise for authentication"
8
+ argument :name, type: :string, default: "AdminUser"
9
+
10
+ class_option :registerable, type: :boolean, default: false,
11
+ desc: "Should the generated resource be registerable?"
12
+
13
+ RESERVED_NAMES = [:active_admin_user]
14
+
15
+ class_option :default_user, type: :boolean, default: true,
16
+ desc: "Should a default user be created inside the migration?"
17
+
18
+ def install_devise
19
+ begin
20
+ Dependency.devise! Dependency::Requirements::DEVISE
21
+ rescue DependencyError => e
22
+ raise ActiveAdmin::GeneratorError, "#{e.message} If you don't want to use devise, run the generator with --skip-users."
23
+ end
24
+
25
+ require 'devise'
26
+
27
+ initializer_file =
28
+ File.join(destination_root, "config", "initializers", "devise.rb")
29
+
30
+ if File.exist?(initializer_file)
31
+ log :generate, "No need to install devise, already done."
32
+ else
33
+ log :generate, "devise:install"
34
+ invoke "devise:install"
35
+ end
36
+ end
37
+
38
+ def create_admin_user
39
+ if RESERVED_NAMES.include?(name.underscore)
40
+ raise ActiveAdmin::GeneratorError, "The name #{name} is reserved by Active Admin"
41
+ end
42
+ invoke "devise", [name]
43
+ end
44
+
45
+ def remove_registerable_from_model
46
+ unless options[:registerable]
47
+ model_file = File.join(destination_root, "app", "models", "#{file_path}.rb")
48
+ gsub_file model_file, /\:registerable([.]*,)?/, ""
49
+ end
50
+ end
51
+
52
+ def set_namespace_for_path
53
+ routes_file = File.join(destination_root, "config", "routes.rb")
54
+ gsub_file routes_file, /devise_for :#{plural_table_name}$/, "devise_for :#{plural_table_name}, ActiveAdmin::Devise.config"
55
+ end
56
+
57
+ def add_default_user_to_seed
58
+ seeds_paths = Rails.application.paths["db/seeds.rb"]
59
+ seeds_file = seeds_paths.existent.first
60
+ return if seeds_file.nil? || !options[:default_user]
61
+
62
+ create_user_code = "#{class_name}.create!(email: 'admin@example.com', password: 'password', password_confirmation: 'password') if Rails.env.development?"
63
+
64
+ append_to_file seeds_file, create_user_code
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,45 @@
1
+ require 'rails/generators/active_record'
2
+
3
+ module ActiveAdmin
4
+ module Generators
5
+ class InstallGenerator < ActiveRecord::Generators::Base
6
+ desc "Installs Active Admin and generates the necessary migrations"
7
+ argument :name, type: :string, default: "AdminUser"
8
+
9
+ hook_for :users, default: "devise", desc: "Admin user generator to run. Skip with --skip-users"
10
+
11
+ source_root File.expand_path("../templates", __FILE__)
12
+
13
+ def copy_initializer
14
+ @underscored_user_name = name.underscore.gsub('/', '_')
15
+ @use_authentication_method = options[:users].present?
16
+ template 'active_admin.rb.erb', 'config/initializers/active_admin.rb'
17
+ end
18
+
19
+ def setup_directory
20
+ empty_directory "app/admin"
21
+ template 'dashboard.rb', 'app/admin/dashboard.rb'
22
+ if options[:users].present?
23
+ @user_class = name
24
+ template 'admin_users.rb.erb', "app/admin/#{name.underscore.pluralize}.rb"
25
+ end
26
+ end
27
+
28
+ def setup_routes
29
+ if options[:users] # Ensure Active Admin routes occur after Devise routes so that Devise has higher priority
30
+ inject_into_file "config/routes.rb", "\n ActiveAdmin.routes(self)", after: /devise_for .*, ActiveAdmin::Devise\.config/
31
+ else
32
+ route "ActiveAdmin.routes(self)"
33
+ end
34
+ end
35
+
36
+ def create_assets
37
+ generate "active_admin:assets"
38
+ end
39
+
40
+ def create_migrations
41
+ migration_template 'migrations/create_active_admin_comments.rb.erb', 'db/migrate/create_active_admin_comments.rb'
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,300 @@
1
+ ActiveAdmin.setup do |config|
2
+ # == Site Title
3
+ #
4
+ # Set the title that is displayed on the main layout
5
+ # for each of the active admin pages.
6
+ #
7
+ config.site_title = "<%= Rails.application.class.name.split("::").first.titlecase %>"
8
+
9
+ # Set the link url for the title. For example, to take
10
+ # users to your main site. Defaults to no link.
11
+ #
12
+ # config.site_title_link = "/"
13
+
14
+ # Set an optional image to be displayed for the header
15
+ # instead of a string (overrides :site_title)
16
+ #
17
+ # Note: Aim for an image that's 21px high so it fits in the header.
18
+ #
19
+ # config.site_title_image = "logo.png"
20
+
21
+ # == Default Namespace
22
+ #
23
+ # Set the default namespace each administration resource
24
+ # will be added to.
25
+ #
26
+ # eg:
27
+ # config.default_namespace = :hello_world
28
+ #
29
+ # This will create resources in the HelloWorld module and
30
+ # will namespace routes to /hello_world/*
31
+ #
32
+ # To set no namespace by default, use:
33
+ # config.default_namespace = false
34
+ #
35
+ # Default:
36
+ # config.default_namespace = :admin
37
+ #
38
+ # You can customize the settings for each namespace by using
39
+ # a namespace block. For example, to change the site title
40
+ # within a namespace:
41
+ #
42
+ # config.namespace :admin do |admin|
43
+ # admin.site_title = "Custom Admin Title"
44
+ # end
45
+ #
46
+ # This will ONLY change the title for the admin section. Other
47
+ # namespaces will continue to use the main "site_title" configuration.
48
+
49
+ # == User Authentication
50
+ #
51
+ # Active Admin will automatically call an authentication
52
+ # method in a before filter of all controller actions to
53
+ # ensure that there is a currently logged in admin user.
54
+ #
55
+ # This setting changes the method which Active Admin calls
56
+ # within the application controller.
57
+ <% unless @use_authentication_method %># <% end %>config.authentication_method = :authenticate_<%= @underscored_user_name %>!
58
+
59
+ # == User Authorization
60
+ #
61
+ # Active Admin will automatically call an authorization
62
+ # method in a before filter of all controller actions to
63
+ # ensure that there is a user with proper rights. You can use
64
+ # CanCanAdapter or make your own. Please refer to documentation.
65
+ # config.authorization_adapter = ActiveAdmin::CanCanAdapter
66
+
67
+ # In case you prefer Pundit over other solutions you can here pass
68
+ # the name of default policy class. This policy will be used in every
69
+ # case when Pundit is unable to find suitable policy.
70
+ # config.pundit_default_policy = "MyDefaultPunditPolicy"
71
+
72
+ # You can customize your CanCan Ability class name here.
73
+ # config.cancan_ability_class = "Ability"
74
+
75
+ # You can specify a method to be called on unauthorized access.
76
+ # This is necessary in order to prevent a redirect loop which happens
77
+ # because, by default, user gets redirected to Dashboard. If user
78
+ # doesn't have access to Dashboard, he'll end up in a redirect loop.
79
+ # Method provided here should be defined in application_controller.rb.
80
+ # config.on_unauthorized_access = :access_denied
81
+
82
+ # == Current User
83
+ #
84
+ # Active Admin will associate actions with the current
85
+ # user performing them.
86
+ #
87
+ # This setting changes the method which Active Admin calls
88
+ # (within the application controller) to return the currently logged in user.
89
+ <% unless @use_authentication_method %># <% end %>config.current_user_method = :current_<%= @underscored_user_name %>
90
+
91
+ # == Logging Out
92
+ #
93
+ # Active Admin displays a logout link on each screen. These
94
+ # settings configure the location and method used for the link.
95
+ #
96
+ # This setting changes the path where the link points to. If it's
97
+ # a string, the strings is used as the path. If it's a Symbol, we
98
+ # will call the method to return the path.
99
+ #
100
+ # Default:
101
+ config.logout_link_path = :destroy_<%= @underscored_user_name %>_session_path
102
+
103
+ # This setting changes the http method used when rendering the
104
+ # link. For example :get, :delete, :put, etc..
105
+ #
106
+ # Default:
107
+ # config.logout_link_method = :get
108
+
109
+ # == Root
110
+ #
111
+ # Set the action to call for the root path. You can set different
112
+ # roots for each namespace.
113
+ #
114
+ # Default:
115
+ # config.root_to = 'dashboard#index'
116
+
117
+ # == Admin Comments
118
+ #
119
+ # This allows your users to comment on any resource registered with Active Admin.
120
+ #
121
+ # You can completely disable comments:
122
+ # config.comments = false
123
+ #
124
+ # You can change the name under which comments are registered:
125
+ # config.comments_registration_name = 'AdminComment'
126
+ #
127
+ # You can change the order for the comments and you can change the column
128
+ # to be used for ordering:
129
+ # config.comments_order = 'created_at ASC'
130
+ #
131
+ # You can disable the menu item for the comments index page:
132
+ # config.comments_menu = false
133
+ #
134
+ # You can customize the comment menu:
135
+ # config.comments_menu = { parent: 'Admin', priority: 1 }
136
+
137
+ # == Batch Actions
138
+ #
139
+ # Enable and disable Batch Actions
140
+ #
141
+ config.batch_actions = true
142
+
143
+ # == Controller Filters
144
+ #
145
+ # You can add before, after and around filters to all of your
146
+ # Active Admin resources and pages from here.
147
+ #
148
+ # config.before_action :do_something_awesome
149
+
150
+ # == Attribute Filters
151
+ #
152
+ # You can exclude possibly sensitive model attributes from being displayed,
153
+ # added to forms, or exported by default by ActiveAdmin
154
+ #
155
+ config.filter_attributes = [:encrypted_password, :password, :password_confirmation]
156
+
157
+ # == Localize Date/Time Format
158
+ #
159
+ # Set the localize format to display dates and times.
160
+ # To understand how to localize your app with I18n, read more at
161
+ # https://github.com/svenfuchs/i18n/blob/master/lib%2Fi18n%2Fbackend%2Fbase.rb#L52
162
+ #
163
+ config.localize_format = :long
164
+
165
+ # == Setting a Favicon
166
+ #
167
+ # config.favicon = 'favicon.ico'
168
+
169
+ # == Meta Tags
170
+ #
171
+ # Add additional meta tags to the head element of active admin pages.
172
+ #
173
+ # Add tags to all pages logged in users see:
174
+ # config.meta_tags = { author: 'My Company' }
175
+
176
+ # By default, sign up/sign in/recover password pages are excluded
177
+ # from showing up in search engine results by adding a robots meta
178
+ # tag. You can reset the hash of meta tags included in logged out
179
+ # pages:
180
+ # config.meta_tags_for_logged_out_pages = {}
181
+
182
+ # == Removing Breadcrumbs
183
+ #
184
+ # Breadcrumbs are enabled by default. You can customize them for individual
185
+ # resources or you can disable them globally from here.
186
+ #
187
+ # config.breadcrumb = false
188
+
189
+ # == Create Another Checkbox
190
+ #
191
+ # Create another checkbox is disabled by default. You can customize it for individual
192
+ # resources or you can enable them globally from here.
193
+ #
194
+ # config.create_another = true
195
+
196
+ # == Register Stylesheets & Javascripts
197
+ #
198
+ # We recommend using the built in Active Admin layout and loading
199
+ # up your own stylesheets / javascripts to customize the look
200
+ # and feel.
201
+ #
202
+ # To load a stylesheet:
203
+ # config.register_stylesheet 'my_stylesheet.css'
204
+ #
205
+ # You can provide an options hash for more control, which is passed along to stylesheet_link_tag():
206
+ # config.register_stylesheet 'my_print_stylesheet.css', media: :print
207
+ #
208
+ # To load a javascript file:
209
+ # config.register_javascript 'my_javascript.js'
210
+
211
+ # == CSV options
212
+ #
213
+ # Set the CSV builder separator
214
+ # config.csv_options = { col_sep: ';' }
215
+ #
216
+ # Force the use of quotes
217
+ # config.csv_options = { force_quotes: true }
218
+
219
+ # == Menu System
220
+ #
221
+ # You can add a navigation menu to be used in your application, or configure a provided menu
222
+ #
223
+ # To change the default utility navigation to show a link to your website & a logout btn
224
+ #
225
+ # config.namespace :admin do |admin|
226
+ # admin.build_menu :utility_navigation do |menu|
227
+ # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank }
228
+ # admin.add_logout_button_to_menu menu
229
+ # end
230
+ # end
231
+ #
232
+ # If you wanted to add a static menu item to the default menu provided:
233
+ #
234
+ # config.namespace :admin do |admin|
235
+ # admin.build_menu :default do |menu|
236
+ # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank }
237
+ # end
238
+ # end
239
+
240
+ # == Download Links
241
+ #
242
+ # You can disable download links on resource listing pages,
243
+ # or customize the formats shown per namespace/globally
244
+ #
245
+ # To disable/customize for the :admin namespace:
246
+ #
247
+ # config.namespace :admin do |admin|
248
+ #
249
+ # # Disable the links entirely
250
+ # admin.download_links = false
251
+ #
252
+ # # Only show XML & PDF options
253
+ # admin.download_links = [:xml, :pdf]
254
+ #
255
+ # # Enable/disable the links based on block
256
+ # # (for example, with cancan)
257
+ # admin.download_links = proc { can?(:view_download_links) }
258
+ #
259
+ # end
260
+
261
+ # == Pagination
262
+ #
263
+ # Pagination is enabled by default for all resources.
264
+ # You can control the default per page count for all resources here.
265
+ #
266
+ # config.default_per_page = 30
267
+ #
268
+ # You can control the max per page count too.
269
+ #
270
+ # config.max_per_page = 10_000
271
+
272
+ # == Filters
273
+ #
274
+ # By default the index screen includes a "Filters" sidebar on the right
275
+ # hand side with a filter for each attribute of the registered model.
276
+ # You can enable or disable them for all resources here.
277
+ #
278
+ # config.filters = true
279
+ #
280
+ # By default the filters include associations in a select, which means
281
+ # that every record will be loaded for each association.
282
+ # You can enabled or disable the inclusion
283
+ # of those filters by default here.
284
+ #
285
+ # config.include_default_association_filters = true
286
+
287
+ # == Footer
288
+ #
289
+ # By default, the footer shows the current Active Admin version. You can
290
+ # override the content of the footer here.
291
+ #
292
+ # config.footer = 'my custom footer text'
293
+
294
+ # == Sorting
295
+ #
296
+ # By default ActiveAdmin::OrderClause is used for sorting logic
297
+ # You can inherit it with own class and inject it for all resources
298
+ #
299
+ # config.order_clause = MyOrderClause
300
+ end
@@ -0,0 +1,28 @@
1
+ ActiveAdmin.register <%= @user_class %> do
2
+ permit_params :email, :password, :password_confirmation
3
+
4
+ index do
5
+ selectable_column
6
+ id_column
7
+ column :email
8
+ column :current_sign_in_at
9
+ column :sign_in_count
10
+ column :created_at
11
+ actions
12
+ end
13
+
14
+ filter :email
15
+ filter :current_sign_in_at
16
+ filter :sign_in_count
17
+ filter :created_at
18
+
19
+ form do |f|
20
+ f.inputs do
21
+ f.input :email
22
+ f.input :password
23
+ f.input :password_confirmation
24
+ end
25
+ f.actions
26
+ end
27
+
28
+ end
@@ -0,0 +1,33 @@
1
+ ActiveAdmin.register_page "Dashboard" do
2
+
3
+ menu priority: 1, label: proc{ I18n.t("active_admin.dashboard") }
4
+
5
+ content title: proc{ I18n.t("active_admin.dashboard") } do
6
+ div class: "blank_slate_container", id: "dashboard_default_message" do
7
+ span class: "blank_slate" do
8
+ span I18n.t("active_admin.dashboard_welcome.welcome")
9
+ small I18n.t("active_admin.dashboard_welcome.call_to_action")
10
+ end
11
+ end
12
+
13
+ # Here is an example of a simple dashboard with columns and panels.
14
+ #
15
+ # columns do
16
+ # column do
17
+ # panel "Recent Posts" do
18
+ # ul do
19
+ # Post.recent(5).map do |post|
20
+ # li link_to(post.title, admin_post_path(post))
21
+ # end
22
+ # end
23
+ # end
24
+ # end
25
+
26
+ # column do
27
+ # panel "Info" do
28
+ # para "Welcome to ActiveAdmin."
29
+ # end
30
+ # end
31
+ # end
32
+ end # content
33
+ end
@@ -0,0 +1,16 @@
1
+ class CreateActiveAdminComments < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version.to_s %>]
2
+ def self.up
3
+ create_table :active_admin_comments do |t|
4
+ t.string :namespace
5
+ t.text :body
6
+ t.references :resource, polymorphic: true
7
+ t.references :author, polymorphic: true
8
+ t.timestamps
9
+ end
10
+ add_index :active_admin_comments, [:namespace]
11
+ end
12
+
13
+ def self.down
14
+ drop_table :active_admin_comments
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Registers pages with Active Admin
3
+
4
+ Example:
5
+ rails generate active_admin:page Thing
6
+
7
+ This will create:
8
+ app/admin/thing.rb
@@ -0,0 +1,12 @@
1
+ module ActiveAdmin
2
+ module Generators
3
+ class PageGenerator < Rails::Generators::NamedBase
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ def generate_config_file
7
+ template "page.rb", "app/admin/#{file_path.tr('/', '_')}.rb"
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,5 @@
1
+ ActiveAdmin.register_page "<%= class_name %>" do
2
+ content do
3
+ # your content
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ require 'active_admin/generators/boilerplate'
2
+
3
+ module ActiveAdmin
4
+ module Generators
5
+ class ResourceGenerator < Rails::Generators::NamedBase
6
+ desc "Registers resources with Active Admin"
7
+
8
+ class_option :include_boilerplate, type: :boolean, default: false,
9
+ desc: "Generate boilerplate code for your resource."
10
+
11
+ source_root File.expand_path("../templates", __FILE__)
12
+
13
+ def generate_config_file
14
+ @boilerplate = ActiveAdmin::Generators::Boilerplate.new(class_name)
15
+ template "admin.rb.erb", "app/admin/#{file_path.tr('/', '_').pluralize}.rb"
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,6 @@
1
+ ActiveAdmin.configure_resource <%= class_name %> do |config|
2
+
3
+ <% if options.include_boilerplate? %>
4
+
5
+ <% end %>
6
+ end
@@ -0,0 +1,20 @@
1
+ # This sets up aliases for old Metasearch query methods so they behave
2
+ # identically to the versions given in Ransack.
3
+ #
4
+ Ransack.configure do |config|
5
+ {'contains'=>'cont', 'starts_with'=>'start', 'ends_with'=>'end'}.each do |old, current|
6
+ config.add_predicate old, Ransack::Constants::DERIVED_PREDICATES.detect{ |q, _| q == current }[1]
7
+ end
8
+
9
+ {'equals'=>'eq', 'greater_than'=>'gt', 'less_than'=>'lt'}.each do |old, current|
10
+ config.add_predicate old, arel_predicate: current
11
+ end
12
+
13
+ config.add_predicate 'gteq_datetime',
14
+ arel_predicate: 'gteq',
15
+ formatter: ->(v) { v.beginning_of_day }
16
+
17
+ config.add_predicate 'lteq_datetime',
18
+ arel_predicate: 'lt',
19
+ formatter: ->(v) { v + 1.day }
20
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+ require 'open3'
3
+
4
+ RSpec.describe 'bug_report_templates' do
5
+ subject do
6
+ Bundler.with_unbundled_env do
7
+ Dir.chdir(chdir_path) do
8
+ Open3.capture2e(
9
+ {'ACTIVE_ADMIN_PATH' => active_admin_root},
10
+ Gem.ruby,
11
+ template_path
12
+ )[1]
13
+ end
14
+ end
15
+ end
16
+
17
+ let(:active_admin_root) { File.expand_path('../..', __FILE__) }
18
+ let(:chdir_path) { File.join(active_admin_root, 'lib', 'bug_report_templates') }
19
+
20
+ context 'when runs active_admin_main.rb' do
21
+ let(:template_path) { 'active_admin_main.rb' }
22
+
23
+ it 'passes' do
24
+ expect(subject).to be_truthy
25
+ end
26
+ end
27
+
28
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe "Changelog" do
4
+ subject(:changelog) do
5
+ path = File.join(File.dirname(__dir__), "CHANGELOG.md")
6
+ File.read(path)
7
+ end
8
+
9
+ it 'has definitions for all implicit links' do
10
+ implicit_link_names = changelog.scan(/\[([^\]]+)\]\[\]/).flatten.uniq
11
+ implicit_link_names.each do |name|
12
+ expect(changelog).to include("[#{name}]: https")
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,50 @@
1
+ describe "ActiveAdmin.CheckboxToggler", ->
2
+
3
+ beforeEach ->
4
+ loadFixtures('checkboxes.html')
5
+
6
+ @collection = $("#collection")
7
+ @toggle_all = @collection.find(".toggle_all")
8
+
9
+ @checkboxes = @collection.find(":checkbox").not(@toggle_all)
10
+
11
+
12
+ new ActiveAdmin.CheckboxToggler({}, @collection)
13
+
14
+ describe "on init", ->
15
+ it "should raise an error if container not found", ->
16
+ expect( => new ActiveAdmin.CheckboxToggler({}) ).toThrow("Container element not found")
17
+
18
+ it "should raise an error if 'toggle all' checkbox not found", ->
19
+ @toggle_all.remove()
20
+ expect( => new ActiveAdmin.CheckboxToggler({}, @collection); ).toThrow("'toggle all' checkbox not found")
21
+
22
+ describe "'toggle all' checkbox", ->
23
+ it "should check all checkboxes when checked", ->
24
+ @toggle_all.trigger("click")
25
+ expect(@checkboxes).toHaveAttr("checked")
26
+
27
+ it "should uncheck all checkboxes when unchecked", ->
28
+ @toggle_all.trigger("click")
29
+ @toggle_all.trigger("click")
30
+ expect(@checkboxes).not.toHaveAttr("checked")
31
+
32
+ describe "individual checkboxes", ->
33
+
34
+ describe "when all checkboxes are selected and one is unchecked", ->
35
+ beforeEach ->
36
+ @collection.find(":checkbox").attr("checked", "checked")
37
+ @collection.find("#item_1").trigger("click")
38
+
39
+ it "should uncheck the 'toggle all' checkbox", ->
40
+ expect(@toggle_all).not.toHaveAttr("checked")
41
+
42
+ describe "when the last checkbox is checked", ->
43
+ beforeEach ->
44
+ @checkboxes.attr("checked", "checked")
45
+ @collection.find("#item_1").removeAttr("checked")
46
+ @collection.find("#item_1").trigger("click")
47
+
48
+ it "should check the 'toggle all' checkbox", ->
49
+ expect(@toggle_all).toHaveAttr("checked")
50
+