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,155 @@
1
+ module ActiveAdmin
2
+
3
+ module BatchActions
4
+ module ResourceExtension
5
+ def initialize(*)
6
+ super
7
+ @batch_actions = {}
8
+ add_default_batch_action
9
+ end
10
+
11
+ # @return [Array] The set of batch actions for this resource
12
+ def batch_actions
13
+ batch_actions_enabled? ? @batch_actions.values.sort : []
14
+ end
15
+
16
+ # @return [Boolean] If batch actions are enabled for this resource
17
+ def batch_actions_enabled?
18
+ # If the resource config has been set, use it. Otherwise
19
+ # return the namespace setting
20
+ @batch_actions_enabled.nil? ? namespace.batch_actions : @batch_actions_enabled
21
+ end
22
+
23
+ # Disable or Enable batch actions for this resource
24
+ # Set to `nil` to inherit the setting from the namespace
25
+ def batch_actions=(bool)
26
+ @batch_actions_enabled = bool
27
+ end
28
+
29
+ # Add a new batch item to a resource
30
+ # @param [String] title
31
+ # @param [Hash] options
32
+ # => :if is a proc that will be called to determine if the BatchAction should be displayed
33
+ # => :sort_order is used to sort the batch actions ascending
34
+ # => :confirm is a string to prompt the user with (or a boolean to use the default message)
35
+ # => :form is a Hash of form fields you want the user to fill out
36
+ #
37
+ def add_batch_action(sym, title, options = {}, &block)
38
+ @batch_actions[sym] = ActiveAdmin::BatchAction.new(sym, title, options, &block)
39
+ end
40
+
41
+ # Remove a batch action
42
+ # @param [Symbol] sym
43
+ # @return [ActiveAdmin::BatchAction] the batch action, if it was present
44
+ #
45
+ def remove_batch_action(sym)
46
+ @batch_actions.delete(sym.to_sym)
47
+ end
48
+
49
+ # Clears all the existing batch actions for this resource
50
+ def clear_batch_actions!
51
+ @batch_actions = {}
52
+ end
53
+
54
+ private
55
+
56
+ # @return [ActiveAdmin::BatchAction] The default "delete" action
57
+ def add_default_batch_action
58
+ destroy_options = {
59
+ priority: 100,
60
+ confirm: proc { I18n.t('active_admin.batch_actions.delete_confirmation', plural_model: active_admin_config.plural_resource_label.downcase) },
61
+ if: proc { controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
62
+ }
63
+
64
+ add_batch_action :destroy, proc { I18n.t('active_admin.delete') }, destroy_options do |selected_ids|
65
+ batch_action_collection.find(selected_ids).each do |record|
66
+ authorize! ActiveAdmin::Auth::DESTROY, record
67
+ destroy_resource(record)
68
+ end
69
+
70
+ redirect_to active_admin_config.route_collection_path(params),
71
+ notice: I18n.t("active_admin.batch_actions.succesfully_destroyed",
72
+ count: selected_ids.count,
73
+ model: active_admin_config.resource_label.downcase,
74
+ plural_model: active_admin_config.plural_resource_label(count: selected_ids.count).downcase)
75
+ end
76
+ end
77
+
78
+ end
79
+ end
80
+
81
+ class BatchAction
82
+
83
+ include Comparable
84
+
85
+ attr_reader :block, :title, :sym
86
+
87
+ DEFAULT_CONFIRM_MESSAGE = proc { I18n.t 'active_admin.batch_actions.default_confirmation' }
88
+
89
+ # Create a Batch Action
90
+ #
91
+ # Examples:
92
+ #
93
+ # BatchAction.new :flag
94
+ # => Will create an action that appears in the action list popover
95
+ #
96
+ # BatchAction.new(:flag) { |selection| redirect_to collection_path, notice: "#{selection.length} users flagged" }
97
+ # => Will create an action that uses a block to process the request (which receives one paramater of the selected objects)
98
+ #
99
+ # BatchAction.new("Perform Long Operation on") { |selection| }
100
+ # => You can create batch actions with a title instead of a Symbol
101
+ #
102
+ # BatchAction.new(:flag, if: proc{ can? :flag, AdminUser }) { |selection| }
103
+ # => You can provide an `:if` proc to choose when the batch action should be displayed
104
+ #
105
+ # BatchAction.new :flag, confirm: true
106
+ # => You can pass `true` to `:confirm` to use the default confirm message.
107
+ #
108
+ # BatchAction.new(:flag, confirm: "Are you sure?") { |selection| }
109
+ # => You can pass a custom confirmation message through `:confirm`
110
+ #
111
+ # BatchAction.new(:flag, form: {foo: :text, bar: :checkbox}) { |selection, inputs| }
112
+ # => You can pass a hash of options to `:form` that will be rendered as form input fields for the user to fill out.
113
+ #
114
+ def initialize(sym, title, options = {}, &block)
115
+ @sym = sym
116
+ @title = title
117
+ @options = options
118
+ @block = block
119
+ @confirm = options[:confirm]
120
+ @block ||= proc {}
121
+ end
122
+
123
+ def confirm
124
+ if @confirm == true
125
+ DEFAULT_CONFIRM_MESSAGE
126
+ elsif !@confirm && @options[:form]
127
+ DEFAULT_CONFIRM_MESSAGE
128
+ else
129
+ @confirm
130
+ end
131
+ end
132
+
133
+ def inputs
134
+ @options[:form]
135
+ end
136
+
137
+ # Returns the display if block. If the block was not explicitly defined
138
+ # a default block always returning true will be returned.
139
+ def display_if_block
140
+ @options[:if] || proc { true }
141
+ end
142
+
143
+ # Used for sorting
144
+ def priority
145
+ @options[:priority] || 10
146
+ end
147
+
148
+ # sort operator
149
+ def <=>(other)
150
+ self.priority <=> other.priority
151
+ end
152
+
153
+ end
154
+
155
+ end
@@ -0,0 +1,38 @@
1
+ require 'active_admin/component'
2
+
3
+ module ActiveAdmin
4
+ module BatchActions
5
+
6
+ # Build a BatchActionForm
7
+ class BatchActionForm < ActiveAdmin::Component
8
+ builder_method :batch_action_form
9
+
10
+ attr_reader :prefix_html
11
+
12
+ def build(options = {}, &block)
13
+ options[:id] ||= "collection_selection"
14
+
15
+ # Open a form with two hidden input fields:
16
+ # batch_action => name of the specific action called
17
+ # batch_action_inputs => a JSON string of any requested confirmation values
18
+ text_node form_tag active_admin_config.route_batch_action_path(params, url_options), id: options[:id]
19
+ input name: :batch_action, id: :batch_action, type: :hidden
20
+ input name: :batch_action_inputs, id: :batch_action_inputs, type: :hidden
21
+
22
+ super(options)
23
+ end
24
+
25
+ # Override the default to_s to include a closing form tag
26
+ def to_s
27
+ content + closing_form_tag
28
+ end
29
+
30
+ private
31
+
32
+ def closing_form_tag
33
+ '</form>'.html_safe
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,58 @@
1
+ require 'active_admin/component'
2
+
3
+ module ActiveAdmin
4
+ module BatchActions
5
+
6
+ class BatchActionSelector < ActiveAdmin::Component
7
+ builder_method :batch_action_selector
8
+
9
+ # Build a new batch actions selector
10
+ #
11
+ # @param [Array] batch_actions An array of batch actions
12
+ def build(batch_actions)
13
+ @batch_actions = Array(batch_actions)
14
+ @drop_down = build_drop_down
15
+ end
16
+
17
+ # We don't want to wrap the action list (or any other children) in
18
+ # an unnecessary div, so instead we just return the children
19
+ def to_s
20
+ children.to_s
21
+ end
22
+
23
+ private
24
+
25
+ def build_drop_down
26
+ return if batch_actions_to_display.empty?
27
+ dropdown_menu I18n.t("active_admin.batch_actions.button_label"),
28
+ class: "batch_actions_selector dropdown_menu",
29
+ button: { class: "disabled" } do
30
+ batch_actions_to_display.each do |batch_action|
31
+ confirmation_text = render_or_call_method_or_proc_on(self, batch_action.confirm)
32
+
33
+ options = {
34
+ :class => "batch_action",
35
+ "data-action" => batch_action.sym,
36
+ "data-confirm" => confirmation_text,
37
+ "data-inputs" => render_in_context(self, batch_action.inputs).to_json
38
+ }
39
+
40
+ default_title = render_or_call_method_or_proc_on(self, batch_action.title)
41
+ title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: default_title)
42
+ label = I18n.t("active_admin.batch_actions.action_label", title: title)
43
+
44
+ item label, "#", options
45
+ end
46
+ end
47
+ end
48
+
49
+ # Return the set of batch actions that should be displayed
50
+ def batch_actions_to_display
51
+ @batch_actions.select do |batch_action|
52
+ call_method_or_proc_on(self, batch_action.display_if_block)
53
+ end
54
+ end
55
+
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,38 @@
1
+ require 'active_admin/component'
2
+
3
+ module ActiveAdmin
4
+ module BatchActions
5
+
6
+ # Creates the toggle checkbox used to toggle the collection selection on/off
7
+ class ResourceSelectionToggleCell < ActiveAdmin::Component
8
+ builder_method :resource_selection_toggle_cell
9
+
10
+ def build(label_text = '')
11
+ label do
12
+ input type: "checkbox", id: "collection_selection_toggle_all", name: "collection_selection_toggle_all", class: "toggle_all"
13
+ text_node label_text if label_text.present?
14
+ end
15
+ end
16
+ end
17
+
18
+ # Creates the checkbox used to select a resource in the collection selection
19
+ class ResourceSelectionCell < ActiveAdmin::Component
20
+ builder_method :resource_selection_cell
21
+
22
+ def build(resource)
23
+ input type: "checkbox", id: "batch_action_item_#{resource.id}", value: resource.id, class: "collection_selection", name: "collection_selection[]"
24
+ end
25
+ end
26
+
27
+ # Creates a wrapper panel for all index pages, except for the table, as the table has the checkbox in the thead
28
+ class ResourceSelectionTogglePanel < ActiveAdmin::Component
29
+ builder_method :resource_selection_toggle_panel
30
+
31
+ def build
32
+ super(id: "collection_selection_toggle_panel")
33
+ resource_selection_toggle_cell(I18n.t('active_admin.batch_actions.selection_toggle_explanation', default: "(Toggle Selection)"))
34
+ end
35
+ end
36
+
37
+ end
38
+ end
@@ -0,0 +1,88 @@
1
+ module ActiveAdmin
2
+ module Callbacks
3
+ extend ActiveSupport::Concern
4
+
5
+ private
6
+
7
+ # Simple callback system. Implements before and after callbacks for
8
+ # use within the controllers.
9
+ #
10
+ # We didn't use the ActiveSupport callbacks because they do not support
11
+ # passing in any arbitrary object into the callback method (which we
12
+ # need to do)
13
+
14
+ def run_callback(method, *args)
15
+ case method
16
+ when Symbol
17
+ send(method, *args)
18
+ when Proc
19
+ instance_exec(*args, &method)
20
+ else
21
+ raise "Please register with callbacks using a symbol or a block/proc."
22
+ end
23
+ end
24
+
25
+ module ClassMethods
26
+
27
+ private
28
+
29
+ # Define a new callback.
30
+ #
31
+ # Example:
32
+ #
33
+ # class MyClassWithCallbacks
34
+ # include ActiveAdmin::Callbacks
35
+ #
36
+ # define_active_admin_callbacks :save
37
+ #
38
+ # before_save do |arg1, arg2|
39
+ # # runs before save
40
+ # end
41
+ #
42
+ # after_save :call_after_save
43
+ #
44
+ # def save
45
+ # # Will run before, yield, then after
46
+ # run_save_callbacks :arg1, :arg2 do
47
+ # save!
48
+ # end
49
+ # end
50
+ #
51
+ # protected
52
+ #
53
+ # def call_after_save(arg1, arg2)
54
+ # # runs after save
55
+ # end
56
+ # end
57
+ #
58
+ def define_active_admin_callbacks(*names)
59
+ names.each do |name|
60
+ [:before, :after].each do |type|
61
+ callback_name = "#{type}_#{name}_callbacks"
62
+ callback_ivar = "@#{callback_name}"
63
+
64
+ # def self.before_create_callbacks
65
+ singleton_class.send :define_method, callback_name do
66
+ instance_variable_get(callback_ivar) || instance_variable_set(callback_ivar, [])
67
+ end
68
+ singleton_class.send :private, callback_name
69
+
70
+ # def self.before_create
71
+ singleton_class.send :define_method, "#{type}_#{name}" do |method = nil, &block|
72
+ send(callback_name).push method || block
73
+ end
74
+ end
75
+
76
+ # def run_create_callbacks
77
+ define_method "run_#{name}_callbacks" do |*args, &block|
78
+ self.class.send("before_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
79
+ value = block.try :call
80
+ self.class.send("after_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
81
+ return value
82
+ end
83
+ send :private, "run_#{name}_callbacks"
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,36 @@
1
+ unless ActiveAdmin::Dependency.cancan? || ActiveAdmin::Dependency.cancancan?
2
+ ActiveAdmin::Dependency.cancan!
3
+ end
4
+
5
+ require 'cancan'
6
+
7
+ # Add a setting to the application to configure the ability
8
+ ActiveAdmin::Application.inheritable_setting :cancan_ability_class, "Ability"
9
+
10
+ module ActiveAdmin
11
+
12
+ class CanCanAdapter < AuthorizationAdapter
13
+
14
+ def authorized?(action, subject = nil)
15
+ cancan_ability.can?(action, subject)
16
+ end
17
+
18
+ def cancan_ability
19
+ @cancan_ability ||= initialize_cancan_ability
20
+ end
21
+
22
+ def scope_collection(collection, action = ActiveAdmin::Auth::READ)
23
+ collection.accessible_by(cancan_ability, action)
24
+ end
25
+
26
+ private
27
+
28
+ def initialize_cancan_ability
29
+ klass = resource.namespace.cancan_ability_class
30
+ klass = klass.constantize if klass.is_a? String
31
+ klass.new user
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,5 @@
1
+ module ActiveAdmin
2
+ class Component < Arbre::Component
3
+
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ module ActiveAdmin
2
+ class ControllerAction
3
+ attr_reader :name
4
+ def initialize(name, options = {})
5
+ @name = name
6
+ @options = options
7
+ end
8
+
9
+ def http_verb
10
+ @options[:method] ||= :get
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,133 @@
1
+ module ActiveAdmin
2
+ # CSVBuilder stores CSV configuration
3
+ #
4
+ # Usage example:
5
+ #
6
+ # csv_builder = CSVBuilder.new
7
+ # csv_builder.column :id
8
+ # csv_builder.column("Name") { |resource| resource.full_name }
9
+ # csv_builder.column(:name, humanize_name: false)
10
+ # csv_builder.column("name", humanize_name: false) { |resource| resource.full_name }
11
+ #
12
+ # csv_builder = CSVBuilder.new col_sep: ";"
13
+ # csv_builder = CSVBuilder.new humanize_name: false
14
+ # csv_builder.column :id
15
+ #
16
+ #
17
+ class CSVBuilder
18
+
19
+ # Return a default CSVBuilder for a resource
20
+ # The CSVBuilder's columns would be Id followed by this
21
+ # resource's content columns
22
+ def self.default_for_resource(resource)
23
+ new resource: resource do
24
+ column :id
25
+ resource.content_columns.each { |c| column c }
26
+ end
27
+ end
28
+
29
+ attr_reader :columns, :options, :view_context
30
+
31
+ COLUMN_TRANSITIVE_OPTIONS = [:humanize_name].freeze
32
+
33
+ def initialize(options = {}, &block)
34
+ @resource = options.delete(:resource)
35
+ @columns = []
36
+ @options = options
37
+ @block = block
38
+ end
39
+
40
+ def column(name, options = {}, &block)
41
+ @columns << Column.new(name, @resource, column_transitive_options.merge(options), block)
42
+ end
43
+
44
+ def build(controller, csv)
45
+ @collection = controller.send :find_collection, except: :pagination
46
+ columns = exec_columns controller.view_context
47
+ options = ActiveAdmin.application.csv_options.merge self.options
48
+ bom = options.delete :byte_order_mark
49
+ column_names = options.delete(:column_names) { true }
50
+ csv_options = options.except :encoding_options, :humanize_name
51
+
52
+ csv << bom if bom
53
+
54
+ if column_names
55
+ csv << CSV.generate_line(columns.map { |c| encode c.name, options }, csv_options)
56
+ end
57
+
58
+ ActiveRecord::Base.uncached do
59
+ (1..paginated_collection.total_pages).each do |page|
60
+ paginated_collection(page).each do |resource|
61
+ resource = controller.send :apply_decorator, resource
62
+ csv << CSV.generate_line(build_row(resource, columns, options), csv_options)
63
+ end
64
+ end
65
+ end
66
+
67
+ csv
68
+ end
69
+
70
+ def exec_columns(view_context = nil)
71
+ @view_context = view_context
72
+ @columns = [] # we want to re-render these every instance
73
+ instance_exec &@block if @block.present?
74
+ columns
75
+ end
76
+
77
+ def build_row(resource, columns, options)
78
+ columns.map do |column|
79
+ encode call_method_or_proc_on(resource, column.data), options
80
+ end
81
+ end
82
+
83
+ def encode(content, options)
84
+ if options[:encoding]
85
+ content.to_s.encode options[:encoding], options[:encoding_options]
86
+ else
87
+ content
88
+ end
89
+ end
90
+
91
+ def method_missing(method, *args, &block)
92
+ if @view_context.respond_to? method
93
+ @view_context.public_send method, *args, &block
94
+ else
95
+ super
96
+ end
97
+ end
98
+
99
+ class Column
100
+ attr_reader :name, :data, :options
101
+
102
+ DEFAULT_OPTIONS = { humanize_name: true }
103
+
104
+ def initialize(name, resource = nil, options = {}, block = nil)
105
+ @options = options.reverse_merge(DEFAULT_OPTIONS)
106
+ @name = humanize_name(name, resource, @options[:humanize_name])
107
+ @data = block || name.to_sym
108
+ end
109
+
110
+ def humanize_name(name, resource, humanize_name_option)
111
+ if humanize_name_option
112
+ name.is_a?(Symbol) && resource ? resource.resource_class.human_attribute_name(name) : name.to_s.humanize
113
+ else
114
+ name.to_s
115
+ end
116
+ end
117
+ end
118
+
119
+ private
120
+
121
+ def column_transitive_options
122
+ @column_transitive_options ||= @options.slice(*COLUMN_TRANSITIVE_OPTIONS)
123
+ end
124
+
125
+ def paginated_collection(page_no = 1)
126
+ @collection.public_send(Kaminari.config.page_method_name, page_no).per(batch_size)
127
+ end
128
+
129
+ def batch_size
130
+ 1000
131
+ end
132
+ end
133
+ end