activeadmin 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +592 -0
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/CONTRIBUTING.md +215 -0
  5. data/LICENSE +20 -0
  6. data/README.md +117 -0
  7. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  8. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  9. data/app/assets/images/active_admin/orderable.png +0 -0
  10. data/app/assets/javascripts/active_admin/base.es6 +23 -0
  11. data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
  12. data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
  13. data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
  14. data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
  15. data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
  16. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
  17. data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
  18. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
  19. data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
  20. data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
  21. data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
  22. data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
  23. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
  24. data/app/assets/stylesheets/active_admin/_base.scss +41 -0
  25. data/app/assets/stylesheets/active_admin/_forms.scss +326 -0
  26. data/app/assets/stylesheets/active_admin/_header.scss +156 -0
  27. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
  28. data/app/assets/stylesheets/active_admin/_typography.scss +100 -0
  29. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +6 -0
  30. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
  31. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  32. data/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
  33. data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
  34. data/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
  35. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +149 -0
  36. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +152 -0
  37. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  38. data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  39. data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
  40. data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  41. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  42. data/app/assets/stylesheets/active_admin/components/_pagination.scss +55 -0
  43. data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  44. data/app/assets/stylesheets/active_admin/components/_scopes.scss +13 -0
  45. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
  46. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  47. data/app/assets/stylesheets/active_admin/components/_tables.scss +113 -0
  48. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  49. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  50. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -0
  51. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
  52. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
  53. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
  54. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
  55. data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
  56. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  57. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
  58. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +34 -0
  59. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  60. data/app/assets/stylesheets/active_admin/print.scss +287 -0
  61. data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
  62. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
  63. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +41 -0
  64. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  65. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  66. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  67. data/app/views/active_admin/devise/passwords/edit.html.erb +18 -0
  68. data/app/views/active_admin/devise/passwords/new.html.erb +15 -0
  69. data/app/views/active_admin/devise/registrations/new.html.erb +21 -0
  70. data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
  71. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  72. data/app/views/active_admin/devise/shared/_links.erb +33 -0
  73. data/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
  74. data/app/views/active_admin/page/index.html.arb +1 -0
  75. data/app/views/active_admin/resource/edit.html.arb +1 -0
  76. data/app/views/active_admin/resource/index.html.arb +1 -0
  77. data/app/views/active_admin/resource/new.html.arb +1 -0
  78. data/app/views/active_admin/resource/show.html.arb +1 -0
  79. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  80. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  81. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  82. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  83. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  84. data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  85. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  86. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  87. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  88. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  89. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  90. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  91. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  92. data/app/views/layouts/active_admin.html.arb +1 -0
  93. data/app/views/layouts/active_admin_logged_out.html.erb +39 -0
  94. data/config/locales/ar.yml +135 -0
  95. data/config/locales/bg.yml +119 -0
  96. data/config/locales/bs.yml +121 -0
  97. data/config/locales/ca.yml +105 -0
  98. data/config/locales/cs.yml +109 -0
  99. data/config/locales/da.yml +137 -0
  100. data/config/locales/de-CH.yml +101 -0
  101. data/config/locales/de.yml +162 -0
  102. data/config/locales/el.yml +126 -0
  103. data/config/locales/en-CA.yml +139 -0
  104. data/config/locales/en-GB.yml +139 -0
  105. data/config/locales/en.yml +162 -0
  106. data/config/locales/eo.yml +145 -0
  107. data/config/locales/es-MX.yml +96 -0
  108. data/config/locales/es.yml +162 -0
  109. data/config/locales/fa.yml +119 -0
  110. data/config/locales/fi.yml +112 -0
  111. data/config/locales/fr.yml +141 -0
  112. data/config/locales/he.yml +141 -0
  113. data/config/locales/hr.yml +123 -0
  114. data/config/locales/hu.yml +102 -0
  115. data/config/locales/id.yml +135 -0
  116. data/config/locales/it.yml +144 -0
  117. data/config/locales/ja.yml +141 -0
  118. data/config/locales/ko.yml +120 -0
  119. data/config/locales/lt.yml +142 -0
  120. data/config/locales/lv.yml +92 -0
  121. data/config/locales/mk.yml +134 -0
  122. data/config/locales/nb.yml +130 -0
  123. data/config/locales/nl.yml +144 -0
  124. data/config/locales/pl.yml +168 -0
  125. data/config/locales/pt-BR.yml +143 -0
  126. data/config/locales/pt-PT.yml +92 -0
  127. data/config/locales/ro.yml +96 -0
  128. data/config/locales/ru.yml +141 -0
  129. data/config/locales/sk.yml +168 -0
  130. data/config/locales/sv-SE.yml +135 -0
  131. data/config/locales/tr.yml +144 -0
  132. data/config/locales/uk.yml +138 -0
  133. data/config/locales/vi.yml +134 -0
  134. data/config/locales/zh-CN.yml +143 -0
  135. data/config/locales/zh-TW.yml +135 -0
  136. data/docs/.gitignore +1 -0
  137. data/docs/0-installation.md +118 -0
  138. data/docs/1-general-configuration.md +204 -0
  139. data/docs/10-custom-pages.md +150 -0
  140. data/docs/11-decorators.md +59 -0
  141. data/docs/12-arbre-components.md +214 -0
  142. data/docs/13-authorization-adapter.md +285 -0
  143. data/docs/14-gotchas.md +138 -0
  144. data/docs/2-resource-customization.md +466 -0
  145. data/docs/3-index-pages.md +328 -0
  146. data/docs/3-index-pages/custom-index.md +35 -0
  147. data/docs/3-index-pages/index-as-block.md +19 -0
  148. data/docs/3-index-pages/index-as-blog.md +69 -0
  149. data/docs/3-index-pages/index-as-grid.md +27 -0
  150. data/docs/3-index-pages/index-as-table.md +234 -0
  151. data/docs/4-csv-format.md +74 -0
  152. data/docs/5-forms.md +232 -0
  153. data/docs/6-show-pages.md +81 -0
  154. data/docs/7-sidebars.md +75 -0
  155. data/docs/8-custom-actions.md +177 -0
  156. data/docs/9-batch-actions.md +237 -0
  157. data/docs/CNAME +1 -0
  158. data/docs/Gemfile +3 -0
  159. data/docs/Gemfile.lock +248 -0
  160. data/docs/README.md +24 -0
  161. data/docs/_config.yml +4 -0
  162. data/docs/_includes/footer.html +8 -0
  163. data/docs/_includes/google-analytics.html +16 -0
  164. data/docs/_includes/head.html +7 -0
  165. data/docs/_includes/toc.html +98 -0
  166. data/docs/_includes/top-menu.html +17 -0
  167. data/docs/_layouts/default.html +21 -0
  168. data/docs/documentation.md +60 -0
  169. data/docs/images/activeadmin.png +0 -0
  170. data/docs/images/code-header.png +0 -0
  171. data/docs/images/divider.png +0 -0
  172. data/docs/images/features.png +0 -0
  173. data/docs/images/tidelift.svg +14 -0
  174. data/docs/index.html +226 -0
  175. data/docs/stylesheets/main.css +1205 -0
  176. data/lib/active_admin.rb +134 -0
  177. data/lib/active_admin/abstract_view_factory.rb +47 -0
  178. data/lib/active_admin/application.rb +234 -0
  179. data/lib/active_admin/application_settings.rb +42 -0
  180. data/lib/active_admin/asset_registration.rb +29 -0
  181. data/lib/active_admin/authorization_adapter.rb +129 -0
  182. data/lib/active_admin/base_controller.rb +81 -0
  183. data/lib/active_admin/base_controller/authorization.rb +127 -0
  184. data/lib/active_admin/base_controller/menu.rb +34 -0
  185. data/lib/active_admin/batch_actions.rb +16 -0
  186. data/lib/active_admin/batch_actions/controller.rb +40 -0
  187. data/lib/active_admin/batch_actions/resource_extension.rb +155 -0
  188. data/lib/active_admin/batch_actions/views/batch_action_form.rb +38 -0
  189. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +58 -0
  190. data/lib/active_admin/batch_actions/views/selection_cells.rb +38 -0
  191. data/lib/active_admin/callbacks.rb +88 -0
  192. data/lib/active_admin/cancan_adapter.rb +36 -0
  193. data/lib/active_admin/component.rb +5 -0
  194. data/lib/active_admin/controller_action.rb +13 -0
  195. data/lib/active_admin/csv_builder.rb +132 -0
  196. data/lib/active_admin/dependency.rb +100 -0
  197. data/lib/active_admin/deprecation.rb +10 -0
  198. data/lib/active_admin/devise.rb +80 -0
  199. data/lib/active_admin/dsl.rb +160 -0
  200. data/lib/active_admin/dynamic_setting.rb +38 -0
  201. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  202. data/lib/active_admin/engine.rb +21 -0
  203. data/lib/active_admin/error.rb +64 -0
  204. data/lib/active_admin/filters.rb +11 -0
  205. data/lib/active_admin/filters/active.rb +29 -0
  206. data/lib/active_admin/filters/active_filter.rb +124 -0
  207. data/lib/active_admin/filters/active_sidebar.rb +54 -0
  208. data/lib/active_admin/filters/dsl.rb +21 -0
  209. data/lib/active_admin/filters/forms.rb +85 -0
  210. data/lib/active_admin/filters/formtastic_addons.rb +79 -0
  211. data/lib/active_admin/filters/resource_extension.rb +179 -0
  212. data/lib/active_admin/form_builder.rb +182 -0
  213. data/lib/active_admin/generators/boilerplate.rb +53 -0
  214. data/lib/active_admin/helpers/collection.rb +19 -0
  215. data/lib/active_admin/helpers/i18n.rb +7 -0
  216. data/lib/active_admin/helpers/optional_display.rb +38 -0
  217. data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
  218. data/lib/active_admin/helpers/scope_chain.rb +24 -0
  219. data/lib/active_admin/inputs.rb +21 -0
  220. data/lib/active_admin/inputs/datepicker_input.rb +27 -0
  221. data/lib/active_admin/inputs/filters/base.rb +44 -0
  222. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  223. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  224. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  225. data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
  226. data/lib/active_admin/inputs/filters/date_range_input.rb +49 -0
  227. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  228. data/lib/active_admin/inputs/filters/select_input.rb +58 -0
  229. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  230. data/lib/active_admin/inputs/filters/text_input.rb +25 -0
  231. data/lib/active_admin/localizers.rb +11 -0
  232. data/lib/active_admin/localizers/resource_localizer.rb +35 -0
  233. data/lib/active_admin/menu.rb +102 -0
  234. data/lib/active_admin/menu_collection.rb +91 -0
  235. data/lib/active_admin/menu_item.rb +69 -0
  236. data/lib/active_admin/namespace.rb +266 -0
  237. data/lib/active_admin/namespace_settings.rb +123 -0
  238. data/lib/active_admin/order_clause.rb +48 -0
  239. data/lib/active_admin/orm/active_record.rb +5 -0
  240. data/lib/active_admin/orm/active_record/comments.rb +101 -0
  241. data/lib/active_admin/orm/active_record/comments/comment.rb +31 -0
  242. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
  243. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
  244. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
  245. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  246. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +100 -0
  247. data/lib/active_admin/orm/mongoid.rb +1 -0
  248. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  249. data/lib/active_admin/page.rb +111 -0
  250. data/lib/active_admin/page_controller.rb +29 -0
  251. data/lib/active_admin/page_dsl.rb +32 -0
  252. data/lib/active_admin/page_presenter.rb +33 -0
  253. data/lib/active_admin/pundit_adapter.rb +81 -0
  254. data/lib/active_admin/resource.rb +220 -0
  255. data/lib/active_admin/resource/action_items.rb +120 -0
  256. data/lib/active_admin/resource/attributes.rb +47 -0
  257. data/lib/active_admin/resource/belongs_to.rb +53 -0
  258. data/lib/active_admin/resource/controllers.rb +19 -0
  259. data/lib/active_admin/resource/includes.rb +12 -0
  260. data/lib/active_admin/resource/menu.rb +67 -0
  261. data/lib/active_admin/resource/model.rb +15 -0
  262. data/lib/active_admin/resource/naming.rb +62 -0
  263. data/lib/active_admin/resource/ordering.rb +11 -0
  264. data/lib/active_admin/resource/page_presenters.rb +82 -0
  265. data/lib/active_admin/resource/pagination.rb +23 -0
  266. data/lib/active_admin/resource/routes.rb +147 -0
  267. data/lib/active_admin/resource/scope_to.rb +74 -0
  268. data/lib/active_admin/resource/scopes.rb +52 -0
  269. data/lib/active_admin/resource/sidebars.rb +28 -0
  270. data/lib/active_admin/resource_collection.rb +72 -0
  271. data/lib/active_admin/resource_controller.rb +66 -0
  272. data/lib/active_admin/resource_controller/action_builder.rb +31 -0
  273. data/lib/active_admin/resource_controller/data_access.rb +322 -0
  274. data/lib/active_admin/resource_controller/decorators.rb +102 -0
  275. data/lib/active_admin/resource_controller/polymorphic_routes.rb +36 -0
  276. data/lib/active_admin/resource_controller/resource_class_methods.rb +26 -0
  277. data/lib/active_admin/resource_controller/scoping.rb +31 -0
  278. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  279. data/lib/active_admin/resource_controller/streaming.rb +43 -0
  280. data/lib/active_admin/resource_dsl.rb +224 -0
  281. data/lib/active_admin/router.rb +114 -0
  282. data/lib/active_admin/scope.rb +64 -0
  283. data/lib/active_admin/settings_node.rb +19 -0
  284. data/lib/active_admin/sidebar_section.rb +39 -0
  285. data/lib/active_admin/version.rb +3 -0
  286. data/lib/active_admin/view_factory.rb +27 -0
  287. data/lib/active_admin/view_helpers.rb +20 -0
  288. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  289. data/lib/active_admin/view_helpers/auto_link_helper.rb +45 -0
  290. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +33 -0
  291. data/lib/active_admin/view_helpers/display_helper.rb +104 -0
  292. data/lib/active_admin/view_helpers/download_format_links_helper.rb +59 -0
  293. data/lib/active_admin/view_helpers/fields_for.rb +50 -0
  294. data/lib/active_admin/view_helpers/flash_helper.rb +14 -0
  295. data/lib/active_admin/view_helpers/form_helper.rb +20 -0
  296. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +100 -0
  297. data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
  298. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  299. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  300. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  301. data/lib/active_admin/views.rb +8 -0
  302. data/lib/active_admin/views/action_items.rb +17 -0
  303. data/lib/active_admin/views/components/active_admin_form.rb +155 -0
  304. data/lib/active_admin/views/components/attributes_table.rb +94 -0
  305. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  306. data/lib/active_admin/views/components/columns.rb +161 -0
  307. data/lib/active_admin/views/components/dropdown_menu.rb +71 -0
  308. data/lib/active_admin/views/components/index_list.rb +69 -0
  309. data/lib/active_admin/views/components/menu.rb +32 -0
  310. data/lib/active_admin/views/components/menu_item.rb +58 -0
  311. data/lib/active_admin/views/components/paginated_collection.rb +159 -0
  312. data/lib/active_admin/views/components/panel.rb +38 -0
  313. data/lib/active_admin/views/components/scopes.rb +72 -0
  314. data/lib/active_admin/views/components/sidebar.rb +13 -0
  315. data/lib/active_admin/views/components/sidebar_section.rb +34 -0
  316. data/lib/active_admin/views/components/site_title.rb +54 -0
  317. data/lib/active_admin/views/components/status_tag.rb +75 -0
  318. data/lib/active_admin/views/components/table_for.rb +209 -0
  319. data/lib/active_admin/views/components/tabs.rb +40 -0
  320. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  321. data/lib/active_admin/views/footer.rb +30 -0
  322. data/lib/active_admin/views/header.rb +19 -0
  323. data/lib/active_admin/views/index_as_block.rb +36 -0
  324. data/lib/active_admin/views/index_as_blog.rb +155 -0
  325. data/lib/active_admin/views/index_as_grid.rb +80 -0
  326. data/lib/active_admin/views/index_as_table.rb +399 -0
  327. data/lib/active_admin/views/pages/base.rb +126 -0
  328. data/lib/active_admin/views/pages/form.rb +64 -0
  329. data/lib/active_admin/views/pages/index.rb +163 -0
  330. data/lib/active_admin/views/pages/layout.rb +26 -0
  331. data/lib/active_admin/views/pages/page.rb +30 -0
  332. data/lib/active_admin/views/pages/show.rb +65 -0
  333. data/lib/active_admin/views/tabbed_navigation.rb +11 -0
  334. data/lib/active_admin/views/title_bar.rb +55 -0
  335. data/lib/activeadmin.rb +1 -0
  336. data/lib/generators/active_admin/assets/assets_generator.rb +14 -0
  337. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  338. data/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
  339. data/lib/generators/active_admin/devise/devise_generator.rb +68 -0
  340. data/lib/generators/active_admin/install/install_generator.rb +49 -0
  341. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +328 -0
  342. data/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
  343. data/lib/generators/active_admin/install/templates/dashboard.rb +32 -0
  344. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
  345. data/lib/generators/active_admin/page/USAGE +8 -0
  346. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  347. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  348. data/lib/generators/active_admin/resource/resource_generator.rb +20 -0
  349. data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
  350. data/lib/ransack_ext.rb +20 -0
  351. data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
  352. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  353. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  354. data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
  355. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  356. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  357. data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
  358. data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
  359. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  360. data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
  361. data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
  362. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  363. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  364. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  365. data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
  366. data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
  367. data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
  368. data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
  369. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  370. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
  371. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  372. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  373. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  374. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  375. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  376. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  377. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  378. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  379. data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
  380. metadata +624 -0
@@ -0,0 +1,29 @@
1
+ module ActiveAdmin
2
+
3
+ # All Pages controllers inherit from this controller.
4
+ class PageController < BaseController
5
+
6
+ # Active admin actions don't require layout. All custom actions do.
7
+ ACTIVE_ADMIN_ACTIONS = [:index]
8
+
9
+ actions :index
10
+
11
+ before_action :authorize_access!
12
+
13
+ def index(options = {}, &block)
14
+ render "active_admin/page/index"
15
+ end
16
+
17
+ def clear_page_actions!
18
+ active_admin_config.clear_page_actions!
19
+ end
20
+
21
+ private
22
+
23
+ def authorize_access!
24
+ permission = action_to_permission(params[:action])
25
+ authorize! permission, active_admin_config
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,32 @@
1
+ module ActiveAdmin
2
+ # This is the class where all the register_page blocks are evaluated.
3
+ class PageDSL < DSL
4
+
5
+ # Page content.
6
+ #
7
+ # The block should define the view using Arbre.
8
+ #
9
+ # Example:
10
+ #
11
+ # ActiveAdmin.register "My Page" do
12
+ # content do
13
+ # para "Sweet!"
14
+ # end
15
+ # end
16
+ #
17
+ def content(options = {}, &block)
18
+ config.set_page_presenter :index, ActiveAdmin::PagePresenter.new(options, &block)
19
+ end
20
+
21
+ def page_action(name, options = {}, &block)
22
+ config.page_actions << ControllerAction.new(name, options)
23
+ controller do
24
+ define_method(name, &block || Proc.new {})
25
+ end
26
+ end
27
+
28
+ def belongs_to(target, options = {})
29
+ config.belongs_to(target, options)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,33 @@
1
+ module ActiveAdmin
2
+
3
+ # A simple object that gets used to present different aspects of views
4
+ #
5
+ # Initialize with a set of options and a block. The options become
6
+ # available using hash style syntax.
7
+ #
8
+ # Usage:
9
+ #
10
+ # presenter = PagePresenter.new as: :table do
11
+ # # some awesome stuff
12
+ # end
13
+ #
14
+ # presenter[:as] #=> :table
15
+ # presenter.block #=> The block passed in to new
16
+ #
17
+ class PagePresenter
18
+
19
+ attr_reader :block, :options
20
+
21
+ delegate :has_key?, :fetch, to: :options
22
+
23
+ def initialize(options = {}, &block)
24
+ @options = options
25
+ @block = block
26
+ end
27
+
28
+ def [](key)
29
+ @options[key]
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,81 @@
1
+ ActiveAdmin::Dependency.pundit!
2
+
3
+ require 'pundit'
4
+
5
+ # Add a setting to the application to configure the pundit default policy
6
+ ActiveAdmin::Application.inheritable_setting :pundit_default_policy, nil
7
+ ActiveAdmin::Application.inheritable_setting :pundit_policy_namespace, nil
8
+
9
+ module ActiveAdmin
10
+
11
+ class PunditAdapter < AuthorizationAdapter
12
+
13
+ def authorized?(action, subject = nil)
14
+ policy = retrieve_policy(subject)
15
+ action = format_action(action, subject)
16
+
17
+ policy.respond_to?(action) && policy.public_send(action)
18
+ end
19
+
20
+ def scope_collection(collection, action = Auth::READ)
21
+ # scoping is appliable only to read/index action
22
+ # which means there is no way how to scope other actions
23
+ Pundit.policy_scope!(user, namespace(collection))
24
+ rescue Pundit::NotDefinedError => e
25
+ if default_policy_class && default_policy_class.const_defined?(:Scope)
26
+ default_policy_class::Scope.new(user, collection).resolve
27
+ else
28
+ raise e
29
+ end
30
+ end
31
+
32
+ def retrieve_policy(subject)
33
+ case subject
34
+ when nil then Pundit.policy!(user, namespace(resource))
35
+ when Class then Pundit.policy!(user, namespace(subject.new))
36
+ else Pundit.policy!(user, namespace(subject))
37
+ end
38
+ rescue Pundit::NotDefinedError => e
39
+ if default_policy_class
40
+ default_policy(user, subject)
41
+ else
42
+ raise e
43
+ end
44
+ end
45
+
46
+ def format_action(action, subject)
47
+ # https://github.com/varvet/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
48
+ case action
49
+ when Auth::CREATE then :create?
50
+ when Auth::UPDATE then :update?
51
+ when Auth::READ then subject.is_a?(Class) ? :index? : :show?
52
+ when Auth::DESTROY then subject.is_a?(Class) ? :destroy_all? : :destroy?
53
+ else "#{action}?"
54
+ end
55
+ end
56
+
57
+ private
58
+
59
+ def namespace(object)
60
+ if default_policy_namespace && !object.class.to_s.include?(default_policy_namespace.to_s.camelize)
61
+ [default_policy_namespace.to_sym, object]
62
+ else
63
+ object
64
+ end
65
+ end
66
+
67
+ def default_policy_class
68
+ ActiveAdmin.application.pundit_default_policy && ActiveAdmin.application.pundit_default_policy.constantize
69
+ end
70
+
71
+ def default_policy(user, subject)
72
+ default_policy_class.new(user, subject)
73
+ end
74
+
75
+ def default_policy_namespace
76
+ ActiveAdmin.application.pundit_policy_namespace
77
+ end
78
+
79
+ end
80
+
81
+ end
@@ -0,0 +1,220 @@
1
+ require 'active_admin/resource/action_items'
2
+ require 'active_admin/resource/attributes'
3
+ require 'active_admin/resource/controllers'
4
+ require 'active_admin/resource/menu'
5
+ require 'active_admin/resource/page_presenters'
6
+ require 'active_admin/resource/pagination'
7
+ require 'active_admin/resource/routes'
8
+ require 'active_admin/resource/naming'
9
+ require 'active_admin/resource/scopes'
10
+ require 'active_admin/resource/includes'
11
+ require 'active_admin/resource/scope_to'
12
+ require 'active_admin/resource/sidebars'
13
+ require 'active_admin/resource/belongs_to'
14
+ require 'active_admin/resource/ordering'
15
+ require 'active_admin/resource/model'
16
+
17
+ module ActiveAdmin
18
+
19
+ # Resource is the primary data storage for resource configuration in Active Admin
20
+ #
21
+ # When you register a resource (ActiveAdmin.register Post) you are actually creating
22
+ # a new Resource instance within the given Namespace.
23
+ #
24
+ # The instance of the current resource is available in ResourceController and views
25
+ # by calling the #active_admin_config method.
26
+ #
27
+ class Resource
28
+
29
+ # Event dispatched when a new resource is registered
30
+ RegisterEvent = 'active_admin.resource.register'.freeze
31
+
32
+ # The namespace this config belongs to
33
+ attr_reader :namespace
34
+
35
+ # The name of the resource class
36
+ attr_reader :resource_class_name
37
+
38
+ # An array of member actions defined for this resource
39
+ attr_reader :member_actions
40
+
41
+ # An array of collection actions defined for this resource
42
+ attr_reader :collection_actions
43
+
44
+ # The default sort order to use in the controller
45
+ attr_writer :sort_order
46
+ def sort_order
47
+ @sort_order ||= (resource_class.respond_to?(:primary_key) ? resource_class.primary_key.to_s : 'id') + '_desc'
48
+ end
49
+
50
+ # Set the configuration for the CSV
51
+ attr_writer :csv_builder
52
+
53
+ # Set breadcrumb builder
54
+ attr_writer :breadcrumb
55
+
56
+ #Set order clause
57
+ attr_writer :order_clause
58
+ # Display create another checkbox on a new page
59
+ # @return [Boolean]
60
+ attr_writer :create_another
61
+
62
+ # Store a reference to the DSL so that we can dereference it during garbage collection.
63
+ attr_accessor :dsl
64
+
65
+ # The string identifying a class to decorate our resource with for the view.
66
+ # nil to not decorate.
67
+ attr_accessor :decorator_class_name
68
+
69
+ module Base
70
+ def initialize(namespace, resource_class, options = {})
71
+ @namespace = namespace
72
+ @resource_class_name = "::#{resource_class.name}"
73
+ @options = options
74
+ @sort_order = options[:sort_order]
75
+ @member_actions = []
76
+ @collection_actions = []
77
+ end
78
+ end
79
+
80
+ include MethodOrProcHelper
81
+
82
+ include Base
83
+ include ActionItems
84
+ include Authorization
85
+ include Controllers
86
+ include Menu
87
+ include Naming
88
+ include PagePresenters
89
+ include Pagination
90
+ include Scopes
91
+ include Includes
92
+ include ScopeTo
93
+ include Sidebars
94
+ include Routes
95
+ include Ordering
96
+ include Attributes
97
+
98
+ # The class this resource wraps. If you register the Post model, Resource#resource_class
99
+ # will point to the Post class
100
+ def resource_class
101
+ ActiveSupport::Dependencies.constantize(resource_class_name)
102
+ end
103
+
104
+ def decorator_class
105
+ ActiveSupport::Dependencies.constantize(decorator_class_name) if decorator_class_name
106
+ end
107
+
108
+ def resource_name_extension
109
+ @resource_name_extension ||= define_resource_name_extension(self)
110
+ end
111
+
112
+ def resource_table_name
113
+ resource_class.quoted_table_name
114
+ end
115
+
116
+ def resource_column_names
117
+ resource_class.column_names
118
+ end
119
+
120
+ def resource_quoted_column_name(column)
121
+ resource_class.connection.quote_column_name(column)
122
+ end
123
+
124
+ # Clears all the member actions this resource knows about
125
+ def clear_member_actions!
126
+ @member_actions = []
127
+ end
128
+
129
+ def clear_collection_actions!
130
+ @collection_actions = []
131
+ end
132
+
133
+ # Return only defined resource actions
134
+ def defined_actions
135
+ controller.instance_methods.map(&:to_sym) & ResourceController::ACTIVE_ADMIN_ACTIONS
136
+ end
137
+
138
+ def belongs_to(target, options = {})
139
+ @belongs_to = Resource::BelongsTo.new(self, target, options)
140
+ self.menu_item_options = false if @belongs_to.required?
141
+ options[:class_name] ||= @belongs_to.resource.resource_class_name if @belongs_to.resource
142
+ controller.send :belongs_to, target, options.dup
143
+ end
144
+
145
+ def belongs_to_config
146
+ @belongs_to
147
+ end
148
+
149
+ def belongs_to_param
150
+ if belongs_to? && belongs_to_config.required?
151
+ belongs_to_config.to_param
152
+ end
153
+ end
154
+
155
+ # Do we belong to another resource?
156
+ def belongs_to?
157
+ !!belongs_to_config
158
+ end
159
+
160
+ # The csv builder for this resource
161
+ def csv_builder
162
+ @csv_builder || default_csv_builder
163
+ end
164
+
165
+ def breadcrumb
166
+ instance_variable_defined?(:@breadcrumb) ? @breadcrumb : namespace.breadcrumb
167
+ end
168
+
169
+ def order_clause
170
+ @order_clause || namespace.order_clause
171
+ end
172
+
173
+ def create_another
174
+ instance_variable_defined?(:@create_another) ? @create_another : namespace.create_another
175
+ end
176
+
177
+ def find_resource(id)
178
+ resource = resource_class.public_send *method_for_find(id)
179
+ (decorator_class && resource) ? decorator_class.new(resource) : resource
180
+ end
181
+
182
+ def resource_columns
183
+ resource_attributes.values
184
+ end
185
+
186
+ def resource_attributes
187
+ @resource_attributes ||= default_attributes
188
+ end
189
+
190
+ def association_columns
191
+ @association_columns ||= resource_attributes.select { |key, value| key != value }.values
192
+ end
193
+
194
+ def content_columns
195
+ @content_columns ||= resource_attributes.select { |key, value| key == value }.values
196
+ end
197
+
198
+ private
199
+
200
+ def method_for_find(id)
201
+ if finder = resources_configuration[:self][:finder]
202
+ [finder, id]
203
+ else
204
+ [:find_by, { resource_class.primary_key => id }]
205
+ end
206
+ end
207
+
208
+ def default_csv_builder
209
+ @default_csv_builder ||= CSVBuilder.default_for_resource(self)
210
+ end
211
+
212
+ def define_resource_name_extension(resource)
213
+ Module.new do
214
+ define_method :model_name do
215
+ resource.resource_name
216
+ end
217
+ end
218
+ end
219
+ end # class Resource
220
+ end # module ActiveAdmin
@@ -0,0 +1,120 @@
1
+ require 'active_admin/helpers/optional_display'
2
+
3
+ module ActiveAdmin
4
+
5
+ class Resource
6
+ module ActionItems
7
+
8
+ # Adds the default action items to a resource when it's initialized
9
+ def initialize(*args)
10
+ super
11
+ add_default_action_items
12
+ end
13
+
14
+ # @return [Array] The set of action items for this resource
15
+ def action_items
16
+ @action_items ||= []
17
+ end
18
+
19
+ # Add a new action item to a resource
20
+ #
21
+ # @param [Symbol] name
22
+ # @param [Hash] options valid keys include:
23
+ # :only: A single or array of controller actions to display
24
+ # this action item on.
25
+ # :except: A single or array of controller actions not to
26
+ # display this action item on.
27
+ # :priority: A single integer value. To control the display order. Default is 10.
28
+ def add_action_item(name, options = {}, &block)
29
+ self.action_items << ActiveAdmin::ActionItem.new(name, options, &block)
30
+ end
31
+
32
+ def remove_action_item(name)
33
+ self.action_items.delete_if { |item| item.name == name }
34
+ end
35
+
36
+ # Returns a set of action items to display for a specific controller action
37
+ #
38
+ # @param [String, Symbol] action the action to retrieve action items for
39
+ #
40
+ # @return [Array] Array of ActionItems for the controller actions
41
+ def action_items_for(action, render_context = nil)
42
+ action_items.select { |item| item.display_on? action, render_context }.sort_by(&:priority)
43
+ end
44
+
45
+ # Clears all the existing action items for this resource
46
+ def clear_action_items!
47
+ @action_items = []
48
+ end
49
+
50
+ # Used by active_admin Base view
51
+ def action_items?
52
+ !!@action_items && @action_items.any?
53
+ end
54
+
55
+ private
56
+
57
+ # Adds the default action items to each resource
58
+ def add_default_action_items
59
+ add_default_new_action_item
60
+ add_default_edit_action_item
61
+ add_default_show_action_item
62
+ end
63
+
64
+ # Adds the default New link on index
65
+ def add_default_new_action_item
66
+ add_action_item :new, only: :index do
67
+ if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
68
+ localizer = ActiveAdmin::Localizers.resource(active_admin_config)
69
+ link_to localizer.t(:new_model), new_resource_path
70
+ end
71
+ end
72
+ end
73
+
74
+ # Adds the default Edit link on show
75
+ def add_default_edit_action_item
76
+ add_action_item :edit, only: :show do
77
+ if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
78
+ localizer = ActiveAdmin::Localizers.resource(active_admin_config)
79
+ link_to localizer.t(:edit_model), edit_resource_path(resource)
80
+ end
81
+ end
82
+ end
83
+
84
+ # Adds the default Destroy link on show
85
+ def add_default_show_action_item
86
+ add_action_item :destroy, only: :show do
87
+ if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
88
+ localizer = ActiveAdmin::Localizers.resource(active_admin_config)
89
+ link_to localizer.t(:delete_model), resource_path(resource), method: :delete,
90
+ data: { confirm: localizer.t(:delete_confirmation) }
91
+ end
92
+ end
93
+ end
94
+
95
+ end
96
+ end
97
+
98
+ # Model class to store the data for ActionItems
99
+ class ActionItem
100
+ include ActiveAdmin::OptionalDisplay
101
+
102
+ attr_accessor :block, :name
103
+
104
+ def initialize(name, options = {}, &block)
105
+ @name = name
106
+ @options = options
107
+ @block = block
108
+ normalize_display_options!
109
+ end
110
+
111
+ def html_class
112
+ "action_item #{@options[:class]}".rstrip
113
+ end
114
+
115
+ def priority
116
+ @options[:priority] || 10
117
+ end
118
+ end
119
+
120
+ end