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,11 @@
1
+ require 'active_admin/filters/dsl'
2
+ require 'active_admin/filters/resource_extension'
3
+ require 'active_admin/filters/formtastic_addons'
4
+ require 'active_admin/filters/forms'
5
+ require 'active_admin/helpers/optional_display'
6
+ require 'active_admin/filters/active_sidebar'
7
+
8
+ # Add our Extensions
9
+ ActiveAdmin::ResourceDSL.send :include, ActiveAdmin::Filters::DSL
10
+ ActiveAdmin::Resource.send :include, ActiveAdmin::Filters::ResourceExtension
11
+ ActiveAdmin::ViewHelpers.send :include, ActiveAdmin::Filters::ViewHelper
@@ -0,0 +1,29 @@
1
+ require 'active_admin/filters/active_filter'
2
+
3
+ module ActiveAdmin
4
+ module Filters
5
+
6
+ class Active
7
+ attr_accessor :filters, :resource
8
+
9
+ # Instantiate a `Active` object containing collection of current active filters
10
+
11
+ # @param resource [ActiveAdmin::Resource] current resource
12
+ # @param search [Ransack::Search] search object
13
+ #
14
+ # @see ActiveAdmin::ResourceController::DataAcces#apply_filtering
15
+ def initialize(resource, search)
16
+ @resource = resource
17
+ @filters = build_filters(search.conditions)
18
+ end
19
+
20
+ private
21
+
22
+ def build_filters(conditions)
23
+ conditions.map { |condition| ActiveFilter.new(resource, condition.dup) }
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,124 @@
1
+ module ActiveAdmin
2
+ module Filters
3
+
4
+ class ActiveFilter
5
+ include ActiveAdmin::ViewHelpers
6
+
7
+ attr_reader :resource, :condition, :related_class
8
+
9
+ # Instantiate a `ActiveFilter`
10
+ #
11
+ # @param resource [ActiveAdmin::Resource] current resource
12
+ # @param condition [Ransack::Nodes::Condition] applied ransack condition
13
+ def initialize(resource, condition)
14
+ @resource = resource
15
+ @condition = condition
16
+ @related_class = find_class if find_class?
17
+ end
18
+
19
+ def values
20
+ condition_values = condition.values.map(&:value)
21
+ if related_class
22
+ related_class.where(related_primary_key => condition_values)
23
+ else
24
+ condition_values
25
+ end
26
+ end
27
+
28
+ def label
29
+ translated_predicate = predicate_name.downcase
30
+ if filter_label && filter_label.is_a?(Proc)
31
+ "#{filter_label.call} #{translated_predicate}"
32
+ elsif filter_label
33
+ "#{filter_label} #{translated_predicate}"
34
+ elsif related_class
35
+ "#{related_class_name} #{translated_predicate}"
36
+ else
37
+ "#{attribute_name} #{translated_predicate}"
38
+ end.strip
39
+ end
40
+
41
+ def predicate_name
42
+ I18n.t("active_admin.filters.predicates.#{condition.predicate.name}",
43
+ default: ransack_predicate_name)
44
+ end
45
+
46
+ def html_options
47
+ { class: "current_filter current_filter_#{condition.key}" }
48
+ end
49
+
50
+ private
51
+
52
+ def resource_class
53
+ resource.resource_class
54
+ end
55
+
56
+ def attribute_name
57
+ resource_class.human_attribute_name(name)
58
+ end
59
+
60
+ def related_class_name
61
+ return unless related_class
62
+
63
+ related_class.model_name.human
64
+ end
65
+
66
+ def filter_label
67
+ return unless filter
68
+
69
+ filter[:label] || I18n.t(name, scope: ['formtastic', 'labels'], default: nil)
70
+ end
71
+
72
+ #@return Ransack::Nodes::Attribute
73
+ def condition_attribute
74
+ condition.attributes[0]
75
+ end
76
+
77
+ def name
78
+ condition_attribute.attr_name
79
+ end
80
+
81
+ def ransack_predicate_name
82
+ Ransack::Translate.predicate(condition.predicate.name)
83
+ end
84
+
85
+ def find_class?
86
+ ['eq', 'in'].include? condition.predicate.arel_predicate
87
+ end
88
+
89
+ # detect related class for Ransack::Nodes::Attribute
90
+ def find_class
91
+ if condition_attribute.klass != resource_class && condition_attribute.klass.primary_key == name.to_s
92
+ condition_attribute.klass
93
+ elsif predicate_association
94
+ predicate_association.klass
95
+ end
96
+ end
97
+
98
+ def filter
99
+ resource.filters[name.to_sym]
100
+ end
101
+
102
+ def related_primary_key
103
+ if predicate_association
104
+ predicate_association.association_primary_key
105
+ elsif related_class
106
+ related_class.primary_key
107
+ end
108
+ end
109
+
110
+ def predicate_association
111
+ @predicate_association = find_predicate_association unless defined?(@predicate_association)
112
+ @predicate_association
113
+ end
114
+
115
+ private
116
+
117
+ def find_predicate_association
118
+ condition_attribute.klass.reflect_on_all_associations.
119
+ reject { |r| r.options[:polymorphic] }. #skip polymorphic
120
+ detect { |r| r.foreign_key.to_s == name.to_s }
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,54 @@
1
+ require 'active_admin/filters/active'
2
+
3
+ module ActiveAdmin
4
+ module Filters
5
+ class ActiveSidebar < ActiveAdmin::SidebarSection
6
+
7
+ def initialize
8
+ super 'search_status', sidebar_options
9
+ end
10
+
11
+ def block
12
+ -> do
13
+ active_filters = ActiveAdmin::Filters::Active.new(active_admin_config, assigns[:search])
14
+ span do
15
+ if current_scope
16
+ h4 I18n.t("active_admin.search_status.current_scope"), style: 'display: inline'
17
+ b scope_name(current_scope), class: 'current_scope_name', style: "display: inline"
18
+ end
19
+ div style: "margin-top: 10px" do
20
+ h4 I18n.t("active_admin.search_status.current_filters"), style: 'margin-bottom: 10px'
21
+ ul do
22
+ if active_filters.filters.blank?
23
+ li I18n.t("active_admin.search_status.no_current_filters")
24
+ else
25
+ active_filters.filters.each do |filter|
26
+ li filter.html_options do
27
+ span do
28
+ text_node filter.label
29
+ end
30
+ b do
31
+ text_node to_sentence(filter.values.map { |v| pretty_format(v) })
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ def title
43
+ I18n.t("active_admin.search_status.headline")
44
+ end
45
+
46
+ protected
47
+
48
+ def sidebar_options
49
+ { only: :index, if: -> { active_admin_config.current_filters_enabled? && (params[:q] || params[:scope]) } }
50
+ end
51
+
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,21 @@
1
+ module ActiveAdmin
2
+ module Filters
3
+ module DSL
4
+
5
+ # For docs, please see ActiveAdmin::Filters::ResourceExtension#add_filter
6
+ def filter(attribute, options = {})
7
+ config.add_filter(attribute, options)
8
+ end
9
+
10
+ # For docs, please see ActiveAdmin::Filters::ResourceExtension#remove_filter
11
+ def remove_filter(*attributes)
12
+ config.remove_filter(*attributes)
13
+ end
14
+
15
+ # For docs, please see ActiveAdmin::Filters::ResourceExtension#preserve_default_filters!
16
+ def preserve_default_filters!
17
+ config.preserve_default_filters!
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,85 @@
1
+ module ActiveAdmin
2
+ module Filters
3
+ # This form builder defines methods to build filter forms such
4
+ # as the one found in the sidebar of the index page of a standard resource.
5
+ class FormBuilder < ::ActiveAdmin::FormBuilder
6
+ include ::ActiveAdmin::Filters::FormtasticAddons
7
+ self.input_namespaces = [::Object, ::ActiveAdmin::Inputs::Filters, ::ActiveAdmin::Inputs, ::Formtastic::Inputs]
8
+
9
+ # TODO: remove input class finders after formtastic 4 (where it will be default)
10
+ self.input_class_finder = ::Formtastic::InputClassFinder
11
+
12
+ def filter(method, options = {})
13
+ if method.present? && options[:as] ||= default_input_type(method)
14
+ template.concat input(method, options)
15
+ end
16
+ end
17
+
18
+ protected
19
+
20
+ # Returns the default filter type for a given attribute. If you want
21
+ # to use a custom search method, you have to specify the type yourself.
22
+ def default_input_type(method, options = {})
23
+ if method =~ /_(eq|equals|cont|contains|start|starts_with|end|ends_with)\z/
24
+ :string
25
+ elsif klass._ransackers.key?(method.to_s)
26
+ klass._ransackers[method.to_s].type
27
+ elsif reflection_for(method) || polymorphic_foreign_type?(method)
28
+ :select
29
+ elsif column = column_for(method)
30
+ case column.type
31
+ when :date, :datetime
32
+ :date_range
33
+ when :string, :text
34
+ :string
35
+ when :integer, :float, :decimal
36
+ :numeric
37
+ when :boolean
38
+ :boolean
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ # This module is included into the view
45
+ module ViewHelper
46
+
47
+ # Helper method to render a filter form
48
+ def active_admin_filters_form_for(search, filters, options = {})
49
+ defaults = { builder: ActiveAdmin::Filters::FormBuilder,
50
+ url: collection_path,
51
+ html: { class: 'filter_form' } }
52
+ required = { html: { method: :get },
53
+ as: :q }
54
+ options = defaults.deep_merge(options).deep_merge(required)
55
+
56
+ form_for search, options do |f|
57
+ filters.each do |attribute, opts|
58
+ next if opts.key?(:if) && !call_method_or_proc_on(self, opts[:if])
59
+ next if opts.key?(:unless) && call_method_or_proc_on(self, opts[:unless])
60
+
61
+ filter_opts = opts.except(:if, :unless)
62
+ filter_opts[:input_html] = instance_exec(&filter_opts[:input_html]) if filter_opts[:input_html].is_a?(Proc)
63
+
64
+ f.filter attribute, filter_opts
65
+ end
66
+
67
+ buttons = content_tag :div, class: "buttons" do
68
+ f.submit(I18n.t('active_admin.filters.buttons.filter')) +
69
+ link_to(I18n.t('active_admin.filters.buttons.clear'), '#', class: 'clear_filters_btn') +
70
+ hidden_field_tags_for(params, except: except_hidden_fields)
71
+ end
72
+
73
+ f.template.concat buttons
74
+ end
75
+ end
76
+
77
+ private
78
+
79
+ def except_hidden_fields
80
+ [:q, :page]
81
+ end
82
+ end
83
+
84
+ end
85
+ end
@@ -0,0 +1,79 @@
1
+ module ActiveAdmin
2
+ module Filters
3
+ module FormtasticAddons
4
+
5
+ #
6
+ # The below are Formtastic method overrides that jump inside of the Ransack
7
+ # search object to get at the object being searched upon.
8
+ #
9
+
10
+ def humanized_method_name
11
+ if klass.respond_to?(:human_attribute_name)
12
+ klass.human_attribute_name(method)
13
+ else
14
+ method.to_s.public_send(builder.label_str_method)
15
+ end
16
+ end
17
+
18
+ def reflection_for(method)
19
+ klass.reflect_on_association(method) if klass.respond_to? :reflect_on_association
20
+ end
21
+
22
+ def column_for(method)
23
+ klass.columns_hash[method.to_s] if klass.respond_to? :columns_hash
24
+ end
25
+
26
+ def column
27
+ column_for method
28
+ end
29
+
30
+ #
31
+ # The below are custom methods that Formtastic does not provide.
32
+ #
33
+
34
+ # The resource class, unwrapped from Ransack
35
+ def klass
36
+ @object.object.klass
37
+ end
38
+
39
+ def polymorphic_foreign_type?(method)
40
+ klass.reflect_on_all_associations.select { |r| r.macro == :belongs_to && r.options[:polymorphic] }
41
+ .map(&:foreign_type).include? method.to_s
42
+ end
43
+
44
+ #
45
+ # These help figure out whether the given method or association will be recognized by Ransack.
46
+ #
47
+
48
+ def searchable_has_many_through?
49
+ if reflection && reflection.options[:through]
50
+ reflection.through_reflection.klass.ransackable_attributes.include? reflection.foreign_key
51
+ else
52
+ false
53
+ end
54
+ end
55
+
56
+ def seems_searchable?
57
+ has_predicate? || scope?
58
+ end
59
+
60
+ # If the given method has a predicate (like _eq or _lteq), it's pretty
61
+ # likely we're dealing with a valid search method.
62
+ def has_predicate?
63
+ !!Ransack::Predicate.detect_from_string(method.to_s)
64
+ end
65
+
66
+ # Ransack lets you define custom search methods, called ransackers.
67
+ def ransacker?
68
+ klass._ransackers.key? method.to_s
69
+ end
70
+
71
+ # Ransack supports exposing selected scopes on your model for advanced searches.
72
+ def scope?
73
+ context = Ransack::Context.for klass
74
+ context.respond_to?(:ransackable_scope?) && context.ransackable_scope?(method.to_s, klass)
75
+ end
76
+
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,155 @@
1
+ module ActiveAdmin
2
+ module Filters
3
+
4
+ class Disabled < RuntimeError
5
+ def initialize
6
+ super "Can't remove a filter when filters are disabled. Enable filters with 'config.filters = true'"
7
+ end
8
+ end
9
+
10
+ module ResourceExtension
11
+
12
+ def initialize(*)
13
+ super
14
+ add_filters_sidebar_section
15
+ add_search_status_sidebar_section
16
+ end
17
+
18
+ # Returns the filters for this resource. If filters are not enabled,
19
+ # it will always return an empty hash.
20
+ #
21
+ # @return [Hash] Filters that apply for this resource
22
+ def filters
23
+ filters_enabled? ? filter_lookup : {}
24
+ end
25
+
26
+ # Setter to enable / disable filters on this resource.
27
+ #
28
+ # Set to `nil` to inherit the setting from the namespace
29
+ def filters=(bool)
30
+ @filters_enabled = bool
31
+ end
32
+
33
+ # Setter to enable/disable showing current filters on this resource.
34
+ #
35
+ # Set to `nil` to inherit the setting from the namespace
36
+ def current_filters=(bool)
37
+ @current_filters_enabled = bool
38
+ end
39
+
40
+ # @return [Boolean] If filters are enabled for this resource
41
+ def filters_enabled?
42
+ @filters_enabled.nil? ? namespace.filters : @filters_enabled
43
+ end
44
+
45
+ # @return [Boolean] If show current filters are enabled for this resource
46
+ def current_filters_enabled?
47
+ @current_filters_enabled.nil? ? namespace.current_filters : @current_filters_enabled
48
+ end
49
+
50
+ def preserve_default_filters!
51
+ @preserve_default_filters = true
52
+ end
53
+
54
+ def preserve_default_filters?
55
+ @preserve_default_filters == true
56
+ end
57
+
58
+ # Remove a filter for this resource. If filters are not enabled, this method
59
+ # will raise a RuntimeError
60
+ #
61
+ # @param [Symbol] attributes The attributes to not filter on
62
+ def remove_filter(*attributes)
63
+ raise Disabled unless filters_enabled?
64
+
65
+ attributes.each { |attribute| (@filters_to_remove ||= []) << attribute.to_sym }
66
+ end
67
+
68
+ # Add a filter for this resource. If filters are not enabled, this method
69
+ # will raise a RuntimeError
70
+ #
71
+ # @param [Symbol] attribute The attribute to filter on
72
+ # @param [Hash] options The set of options that are passed through to
73
+ # ransack for the field definition.
74
+ def add_filter(attribute, options = {})
75
+ raise Disabled unless filters_enabled?
76
+
77
+ (@filters ||= {})[attribute.to_sym] = options
78
+ end
79
+
80
+ # Reset the filters to use defaults
81
+ def reset_filters!
82
+ @filters = nil
83
+ @filters_to_remove = nil
84
+ end
85
+
86
+ private
87
+
88
+ # Collapses the waveform, if you will, of which filters should be displayed.
89
+ # Removes filters and adds in default filters as desired.
90
+ def filter_lookup
91
+ filters = @filters.try(:dup) || {}
92
+
93
+ if filters.empty? || preserve_default_filters?
94
+ default_filters.each do |f|
95
+ filters[f] ||= {}
96
+ end
97
+ end
98
+
99
+ if @filters_to_remove
100
+ @filters_to_remove.each &filters.method(:delete)
101
+ end
102
+
103
+ filters
104
+ end
105
+
106
+ # @return [Array] The array of default filters for this resource
107
+ def default_filters
108
+ result = []
109
+ result.concat default_association_filters if namespace.include_default_association_filters
110
+ result.concat content_columns
111
+ result.concat custom_ransack_filters
112
+ result
113
+ end
114
+
115
+ def custom_ransack_filters
116
+ if resource_class.respond_to?(:_ransackers)
117
+ resource_class._ransackers.keys.map(&:to_sym)
118
+ else
119
+ []
120
+ end
121
+ end
122
+
123
+ # Returns a default set of filters for the associations
124
+ def default_association_filters
125
+ if resource_class.respond_to?(:reflect_on_all_associations)
126
+ poly, not_poly = resource_class.reflect_on_all_associations.partition { |r| r.macro == :belongs_to && r.options[:polymorphic] }
127
+
128
+ # remove deeply nested associations
129
+ not_poly.reject! { |r| r.chain.length > 2 }
130
+
131
+ filters = poly.map(&:foreign_type) + not_poly.map(&:name)
132
+ filters.map &:to_sym
133
+ else
134
+ []
135
+ end
136
+ end
137
+
138
+ def add_filters_sidebar_section
139
+ self.sidebar_sections << filters_sidebar_section
140
+ end
141
+
142
+ def filters_sidebar_section
143
+ ActiveAdmin::SidebarSection.new :filters, only: :index, if: -> { active_admin_config.filters.any? } do
144
+ active_admin_filters_form_for assigns[:search], active_admin_config.filters
145
+ end
146
+ end
147
+
148
+ def add_search_status_sidebar_section
149
+ self.sidebar_sections << ActiveAdmin::Filters::ActiveSidebar.new
150
+ end
151
+
152
+ end
153
+
154
+ end
155
+ end