activeadmin 1.3.0 → 2.0.0.rc1

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 (423) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +307 -123
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +90 -46
  5. data/README.md +66 -19
  6. data/app/assets/javascripts/active_admin/base.es6 +23 -0
  7. data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
  8. data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
  9. data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
  10. data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
  11. data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
  12. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
  13. data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +55 -0
  14. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
  15. data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
  16. data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
  17. data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
  18. data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
  19. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
  20. data/app/assets/stylesheets/active_admin/_forms.scss +3 -15
  21. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  22. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
  23. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  25. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  26. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  27. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  28. data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
  29. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  30. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  31. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  32. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  33. data/config/locales/bg.yml +0 -1
  34. data/config/locales/de.yml +10 -0
  35. data/config/locales/en.yml +19 -1
  36. data/config/locales/es.yml +20 -1
  37. data/config/locales/fi.yml +1 -1
  38. data/config/locales/he.yml +0 -1
  39. data/config/locales/hu.yml +4 -0
  40. data/config/locales/it.yml +4 -0
  41. data/config/locales/lt.yml +2 -2
  42. data/config/locales/nb.yml +15 -5
  43. data/config/locales/nl.yml +11 -0
  44. data/config/locales/pl.yml +71 -3
  45. data/config/locales/ru.yml +2 -0
  46. data/config/locales/tr.yml +9 -0
  47. data/config/locales/uk.yml +2 -0
  48. data/config/locales/zh-CN.yml +33 -5
  49. data/docs/.gitignore +1 -0
  50. data/docs/0-installation.md +2 -2
  51. data/docs/1-general-configuration.md +16 -1
  52. data/docs/10-custom-pages.md +14 -0
  53. data/docs/12-arbre-components.md +28 -1
  54. data/docs/13-authorization-adapter.md +40 -21
  55. data/docs/2-resource-customization.md +8 -3
  56. data/docs/3-index-pages/custom-index.md +1 -1
  57. data/docs/3-index-pages/index-as-blog.md +1 -1
  58. data/docs/3-index-pages/index-as-table.md +5 -5
  59. data/docs/3-index-pages.md +17 -0
  60. data/docs/5-forms.md +16 -2
  61. data/docs/8-custom-actions.md +11 -0
  62. data/docs/CNAME +1 -1
  63. data/docs/Gemfile +2 -0
  64. data/docs/Gemfile.lock +249 -0
  65. data/docs/_config.yml +1 -1
  66. data/docs/_includes/toc.html +1 -1
  67. data/docs/_includes/top-menu.html +9 -1
  68. data/docs/documentation.md +1 -1
  69. data/docs/images/tidelift.svg +14 -0
  70. data/docs/index.html +2 -2
  71. data/docs/stylesheets/main.css +26 -2
  72. data/lib/active_admin/abstract_view_factory.rb +13 -51
  73. data/lib/active_admin/application.rb +49 -155
  74. data/lib/active_admin/application_settings.rb +42 -0
  75. data/lib/active_admin/asset_registration.rb +0 -8
  76. data/lib/active_admin/base_controller/authorization.rb +3 -6
  77. data/lib/active_admin/base_controller.rb +6 -6
  78. data/lib/active_admin/batch_actions/controller.rb +2 -2
  79. data/lib/active_admin/batch_actions/resource_extension.rb +4 -4
  80. data/lib/active_admin/callbacks.rb +1 -1
  81. data/lib/active_admin/csv_builder.rb +1 -1
  82. data/lib/active_admin/dependency.rb +1 -69
  83. data/lib/active_admin/deprecation.rb +0 -25
  84. data/lib/active_admin/dsl.rb +1 -8
  85. data/lib/active_admin/dynamic_setting.rb +38 -0
  86. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  87. data/lib/active_admin/engine.rb +5 -0
  88. data/lib/active_admin/error.rb +1 -1
  89. data/lib/active_admin/filters/active_filter.rb +4 -2
  90. data/lib/active_admin/filters/active_sidebar.rb +5 -1
  91. data/lib/active_admin/filters/forms.rb +7 -4
  92. data/lib/active_admin/filters/formtastic_addons.rb +1 -1
  93. data/lib/active_admin/filters/resource_extension.rb +4 -4
  94. data/lib/active_admin/form_builder.rb +97 -62
  95. data/lib/active_admin/generators/boilerplate.rb +1 -1
  96. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  97. data/lib/active_admin/inputs/datepicker_input.rb +8 -1
  98. data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
  99. data/lib/active_admin/menu.rb +2 -8
  100. data/lib/active_admin/menu_item.rb +4 -32
  101. data/lib/active_admin/namespace.rb +20 -8
  102. data/lib/active_admin/namespace_settings.rb +110 -0
  103. data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
  104. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +10 -5
  105. data/lib/active_admin/orm/active_record/comments.rb +15 -4
  106. data/lib/active_admin/page_dsl.rb +1 -1
  107. data/lib/active_admin/pundit_adapter.rb +13 -4
  108. data/lib/active_admin/resource/action_items.rb +7 -2
  109. data/lib/active_admin/resource/attributes.rb +7 -4
  110. data/lib/active_admin/resource/menu.rb +3 -3
  111. data/lib/active_admin/resource/naming.rb +3 -3
  112. data/lib/active_admin/resource/routes.rb +9 -4
  113. data/lib/active_admin/resource/scopes.rb +3 -3
  114. data/lib/active_admin/resource/sidebars.rb +1 -1
  115. data/lib/active_admin/resource.rb +2 -2
  116. data/lib/active_admin/resource_collection.rb +2 -2
  117. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  118. data/lib/active_admin/resource_controller/decorators.rb +3 -3
  119. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  120. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  121. data/lib/active_admin/resource_dsl.rb +5 -3
  122. data/lib/active_admin/router.rb +89 -84
  123. data/lib/active_admin/scope.rb +9 -5
  124. data/lib/active_admin/settings_node.rb +19 -0
  125. data/lib/active_admin/version.rb +1 -1
  126. data/lib/active_admin/view_helpers/display_helper.rb +10 -2
  127. data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
  128. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
  129. data/lib/active_admin/view_helpers.rb +1 -1
  130. data/lib/active_admin/views/components/active_admin_form.rb +9 -4
  131. data/lib/active_admin/views/components/attributes_table.rb +3 -3
  132. data/lib/active_admin/views/components/menu.rb +32 -0
  133. data/lib/active_admin/views/components/menu_item.rb +58 -0
  134. data/lib/active_admin/views/components/paginated_collection.rb +1 -1
  135. data/lib/active_admin/views/components/scopes.rb +11 -4
  136. data/lib/active_admin/views/components/sidebar.rb +13 -0
  137. data/lib/active_admin/views/components/sidebar_section.rb +0 -3
  138. data/lib/active_admin/views/components/site_title.rb +5 -6
  139. data/lib/active_admin/views/components/status_tag.rb +1 -18
  140. data/lib/active_admin/views/components/table_for.rb +3 -12
  141. data/lib/active_admin/views/components/tabs.rb +15 -3
  142. data/lib/active_admin/views/footer.rb +3 -7
  143. data/lib/active_admin/views/header.rb +3 -15
  144. data/lib/active_admin/views/index_as_blog.rb +1 -1
  145. data/lib/active_admin/views/index_as_grid.rb +25 -25
  146. data/lib/active_admin/views/index_as_table.rb +11 -10
  147. data/lib/active_admin/views/pages/base.rb +30 -53
  148. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  149. data/lib/active_admin/views.rb +1 -1
  150. data/lib/active_admin.rb +9 -4
  151. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  152. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  153. data/lib/generators/active_admin/install/install_generator.rb +6 -2
  154. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -1
  155. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  156. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  157. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  158. data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
  159. data/lib/ransack_ext.rb +3 -3
  160. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  161. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  162. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  163. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
  164. metadata +120 -523
  165. data/.github/ISSUE_TEMPLATE.md +0 -20
  166. data/.gitignore +0 -49
  167. data/.mdlrc +0 -1
  168. data/.rubocop.yml +0 -76
  169. data/.simplecov +0 -13
  170. data/.travis.yml +0 -51
  171. data/.yardopts +0 -7
  172. data/Gemfile +0 -58
  173. data/Rakefile +0 -54
  174. data/activeadmin.gemspec +0 -32
  175. data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
  176. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  177. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  178. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
  179. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
  180. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
  181. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
  182. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
  183. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
  184. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
  185. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  186. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  187. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  188. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
  189. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
  190. data/codecov.yml +0 -25
  191. data/config/i18n-tasks.yml +0 -26
  192. data/config/mdl_style.rb +0 -9
  193. data/cucumber.yml +0 -3
  194. data/features/action_item.feature +0 -73
  195. data/features/authorization.feature +0 -64
  196. data/features/authorization_cancan.feature +0 -52
  197. data/features/authorization_pundit.feature +0 -37
  198. data/features/belongs_to.feature +0 -124
  199. data/features/breadcrumb.feature +0 -75
  200. data/features/comments/commenting.feature +0 -178
  201. data/features/comments/viewing_index.feature +0 -19
  202. data/features/create_another.feature +0 -55
  203. data/features/dashboard.feature +0 -16
  204. data/features/decorators.feature +0 -43
  205. data/features/development_reloading.feature +0 -28
  206. data/features/edit_page.feature +0 -116
  207. data/features/favicon.feature +0 -20
  208. data/features/first_boot.feature +0 -16
  209. data/features/footer.feature +0 -28
  210. data/features/global_navigation.feature +0 -29
  211. data/features/i18n.feature +0 -55
  212. data/features/index/batch_actions.feature +0 -218
  213. data/features/index/filters.feature +0 -250
  214. data/features/index/format_as_csv.feature +0 -220
  215. data/features/index/formats.feature +0 -88
  216. data/features/index/index_as_block.feature +0 -15
  217. data/features/index/index_as_blog.feature +0 -69
  218. data/features/index/index_as_grid.feature +0 -45
  219. data/features/index/index_as_table.feature +0 -291
  220. data/features/index/index_blank_slate.feature +0 -83
  221. data/features/index/index_parameters.feature +0 -75
  222. data/features/index/index_scope_to.feature +0 -56
  223. data/features/index/index_scopes.feature +0 -285
  224. data/features/index/page_title.feature +0 -41
  225. data/features/index/pagination.feature +0 -63
  226. data/features/index/switch_index_view.feature +0 -73
  227. data/features/menu.feature +0 -72
  228. data/features/meta_tags.feature +0 -21
  229. data/features/new_page.feature +0 -136
  230. data/features/registering_assets.feature +0 -38
  231. data/features/registering_pages.feature +0 -237
  232. data/features/registering_resources.feature +0 -33
  233. data/features/renamed_resource.feature +0 -30
  234. data/features/root_to.feature +0 -17
  235. data/features/show/attributes_table_title.feature +0 -54
  236. data/features/show/columns.feature +0 -40
  237. data/features/show/default_content.feature +0 -44
  238. data/features/show/page_title.feature +0 -58
  239. data/features/show/tabs.feature +0 -33
  240. data/features/sidebar_sections.feature +0 -210
  241. data/features/site_title.feature +0 -47
  242. data/features/specifying_actions.feature +0 -118
  243. data/features/step_definitions/action_item_steps.rb +0 -7
  244. data/features/step_definitions/action_link_steps.rb +0 -19
  245. data/features/step_definitions/additional_web_steps.rb +0 -81
  246. data/features/step_definitions/asset_steps.rb +0 -15
  247. data/features/step_definitions/attribute_steps.rb +0 -18
  248. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  249. data/features/step_definitions/batch_action_steps.rb +0 -81
  250. data/features/step_definitions/blog_steps.rb +0 -3
  251. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  252. data/features/step_definitions/column_steps.rb +0 -8
  253. data/features/step_definitions/comment_steps.rb +0 -32
  254. data/features/step_definitions/configuration_steps.rb +0 -100
  255. data/features/step_definitions/dashboard_steps.rb +0 -15
  256. data/features/step_definitions/factory_steps.rb +0 -35
  257. data/features/step_definitions/filter_steps.rb +0 -47
  258. data/features/step_definitions/flash_steps.rb +0 -11
  259. data/features/step_definitions/footer_steps.rb +0 -11
  260. data/features/step_definitions/format_steps.rb +0 -56
  261. data/features/step_definitions/i18n_steps.rb +0 -11
  262. data/features/step_definitions/index_scope_steps.rb +0 -29
  263. data/features/step_definitions/index_views_steps.rb +0 -3
  264. data/features/step_definitions/layout_steps.rb +0 -3
  265. data/features/step_definitions/member_link_steps.rb +0 -7
  266. data/features/step_definitions/menu_steps.rb +0 -11
  267. data/features/step_definitions/meta_tag_steps.rb +0 -3
  268. data/features/step_definitions/pagination_steps.rb +0 -15
  269. data/features/step_definitions/sidebar_steps.rb +0 -11
  270. data/features/step_definitions/site_title_steps.rb +0 -17
  271. data/features/step_definitions/tab_steps.rb +0 -8
  272. data/features/step_definitions/table_steps.rb +0 -116
  273. data/features/step_definitions/user_steps.rb +0 -52
  274. data/features/step_definitions/web_steps.rb +0 -86
  275. data/features/sti_resource.feature +0 -65
  276. data/features/strong_parameters.feature +0 -69
  277. data/features/support/env.rb +0 -122
  278. data/features/support/paths.rb +0 -73
  279. data/features/support/regular_env.rb +0 -7
  280. data/features/support/reload_env.rb +0 -7
  281. data/features/support/selectors.rb +0 -45
  282. data/features/users/logging_in.feature +0 -36
  283. data/features/users/logging_out.feature +0 -13
  284. data/features/users/resetting_password.feature +0 -34
  285. data/gemfiles/rails_42.gemfile +0 -10
  286. data/gemfiles/rails_50.gemfile +0 -10
  287. data/gemfiles/rails_51.gemfile +0 -10
  288. data/gemfiles/rails_52.gemfile +0 -11
  289. data/lib/active_admin/event.rb +0 -24
  290. data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
  291. data/lib/active_admin/helpers/settings.rb +0 -114
  292. data/lib/bug_report_templates/active_admin_master.rb +0 -112
  293. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  294. data/spec/bug_report_templates_spec.rb +0 -26
  295. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  296. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  297. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  298. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  299. data/spec/javascripts/fixtures/flashes.html +0 -2
  300. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  301. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  302. data/spec/javascripts/support/jasmine.yml +0 -74
  303. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  304. data/spec/rails_helper.rb +0 -59
  305. data/spec/requests/default_namespace_spec.rb +0 -81
  306. data/spec/requests/memory_spec.rb +0 -25
  307. data/spec/requests/stylesheets_spec.rb +0 -18
  308. data/spec/spec_helper.rb +0 -1
  309. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  310. data/spec/support/active_admin_request_helpers.rb +0 -39
  311. data/spec/support/rails_template.rb +0 -153
  312. data/spec/support/rails_template_with_data.rb +0 -327
  313. data/spec/support/templates/admin/stores.rb +0 -7
  314. data/spec/support/templates/en.yml +0 -8
  315. data/spec/support/templates/manifest.js +0 -3
  316. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  317. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  318. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  319. data/spec/support/templates/policies/application_policy.rb +0 -44
  320. data/spec/support/templates/policies/category_policy.rb +0 -7
  321. data/spec/support/templates/policies/post_policy.rb +0 -15
  322. data/spec/support/templates/policies/store_policy.rb +0 -11
  323. data/spec/support/templates/policies/user_policy.rb +0 -11
  324. data/spec/support/templates/post_decorator.rb +0 -24
  325. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  326. data/spec/unit/action_builder_spec.rb +0 -158
  327. data/spec/unit/active_admin_spec.rb +0 -11
  328. data/spec/unit/application_spec.rb +0 -184
  329. data/spec/unit/asset_registration_spec.rb +0 -81
  330. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  331. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  332. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  333. data/spec/unit/auto_link_spec.rb +0 -93
  334. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  335. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  336. data/spec/unit/belongs_to_spec.rb +0 -76
  337. data/spec/unit/cancan_adapter_spec.rb +0 -43
  338. data/spec/unit/comments_spec.rb +0 -176
  339. data/spec/unit/component_spec.rb +0 -18
  340. data/spec/unit/config_shared_examples.rb +0 -59
  341. data/spec/unit/controller_filters_spec.rb +0 -41
  342. data/spec/unit/csv_builder_spec.rb +0 -313
  343. data/spec/unit/dependency_spec.rb +0 -135
  344. data/spec/unit/devise_spec.rb +0 -110
  345. data/spec/unit/dsl_spec.rb +0 -120
  346. data/spec/unit/filters/active_filter_spec.rb +0 -189
  347. data/spec/unit/filters/active_spec.rb +0 -24
  348. data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
  349. data/spec/unit/filters/resource_spec.rb +0 -128
  350. data/spec/unit/form_builder_spec.rb +0 -990
  351. data/spec/unit/generators/install_spec.rb +0 -31
  352. data/spec/unit/helpers/collection_spec.rb +0 -68
  353. data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
  354. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  355. data/spec/unit/helpers/settings_spec.rb +0 -30
  356. data/spec/unit/i18n_spec.rb +0 -29
  357. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  358. data/spec/unit/menu_collection_spec.rb +0 -62
  359. data/spec/unit/menu_item_spec.rb +0 -141
  360. data/spec/unit/menu_spec.rb +0 -71
  361. data/spec/unit/namespace/authorization_spec.rb +0 -27
  362. data/spec/unit/namespace/register_page_spec.rb +0 -99
  363. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  364. data/spec/unit/namespace_spec.rb +0 -124
  365. data/spec/unit/order_clause_spec.rb +0 -81
  366. data/spec/unit/page_controller_spec.rb +0 -5
  367. data/spec/unit/page_spec.rb +0 -128
  368. data/spec/unit/pretty_format_spec.rb +0 -82
  369. data/spec/unit/pundit_adapter_spec.rb +0 -98
  370. data/spec/unit/resource/action_items_spec.rb +0 -69
  371. data/spec/unit/resource/attributes_spec.rb +0 -49
  372. data/spec/unit/resource/includes_spec.rb +0 -21
  373. data/spec/unit/resource/menu_spec.rb +0 -18
  374. data/spec/unit/resource/naming_spec.rb +0 -122
  375. data/spec/unit/resource/ordering_spec.rb +0 -35
  376. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  377. data/spec/unit/resource/pagination_spec.rb +0 -38
  378. data/spec/unit/resource/routes_spec.rb +0 -125
  379. data/spec/unit/resource/scopes_spec.rb +0 -50
  380. data/spec/unit/resource/sidebars_spec.rb +0 -43
  381. data/spec/unit/resource_collection_spec.rb +0 -175
  382. data/spec/unit/resource_controller/data_access_spec.rb +0 -234
  383. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  384. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  385. data/spec/unit/resource_controller_spec.rb +0 -273
  386. data/spec/unit/resource_registration_spec.rb +0 -61
  387. data/spec/unit/resource_spec.rb +0 -320
  388. data/spec/unit/routing_spec.rb +0 -211
  389. data/spec/unit/scope_spec.rb +0 -209
  390. data/spec/unit/settings_spec.rb +0 -117
  391. data/spec/unit/view_factory_spec.rb +0 -19
  392. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
  393. data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
  394. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  395. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  396. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  397. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  398. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  399. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  400. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  401. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  402. data/spec/unit/views/components/columns_spec.rb +0 -187
  403. data/spec/unit/views/components/index_list_spec.rb +0 -49
  404. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  405. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  406. data/spec/unit/views/components/panel_spec.rb +0 -58
  407. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  408. data/spec/unit/views/components/site_title_spec.rb +0 -76
  409. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  410. data/spec/unit/views/components/table_for_spec.rb +0 -436
  411. data/spec/unit/views/components/tabs_spec.rb +0 -67
  412. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  413. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  414. data/spec/unit/views/pages/form_spec.rb +0 -54
  415. data/spec/unit/views/pages/index_spec.rb +0 -60
  416. data/spec/unit/views/pages/layout_spec.rb +0 -59
  417. data/spec/unit/views/pages/show_spec.rb +0 -32
  418. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  419. data/tasks/docs.rake +0 -64
  420. data/tasks/lint.rake +0 -21
  421. data/tasks/local.rake +0 -25
  422. data/tasks/parallel_tests.rake +0 -66
  423. data/tasks/test.rake +0 -29
@@ -1,73 +0,0 @@
1
- module ActiveAdminIntegrationSpecHelper
2
- extend self
3
-
4
- def load_defaults!
5
- ActiveAdmin.unload!
6
- ActiveAdmin.load!
7
- ActiveAdmin.register(Category)
8
- ActiveAdmin.register(User)
9
- ActiveAdmin.register(Post){ belongs_to :user, optional: true }
10
- reload_menus!
11
- end
12
-
13
- def reload_menus!
14
- ActiveAdmin.application.namespaces.each{|n| n.reset_menu! }
15
- end
16
-
17
- # Sometimes we need to reload the routes within
18
- # the application to test them out
19
- def reload_routes!
20
- Rails.application.reload_routes!
21
- end
22
-
23
- # Helper method to load resources and ensure that Active Admin is
24
- # setup with the new configurations.
25
- #
26
- # Eg:
27
- # load_resources do
28
- # ActiveAdmin.register(Post)
29
- # end
30
- #
31
- def load_resources
32
- ActiveAdmin.unload!
33
- yield
34
- reload_menus!
35
- reload_routes!
36
- end
37
-
38
- def arbre(assigns = {}, helpers = mock_action_view, &block)
39
- Arbre::Context.new(assigns, helpers, &block)
40
- end
41
-
42
- def render_arbre_component(assigns = {}, helpers = mock_action_view, &block)
43
- arbre(assigns, helpers, &block).children.first
44
- end
45
-
46
- # Returns a fake action view instance to use with our renderers
47
- def mock_action_view(assigns = {})
48
- controller = ActionView::TestCase::TestController.new
49
- #this line needed because of rails bug https://github.com/rails/rails/commit/d8e98897b5703ac49bf0764da71a06d64ecda9b0
50
- controller.params = ActionController::Parameters.new
51
- MockActionView.new(ActionController::Base.view_paths, assigns, controller)
52
- end
53
- alias_method :action_view, :mock_action_view
54
-
55
- # A mock action view to test view helpers
56
- class MockActionView < ::ActionView::Base
57
- include ActiveAdmin::ViewHelpers
58
- include Rails.application.routes.url_helpers
59
- end
60
-
61
- def with_translation(translation)
62
- # If no translations have been loaded, any later calls to `I18n.t` will
63
- # cause the full translation hash to be loaded, possibly overwritting what
64
- # we've loaded via `store_translations`. We use this hack to prevent that.
65
- # TODO: Might not be necessary anymore once
66
- # https://github.com/svenfuchs/i18n/pull/353 lands.
67
- I18n.backend.send(:init_translations)
68
- I18n.backend.store_translations I18n.locale, translation
69
- yield
70
- ensure
71
- I18n.backend.reload!
72
- end
73
- end
@@ -1,39 +0,0 @@
1
- require "action_dispatch"
2
- require "capybara/rails"
3
- require "capybara/dsl"
4
-
5
- module ActiveAdminRequestHelpers
6
- extend ActiveSupport::Concern
7
-
8
- include ActionDispatch::Integration::Runner
9
- include RSpec::Rails::TestUnitAssertionAdapter
10
- include ActionDispatch::Assertions
11
- include Capybara::DSL
12
- include RSpec::Matchers
13
-
14
- def app
15
- ::Rails.application
16
- end
17
-
18
- def last_response
19
- page
20
- end
21
-
22
- included do
23
- before do
24
- @router = ::Rails.application.routes
25
- end
26
- end
27
-
28
- def with_temp_application(application)
29
- original_application = ActiveAdmin.application
30
- ActiveAdmin.application = application
31
- load_defaults!
32
- reload_routes!
33
-
34
- yield
35
-
36
- ensure
37
- ActiveAdmin.application = original_application
38
- end
39
- end
@@ -1,153 +0,0 @@
1
- # Rails template to build the sample app for specs
2
-
3
- copy_file File.expand_path('../templates/manifest.js', __FILE__), 'app/assets/config/manifest.js', force: true
4
-
5
- create_file 'app/assets/stylesheets/some-random-css.css'
6
- create_file 'app/assets/javascripts/some-random-js.js'
7
- create_file 'app/assets/images/a/favicon.ico'
8
-
9
- generate :model, 'post title:string body:text published_date:date author_id:integer ' +
10
- 'position:integer custom_category_id:integer starred:boolean foo_id:integer'
11
- create_file 'app/models/post.rb', <<-RUBY.strip_heredoc, force: true
12
- class Post < ActiveRecord::Base
13
- belongs_to :category, foreign_key: :custom_category_id
14
- belongs_to :author, class_name: 'User'
15
- has_many :taggings
16
- accepts_nested_attributes_for :author
17
- accepts_nested_attributes_for :taggings, allow_destroy: true
18
-
19
- ransacker :custom_title_searcher do |parent|
20
- parent.table[:title]
21
- end
22
-
23
- ransacker :custom_created_at_searcher do |parent|
24
- parent.table[:created_at]
25
- end
26
-
27
- ransacker :custom_searcher_numeric, type: :numeric do
28
- # nothing to see here
29
- end
30
-
31
- end
32
- RUBY
33
- copy_file File.expand_path('../templates/post_decorator.rb', __FILE__), 'app/models/post_decorator.rb'
34
-
35
- generate :model, 'blog/post title:string body:text published_date:date author_id:integer ' +
36
- 'position:integer custom_category_id:integer starred:boolean foo_id:integer'
37
- create_file 'app/models/blog/post.rb', <<-RUBY.strip_heredoc, force: true
38
- class Blog::Post < ActiveRecord::Base
39
- belongs_to :category, foreign_key: :custom_category_id
40
- belongs_to :author, class_name: 'User'
41
- has_many :taggings
42
- accepts_nested_attributes_for :author
43
- accepts_nested_attributes_for :taggings, allow_destroy: true
44
-
45
- end
46
- RUBY
47
-
48
- generate :model, 'profile user_id:integer bio:text'
49
-
50
- generate :model, 'user type:string first_name:string last_name:string username:string age:integer'
51
- create_file 'app/models/user.rb', <<-RUBY.strip_heredoc, force: true
52
- class User < ActiveRecord::Base
53
- class VIP < self
54
- end
55
- has_many :posts, foreign_key: 'author_id'
56
- has_one :profile
57
- accepts_nested_attributes_for :profile, allow_destroy: true
58
- accepts_nested_attributes_for :posts, allow_destroy: true
59
-
60
- ransacker :age_in_five_years, type: :numeric, formatter: proc { |v| v.to_i - 5 } do |parent|
61
- parent.table[:age]
62
- end
63
-
64
- def display_name
65
- "\#{first_name} \#{last_name}"
66
- end
67
- end
68
- RUBY
69
-
70
- create_file 'app/models/profile.rb', <<-RUBY.strip_heredoc, force: true
71
- class Profile < ActiveRecord::Base
72
- belongs_to :user
73
- end
74
- RUBY
75
-
76
- generate :model, 'publisher --migration=false --parent=User'
77
-
78
- generate :model, 'category name:string description:text'
79
- create_file 'app/models/category.rb', <<-RUBY.strip_heredoc, force: true
80
- class Category < ActiveRecord::Base
81
- has_many :posts, foreign_key: :custom_category_id
82
- has_many :authors, through: :posts
83
- accepts_nested_attributes_for :posts
84
- end
85
- RUBY
86
-
87
- generate :model, 'store name:string'
88
-
89
- generate :model, 'tag name:string'
90
- create_file 'app/models/tag.rb', <<-RUBY.strip_heredoc, force: true
91
- class Tag < ActiveRecord::Base
92
- end
93
- RUBY
94
-
95
- generate :model, 'tagging post_id:integer tag_id:integer position:integer'
96
- create_file 'app/models/tagging.rb', <<-RUBY.strip_heredoc, force: true
97
- class Tagging < ActiveRecord::Base
98
- belongs_to :post
99
- belongs_to :tag
100
-
101
- delegate :name, to: :tag, prefix: true
102
- end
103
- RUBY
104
-
105
- gsub_file 'config/environments/test.rb', / config.cache_classes = true/, <<-RUBY
106
-
107
- config.cache_classes = !ENV['CLASS_RELOADING']
108
- config.action_mailer.default_url_options = {host: 'example.com'}
109
- config.assets.precompile += %w( some-random-css.css some-random-js.js a/favicon.ico )
110
-
111
- config.active_record.maintain_test_schema = false
112
-
113
- if Rails::VERSION::MAJOR >= 5
114
- config.active_record.belongs_to_required_by_default = false
115
- end
116
-
117
- RUBY
118
-
119
- # Add our local Active Admin to the application
120
- gem 'activeadmin', path: '../..'
121
- gem 'devise'
122
-
123
- run 'bundle install'
124
-
125
- # Setup Active Admin
126
- generate 'active_admin:install'
127
-
128
- # Force strong parameters to raise exceptions
129
- inject_into_file 'config/application.rb', <<-RUBY, after: 'class Application < Rails::Application'
130
-
131
- config.action_controller.action_on_unpermitted_parameters = :raise
132
-
133
- RUBY
134
-
135
- # Add some translations
136
- append_file 'config/locales/en.yml', File.read(File.expand_path('../templates/en.yml', __FILE__))
137
-
138
- # Add predefined admin resources
139
- directory File.expand_path('../templates/admin', __FILE__), 'app/admin'
140
-
141
- # Add predefined policies
142
- directory File.expand_path('../templates/policies', __FILE__), 'app/policies'
143
-
144
- if ENV['RAILS_ENV'] != 'test'
145
- inject_into_file 'config/routes.rb', "\n root to: redirect('admin')", after: /.*routes.draw do/
146
- end
147
-
148
- rake "db:drop db:create db:migrate", env: 'development'
149
- rake "db:drop db:create db:migrate", env: 'test'
150
-
151
- if ENV['INSTALL_PARALLEL']
152
- inject_into_file 'config/database.yml', "<%= ENV['TEST_ENV_NUMBER'] %>", after: 'test.sqlite3'
153
- end
@@ -1,327 +0,0 @@
1
- apply File.expand_path("../rails_template.rb", __FILE__)
2
-
3
- inject_into_file 'config/initializers/active_admin.rb', <<-RUBY, after: "ActiveAdmin.setup do |config|\n"
4
-
5
- config.comments_menu = { parent: 'Administrative' }
6
- RUBY
7
-
8
- inject_into_file 'app/admin/admin_users.rb', <<-RUBY, after: "ActiveAdmin.register AdminUser do\n"
9
-
10
- menu parent: "Administrative", priority: 1
11
- RUBY
12
-
13
- generate :'active_admin:page', 'KitchenSink'
14
-
15
- gsub_file 'app/admin/kitchen_sink.rb', /^ *content.*?end/m, <<-RUBY
16
-
17
- sidebar "Sample Sidebar" do
18
- para "Sidebars can also be used on custom pages."
19
- para do
20
- a "Active Admin", href: "https://github.com/activeadmin/activeadmin"
21
- text_node "is a Ruby on Rails framework for"
22
- em "creating elegant backends"
23
- text_node "for"
24
- strong "website administration."
25
- end
26
- para do
27
- abbr "HTML", title: "HyperText Markup Language"
28
- text_node "is the most basic building block of the Web."
29
- end
30
- end
31
-
32
- content do
33
- columns do
34
- column do
35
- panel "Panel title" do
36
- h1 "This is an h1"
37
- h2 "This is an h2"
38
- h3 "This is an h3"
39
- end
40
- end
41
- column do
42
- table_for User.all do
43
- column :id
44
- column :display_name
45
- column :username
46
- column :age
47
- column :updated_at
48
- end
49
- end
50
- end
51
-
52
- tabs do
53
- tab :first do
54
- ul do
55
- li "List item"
56
- li "Another list item"
57
- li "Last item"
58
- end
59
- ol do
60
- li "First list item"
61
- li "Second list item"
62
- li "Third list item"
63
- end
64
- end
65
- tab :second do
66
- para "A popular quote."
67
- blockquote do
68
- text_node "&ldqou;Be yourself; everyone else is already taken.&rdqou;".html_safe
69
- cite "― Oscar Wilde"
70
- end
71
- end
72
- tab :third do
73
- para "Third tab content."
74
- end
75
- end
76
- end
77
- RUBY
78
-
79
- %w{Post User Category Tag}.each do |type|
80
- generate :'active_admin:resource', type
81
- end
82
-
83
- inject_into_file 'app/admin/categories.rb', <<-RUBY, after: "ActiveAdmin.register Category do\n"
84
-
85
- config.create_another = true
86
-
87
- permit_params [:name, :description]
88
- RUBY
89
-
90
- inject_into_file 'app/admin/users.rb', <<-RUBY, after: "ActiveAdmin.register User do\n"
91
-
92
- config.create_another = true
93
-
94
- permit_params [:first_name, :last_name, :username, :age]
95
-
96
- index as: :grid do |user|
97
- div for: user do
98
- resource_selection_cell user
99
- h2 link_to(user.display_name, admin_user_path(user)), style: 'margin-bottom: 0'
100
- para do
101
- strong user.username, style: 'text-transform: uppercase; font-size: 10px;'
102
- br
103
- em user.age
104
- text_node 'years old'
105
- end
106
- end
107
- end
108
-
109
- show do
110
- attributes_table do
111
- row :id
112
- row :first_name
113
- row :last_name
114
- row :username
115
- row :age
116
- row :created_at
117
- row :updated_at
118
- end
119
-
120
- panel 'Posts' do
121
- table_for(user.posts.includes(:category).order(:updated_at).limit(10)) do
122
- column :id do |post|
123
- link_to post.id, admin_post_path(post)
124
- end
125
- column :title
126
- column :published_date
127
- column :category
128
- column :created_at
129
- column :updated_at
130
- end
131
- para do
132
- link_to "View all posts", admin_posts_path('q[author_id_eq]' => user.id)
133
- end
134
- end
135
- end
136
- RUBY
137
-
138
- inject_into_file 'app/admin/posts.rb', <<-'RUBY', after: "ActiveAdmin.register Post do\n"
139
-
140
- permit_params :custom_category_id, :author_id, :title, :body, :published_date, :position, :starred, taggings_attributes: [ :id, :tag_id, :name, :position, :_destroy ]
141
-
142
- includes :author, :category, :taggings
143
-
144
- scope :all, default: true
145
-
146
- scope :drafts do |posts|
147
- posts.where(["published_date IS NULL"])
148
- end
149
-
150
- scope :scheduled do |posts|
151
- posts.where(["posts.published_date IS NOT NULL AND posts.published_date > ?", Time.now.utc])
152
- end
153
-
154
- scope :published do |posts|
155
- posts.where(["posts.published_date IS NOT NULL AND posts.published_date < ?", Time.now.utc])
156
- end
157
-
158
- scope :my_posts do |posts|
159
- posts.where(author_id: current_admin_user.id)
160
- end
161
-
162
- batch_action :set_starred, form: { starred: :checkbox } do |ids, inputs|
163
- Post.where(id: ids).update_all(starred: inputs['starred'].present?)
164
- redirect_to collection_path, notice: "The posts have been updated."
165
- end
166
-
167
- index do
168
- selectable_column
169
- id_column
170
- column :title
171
- column :published_date
172
- column :author
173
- column :category
174
- column :starred
175
- column :position
176
- column :created_at
177
- column :updated_at
178
- end
179
-
180
- sidebar :author, only: :show do
181
- attributes_table_for post.author do
182
- row :id do |author|
183
- link_to author.id, admin_user_path(author)
184
- end
185
- row :first_name
186
- row :last_name
187
- row :username
188
- row :age
189
- end
190
- end
191
-
192
- member_action :toggle_starred, method: :put do
193
- resource.update(starred: !resource.starred)
194
- redirect_to resource_path, notice: "Post updated."
195
- end
196
-
197
- action_item :toggle_starred, only: :show do
198
- link_to 'Toggle Starred', toggle_starred_admin_post_path(post), method: :put
199
- end
200
-
201
- show do |post|
202
- attributes_table do
203
- row :id
204
- row :title
205
- row :published_date
206
- row :author
207
- row :body
208
- row :category
209
- row :starred
210
- row :position
211
- row :created_at
212
- row :updated_at
213
- end
214
-
215
- columns do
216
- column do
217
- panel 'Tags' do
218
- table_for(post.taggings.order(:position)) do
219
- column :id do |tagging|
220
- link_to tagging.tag_id, admin_tag_path(tagging.tag)
221
- end
222
- column :tag, &:tag_name
223
- column :position
224
- column :updated_at
225
- end
226
- end
227
- end
228
- column do
229
- panel 'Category' do
230
- attributes_table_for post.category do
231
- row :id do |category|
232
- link_to category.id, admin_category_path(category)
233
- end
234
- row :description
235
- end
236
- end
237
- end
238
- end
239
- end
240
-
241
- form do |f|
242
- columns do
243
- column do
244
- f.inputs 'Details' do
245
- f.input :title
246
- f.input :author
247
- f.input :published_date,
248
- hint: f.object.persisted? && "Created at #{f.object.created_at}"
249
- f.input :custom_category_id
250
- f.input :category
251
- f.input :position
252
- f.input :starred
253
- end
254
- end
255
- column do
256
- f.inputs 'Content' do
257
- f.input :body
258
- end
259
- end
260
- end
261
- f.inputs "Tags" do
262
- f.has_many :taggings, sortable: :position do |t|
263
- t.input :tag
264
- t.input :_destroy, as: :boolean
265
- end
266
- end
267
- para "Press cancel to return to the list without saving."
268
- f.actions
269
- end
270
- RUBY
271
-
272
- inject_into_file 'app/admin/tags.rb', <<-RUBY, after: "ActiveAdmin.register Tag do\n"
273
-
274
- config.create_another = true
275
-
276
- permit_params [:name]
277
-
278
- index do
279
- selectable_column
280
- id_column
281
- column :name
282
- column :created_at
283
- actions dropdown: true do |tag|
284
- item "Preview", admin_tag_path(tag)
285
- end
286
- end
287
-
288
- RUBY
289
-
290
- append_file "db/seeds.rb", "\n\n" + <<-RUBY.strip_heredoc
291
- users = ["Jimi Hendrix", "Jimmy Page", "Yngwie Malmsteen", "Eric Clapton", "Kirk Hammett"].collect do |name|
292
- first, last = name.split(" ")
293
- User.create! first_name: first,
294
- last_name: last,
295
- username: [first,last].join('-').downcase,
296
- age: rand(80)
297
- end
298
-
299
- categories = ["Rock", "Pop Rock", "Alt-Country", "Blues", "Dub-Step"].collect do |name|
300
- Category.create! name: name
301
- end
302
-
303
- published_at_values = [Time.now.utc - 5.days, Time.now.utc - 1.day, nil, Time.now.utc + 3.days]
304
-
305
- 1_000.times do |i|
306
- user = users[i % users.size]
307
- cat = categories[i % categories.size]
308
- published = published_at_values[i % published_at_values.size]
309
- Post.create title: "Blog Post \#{i}",
310
- body: "Blog post \#{i} is written by \#{user.username} about \#{cat.name}",
311
- category: cat,
312
- published_date: published,
313
- author: user,
314
- starred: true
315
- end
316
-
317
- 800.times do |i|
318
- ActiveAdmin::Comment.create!(
319
- namespace: :admin,
320
- author: AdminUser.first,
321
- body: "Test comment #{i}",
322
- resource: categories.sample,
323
- )
324
- end
325
- RUBY
326
-
327
- rake 'db:seed'
@@ -1,7 +0,0 @@
1
- ActiveAdmin.register Store do
2
-
3
- permit_params :name
4
-
5
- index pagination_total: false
6
-
7
- end
@@ -1,8 +0,0 @@
1
- # Sample translations used to test ActiveAdmin's I18n integration.
2
- activerecord:
3
- models:
4
- store:
5
- one: Bookstore
6
- other: Bookstores
7
- active_admin:
8
- download: "Download this:"
@@ -1,3 +0,0 @@
1
- //= link_tree ../images
2
- //= link_directory ../javascripts .js
3
- //= link_directory ../stylesheets .css
@@ -1,9 +0,0 @@
1
- module ActiveAdmin
2
- class CommentPolicy < ApplicationPolicy
3
- class Scope < Struct.new(:user, :scope)
4
- def resolve
5
- scope
6
- end
7
- end
8
- end
9
- end
@@ -1,18 +0,0 @@
1
- module ActiveAdmin
2
- class PagePolicy < ApplicationPolicy
3
- class Scope < Struct.new(:user, :scope)
4
- def resolve
5
- scope
6
- end
7
- end
8
-
9
- def show?
10
- case record.name
11
- when "Dashboard"
12
- true
13
- else
14
- false
15
- end
16
- end
17
- end
18
- end
@@ -1,11 +0,0 @@
1
- class AdminUserPolicy < ApplicationPolicy
2
- class Scope < Struct.new(:user, :scope)
3
- def resolve
4
- scope
5
- end
6
- end
7
-
8
- def destroy?
9
- record != user
10
- end
11
- end
@@ -1,44 +0,0 @@
1
- class ApplicationPolicy
2
- attr_reader :user, :record
3
-
4
- def initialize(user, record)
5
- @user = user
6
- @record = record
7
- end
8
-
9
- def index?
10
- true
11
- end
12
-
13
- def show?
14
- scope.where(id: record.id).exists?
15
- end
16
-
17
- def new?
18
- create?
19
- end
20
-
21
- def create?
22
- true
23
- end
24
-
25
- def edit?
26
- update?
27
- end
28
-
29
- def update?
30
- true
31
- end
32
-
33
- def destroy?
34
- true
35
- end
36
-
37
- def destroy_all?
38
- true
39
- end
40
-
41
- def scope
42
- Pundit.policy_scope!(user, record.class)
43
- end
44
- end