activeadmin 2.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (372) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +546 -0
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/CONTRIBUTING.md +217 -0
  5. data/LICENSE +20 -0
  6. data/README.md +110 -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 +55 -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/layouts/active_admin.html.arb +1 -0
  87. data/app/views/layouts/active_admin_logged_out.html.erb +39 -0
  88. data/config/locales/ar.yml +135 -0
  89. data/config/locales/bg.yml +119 -0
  90. data/config/locales/bs.yml +121 -0
  91. data/config/locales/ca.yml +106 -0
  92. data/config/locales/cs.yml +109 -0
  93. data/config/locales/da.yml +137 -0
  94. data/config/locales/de-CH.yml +101 -0
  95. data/config/locales/de.yml +144 -0
  96. data/config/locales/el.yml +126 -0
  97. data/config/locales/en-CA.yml +139 -0
  98. data/config/locales/en-GB.yml +139 -0
  99. data/config/locales/en.yml +162 -0
  100. data/config/locales/eo.yml +145 -0
  101. data/config/locales/es-MX.yml +96 -0
  102. data/config/locales/es.yml +162 -0
  103. data/config/locales/fa.yml +119 -0
  104. data/config/locales/fi.yml +112 -0
  105. data/config/locales/fr.yml +141 -0
  106. data/config/locales/he.yml +141 -0
  107. data/config/locales/hr.yml +123 -0
  108. data/config/locales/hu.yml +102 -0
  109. data/config/locales/id.yml +135 -0
  110. data/config/locales/it.yml +144 -0
  111. data/config/locales/ja.yml +141 -0
  112. data/config/locales/ko.yml +120 -0
  113. data/config/locales/lt.yml +142 -0
  114. data/config/locales/lv.yml +92 -0
  115. data/config/locales/mk.yml +134 -0
  116. data/config/locales/nb.yml +130 -0
  117. data/config/locales/nl.yml +144 -0
  118. data/config/locales/pl.yml +168 -0
  119. data/config/locales/pt-BR.yml +143 -0
  120. data/config/locales/pt-PT.yml +92 -0
  121. data/config/locales/ro.yml +96 -0
  122. data/config/locales/ru.yml +141 -0
  123. data/config/locales/sk.yml +109 -0
  124. data/config/locales/sv-SE.yml +135 -0
  125. data/config/locales/tr.yml +144 -0
  126. data/config/locales/uk.yml +138 -0
  127. data/config/locales/vi.yml +134 -0
  128. data/config/locales/zh-CN.yml +143 -0
  129. data/config/locales/zh-TW.yml +135 -0
  130. data/docs/.gitignore +1 -0
  131. data/docs/0-installation.md +118 -0
  132. data/docs/1-general-configuration.md +204 -0
  133. data/docs/10-custom-pages.md +150 -0
  134. data/docs/11-decorators.md +59 -0
  135. data/docs/12-arbre-components.md +214 -0
  136. data/docs/13-authorization-adapter.md +285 -0
  137. data/docs/14-gotchas.md +138 -0
  138. data/docs/2-resource-customization.md +466 -0
  139. data/docs/3-index-pages.md +328 -0
  140. data/docs/3-index-pages/custom-index.md +35 -0
  141. data/docs/3-index-pages/index-as-block.md +19 -0
  142. data/docs/3-index-pages/index-as-blog.md +69 -0
  143. data/docs/3-index-pages/index-as-grid.md +27 -0
  144. data/docs/3-index-pages/index-as-table.md +227 -0
  145. data/docs/4-csv-format.md +74 -0
  146. data/docs/5-forms.md +232 -0
  147. data/docs/6-show-pages.md +81 -0
  148. data/docs/7-sidebars.md +75 -0
  149. data/docs/8-custom-actions.md +177 -0
  150. data/docs/9-batch-actions.md +237 -0
  151. data/docs/CNAME +1 -0
  152. data/docs/Gemfile +4 -0
  153. data/docs/Gemfile.lock +249 -0
  154. data/docs/README.md +24 -0
  155. data/docs/_config.yml +2 -0
  156. data/docs/_includes/footer.html +8 -0
  157. data/docs/_includes/google-analytics.html +16 -0
  158. data/docs/_includes/head.html +7 -0
  159. data/docs/_includes/toc.html +98 -0
  160. data/docs/_includes/top-menu.html +17 -0
  161. data/docs/_layouts/default.html +21 -0
  162. data/docs/documentation.md +60 -0
  163. data/docs/images/activeadmin.png +0 -0
  164. data/docs/images/code-header.png +0 -0
  165. data/docs/images/divider.png +0 -0
  166. data/docs/images/features.png +0 -0
  167. data/docs/images/tidelift.svg +14 -0
  168. data/docs/index.html +125 -0
  169. data/docs/stylesheets/main.css +1176 -0
  170. data/lib/active_admin.rb +134 -0
  171. data/lib/active_admin/abstract_view_factory.rb +47 -0
  172. data/lib/active_admin/application.rb +234 -0
  173. data/lib/active_admin/application_settings.rb +42 -0
  174. data/lib/active_admin/asset_registration.rb +29 -0
  175. data/lib/active_admin/authorization_adapter.rb +129 -0
  176. data/lib/active_admin/base_controller.rb +81 -0
  177. data/lib/active_admin/base_controller/authorization.rb +127 -0
  178. data/lib/active_admin/base_controller/menu.rb +34 -0
  179. data/lib/active_admin/batch_actions.rb +16 -0
  180. data/lib/active_admin/batch_actions/controller.rb +40 -0
  181. data/lib/active_admin/batch_actions/resource_extension.rb +155 -0
  182. data/lib/active_admin/batch_actions/views/batch_action_form.rb +38 -0
  183. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +58 -0
  184. data/lib/active_admin/batch_actions/views/selection_cells.rb +38 -0
  185. data/lib/active_admin/callbacks.rb +88 -0
  186. data/lib/active_admin/cancan_adapter.rb +36 -0
  187. data/lib/active_admin/component.rb +5 -0
  188. data/lib/active_admin/controller_action.rb +13 -0
  189. data/lib/active_admin/csv_builder.rb +133 -0
  190. data/lib/active_admin/dependency.rb +100 -0
  191. data/lib/active_admin/deprecation.rb +10 -0
  192. data/lib/active_admin/devise.rb +80 -0
  193. data/lib/active_admin/dsl.rb +160 -0
  194. data/lib/active_admin/dynamic_setting.rb +38 -0
  195. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  196. data/lib/active_admin/engine.rb +21 -0
  197. data/lib/active_admin/error.rb +64 -0
  198. data/lib/active_admin/filters.rb +11 -0
  199. data/lib/active_admin/filters/active.rb +29 -0
  200. data/lib/active_admin/filters/active_filter.rb +124 -0
  201. data/lib/active_admin/filters/active_sidebar.rb +54 -0
  202. data/lib/active_admin/filters/dsl.rb +21 -0
  203. data/lib/active_admin/filters/forms.rb +85 -0
  204. data/lib/active_admin/filters/formtastic_addons.rb +79 -0
  205. data/lib/active_admin/filters/resource_extension.rb +155 -0
  206. data/lib/active_admin/form_builder.rb +182 -0
  207. data/lib/active_admin/generators/boilerplate.rb +45 -0
  208. data/lib/active_admin/helpers/collection.rb +19 -0
  209. data/lib/active_admin/helpers/i18n.rb +7 -0
  210. data/lib/active_admin/helpers/optional_display.rb +38 -0
  211. data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
  212. data/lib/active_admin/helpers/scope_chain.rb +24 -0
  213. data/lib/active_admin/inputs.rb +21 -0
  214. data/lib/active_admin/inputs/datepicker_input.rb +27 -0
  215. data/lib/active_admin/inputs/filters/base.rb +44 -0
  216. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  217. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  218. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  219. data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
  220. data/lib/active_admin/inputs/filters/date_range_input.rb +49 -0
  221. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  222. data/lib/active_admin/inputs/filters/select_input.rb +58 -0
  223. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  224. data/lib/active_admin/inputs/filters/text_input.rb +25 -0
  225. data/lib/active_admin/localizers.rb +11 -0
  226. data/lib/active_admin/localizers/resource_localizer.rb +35 -0
  227. data/lib/active_admin/menu.rb +102 -0
  228. data/lib/active_admin/menu_collection.rb +91 -0
  229. data/lib/active_admin/menu_item.rb +69 -0
  230. data/lib/active_admin/namespace.rb +266 -0
  231. data/lib/active_admin/namespace_settings.rb +110 -0
  232. data/lib/active_admin/order_clause.rb +48 -0
  233. data/lib/active_admin/orm/active_record.rb +5 -0
  234. data/lib/active_admin/orm/active_record/comments.rb +101 -0
  235. data/lib/active_admin/orm/active_record/comments/comment.rb +31 -0
  236. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
  237. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
  238. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
  239. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  240. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +100 -0
  241. data/lib/active_admin/orm/mongoid.rb +1 -0
  242. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  243. data/lib/active_admin/page.rb +111 -0
  244. data/lib/active_admin/page_controller.rb +29 -0
  245. data/lib/active_admin/page_dsl.rb +32 -0
  246. data/lib/active_admin/page_presenter.rb +33 -0
  247. data/lib/active_admin/pundit_adapter.rb +81 -0
  248. data/lib/active_admin/resource.rb +207 -0
  249. data/lib/active_admin/resource/action_items.rb +120 -0
  250. data/lib/active_admin/resource/attributes.rb +47 -0
  251. data/lib/active_admin/resource/belongs_to.rb +50 -0
  252. data/lib/active_admin/resource/controllers.rb +19 -0
  253. data/lib/active_admin/resource/includes.rb +12 -0
  254. data/lib/active_admin/resource/menu.rb +67 -0
  255. data/lib/active_admin/resource/naming.rb +62 -0
  256. data/lib/active_admin/resource/ordering.rb +11 -0
  257. data/lib/active_admin/resource/page_presenters.rb +82 -0
  258. data/lib/active_admin/resource/pagination.rb +23 -0
  259. data/lib/active_admin/resource/routes.rb +139 -0
  260. data/lib/active_admin/resource/scope_to.rb +74 -0
  261. data/lib/active_admin/resource/scopes.rb +52 -0
  262. data/lib/active_admin/resource/sidebars.rb +28 -0
  263. data/lib/active_admin/resource_collection.rb +72 -0
  264. data/lib/active_admin/resource_controller.rb +64 -0
  265. data/lib/active_admin/resource_controller/action_builder.rb +31 -0
  266. data/lib/active_admin/resource_controller/data_access.rb +322 -0
  267. data/lib/active_admin/resource_controller/decorators.rb +102 -0
  268. data/lib/active_admin/resource_controller/resource_class_methods.rb +26 -0
  269. data/lib/active_admin/resource_controller/scoping.rb +31 -0
  270. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  271. data/lib/active_admin/resource_controller/streaming.rb +43 -0
  272. data/lib/active_admin/resource_dsl.rb +224 -0
  273. data/lib/active_admin/router.rb +114 -0
  274. data/lib/active_admin/scope.rb +64 -0
  275. data/lib/active_admin/settings_node.rb +19 -0
  276. data/lib/active_admin/sidebar_section.rb +39 -0
  277. data/lib/active_admin/version.rb +3 -0
  278. data/lib/active_admin/view_factory.rb +27 -0
  279. data/lib/active_admin/view_helpers.rb +20 -0
  280. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  281. data/lib/active_admin/view_helpers/auto_link_helper.rb +45 -0
  282. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +33 -0
  283. data/lib/active_admin/view_helpers/display_helper.rb +104 -0
  284. data/lib/active_admin/view_helpers/download_format_links_helper.rb +59 -0
  285. data/lib/active_admin/view_helpers/fields_for.rb +50 -0
  286. data/lib/active_admin/view_helpers/flash_helper.rb +14 -0
  287. data/lib/active_admin/view_helpers/form_helper.rb +20 -0
  288. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +100 -0
  289. data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
  290. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  291. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  292. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  293. data/lib/active_admin/views.rb +8 -0
  294. data/lib/active_admin/views/action_items.rb +17 -0
  295. data/lib/active_admin/views/components/active_admin_form.rb +155 -0
  296. data/lib/active_admin/views/components/attributes_table.rb +94 -0
  297. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  298. data/lib/active_admin/views/components/columns.rb +161 -0
  299. data/lib/active_admin/views/components/dropdown_menu.rb +71 -0
  300. data/lib/active_admin/views/components/index_list.rb +69 -0
  301. data/lib/active_admin/views/components/menu.rb +32 -0
  302. data/lib/active_admin/views/components/menu_item.rb +58 -0
  303. data/lib/active_admin/views/components/paginated_collection.rb +159 -0
  304. data/lib/active_admin/views/components/panel.rb +38 -0
  305. data/lib/active_admin/views/components/scopes.rb +72 -0
  306. data/lib/active_admin/views/components/sidebar.rb +13 -0
  307. data/lib/active_admin/views/components/sidebar_section.rb +34 -0
  308. data/lib/active_admin/views/components/site_title.rb +54 -0
  309. data/lib/active_admin/views/components/status_tag.rb +75 -0
  310. data/lib/active_admin/views/components/table_for.rb +209 -0
  311. data/lib/active_admin/views/components/tabs.rb +40 -0
  312. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  313. data/lib/active_admin/views/footer.rb +30 -0
  314. data/lib/active_admin/views/header.rb +19 -0
  315. data/lib/active_admin/views/index_as_block.rb +36 -0
  316. data/lib/active_admin/views/index_as_blog.rb +155 -0
  317. data/lib/active_admin/views/index_as_grid.rb +80 -0
  318. data/lib/active_admin/views/index_as_table.rb +392 -0
  319. data/lib/active_admin/views/pages/base.rb +126 -0
  320. data/lib/active_admin/views/pages/form.rb +64 -0
  321. data/lib/active_admin/views/pages/index.rb +163 -0
  322. data/lib/active_admin/views/pages/layout.rb +26 -0
  323. data/lib/active_admin/views/pages/page.rb +30 -0
  324. data/lib/active_admin/views/pages/show.rb +65 -0
  325. data/lib/active_admin/views/tabbed_navigation.rb +11 -0
  326. data/lib/active_admin/views/title_bar.rb +55 -0
  327. data/lib/activeadmin.rb +1 -0
  328. data/lib/generators/active_admin/assets/assets_generator.rb +14 -0
  329. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  330. data/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
  331. data/lib/generators/active_admin/devise/devise_generator.rb +68 -0
  332. data/lib/generators/active_admin/install/install_generator.rb +49 -0
  333. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +315 -0
  334. data/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
  335. data/lib/generators/active_admin/install/templates/dashboard.rb +32 -0
  336. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
  337. data/lib/generators/active_admin/page/USAGE +8 -0
  338. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  339. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  340. data/lib/generators/active_admin/resource/resource_generator.rb +20 -0
  341. data/lib/generators/active_admin/resource/templates/admin.rb.erb +44 -0
  342. data/lib/ransack_ext.rb +20 -0
  343. data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
  344. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  345. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  346. data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
  347. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  348. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  349. data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
  350. data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
  351. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  352. data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
  353. data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
  354. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  355. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  356. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  357. data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
  358. data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
  359. data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
  360. data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
  361. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  362. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
  363. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  364. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  365. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  366. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  367. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  368. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  369. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  370. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  371. data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
  372. metadata +616 -0
@@ -0,0 +1,138 @@
1
+ ---
2
+ redirect_from: /docs/14-gotchas.html
3
+ ---
4
+
5
+ # Gotchas
6
+
7
+ ## Security
8
+
9
+ ### Spreadsheet applications vulnerable to unescaped CSV data
10
+
11
+ If your CSV export includes untrusted data provided by your users, it's possible
12
+ that they could include an executable formula that could call arbitrary commands
13
+ on your computer. See
14
+ [#4256](https://github.com/activeadmin/activeadmin/issues/4256) for more
15
+ details.
16
+
17
+ ## Session Commits & Asset Pipeline
18
+
19
+ When configuring the asset pipeline ensure that the asset prefix
20
+ (`config.assets.prefix`) is not the same as the namespace of ActiveAdmin
21
+ (default namespace is `/admin`). If they are the same Sprockets will prevent the
22
+ session from being committed. Flash messages won't work and you will be unable to
23
+ use the session for storing anything.
24
+
25
+ For more information see [the following
26
+ post](http://www.intridea.com/blog/2013/3/20/rails-assets-prefix-may-disable-your-session).
27
+
28
+ ## Helpers
29
+
30
+ There are two known gotchas with helpers. This hopefully will help you to
31
+ find a solution.
32
+
33
+ ### Helpers are not reloading in development
34
+
35
+ This is a known and still open
36
+ [issue](https://github.com/activeadmin/activeadmin/issues/697) the only way is
37
+ to restart your server each time you change a helper.
38
+
39
+ ### Helper maybe not included by default
40
+
41
+ If you use `config.action_controller.include_all_helpers = false` in your
42
+ application config, you need to include it by hand.
43
+
44
+ #### Solutions
45
+
46
+ ##### First use a monkey patch
47
+
48
+ This works for all ActiveAdmin resources at once.
49
+
50
+ ```ruby
51
+ # config/initializers/active_admin_helpers.rb
52
+ ActiveAdmin::BaseController.class_eval do
53
+ helper ApplicationHelper
54
+ end
55
+ ```
56
+
57
+ ##### Second use the `controller` method
58
+
59
+ This works only for one resource at a time.
60
+
61
+ ```ruby
62
+ ActiveAdmin.register User do
63
+ controller do
64
+ helper UserHelper
65
+ end
66
+ end
67
+ ```
68
+
69
+ ## CSS
70
+
71
+ In order to avoid the override of your application style with the Active Admin
72
+ one, you can do one of these things:
73
+
74
+ * You can properly move the generated file `active_admin.scss` from
75
+ `app/assets/stylesheets` to `vendor/assets/stylesheets`.
76
+ * You can remove all `require_tree` commands from your root level css files,
77
+ where the `active_admin.scss` is in the tree.
78
+
79
+ ## Conflicts
80
+
81
+ ### With gems that provides a `search` class method on a model
82
+
83
+ If a gem defines a `search` class method on a model, this can result in conflicts
84
+ with the same method provided by `ransack` (a dependency of ActiveAdmin).
85
+
86
+ Each of this conflicts need to solved is a different way. Some solutions are
87
+ listed below.
88
+
89
+ #### `tire`, `retire` and `elasticsearch-rails`
90
+
91
+ This conflict can be solved, by using explicitly the `search` method of `tire`,
92
+ `retire` or `elasticsearch-rails`:
93
+
94
+ ##### For `tire` and `retire`
95
+
96
+ ```ruby
97
+ YourModel.tire.search
98
+ ```
99
+
100
+ ##### For `elasticsearch-rails`
101
+
102
+ ```ruby
103
+ YourModel.__elasticsearch__.search
104
+ ```
105
+
106
+ ### Sunspot Solr
107
+
108
+ ```ruby
109
+ YourModel.solr_search
110
+ ```
111
+
112
+ ### Rails 5 scaffold generators
113
+
114
+ Active Admin requires the `inherited_resources` gem which may break scaffolding
115
+ under Rails 5 as it replaces the default scaffold generator. The solution is to
116
+ configure the default controller in `config/application.rb` as outlined in
117
+ [activeadmin/inherited_resources#195](https://github.com/activeadmin/inherited_resources/issues/195)
118
+
119
+ ```ruby
120
+ module SampleApp
121
+ class Application < Rails::Application
122
+ ...
123
+ config.app_generators.scaffold_controller = :scaffold_controller
124
+ ...
125
+ end
126
+ end
127
+ ```
128
+
129
+ ## Authentication & Application Controller
130
+
131
+ The `ActiveAdmin::BaseController` inherits from the `ApplicationController`. Any
132
+ authentication method(s) specified in the `ApplicationController` callbacks will
133
+ be called instead of the authentication method in the active admin config file.
134
+ For example, if the ApplicationController has a callback `before_action
135
+ :custom_authentication_method` and the config file's authentication method is
136
+ `config.authentication_method = :authenticate_active_admin_user`, then
137
+ `custom_authentication_method` will be called instead of
138
+ `authenticate_active_admin_user`.
@@ -0,0 +1,466 @@
1
+ ---
2
+ redirect_from: /docs/2-resource-customization.html
3
+ ---
4
+
5
+ # Working with Resources
6
+
7
+ Every Active Admin resource corresponds to a Rails model. So before creating a
8
+ resource you must first create a Rails model for it.
9
+
10
+ ## Create a Resource
11
+
12
+ The basic command for creating a resource is `rails g active_admin:resource Post`.
13
+ The generator will produce an empty `app/admin/posts.rb` file like so:
14
+
15
+ ```ruby
16
+ ActiveAdmin.register Post do
17
+ # everything happens here :D
18
+ end
19
+ ```
20
+
21
+ ## Setting up Strong Parameters
22
+
23
+ Use the `permit_params` method to define which attributes may be changed:
24
+
25
+ ```ruby
26
+ ActiveAdmin.register Post do
27
+ permit_params :title, :content, :publisher_id
28
+ end
29
+ ```
30
+
31
+ Any form field that sends multiple values (such as a HABTM association, or an
32
+ array attribute) needs to pass an empty array to `permit_params`:
33
+
34
+ If your HABTM is `roles`, you should permit `role_ids: []`
35
+
36
+ ```ruby
37
+ ActiveAdmin.register Post do
38
+ permit_params :title, :content, :publisher_id, role_ids: []
39
+ end
40
+ ```
41
+
42
+ Nested associations in the same form also require an array, but it
43
+ needs to be filled with any attributes used.
44
+
45
+ ```ruby
46
+ ActiveAdmin.register Post do
47
+ permit_params :title, :content, :publisher_id,
48
+ tags_attributes: [:id, :name, :description, :_destroy]
49
+ end
50
+
51
+ # Note that `accepts_nested_attributes_for` is still required:
52
+ class Post < ActiveRecord::Base
53
+ accepts_nested_attributes_for :tags, allow_destroy: true
54
+ end
55
+ ```
56
+
57
+ If you want to dynamically choose which attributes can be set, pass a block:
58
+
59
+ ```ruby
60
+ ActiveAdmin.register Post do
61
+ permit_params do
62
+ params = [:title, :content, :publisher_id]
63
+ params.push :author_id if current_user.admin?
64
+ params
65
+ end
66
+ end
67
+ ```
68
+
69
+ If your resource is nested, declare `permit_params` after `belongs_to`:
70
+
71
+ ```ruby
72
+ ActiveAdmin.register Post do
73
+ belongs_to :user
74
+ permit_params :title, :content, :publisher_id
75
+ end
76
+ ```
77
+
78
+ The `permit_params` call creates a method called `permitted_params`. You should
79
+ use this method when overriding `create` or `update` actions:
80
+
81
+ ```ruby
82
+ ActiveAdmin.register Post do
83
+ controller do
84
+ def create
85
+ # Good
86
+ @post = Post.new(permitted_params[:post])
87
+ # Bad
88
+ @post = Post.new(params[:post])
89
+
90
+ if @post.save
91
+ # ...
92
+ end
93
+ end
94
+ end
95
+ end
96
+ ```
97
+
98
+ ## Disabling Actions on a Resource
99
+
100
+ All CRUD actions are enabled by default. These can be disabled for a given resource:
101
+
102
+ ```ruby
103
+ ActiveAdmin.register Post do
104
+ actions :all, except: [:update, :destroy]
105
+ end
106
+ ```
107
+
108
+ ## Renaming Action Items
109
+
110
+ You can use translations to override labels and page titles for actions such as
111
+ new, edit, and destroy by providing a resource specific translation. For
112
+ example, to change 'New Offer' to 'Make an Offer' add the following in
113
+ config/locales/[en].yml:
114
+
115
+ ```yaml
116
+ en:
117
+ active_admin:
118
+ resources:
119
+ offer: # Registered resource
120
+ new_model: 'Make an Offer' # new action item
121
+ edit_model: 'Change Offer' # edit action item
122
+ delete_model: 'Cancel Offer' # delete action item
123
+ ```
124
+
125
+ See the [default en.yml](/config/locales/en.yml) locale file for
126
+ existing translations and examples.
127
+
128
+ ## Rename the Resource
129
+
130
+ By default, any references to the resource (menu, routes, buttons, etc) in the
131
+ interface will use the name of the class. You can rename the resource by using
132
+ the `:as` option.
133
+
134
+ ```ruby
135
+ ActiveAdmin.register Post, as: "Article"
136
+ ```
137
+
138
+ The resource will then be available at `/admin/articles`.
139
+
140
+ ## Customize the Namespace
141
+
142
+ We use the `admin` namespace by default, but you can use anything:
143
+
144
+ ```ruby
145
+ # Available at /today/posts
146
+ ActiveAdmin.register Post, namespace: :today
147
+
148
+ # Available at /posts
149
+ ActiveAdmin.register Post, namespace: false
150
+ ```
151
+
152
+ ## Customize the Menu
153
+
154
+ The resource will be displayed in the global navigation by default. To disable
155
+ the resource from being displayed in the global navigation:
156
+
157
+ ```ruby
158
+ ActiveAdmin.register Post do
159
+ menu false
160
+ end
161
+ ```
162
+
163
+ The menu method accepts a hash with the following options:
164
+
165
+ * `:label` - The string or proc label to display in the menu. If it's a proc, it
166
+ will be called each time the menu is rendered.
167
+ * `:parent` - The string id (or label) of the parent used for this menu
168
+ * `:if` - A block or a symbol of a method to call to decide if the menu item
169
+ should be displayed
170
+ * `:priority` - The integer value of the priority, which defaults to `10`
171
+
172
+ ### Labels
173
+
174
+ To change the name of the label in the menu:
175
+
176
+ ```ruby
177
+ ActiveAdmin.register Post do
178
+ menu label: "My Posts"
179
+ end
180
+ ```
181
+
182
+ If you want something more dynamic, pass a proc instead:
183
+
184
+ ```ruby
185
+ ActiveAdmin.register Post do
186
+ menu label: proc{ I18n.t "mypost" }
187
+ end
188
+ ```
189
+
190
+ ### Menu Priority
191
+
192
+ Menu items are sorted first by their numeric priority, then alphabetically. Since
193
+ every menu by default has a priority of `10`, the menu is normally alphabetical.
194
+
195
+ You can easily customize this:
196
+
197
+ ```ruby
198
+ ActiveAdmin.register Post do
199
+ menu priority: 1 # so it's on the very left
200
+ end
201
+ ```
202
+
203
+ ### Conditionally Showing / Hiding Menu Items
204
+
205
+ Menu items can be shown or hidden at runtime using the `:if` option.
206
+
207
+ ```ruby
208
+ ActiveAdmin.register Post do
209
+ menu if: proc{ current_user.can_edit_posts? }
210
+ end
211
+ ```
212
+
213
+ The proc will be called in the context of the view, so you have access to all
214
+ your helpers and current user session information.
215
+
216
+ ### Drop Down Menus
217
+
218
+ In many cases, a single level navigation will not be enough to manage a large
219
+ application. In that case, you can group your menu items under a parent menu item.
220
+
221
+ ```ruby
222
+ ActiveAdmin.register Post do
223
+ menu parent: "Blog"
224
+ end
225
+ ```
226
+
227
+ Note that the "Blog" parent menu item doesn't even have to exist yet; it can be
228
+ dynamically generated for you.
229
+
230
+ ### Customizing Parent Menu Items
231
+
232
+ All of the options given to a standard menu item are also available to
233
+ parent menu items. In the case of complex parent menu items, you should
234
+ configure them in the Active Admin initializer.
235
+
236
+ ```ruby
237
+ # config/initializers/active_admin.rb
238
+ config.namespace :admin do |admin|
239
+ admin.build_menu do |menu|
240
+ menu.add label: 'Blog', priority: 0
241
+ end
242
+ end
243
+
244
+ # app/admin/post.rb
245
+ ActiveAdmin.register Post do
246
+ menu parent: 'Blog'
247
+ end
248
+ ```
249
+
250
+ ### Dynamic Parent Menu Items
251
+
252
+ While the above works fine, what if you want a parent menu item with a dynamic
253
+ name? Well, you have to refer to it by its `:id`.
254
+
255
+ ```ruby
256
+ # config/initializers/active_admin.rb
257
+ config.namespace :admin do |admin|
258
+ admin.build_menu do |menu|
259
+ menu.add id: 'blog', label: proc{"Something dynamic"}, priority: 0
260
+ end
261
+ end
262
+
263
+ # app/admin/post.rb
264
+ ActiveAdmin.register Post do
265
+ menu parent: 'blog'
266
+ end
267
+ ```
268
+
269
+ ### Adding Custom Menu Items
270
+
271
+ Sometimes it's not enough to just customize the menu label. In this case, you
272
+ can customize the menu for the namespace within the Active Admin initializer.
273
+
274
+ ```ruby
275
+ # config/initializers/active_admin.rb
276
+ config.namespace :admin do |admin|
277
+ admin.build_menu do |menu|
278
+ menu.add label: "The Application", url: "/", priority: 0
279
+
280
+ menu.add label: "Sites" do |sites|
281
+ sites.add label: "Google",
282
+ url: "http://google.com",
283
+ html_options: { target: :blank }
284
+
285
+ sites.add label: "Facebook",
286
+ url: "http://facebook.com"
287
+
288
+ sites.add label: "Github",
289
+ url: "http://github.com"
290
+ end
291
+ end
292
+ end
293
+ ```
294
+
295
+ This will be registered on application start before your resources are loaded.
296
+
297
+ ## Scoping the queries
298
+
299
+ If your administrators have different access levels, you may sometimes want to
300
+ scope what they have access to. Assuming your User model has the proper
301
+ has_many relationships, you can simply scope the listings and finders like so:
302
+
303
+ ```ruby
304
+ ActiveAdmin.register Post do
305
+ scope_to :current_user # limits the accessible posts to `current_user.posts`
306
+
307
+ # Or if the association doesn't have the default name:
308
+ scope_to :current_user, association_method: :blog_posts
309
+
310
+ # Finally, you can pass a block to be called:
311
+ scope_to do
312
+ User.most_popular_posts
313
+ end
314
+ end
315
+ ```
316
+
317
+ You can also conditionally apply the scope:
318
+
319
+ ```ruby
320
+ ActiveAdmin.register Post do
321
+ scope_to :current_user, if: proc{ current_user.limited_access? }
322
+ scope_to :current_user, unless: proc{ current_user.admin? }
323
+ end
324
+ ```
325
+
326
+ ## Eager loading
327
+
328
+ A common way to increase page performance is to eliminate N+1 queries by eager
329
+ loading associations:
330
+
331
+ ```ruby
332
+ ActiveAdmin.register Post do
333
+ includes :author, :categories
334
+ end
335
+ ```
336
+
337
+ ## Customizing resource retrieval
338
+
339
+ Our controllers are built on [Inherited
340
+ Resources](https://github.com/activeadmin/inherited_resources), so you can use
341
+ [all of its
342
+ features](https://github.com/activeadmin/inherited_resources#overwriting-defaults).
343
+
344
+ If you need to customize the collection properties, you can overwrite the
345
+ `scoped_collection` method.
346
+
347
+ ```ruby
348
+ ActiveAdmin.register Post do
349
+ controller do
350
+ def scoped_collection
351
+ end_of_association_chain.where(visibility: true)
352
+ end
353
+ end
354
+ end
355
+ ```
356
+
357
+ If you need to completely replace the record retrieving code (e.g., you have a
358
+ custom `to_param` implementation in your models), override the `resource` method
359
+ on the controller:
360
+
361
+ ```ruby
362
+ ActiveAdmin.register Post do
363
+ controller do
364
+ def find_resource
365
+ scoped_collection.where(id: params[:id]).first!
366
+ end
367
+ end
368
+ end
369
+ ```
370
+
371
+ Note that if you use an authorization library like CanCan, you should be careful
372
+ to not write code like this, otherwise **your authorization rules won't be
373
+ applied**:
374
+
375
+ ```ruby
376
+ ActiveAdmin.register Post do
377
+ controller do
378
+ def find_resource
379
+ Post.where(id: params[:id]).first!
380
+ end
381
+ end
382
+ end
383
+ ```
384
+
385
+ ## Belongs To
386
+
387
+ It's common to want to scope a series of resources to a relationship. For
388
+ example a Project may have many Milestones and Tickets. To nest the resource
389
+ within another, you can use the `belongs_to` method:
390
+
391
+ ```ruby
392
+ ActiveAdmin.register Project
393
+ ActiveAdmin.register Ticket do
394
+ belongs_to :project
395
+ end
396
+ ```
397
+
398
+ Projects will be available as usual and tickets will be available by visiting
399
+ `/admin/projects/1/tickets` assuming that a Project with the id of 1 exists.
400
+ Active Admin does not add "Tickets" to the global navigation because the routes
401
+ can only be generated when there is a project id.
402
+
403
+ To create links to the resource, you can add them to a sidebar (one of the many
404
+ possibilities for how you may with to handle your user interface):
405
+
406
+ ```ruby
407
+ ActiveAdmin.register Project do
408
+
409
+ sidebar "Project Details", only: [:show, :edit] do
410
+ ul do
411
+ li link_to "Tickets", admin_project_tickets_path(resource)
412
+ li link_to "Milestones", admin_project_milestones_path(resource)
413
+ end
414
+ end
415
+ end
416
+
417
+ ActiveAdmin.register Ticket do
418
+ belongs_to :project
419
+ end
420
+
421
+ ActiveAdmin.register Milestone do
422
+ belongs_to :project
423
+ end
424
+ ```
425
+
426
+ In some cases (like Projects), there are many sub resources and you would
427
+ actually like the global navigation to switch when the user navigates "into" a
428
+ project. To accomplish this, Active Admin stores the `belongs_to` resources in a
429
+ separate menu which you can use if you so wish. To use:
430
+
431
+ ```ruby
432
+ ActiveAdmin.register Ticket do
433
+ belongs_to :project
434
+ navigation_menu :project
435
+ end
436
+
437
+ ActiveAdmin.register Milestone do
438
+ belongs_to :project
439
+ navigation_menu :project
440
+ end
441
+ ```
442
+
443
+ Now, when you navigate to the tickets section, the global navigation will
444
+ only display "Tickets" and "Milestones". When you navigate back to a
445
+ non-belongs_to resource, it will switch back to the default menu.
446
+
447
+ You can also defer the menu lookup until runtime so that you can dynamically show
448
+ different menus, say perhaps based on user permissions. For example:
449
+
450
+ ```ruby
451
+ ActiveAdmin.register Ticket do
452
+ belongs_to :project
453
+ navigation_menu do
454
+ authorized?(:manage, SomeResource) ? :project : :restricted_menu
455
+ end
456
+ end
457
+ ```
458
+
459
+ If you still want your `belongs_to` resources to be available in the default menu
460
+ and through non-nested routes, you can use the `:optional` option. For example:
461
+
462
+ ```ruby
463
+ ActiveAdmin.register Ticket do
464
+ belongs_to :project, optional: true
465
+ end
466
+ ```