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,182 @@
1
+ # Provides an intuitive way to build has_many associated records in the same form.
2
+ module Formtastic
3
+ module Inputs
4
+ module Base
5
+ def input_wrapping(&block)
6
+ html = super
7
+ template.concat(html) if template.output_buffer && template.assigns[:has_many_block]
8
+ html
9
+ end
10
+ end
11
+ end
12
+ end
13
+
14
+ module ActiveAdmin
15
+ class FormBuilder < ::Formtastic::FormBuilder
16
+
17
+ self.input_namespaces = [::Object, ::ActiveAdmin::Inputs, ::Formtastic::Inputs]
18
+
19
+ # TODO: remove both class finders after formtastic 4 (where it will be default)
20
+ self.input_class_finder = ::Formtastic::InputClassFinder
21
+ self.action_class_finder = ::Formtastic::ActionClassFinder
22
+
23
+ def cancel_link(url = { action: "index" }, html_options = {}, li_attrs = {})
24
+ li_attrs[:class] ||= "cancel"
25
+ li_content = template.link_to I18n.t('active_admin.cancel'), url, html_options
26
+ template.content_tag(:li, li_content, li_attrs)
27
+ end
28
+
29
+ attr_accessor :already_in_an_inputs_block
30
+
31
+ def has_many(assoc, options = {}, &block)
32
+ HasManyBuilder.new(self, assoc, options).render(&block)
33
+ end
34
+ end
35
+
36
+ # Decorates a FormBuilder with the additional attributes and methods
37
+ # to build a has_many block. Nested has_many blocks are handled by
38
+ # nested decorators.
39
+ class HasManyBuilder < SimpleDelegator
40
+ attr_reader :assoc
41
+ attr_reader :options
42
+ attr_reader :heading, :sortable_column, :sortable_start
43
+ attr_reader :new_record, :destroy_option
44
+
45
+ def initialize(has_many_form, assoc, options)
46
+ super has_many_form
47
+ @assoc = assoc
48
+ @options = extract_custom_settings!(options.dup)
49
+ @options.reverse_merge!(for: assoc)
50
+ @options[:class] = [options[:class], "inputs has_many_fields"].compact.join(' ')
51
+
52
+ if sortable_column
53
+ @options[:for] = [assoc, sorted_children(sortable_column)]
54
+ end
55
+ end
56
+
57
+ def render(&block)
58
+ html = "".html_safe
59
+ html << template.content_tag(:h3) { heading } if heading.present?
60
+ html << template.capture { content_has_many(&block) }
61
+ html = wrap_div_or_li(html)
62
+ template.concat(html) if template.output_buffer
63
+ html
64
+ end
65
+
66
+ protected
67
+
68
+ # remove options that should not render as attributes
69
+ def extract_custom_settings!(options)
70
+ @heading = options.key?(:heading) ? options.delete(:heading) : default_heading
71
+ @sortable_column = options.delete(:sortable)
72
+ @sortable_start = options.delete(:sortable_start) || 0
73
+ @new_record = options.key?(:new_record) ? options.delete(:new_record) : true
74
+ @destroy_option = options.delete(:allow_destroy)
75
+ options
76
+ end
77
+
78
+ def default_heading
79
+ assoc_klass.model_name.
80
+ human(count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT)
81
+ end
82
+
83
+ def assoc_klass
84
+ @assoc_klass ||= __getobj__.object.class.reflect_on_association(assoc).klass
85
+ end
86
+
87
+ def content_has_many(&block)
88
+ form_block = proc do |form_builder|
89
+ render_has_many_form(form_builder, options[:parent], &block)
90
+ end
91
+
92
+ template.assigns[:has_many_block] = true
93
+ contents = without_wrapper { inputs(options, &form_block) }
94
+ contents ||= "".html_safe
95
+
96
+ js = new_record ? js_for_has_many(options[:class], &form_block) : ''
97
+ contents << js
98
+ end
99
+
100
+ # Renders the Formtastic inputs then appends ActiveAdmin delete and sort actions.
101
+ def render_has_many_form(form_builder, parent, &block)
102
+ index = parent && form_builder.send(:parent_child_index, parent)
103
+ template.concat template.capture { yield(form_builder, index) }
104
+ template.concat has_many_actions(form_builder, "".html_safe)
105
+ end
106
+
107
+ def has_many_actions(form_builder, contents)
108
+ if form_builder.object.new_record?
109
+ contents << template.content_tag(:li) do
110
+ template.link_to I18n.t('active_admin.has_many_remove'), "#", class: 'button has_many_remove'
111
+ end
112
+ elsif allow_destroy?(form_builder.object)
113
+ form_builder.input(:_destroy, as: :boolean,
114
+ wrapper_html: { class: 'has_many_delete' },
115
+ label: I18n.t('active_admin.has_many_delete'))
116
+ end
117
+
118
+ if sortable_column
119
+ form_builder.input sortable_column, as: :hidden
120
+
121
+ contents << template.content_tag(:li, class: 'handle') do
122
+ I18n.t('active_admin.move')
123
+ end
124
+ end
125
+
126
+ contents
127
+ end
128
+
129
+ def allow_destroy?(form_object)
130
+ !! case destroy_option
131
+ when Symbol, String
132
+ form_object.public_send destroy_option
133
+ when Proc
134
+ destroy_option.call form_object
135
+ else
136
+ destroy_option
137
+ end
138
+ end
139
+
140
+ def sorted_children(column)
141
+ __getobj__.object.public_send(assoc).sort_by do |o|
142
+ attribute = o.public_send column
143
+ [attribute.nil? ? Float::INFINITY : attribute, o.id || Float::INFINITY]
144
+ end
145
+ end
146
+
147
+ def without_wrapper
148
+ is_being_wrapped = already_in_an_inputs_block
149
+ self.already_in_an_inputs_block = false
150
+
151
+ html = yield
152
+
153
+ self.already_in_an_inputs_block = is_being_wrapped
154
+ html
155
+ end
156
+
157
+ # Capture the ADD JS
158
+ def js_for_has_many(class_string, &form_block)
159
+ assoc_name = assoc_klass.model_name
160
+ placeholder = "NEW_#{assoc_name.to_s.underscore.upcase.gsub(/\//, '_')}_RECORD"
161
+ opts = {
162
+ for: [assoc, assoc_klass.new],
163
+ class: class_string,
164
+ for_options: { child_index: placeholder }
165
+ }
166
+ html = template.capture { __getobj__.send(:inputs_for_nested_attributes, opts, &form_block) }
167
+ text = new_record.is_a?(String) ? new_record : I18n.t('active_admin.has_many_new', model: assoc_name.human)
168
+
169
+ template.link_to text, '#', class: "button has_many_add", data: {
170
+ html: CGI.escapeHTML(html).html_safe, placeholder: placeholder
171
+ }
172
+ end
173
+
174
+ def wrap_div_or_li(html)
175
+ template.content_tag(already_in_an_inputs_block ? :li : :div,
176
+ html,
177
+ class: "has_many_container #{assoc}",
178
+ 'data-sortable' => sortable_column,
179
+ 'data-sortable-start' => sortable_start)
180
+ end
181
+ end
182
+ end
@@ -0,0 +1,45 @@
1
+ module ActiveAdmin
2
+ module Generators
3
+ class Boilerplate
4
+ def initialize(class_name)
5
+ @class_name = class_name
6
+ end
7
+
8
+ def attributes
9
+ @class_name.constantize.new.attributes.keys
10
+ end
11
+
12
+ def rows
13
+ attributes.map { |a| row(a) }.join("\n")
14
+ end
15
+
16
+ def row(name)
17
+ "# row :#{name.gsub(/_id$/, '')}"
18
+ end
19
+
20
+ def columns
21
+ attributes.map { |a| column(a) }.join("\n")
22
+ end
23
+
24
+ def column(name)
25
+ "# column :#{name.gsub(/_id$/, '')}"
26
+ end
27
+
28
+ def filters
29
+ attributes.map { |a| filter(a) }.join("\n")
30
+ end
31
+
32
+ def filter(name)
33
+ "# filter :#{name.gsub(/_id$/, '')}"
34
+ end
35
+
36
+ def form_inputs
37
+ attributes.reject { |a| %w(id created_at updated_at).include? a }.map { |a| form_input(a) }.join("\n")
38
+ end
39
+
40
+ def form_input(name)
41
+ "# f.input :#{name.gsub(/_id$/, '')}"
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,19 @@
1
+ module ActiveAdmin
2
+ module Helpers
3
+ module Collection
4
+ # 1. removes `select` and `order` to prevent invalid SQL
5
+ # 2. correctly handles the Hash returned when `group by` is used
6
+ def collection_size(c = collection)
7
+ return c.count if c.is_a?(Array)
8
+
9
+ c = c.except :select, :order
10
+
11
+ c.group_values.present? ? c.count.count : c.count
12
+ end
13
+
14
+ def collection_is_empty?(c = collection)
15
+ collection_size(c) == 0
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ module ActiveAdmin
2
+ module Helpers
3
+ module I18n
4
+ PLURAL_MANY_COUNT = 2.1
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,38 @@
1
+ module ActiveAdmin
2
+
3
+ # Shareable module to give a #display_on?(action) method
4
+ # which returns true or false depending on an options hash.
5
+ #
6
+ # The options hash accepts:
7
+ #
8
+ # only: :index
9
+ # only: [:index, :show]
10
+ # except: :index
11
+ # except: [:index, :show]
12
+ #
13
+ # call #normalize_display_options! after @options has been set
14
+ # to ensure that the display options are setup correctly
15
+
16
+ module OptionalDisplay
17
+ def display_on?(action, render_context = self)
18
+ return false if @options[:only] && !@options[:only].include?(action.to_sym)
19
+ return false if @options[:except] && @options[:except].include?(action.to_sym)
20
+
21
+ case condition = @options[:if]
22
+ when Symbol, String
23
+ render_context.public_send condition
24
+ when Proc
25
+ render_context.instance_exec &condition
26
+ else
27
+ true
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def normalize_display_options!
34
+ @options[:only] = Array(@options[:only]) if @options[:only]
35
+ @options[:except] = Array(@options[:except]) if @options[:except]
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,15 @@
1
+ module ActiveAdmin
2
+ module Helpers
3
+ module Routes
4
+ module UrlHelpers
5
+ include Rails.application.routes.url_helpers
6
+ end
7
+
8
+ extend UrlHelpers
9
+
10
+ def self.default_url_options
11
+ Rails.application.routes.default_url_options || {}
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ module ActiveAdmin
2
+ module ScopeChain
3
+ private
4
+ # Scope an ActiveRecord::Relation chain
5
+ #
6
+ # Example:
7
+ # scope_chain(Scope.new(:published), Article)
8
+ # # => Article.published
9
+ #
10
+ # @param scope The <ActiveAdmin::Scope> we want to scope on
11
+ # @param chain The ActiveRecord::Relation chain or ActiveRecord::Base class to scope
12
+ # @return <ActiveRecord::Relation or ActiveRecord::Base> The scoped relation chain
13
+ #
14
+ def scope_chain(scope, chain)
15
+ if scope.scope_method
16
+ chain.public_send scope.scope_method
17
+ elsif scope.scope_block
18
+ instance_exec chain, &scope.scope_block
19
+ else
20
+ chain
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ module ActiveAdmin
2
+ module Inputs
3
+ extend ActiveSupport::Autoload
4
+
5
+ autoload :DatepickerInput
6
+
7
+ module Filters
8
+ extend ActiveSupport::Autoload
9
+
10
+ autoload :Base
11
+ autoload :StringInput
12
+ autoload :TextInput
13
+ autoload :DatePickerInput
14
+ autoload :DateRangeInput
15
+ autoload :NumericInput
16
+ autoload :SelectInput
17
+ autoload :CheckBoxesInput
18
+ autoload :BooleanInput
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ module ActiveAdmin
2
+ module Inputs
3
+ class DatepickerInput < ::Formtastic::Inputs::StringInput
4
+ def input_html_options
5
+ super.tap do |options|
6
+ options[:class] = [options[:class], "datepicker"].compact.join(' ')
7
+ options[:data] ||= {}
8
+ options[:data].merge! datepicker_options
9
+ end
10
+ end
11
+
12
+ # Can pass proc to filter label option
13
+ def label_from_options
14
+ res = super
15
+ res = res.call if res.is_a? Proc
16
+ res
17
+ end
18
+
19
+ private
20
+ def datepicker_options
21
+ options = self.options.fetch(:datepicker_options, {})
22
+ options = Hash[options.map { |k, v| [k.to_s.camelcase(:lower), v] }]
23
+ { datepicker_options: options }
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,44 @@
1
+ module ActiveAdmin
2
+ module Inputs
3
+ module Filters
4
+ module Base
5
+ include ::Formtastic::Inputs::Base
6
+ include ::ActiveAdmin::Filters::FormtasticAddons
7
+
8
+ extend ::ActiveSupport::Autoload
9
+ autoload :SearchMethodSelect
10
+
11
+ def input_wrapping(&block)
12
+ template.content_tag :div, template.capture(&block), wrapper_html_options
13
+ end
14
+
15
+ def required?
16
+ false
17
+ end
18
+
19
+ # Can pass proc to filter label option
20
+ def label_from_options
21
+ res = super
22
+ res = res.call if res.is_a? Proc
23
+ res
24
+ end
25
+
26
+ def wrapper_html_options
27
+ opts = super
28
+ (opts[:class] ||= '') << " filter_form_field filter_#{as}"
29
+ opts
30
+ end
31
+
32
+ # Override the standard finder to accept a proc
33
+ def collection_from_options
34
+ if options[:collection].is_a?(Proc)
35
+ template.instance_exec(&options[:collection])
36
+ else
37
+ super
38
+ end
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,75 @@
1
+ # This is a common set of Formtastic overrides needed to build a filter form
2
+ # that lets you select from a set of search methods for a given attribute.
3
+ #
4
+ # Your class must declare available filters for this module to work.
5
+ # Those filters must be recognizable by Ransack. For example:
6
+ #
7
+ # class NumericInput < ::Formtastic::Inputs::NumberInput
8
+ # include Base
9
+ # include Base::SearchMethodSelect
10
+ #
11
+ # filter :equals, :greater_than, :less_than
12
+ # end
13
+ #
14
+ module ActiveAdmin
15
+ module Inputs
16
+ module Filters
17
+ module Base
18
+ module SearchMethodSelect
19
+
20
+ def self.included(base)
21
+ base.extend ClassMethods
22
+ end
23
+
24
+ module ClassMethods
25
+ attr_reader :filters
26
+
27
+ def filter(*filters)
28
+ (@filters ||= []).push *filters
29
+ end
30
+ end
31
+
32
+ def wrapper_html_options
33
+ opts = super
34
+ (opts[:class] ||= '') << ' select_and_search' unless seems_searchable?
35
+ opts
36
+ end
37
+
38
+ def to_html
39
+ input_wrapping do
40
+ label_html << # your label
41
+ select_html << # the dropdown that holds the available search methods
42
+ input_html # your input field
43
+ end
44
+ end
45
+
46
+ def input_html
47
+ builder.text_field current_filter, input_html_options
48
+ end
49
+
50
+ def select_html
51
+ template.select_tag '', template.options_for_select(filter_options, current_filter)
52
+ end
53
+
54
+ def filters
55
+ options[:filters] || self.class.filters
56
+ end
57
+
58
+ def current_filter
59
+ @current_filter ||= begin
60
+ methods = filters.map { |f| "#{method}_#{f}" }
61
+ methods.detect { |m| @object.public_send m } || methods.first
62
+ end
63
+ end
64
+
65
+ def filter_options
66
+ filters.collect do |filter|
67
+ [I18n.t("active_admin.filters.predicates.#{filter}"), "#{method}_#{filter}"]
68
+ end
69
+ end
70
+
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end