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,74 @@
1
+ module ActiveAdmin
2
+ class Resource
3
+ module ScopeTo
4
+
5
+ # Scope this controller to some object which has a relation
6
+ # to the resource. Can either accept a block or a symbol
7
+ # of a method to call.
8
+ #
9
+ # Eg:
10
+ #
11
+ # ActiveAdmin.register Post do
12
+ # scope_to :current_user
13
+ # end
14
+ #
15
+ # Then every time we instantiate and object, it would call
16
+ #
17
+ # current_user.posts.build
18
+ #
19
+ # By default Active Admin will use the resource name to build a
20
+ # method to call as the association. If its different, you can
21
+ # pass in the association_method as an option.
22
+ #
23
+ # scope_to :current_user, association_method: :blog_posts
24
+ #
25
+ # will result in the following
26
+ #
27
+ # current_user.blog_posts.build
28
+ #
29
+ # To conditionally use this scope, you can use conditional procs
30
+ #
31
+ # scope_to :current_user, if: proc{ admin_user_signed_in? }
32
+ #
33
+ # or
34
+ #
35
+ # scope_to :current_user, unless: proc{ current_user.admin? }
36
+ #
37
+ def scope_to(*args, &block)
38
+ options = args.extract_options!
39
+ method = args.first
40
+
41
+ scope_to_config[:method] = block || method
42
+ scope_to_config[:association_method] = options[:association_method]
43
+ scope_to_config[:if] = options[:if]
44
+ scope_to_config[:unless] = options[:unless]
45
+
46
+ end
47
+
48
+ def scope_to_association_method
49
+ scope_to_config[:association_method]
50
+ end
51
+
52
+ def scope_to_method
53
+ scope_to_config[:method]
54
+ end
55
+
56
+ def scope_to_config
57
+ @scope_to_config ||= {
58
+ method: nil,
59
+ association_method: nil,
60
+ if: nil,
61
+ unless: nil
62
+ }
63
+ end
64
+
65
+ def scope_to?(context = nil)
66
+ return false if scope_to_method.nil?
67
+ return render_in_context(context, scope_to_config[:if]) unless scope_to_config[:if].nil?
68
+ return !render_in_context(context, scope_to_config[:unless]) unless scope_to_config[:unless].nil?
69
+ true
70
+ end
71
+
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,52 @@
1
+ module ActiveAdmin
2
+ class Resource
3
+ module Scopes
4
+
5
+ # Return an array of scopes for this resource
6
+ def scopes
7
+ @scopes ||= []
8
+ end
9
+
10
+ # Returns a scope for this object by its identifier
11
+ def get_scope_by_id(id)
12
+ id = id.to_s
13
+ scopes.find { |s| s.id == id }
14
+ end
15
+
16
+ def default_scope(context = nil)
17
+ scopes.detect do |scope|
18
+ if scope.default_block.is_a?(Proc)
19
+ render_in_context(context, scope.default_block)
20
+ else
21
+ scope.default_block
22
+ end
23
+ end
24
+ end
25
+
26
+ # Create a new scope object for this resource.
27
+ # If you want to internationalize the scope name, you can add
28
+ # to your i18n files a key like "active_admin.scopes.scope_method".
29
+ def scope(*args, &block)
30
+ default_options = { show_count: namespace.scopes_show_count }
31
+ options = default_options.merge(args.extract_options!)
32
+ title = args[0] rescue nil
33
+ method = args[1] rescue nil
34
+
35
+ options[:localizer] ||= ActiveAdmin::Localizers.resource(self)
36
+ scope = ActiveAdmin::Scope.new(title, method, options, &block)
37
+
38
+ # Finds and replaces a scope by the same name if it already exists
39
+ existing_scope_index = scopes.index { |existing_scope| existing_scope.id == scope.id }
40
+ if existing_scope_index
41
+ scopes.delete_at(existing_scope_index)
42
+ scopes.insert(existing_scope_index, scope)
43
+ else
44
+ self.scopes << scope
45
+ end
46
+
47
+ scope
48
+ end
49
+
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,28 @@
1
+ require 'active_admin/helpers/optional_display'
2
+
3
+ module ActiveAdmin
4
+
5
+ class Resource
6
+ module Sidebars
7
+
8
+ def sidebar_sections
9
+ @sidebar_sections ||= []
10
+ end
11
+
12
+ def clear_sidebar_sections!
13
+ @sidebar_sections = []
14
+ end
15
+
16
+ def sidebar_sections_for(action, render_context = nil)
17
+ sidebar_sections.select { |section| section.display_on?(action, render_context) }
18
+ .sort_by(&:priority)
19
+ end
20
+
21
+ def sidebar_sections?
22
+ !!@sidebar_sections && @sidebar_sections.any?
23
+ end
24
+
25
+ end
26
+ end
27
+
28
+ end
@@ -0,0 +1,72 @@
1
+ module ActiveAdmin
2
+ # This is a container for resources, which acts much like a Hash.
3
+ # It's assumed that an added resource responds to `resource_name`.
4
+ class ResourceCollection
5
+ include Enumerable
6
+ extend Forwardable
7
+ def_delegators :@collection, :empty?, :has_key?, :keys, :values, :size
8
+
9
+ def initialize
10
+ @collection = {}
11
+ end
12
+
13
+ def add(resource)
14
+ if match = @collection[resource.resource_name]
15
+ raise_if_mismatched! match, resource
16
+ match
17
+ else
18
+ @collection[resource.resource_name] = resource
19
+ end
20
+ end
21
+
22
+ # Changes `each` to pass in the value, instead of both the key and value.
23
+ def each(&block)
24
+ values.each &block
25
+ end
26
+
27
+ def [](obj)
28
+ @collection[obj] || find_resource(obj)
29
+ end
30
+
31
+ private
32
+
33
+ # Finds a resource based on the resource name, resource class, or base class.
34
+ def find_resource(obj)
35
+ resources.detect do |r|
36
+ r.resource_name.to_s == obj.to_s
37
+ end || resources.detect do |r|
38
+ r.resource_class.to_s == obj.to_s
39
+ end ||
40
+ if obj.respond_to? :base_class
41
+ resources.detect { |r| r.resource_class.to_s == obj.base_class.to_s }
42
+ end
43
+ end
44
+
45
+ def resources
46
+ select { |r| r.class <= Resource } # can otherwise be a Page
47
+ end
48
+
49
+ def raise_if_mismatched!(existing, given)
50
+ if existing.class != given.class
51
+ raise IncorrectClass.new existing, given
52
+ elsif given.class <= Resource && existing.resource_class != given.resource_class
53
+ raise ConfigMismatch.new existing, given
54
+ end
55
+ end
56
+
57
+ class IncorrectClass < StandardError
58
+ def initialize(existing, given)
59
+ super "You're trying to register #{given.resource_name} which is a #{given.class}, " +
60
+ "but #{existing.resource_name}, a #{existing.class} has already claimed that name."
61
+ end
62
+ end
63
+
64
+ class ConfigMismatch < StandardError
65
+ def initialize(existing, given)
66
+ super "You're trying to register #{given.resource_class} as #{given.resource_name}, " +
67
+ "but the existing #{existing.class} config was built for #{existing.resource_class}!"
68
+ end
69
+ end
70
+
71
+ end
72
+ end
@@ -0,0 +1,64 @@
1
+ require 'active_admin/resource_controller/action_builder'
2
+ require 'active_admin/resource_controller/data_access'
3
+ require 'active_admin/resource_controller/decorators'
4
+ require 'active_admin/resource_controller/scoping'
5
+ require 'active_admin/resource_controller/streaming'
6
+ require 'active_admin/resource_controller/sidebars'
7
+ require 'active_admin/resource_controller/resource_class_methods'
8
+
9
+ module ActiveAdmin
10
+ # All Resources Controller inherits from this controller.
11
+ # It implements actions and helpers for resources.
12
+ class ResourceController < BaseController
13
+ layout :determine_active_admin_layout
14
+
15
+ respond_to :html, :xml, :json
16
+ respond_to :csv, only: :index
17
+
18
+ include ActionBuilder
19
+ include Decorators
20
+ include DataAccess
21
+ include Scoping
22
+ include Streaming
23
+ include Sidebars
24
+ include ViewHelpers::DownloadFormatLinksHelper
25
+ extend ResourceClassMethods
26
+
27
+ def self.active_admin_config=(config)
28
+ if @active_admin_config = config
29
+ defaults resource_class: config.resource_class,
30
+ route_prefix: config.route_prefix,
31
+ instance_name: config.resource_name.singular
32
+ end
33
+ end
34
+
35
+ # Inherited Resources uses the `self.inherited(base)` hook to add
36
+ # in `self.resource_class`. To override it, we need to install
37
+ # our resource_class method each time we're inherited from.
38
+ def self.inherited(base)
39
+ super(base)
40
+ base.override_resource_class_methods!
41
+ end
42
+
43
+ private
44
+
45
+ # Returns the renderer class to use for the given action.
46
+ def renderer_for(action)
47
+ active_admin_namespace.view_factory["#{action}_page"]
48
+ end
49
+
50
+ helper_method :renderer_for
51
+
52
+ def restrict_format_access!
53
+ unless request.format.html?
54
+ presenter = active_admin_config.get_page_presenter(:index)
55
+ download_formats = (presenter || {}).fetch(:download_links, active_admin_config.namespace.download_links)
56
+ unless build_download_formats(download_formats).include?(request.format.symbol)
57
+ raise ActiveAdmin::AccessDenied.new(current_active_admin_user, :index)
58
+ end
59
+ end
60
+ end
61
+
62
+ before_action :restrict_format_access!, only: [:index, :show]
63
+ end
64
+ end
@@ -0,0 +1,31 @@
1
+ module ActiveAdmin
2
+ class ResourceController < BaseController
3
+
4
+ module ActionBuilder
5
+ extend ActiveSupport::Concern
6
+
7
+ module ClassMethods
8
+
9
+ def clear_member_actions!
10
+ remove_action_methods(:member)
11
+ active_admin_config.clear_member_actions!
12
+ end
13
+
14
+ def clear_collection_actions!
15
+ remove_action_methods(:collection)
16
+ active_admin_config.clear_collection_actions!
17
+ end
18
+
19
+ private
20
+
21
+ def remove_action_methods(actions_type)
22
+ active_admin_config.public_send("#{actions_type}_actions").each do |action|
23
+ remove_method action.name
24
+ end
25
+ end
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,322 @@
1
+ module ActiveAdmin
2
+ class ResourceController < BaseController
3
+
4
+ # This module overrides most of the data access methods in Inherited
5
+ # Resources to provide Active Admin with it's data.
6
+ #
7
+ # The module also deals with authorization and resource callbacks.
8
+ #
9
+ module DataAccess
10
+
11
+ def self.included(base)
12
+ base.class_exec do
13
+ include Callbacks
14
+ include ScopeChain
15
+
16
+ define_active_admin_callbacks :build, :create, :update, :save, :destroy
17
+
18
+ helper_method :current_scope
19
+ end
20
+ end
21
+
22
+ protected
23
+
24
+ COLLECTION_APPLIES = [
25
+ :authorization_scope,
26
+ :sorting,
27
+ :filtering,
28
+ :scoping,
29
+ :includes,
30
+ :pagination,
31
+ :collection_decorator
32
+ ].freeze
33
+
34
+ # Retrieve, memoize and authorize the current collection from the db. This
35
+ # method delegates the finding of the collection to #find_collection.
36
+ #
37
+ # Once #collection has been called, the collection is available using
38
+ # either the @collection instance variable or an instance variable named
39
+ # after the resource that the collection is for. eg: Post => @post.
40
+ #
41
+ # @return [ActiveRecord::Relation] The collection for the index
42
+ def collection
43
+ get_collection_ivar || begin
44
+ collection = find_collection
45
+ authorize! Authorization::READ, active_admin_config.resource_class
46
+ set_collection_ivar collection
47
+ end
48
+ end
49
+
50
+ # Does the actual work of retrieving the current collection from the db.
51
+ # This is a great method to override if you would like to perform
52
+ # some additional db # work before your controller returns and
53
+ # authorizes the collection.
54
+ #
55
+ # @return [ActiveRecord::Relation] The collection for the index
56
+ def find_collection(options = {})
57
+ collection = scoped_collection
58
+ collection_applies(options).each do |applyer|
59
+ collection = send("apply_#{applyer}", collection)
60
+ end
61
+ collection
62
+ end
63
+
64
+ # Override this method in your controllers to modify the start point
65
+ # of our searches and index.
66
+ #
67
+ # This method should return an ActiveRecord::Relation object so that
68
+ # the searching and filtering can be applied on top
69
+ #
70
+ # Note, unless you are doing something special, you should use the
71
+ # scope_to method from the Scoping module instead of overriding this
72
+ # method.
73
+ def scoped_collection
74
+ end_of_association_chain
75
+ end
76
+
77
+ # Retrieve, memoize and authorize a resource based on params[:id]. The
78
+ # actual work of finding the resource is done in #find_resource.
79
+ #
80
+ # This method is used on all the member actions:
81
+ #
82
+ # * show
83
+ # * edit
84
+ # * update
85
+ # * destroy
86
+ #
87
+ # @return [ActiveRecord::Base] An active record object
88
+ def resource
89
+ get_resource_ivar || begin
90
+ resource = find_resource
91
+ resource = apply_decorations(resource)
92
+ authorize_resource! resource
93
+
94
+ set_resource_ivar resource
95
+ end
96
+ end
97
+
98
+ # Does the actual work of finding a resource in the database. This
99
+ # method uses the finder method as defined in InheritedResources.
100
+ #
101
+ # @return [ActiveRecord::Base] An active record object.
102
+ def find_resource
103
+ scoped_collection.send method_for_find, params[:id]
104
+ end
105
+
106
+ # Builds, memoize and authorize a new instance of the resource. The
107
+ # actual work of building the new instance is delegated to the
108
+ # #build_new_resource method.
109
+ #
110
+ # This method is used to instantiate and authorize new resources in the
111
+ # new and create controller actions.
112
+ #
113
+ # @return [ActiveRecord::Base] An un-saved active record base object
114
+ def build_resource
115
+ get_resource_ivar || begin
116
+ resource = build_new_resource
117
+ resource = apply_decorations(resource)
118
+ resource = assign_attributes(resource, resource_params)
119
+ run_build_callbacks resource
120
+ authorize_resource! resource
121
+
122
+ set_resource_ivar resource
123
+ end
124
+ end
125
+
126
+ # Builds a new resource. This method uses the method_for_build provided
127
+ # by Inherited Resources.
128
+ #
129
+ # @return [ActiveRecord::Base] An un-saved active record base object
130
+ def build_new_resource
131
+ scoped_collection.send(
132
+ method_for_build,
133
+ *resource_params.map { |params| params.slice(active_admin_config.resource_class.inheritance_column) }
134
+ )
135
+ end
136
+
137
+ # Calls all the appropriate callbacks and then creates the new resource.
138
+ #
139
+ # @param [ActiveRecord::Base] object The new resource to create
140
+ #
141
+ # @return [void]
142
+ def create_resource(object)
143
+ run_create_callbacks object do
144
+ save_resource(object)
145
+ end
146
+ end
147
+
148
+ # Calls all the appropriate callbacks and then saves the new resource.
149
+ #
150
+ # @param [ActiveRecord::Base] object The new resource to save
151
+ #
152
+ # @return [void]
153
+ def save_resource(object)
154
+ run_save_callbacks object do
155
+ object.save
156
+ end
157
+ end
158
+
159
+ # Update an object with the given attributes. Also calls the appropriate
160
+ # callbacks for update action.
161
+ #
162
+ # @param [ActiveRecord::Base] object The instance to update
163
+ #
164
+ # @param [Array] attributes An array with the attributes in the first position
165
+ # and the Active Record "role" in the second. The role
166
+ # may be set to nil.
167
+ #
168
+ # @return [void]
169
+ def update_resource(object, attributes)
170
+ object = assign_attributes(object, attributes)
171
+
172
+ run_update_callbacks object do
173
+ save_resource(object)
174
+ end
175
+ end
176
+
177
+ # Destroys an object from the database and calls appropriate callbacks.
178
+ #
179
+ # @return [void]
180
+ def destroy_resource(object)
181
+ run_destroy_callbacks object do
182
+ object.destroy
183
+ end
184
+ end
185
+
186
+ #
187
+ # Collection Helper Methods
188
+ #
189
+
190
+ # Gives the authorization library a change to pre-scope the collection.
191
+ #
192
+ # In the case of the CanCan adapter, it calls `#accessible_by` on
193
+ # the collection.
194
+ #
195
+ # @param [ActiveRecord::Relation] collection The collection to scope
196
+ #
197
+ # @return [ActiveRecord::Relation] a scoped collection of query
198
+ def apply_authorization_scope(collection)
199
+ action_name = action_to_permission(params[:action])
200
+ active_admin_authorization.scope_collection(collection, action_name)
201
+ end
202
+
203
+ def apply_sorting(chain)
204
+ params[:order] ||= active_admin_config.sort_order
205
+ order_clause = active_admin_config.order_clause.new(active_admin_config, params[:order])
206
+
207
+ if order_clause.valid?
208
+ order_clause.apply(chain)
209
+ else
210
+ chain # just return the chain
211
+ end
212
+ end
213
+
214
+ # Applies any Ransack search methods to the currently scoped collection.
215
+ # Both `search` and `ransack` are provided, but we use `ransack` to prevent conflicts.
216
+ def apply_filtering(chain)
217
+ @search = chain.ransack(params[:q] || {})
218
+ @search.result
219
+ end
220
+
221
+ def apply_scoping(chain)
222
+ @collection_before_scope = chain
223
+
224
+ if current_scope
225
+ scope_chain(current_scope, chain)
226
+ else
227
+ chain
228
+ end
229
+ end
230
+
231
+ def apply_includes(chain)
232
+ if active_admin_config.includes.any?
233
+ chain.includes *active_admin_config.includes
234
+ else
235
+ chain
236
+ end
237
+ end
238
+
239
+ def collection_before_scope
240
+ @collection_before_scope
241
+ end
242
+
243
+ def current_scope
244
+ @current_scope ||= if params[:scope]
245
+ active_admin_config.get_scope_by_id(params[:scope])
246
+ else
247
+ active_admin_config.default_scope(self)
248
+ end
249
+ end
250
+
251
+ def apply_pagination(chain)
252
+ # skip pagination if already was paginated by scope
253
+ return chain if chain.respond_to?(:total_pages)
254
+ page_method_name = Kaminari.config.page_method_name
255
+ page = params[Kaminari.config.param_name]
256
+
257
+ chain.public_send(page_method_name, page).per(per_page)
258
+ end
259
+
260
+ def collection_applies(options = {})
261
+ only = Array(options.fetch(:only, COLLECTION_APPLIES))
262
+ except = Array(options.fetch(:except, []))
263
+
264
+ COLLECTION_APPLIES & only - except
265
+ end
266
+
267
+ def per_page
268
+ if active_admin_config.paginate
269
+ dynamic_per_page || configured_per_page
270
+ else
271
+ active_admin_config.max_per_page
272
+ end
273
+ end
274
+
275
+ def dynamic_per_page
276
+ params[:per_page] || @per_page
277
+ end
278
+
279
+ def configured_per_page
280
+ Array(active_admin_config.per_page).first
281
+ end
282
+
283
+ # @param resource [ActiveRecord::Base]
284
+ # @param attributes [Array<Hash]
285
+ # @return [ActiveRecord::Base] resource
286
+ #
287
+ def assign_attributes(resource, attributes)
288
+ if resource.respond_to?(:assign_attributes)
289
+ resource.assign_attributes(*attributes)
290
+ else
291
+ resource.attributes = attributes[0]
292
+ end
293
+
294
+ resource
295
+ end
296
+
297
+ # @param resource [ActiveRecord::Base]
298
+ # @return [ActiveRecord::Base] resource
299
+ #
300
+ def apply_decorations(resource)
301
+ apply_decorator(resource)
302
+ end
303
+
304
+ # @return [String]
305
+ def smart_resource_url
306
+ if create_another?
307
+ new_resource_url(create_another: params[:create_another])
308
+ else
309
+ super
310
+ end
311
+ end
312
+
313
+ private
314
+
315
+ # @return [Boolean] true if user requested to create one more
316
+ # resource after creating this one.
317
+ def create_another?
318
+ params[:create_another].present?
319
+ end
320
+ end
321
+ end
322
+ end