super-sharp-tool 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. checksums.yaml +7 -0
  2. data/activeadmin-3.5.1/CHANGELOG.md +1153 -0
  3. data/activeadmin-3.5.1/CODE_OF_CONDUCT.md +74 -0
  4. data/activeadmin-3.5.1/CONTRIBUTING.md +187 -0
  5. data/activeadmin-3.5.1/LICENSE +20 -0
  6. data/activeadmin-3.5.1/README.md +117 -0
  7. data/activeadmin-3.5.1/app/assets/javascripts/active_admin/base.js +520 -0
  8. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_base.scss +57 -0
  9. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_forms.scss +315 -0
  10. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_header.scss +188 -0
  11. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
  12. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_normalize.scss +349 -0
  13. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_print.scss +287 -0
  14. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_typography.scss +100 -0
  15. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_batch_actions.scss +6 -0
  16. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
  17. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  18. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
  19. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
  20. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
  21. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_date_picker.scss +148 -0
  22. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +154 -0
  23. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  24. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  25. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
  26. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  27. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  28. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_pagination.scss +58 -0
  29. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  30. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_scopes.scss +13 -0
  31. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
  32. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_table_tools.scss +70 -0
  33. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_tables.scss +112 -0
  34. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_tabs.scss +68 -0
  35. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  36. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -0
  37. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
  38. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
  39. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
  40. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
  41. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
  42. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  43. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
  44. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_variables.scss +51 -0
  45. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  46. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/structure/_footer.scss +19 -0
  47. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
  48. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/structure/_title_bar.scss +43 -0
  49. data/activeadmin-3.5.1/app/javascript/active_admin/base.js +28 -0
  50. data/activeadmin-3.5.1/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  51. data/activeadmin-3.5.1/app/javascript/active_admin/ext/jquery.js +9 -0
  52. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  53. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  54. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/datepicker.js +19 -0
  55. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  56. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/filters.js +10 -0
  57. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/has-many.js +98 -0
  58. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/per-page.js +13 -0
  59. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  60. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/tabs.js +6 -0
  61. data/activeadmin-3.5.1/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  62. data/activeadmin-3.5.1/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  63. data/activeadmin-3.5.1/app/javascript/active_admin/lib/filters.js +39 -0
  64. data/activeadmin-3.5.1/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  65. data/activeadmin-3.5.1/app/javascript/active_admin/lib/per-page.js +38 -0
  66. data/activeadmin-3.5.1/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  67. data/activeadmin-3.5.1/app/javascript/active_admin/lib/utils.js +40 -0
  68. data/activeadmin-3.5.1/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  69. data/activeadmin-3.5.1/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  70. data/activeadmin-3.5.1/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  71. data/activeadmin-3.5.1/app/views/active_admin/devise/passwords/edit.html.erb +18 -0
  72. data/activeadmin-3.5.1/app/views/active_admin/devise/passwords/new.html.erb +15 -0
  73. data/activeadmin-3.5.1/app/views/active_admin/devise/registrations/new.html.erb +21 -0
  74. data/activeadmin-3.5.1/app/views/active_admin/devise/sessions/new.html.erb +20 -0
  75. data/activeadmin-3.5.1/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  76. data/activeadmin-3.5.1/app/views/active_admin/devise/shared/_links.erb +33 -0
  77. data/activeadmin-3.5.1/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
  78. data/activeadmin-3.5.1/app/views/active_admin/page/index.html.arb +2 -0
  79. data/activeadmin-3.5.1/app/views/active_admin/resource/edit.html.arb +2 -0
  80. data/activeadmin-3.5.1/app/views/active_admin/resource/index.html.arb +2 -0
  81. data/activeadmin-3.5.1/app/views/active_admin/resource/new.html.arb +2 -0
  82. data/activeadmin-3.5.1/app/views/active_admin/resource/show.html.arb +2 -0
  83. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  84. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  85. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  86. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  87. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_page.html.erb +12 -0
  88. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  89. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  90. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  91. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  92. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  93. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  94. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  95. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  96. data/activeadmin-3.5.1/app/views/layouts/active_admin.html.arb +2 -0
  97. data/activeadmin-3.5.1/app/views/layouts/active_admin_logged_out.html.erb +50 -0
  98. data/activeadmin-3.5.1/config/locales/ar.yml +128 -0
  99. data/activeadmin-3.5.1/config/locales/az.yml +131 -0
  100. data/activeadmin-3.5.1/config/locales/bg.yml +112 -0
  101. data/activeadmin-3.5.1/config/locales/bs.yml +114 -0
  102. data/activeadmin-3.5.1/config/locales/ca.yml +98 -0
  103. data/activeadmin-3.5.1/config/locales/cs.yml +102 -0
  104. data/activeadmin-3.5.1/config/locales/da.yml +130 -0
  105. data/activeadmin-3.5.1/config/locales/de-CH.yml +94 -0
  106. data/activeadmin-3.5.1/config/locales/de.yml +154 -0
  107. data/activeadmin-3.5.1/config/locales/el.yml +119 -0
  108. data/activeadmin-3.5.1/config/locales/en-CA.yml +132 -0
  109. data/activeadmin-3.5.1/config/locales/en-GB.yml +132 -0
  110. data/activeadmin-3.5.1/config/locales/en.yml +154 -0
  111. data/activeadmin-3.5.1/config/locales/eo.yml +137 -0
  112. data/activeadmin-3.5.1/config/locales/es-MX.yml +90 -0
  113. data/activeadmin-3.5.1/config/locales/es.yml +154 -0
  114. data/activeadmin-3.5.1/config/locales/fa.yml +112 -0
  115. data/activeadmin-3.5.1/config/locales/fi.yml +105 -0
  116. data/activeadmin-3.5.1/config/locales/fr.yml +133 -0
  117. data/activeadmin-3.5.1/config/locales/he.yml +132 -0
  118. data/activeadmin-3.5.1/config/locales/hr.yml +116 -0
  119. data/activeadmin-3.5.1/config/locales/hu.yml +94 -0
  120. data/activeadmin-3.5.1/config/locales/id.yml +128 -0
  121. data/activeadmin-3.5.1/config/locales/it.yml +154 -0
  122. data/activeadmin-3.5.1/config/locales/ja.yml +133 -0
  123. data/activeadmin-3.5.1/config/locales/ko.yml +113 -0
  124. data/activeadmin-3.5.1/config/locales/lt.yml +134 -0
  125. data/activeadmin-3.5.1/config/locales/lv.yml +85 -0
  126. data/activeadmin-3.5.1/config/locales/mk.yml +126 -0
  127. data/activeadmin-3.5.1/config/locales/nb.yml +122 -0
  128. data/activeadmin-3.5.1/config/locales/nl.yml +136 -0
  129. data/activeadmin-3.5.1/config/locales/pl.yml +160 -0
  130. data/activeadmin-3.5.1/config/locales/pt-BR.yml +135 -0
  131. data/activeadmin-3.5.1/config/locales/pt-PT.yml +85 -0
  132. data/activeadmin-3.5.1/config/locales/ro.yml +90 -0
  133. data/activeadmin-3.5.1/config/locales/ru.yml +135 -0
  134. data/activeadmin-3.5.1/config/locales/sk.yml +160 -0
  135. data/activeadmin-3.5.1/config/locales/sv-SE.yml +154 -0
  136. data/activeadmin-3.5.1/config/locales/tr.yml +133 -0
  137. data/activeadmin-3.5.1/config/locales/uk.yml +132 -0
  138. data/activeadmin-3.5.1/config/locales/vi.yml +154 -0
  139. data/activeadmin-3.5.1/config/locales/zh-CN.yml +154 -0
  140. data/activeadmin-3.5.1/config/locales/zh-TW.yml +128 -0
  141. data/activeadmin-3.5.1/lib/active_admin/abstract_view_factory.rb +48 -0
  142. data/activeadmin-3.5.1/lib/active_admin/application.rb +234 -0
  143. data/activeadmin-3.5.1/lib/active_admin/application_settings.rb +43 -0
  144. data/activeadmin-3.5.1/lib/active_admin/asset_registration.rb +30 -0
  145. data/activeadmin-3.5.1/lib/active_admin/authorization_adapter.rb +132 -0
  146. data/activeadmin-3.5.1/lib/active_admin/base_controller/authorization.rb +129 -0
  147. data/activeadmin-3.5.1/lib/active_admin/base_controller/menu.rb +35 -0
  148. data/activeadmin-3.5.1/lib/active_admin/base_controller.rb +82 -0
  149. data/activeadmin-3.5.1/lib/active_admin/batch_actions/controller.rb +41 -0
  150. data/activeadmin-3.5.1/lib/active_admin/batch_actions/resource_extension.rb +157 -0
  151. data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/batch_action_form.rb +39 -0
  152. data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/batch_action_selector.rb +59 -0
  153. data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/selection_cells.rb +39 -0
  154. data/activeadmin-3.5.1/lib/active_admin/batch_actions.rb +17 -0
  155. data/activeadmin-3.5.1/lib/active_admin/callbacks.rb +89 -0
  156. data/activeadmin-3.5.1/lib/active_admin/cancan_adapter.rb +37 -0
  157. data/activeadmin-3.5.1/lib/active_admin/collection_decorator.rb +32 -0
  158. data/activeadmin-3.5.1/lib/active_admin/component.rb +6 -0
  159. data/activeadmin-3.5.1/lib/active_admin/controller_action.rb +14 -0
  160. data/activeadmin-3.5.1/lib/active_admin/csv_builder.rb +144 -0
  161. data/activeadmin-3.5.1/lib/active_admin/dependency.rb +97 -0
  162. data/activeadmin-3.5.1/lib/active_admin/devise.rb +91 -0
  163. data/activeadmin-3.5.1/lib/active_admin/dsl.rb +161 -0
  164. data/activeadmin-3.5.1/lib/active_admin/dynamic_setting.rb +39 -0
  165. data/activeadmin-3.5.1/lib/active_admin/dynamic_settings_node.rb +29 -0
  166. data/activeadmin-3.5.1/lib/active_admin/engine.rb +29 -0
  167. data/activeadmin-3.5.1/lib/active_admin/error.rb +63 -0
  168. data/activeadmin-3.5.1/lib/active_admin/filters/active.rb +30 -0
  169. data/activeadmin-3.5.1/lib/active_admin/filters/active_filter.rb +124 -0
  170. data/activeadmin-3.5.1/lib/active_admin/filters/active_sidebar.rb +28 -0
  171. data/activeadmin-3.5.1/lib/active_admin/filters/dsl.rb +22 -0
  172. data/activeadmin-3.5.1/lib/active_admin/filters/forms.rb +86 -0
  173. data/activeadmin-3.5.1/lib/active_admin/filters/formtastic_addons.rb +75 -0
  174. data/activeadmin-3.5.1/lib/active_admin/filters/resource_extension.rb +180 -0
  175. data/activeadmin-3.5.1/lib/active_admin/filters.rb +12 -0
  176. data/activeadmin-3.5.1/lib/active_admin/form_builder.rb +186 -0
  177. data/activeadmin-3.5.1/lib/active_admin/generators/boilerplate.rb +54 -0
  178. data/activeadmin-3.5.1/lib/active_admin/helpers/collection.rb +21 -0
  179. data/activeadmin-3.5.1/lib/active_admin/helpers/i18n.rb +8 -0
  180. data/activeadmin-3.5.1/lib/active_admin/helpers/optional_display.rb +39 -0
  181. data/activeadmin-3.5.1/lib/active_admin/helpers/routes/url_helpers.rb +16 -0
  182. data/activeadmin-3.5.1/lib/active_admin/helpers/scope_chain.rb +25 -0
  183. data/activeadmin-3.5.1/lib/active_admin/inputs/datepicker_input.rb +28 -0
  184. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/base/search_method_select.rb +76 -0
  185. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/base.rb +45 -0
  186. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/boolean_input.rb +25 -0
  187. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/check_boxes_input.rb +51 -0
  188. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/date_picker_input.rb +14 -0
  189. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/date_range_input.rb +53 -0
  190. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/numeric_input.rb +13 -0
  191. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/select_input.rb +59 -0
  192. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/string_input.rb +27 -0
  193. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/text_input.rb +26 -0
  194. data/activeadmin-3.5.1/lib/active_admin/inputs.rb +22 -0
  195. data/activeadmin-3.5.1/lib/active_admin/localizers/resource_localizer.rb +36 -0
  196. data/activeadmin-3.5.1/lib/active_admin/localizers.rb +12 -0
  197. data/activeadmin-3.5.1/lib/active_admin/menu.rb +107 -0
  198. data/activeadmin-3.5.1/lib/active_admin/menu_collection.rb +92 -0
  199. data/activeadmin-3.5.1/lib/active_admin/menu_item.rb +70 -0
  200. data/activeadmin-3.5.1/lib/active_admin/namespace.rb +267 -0
  201. data/activeadmin-3.5.1/lib/active_admin/namespace_settings.rb +127 -0
  202. data/activeadmin-3.5.1/lib/active_admin/order_clause.rb +49 -0
  203. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/comment.rb +40 -0
  204. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/namespace_helper.rb +15 -0
  205. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/resource_helper.rb +18 -0
  206. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/show_page_helper.rb +24 -0
  207. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +101 -0
  208. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/views.rb +3 -0
  209. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments.rb +102 -0
  210. data/activeadmin-3.5.1/lib/active_admin/orm/active_record.rb +6 -0
  211. data/activeadmin-3.5.1/lib/active_admin/orm/mongoid.rb +2 -0
  212. data/activeadmin-3.5.1/lib/active_admin/page.rb +112 -0
  213. data/activeadmin-3.5.1/lib/active_admin/page_controller.rb +30 -0
  214. data/activeadmin-3.5.1/lib/active_admin/page_dsl.rb +33 -0
  215. data/activeadmin-3.5.1/lib/active_admin/page_presenter.rb +34 -0
  216. data/activeadmin-3.5.1/lib/active_admin/pundit_adapter.rb +123 -0
  217. data/activeadmin-3.5.1/lib/active_admin/resource/action_items.rb +121 -0
  218. data/activeadmin-3.5.1/lib/active_admin/resource/attributes.rb +55 -0
  219. data/activeadmin-3.5.1/lib/active_admin/resource/belongs_to.rb +53 -0
  220. data/activeadmin-3.5.1/lib/active_admin/resource/controllers.rb +20 -0
  221. data/activeadmin-3.5.1/lib/active_admin/resource/includes.rb +13 -0
  222. data/activeadmin-3.5.1/lib/active_admin/resource/menu.rb +68 -0
  223. data/activeadmin-3.5.1/lib/active_admin/resource/model.rb +16 -0
  224. data/activeadmin-3.5.1/lib/active_admin/resource/naming.rb +63 -0
  225. data/activeadmin-3.5.1/lib/active_admin/resource/ordering.rb +12 -0
  226. data/activeadmin-3.5.1/lib/active_admin/resource/page_presenters.rb +83 -0
  227. data/activeadmin-3.5.1/lib/active_admin/resource/pagination.rb +24 -0
  228. data/activeadmin-3.5.1/lib/active_admin/resource/routes.rb +146 -0
  229. data/activeadmin-3.5.1/lib/active_admin/resource/scope_to.rb +75 -0
  230. data/activeadmin-3.5.1/lib/active_admin/resource/scopes.rb +53 -0
  231. data/activeadmin-3.5.1/lib/active_admin/resource/sidebars.rb +29 -0
  232. data/activeadmin-3.5.1/lib/active_admin/resource.rb +227 -0
  233. data/activeadmin-3.5.1/lib/active_admin/resource_collection.rb +73 -0
  234. data/activeadmin-3.5.1/lib/active_admin/resource_controller/action_builder.rb +32 -0
  235. data/activeadmin-3.5.1/lib/active_admin/resource_controller/data_access.rb +348 -0
  236. data/activeadmin-3.5.1/lib/active_admin/resource_controller/decorators.rb +81 -0
  237. data/activeadmin-3.5.1/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  238. data/activeadmin-3.5.1/lib/active_admin/resource_controller/resource_class_methods.rb +27 -0
  239. data/activeadmin-3.5.1/lib/active_admin/resource_controller/scoping.rb +32 -0
  240. data/activeadmin-3.5.1/lib/active_admin/resource_controller/sidebars.rb +19 -0
  241. data/activeadmin-3.5.1/lib/active_admin/resource_controller/streaming.rb +45 -0
  242. data/activeadmin-3.5.1/lib/active_admin/resource_controller.rb +68 -0
  243. data/activeadmin-3.5.1/lib/active_admin/resource_dsl.rb +210 -0
  244. data/activeadmin-3.5.1/lib/active_admin/router.rb +115 -0
  245. data/activeadmin-3.5.1/lib/active_admin/scope.rb +65 -0
  246. data/activeadmin-3.5.1/lib/active_admin/settings_node.rb +20 -0
  247. data/activeadmin-3.5.1/lib/active_admin/sidebar_section.rb +40 -0
  248. data/activeadmin-3.5.1/lib/active_admin/version.rb +4 -0
  249. data/activeadmin-3.5.1/lib/active_admin/view_factory.rb +28 -0
  250. data/activeadmin-3.5.1/lib/active_admin/view_helpers/active_admin_application_helper.rb +13 -0
  251. data/activeadmin-3.5.1/lib/active_admin/view_helpers/auto_link_helper.rb +46 -0
  252. data/activeadmin-3.5.1/lib/active_admin/view_helpers/breadcrumb_helper.rb +34 -0
  253. data/activeadmin-3.5.1/lib/active_admin/view_helpers/display_helper.rb +119 -0
  254. data/activeadmin-3.5.1/lib/active_admin/view_helpers/download_format_links_helper.rb +60 -0
  255. data/activeadmin-3.5.1/lib/active_admin/view_helpers/fields_for.rb +51 -0
  256. data/activeadmin-3.5.1/lib/active_admin/view_helpers/flash_helper.rb +15 -0
  257. data/activeadmin-3.5.1/lib/active_admin/view_helpers/form_helper.rb +21 -0
  258. data/activeadmin-3.5.1/lib/active_admin/view_helpers/method_or_proc_helper.rb +101 -0
  259. data/activeadmin-3.5.1/lib/active_admin/view_helpers/scope_name_helper.rb +17 -0
  260. data/activeadmin-3.5.1/lib/active_admin/view_helpers/sidebar_helper.rb +16 -0
  261. data/activeadmin-3.5.1/lib/active_admin/view_helpers/title_helper.rb +12 -0
  262. data/activeadmin-3.5.1/lib/active_admin/view_helpers/view_factory_helper.rb +12 -0
  263. data/activeadmin-3.5.1/lib/active_admin/view_helpers.rb +21 -0
  264. data/activeadmin-3.5.1/lib/active_admin/views/action_items.rb +18 -0
  265. data/activeadmin-3.5.1/lib/active_admin/views/components/active_admin_form.rb +164 -0
  266. data/activeadmin-3.5.1/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  267. data/activeadmin-3.5.1/lib/active_admin/views/components/attributes_table.rb +95 -0
  268. data/activeadmin-3.5.1/lib/active_admin/views/components/blank_slate.rb +18 -0
  269. data/activeadmin-3.5.1/lib/active_admin/views/components/columns.rb +162 -0
  270. data/activeadmin-3.5.1/lib/active_admin/views/components/dropdown_menu.rb +69 -0
  271. data/activeadmin-3.5.1/lib/active_admin/views/components/index_list.rb +70 -0
  272. data/activeadmin-3.5.1/lib/active_admin/views/components/menu.rb +33 -0
  273. data/activeadmin-3.5.1/lib/active_admin/views/components/menu_item.rb +59 -0
  274. data/activeadmin-3.5.1/lib/active_admin/views/components/paginated_collection.rb +164 -0
  275. data/activeadmin-3.5.1/lib/active_admin/views/components/panel.rb +39 -0
  276. data/activeadmin-3.5.1/lib/active_admin/views/components/scopes.rb +75 -0
  277. data/activeadmin-3.5.1/lib/active_admin/views/components/sidebar.rb +14 -0
  278. data/activeadmin-3.5.1/lib/active_admin/views/components/sidebar_section.rb +35 -0
  279. data/activeadmin-3.5.1/lib/active_admin/views/components/site_title.rb +55 -0
  280. data/activeadmin-3.5.1/lib/active_admin/views/components/status_tag.rb +76 -0
  281. data/activeadmin-3.5.1/lib/active_admin/views/components/table_for.rb +211 -0
  282. data/activeadmin-3.5.1/lib/active_admin/views/components/tabs.rb +41 -0
  283. data/activeadmin-3.5.1/lib/active_admin/views/components/unsupported_browser.rb +12 -0
  284. data/activeadmin-3.5.1/lib/active_admin/views/footer.rb +32 -0
  285. data/activeadmin-3.5.1/lib/active_admin/views/header.rb +20 -0
  286. data/activeadmin-3.5.1/lib/active_admin/views/index_as_block.rb +37 -0
  287. data/activeadmin-3.5.1/lib/active_admin/views/index_as_blog.rb +156 -0
  288. data/activeadmin-3.5.1/lib/active_admin/views/index_as_grid.rb +81 -0
  289. data/activeadmin-3.5.1/lib/active_admin/views/index_as_table.rb +401 -0
  290. data/activeadmin-3.5.1/lib/active_admin/views/pages/base.rb +134 -0
  291. data/activeadmin-3.5.1/lib/active_admin/views/pages/form.rb +65 -0
  292. data/activeadmin-3.5.1/lib/active_admin/views/pages/index.rb +166 -0
  293. data/activeadmin-3.5.1/lib/active_admin/views/pages/layout.rb +27 -0
  294. data/activeadmin-3.5.1/lib/active_admin/views/pages/page.rb +31 -0
  295. data/activeadmin-3.5.1/lib/active_admin/views/pages/show.rb +60 -0
  296. data/activeadmin-3.5.1/lib/active_admin/views/tabbed_navigation.rb +12 -0
  297. data/activeadmin-3.5.1/lib/active_admin/views/title_bar.rb +56 -0
  298. data/activeadmin-3.5.1/lib/active_admin/views.rb +9 -0
  299. data/activeadmin-3.5.1/lib/active_admin.rb +135 -0
  300. data/activeadmin-3.5.1/lib/activeadmin.rb +2 -0
  301. data/activeadmin-3.5.1/lib/generators/active_admin/assets/assets_generator.rb +15 -0
  302. data/activeadmin-3.5.1/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  303. data/activeadmin-3.5.1/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
  304. data/activeadmin-3.5.1/lib/generators/active_admin/devise/devise_generator.rb +69 -0
  305. data/activeadmin-3.5.1/lib/generators/active_admin/install/install_generator.rb +56 -0
  306. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/active_admin.rb.erb +352 -0
  307. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
  308. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  309. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
  310. data/activeadmin-3.5.1/lib/generators/active_admin/page/USAGE +8 -0
  311. data/activeadmin-3.5.1/lib/generators/active_admin/page/page_generator.rb +13 -0
  312. data/activeadmin-3.5.1/lib/generators/active_admin/page/templates/page.rb +6 -0
  313. data/activeadmin-3.5.1/lib/generators/active_admin/resource/resource_generator.rb +21 -0
  314. data/activeadmin-3.5.1/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
  315. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  316. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  317. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  318. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  319. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  320. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/data.js +39 -0
  321. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/disable-selection.js +51 -0
  322. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/focusable.js +79 -0
  323. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +81 -0
  324. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/keycode.js +51 -0
  325. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/labels.js +70 -0
  326. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/plugin.js +49 -0
  327. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/position.js +513 -0
  328. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/scroll-parent.js +50 -0
  329. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/tabbable.js +41 -0
  330. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/unique-id.js +54 -0
  331. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/version.js +20 -0
  332. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widget.js +761 -0
  333. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/button.js +454 -0
  334. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +294 -0
  335. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +304 -0
  336. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2240 -0
  337. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +957 -0
  338. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1264 -0
  339. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +226 -0
  340. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1281 -0
  341. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1614 -0
  342. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +918 -0
  343. data/super-sharp-tool.gemspec +12 -0
  344. metadata +383 -0
@@ -0,0 +1,161 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+
4
+ # The Active Admin DSL. This class is where all the registration blocks
5
+ # are evaluated. This is the central place for the API given to
6
+ # users of Active Admin.
7
+ #
8
+ class DSL
9
+
10
+ def initialize(config)
11
+ @config = config
12
+ end
13
+
14
+ # Runs the registration block inside this object
15
+ def run_registration_block(&block)
16
+ instance_exec &block if block_given?
17
+ end
18
+
19
+ # The instance of ActiveAdmin::Resource that's being registered
20
+ # currently. You can use this within your registration blocks to
21
+ # modify options:
22
+ #
23
+ # eg:
24
+ #
25
+ # ActiveAdmin.register Post do
26
+ # config.sort_order = "id_desc"
27
+ # end
28
+ #
29
+ def config
30
+ @config
31
+ end
32
+
33
+ # Include a module with this resource. The modules's `included` method
34
+ # is called with the instance of the `ActiveAdmin::DSL` passed into it.
35
+ #
36
+ # eg:
37
+ #
38
+ # module HelpSidebar
39
+ #
40
+ # def self.included(dsl)
41
+ # dsl.sidebar "Help" do
42
+ # "Call us for Help"
43
+ # end
44
+ # end
45
+ #
46
+ # end
47
+ #
48
+ # ActiveAdmin.register Post do
49
+ # include HelpSidebar
50
+ # end
51
+ #
52
+ # @param [Module] mod A module to include
53
+ #
54
+ # @return [Nil]
55
+ def include(mod)
56
+ mod.included(self)
57
+ end
58
+
59
+ # Returns the controller for this resource. If you pass a
60
+ # block, it will be evaluated in the controller.
61
+ #
62
+ # Example:
63
+ #
64
+ # ActiveAdmin.register Post do
65
+ #
66
+ # controller do
67
+ # def some_method_on_controller
68
+ # # Method gets added to Admin::PostsController
69
+ # end
70
+ # end
71
+ #
72
+ # end
73
+ #
74
+ def controller(&block)
75
+ @config.controller.class_exec(&block) if block_given?
76
+ @config.controller
77
+ end
78
+
79
+ # Add a new action item to the resource
80
+ #
81
+ # @param [Symbol] name
82
+ # @param [Hash] options valid keys include:
83
+ # :only: A single or array of controller actions to display
84
+ # this action item on.
85
+ # :except: A single or array of controller actions not to
86
+ # display this action item on.
87
+ def action_item(name, options = {}, &block)
88
+ config.add_action_item(name, options, &block)
89
+ end
90
+
91
+ # Add a new batch action item to the resource
92
+ # Provide a symbol/string to register the action, options, & block to execute on request
93
+ #
94
+ # To unregister an existing action, just provide the symbol & pass false as the second param
95
+ #
96
+ # @param [Symbol or String] title
97
+ # @param [Hash] options valid keys include:
98
+ # => :if is a proc that will be called to determine if the BatchAction should be displayed
99
+ # => :sort_order is used to sort the batch actions ascending
100
+ # => :confirm is a string which the user will have to accept in order to process the action
101
+ #
102
+ def batch_action(title, options = {}, &block)
103
+ # Create symbol & title information
104
+ if title.is_a? String
105
+ sym = title.titleize.tr(" ", "").underscore.to_sym
106
+ else
107
+ sym = title
108
+ title = sym.to_s.titleize
109
+ end
110
+
111
+ # Either add/remove the batch action
112
+ unless options == false
113
+ config.add_batch_action(sym, title, options, &block)
114
+ else
115
+ config.remove_batch_action sym
116
+ end
117
+ end
118
+
119
+ # Set the options that are available for the item that will be placed in the global
120
+ # navigation of the menu.
121
+ def menu(options = {})
122
+ config.menu_item_options = options
123
+ end
124
+
125
+ # Set the name of the navigation menu to display. This is mainly used in conjunction with the
126
+ # `#belongs_to` functionality.
127
+ #
128
+ # @param [Symbol] menu_name The name of the menu to display as the global navigation
129
+ # when viewing this resource. Defaults to a menu named `:default`.
130
+ #
131
+ # Pass a block returning the name of a menu you want rendered for the request, being
132
+ # executed in the context of the controller
133
+ #
134
+ def navigation_menu(menu_name = nil, &block)
135
+ config.navigation_menu_name = menu_name || block
136
+ end
137
+
138
+ # Rewrite breadcrumb links.
139
+ # Block will be executed inside controller.
140
+ # Block must return an array if you want to rewrite breadcrumb links.
141
+ #
142
+ # Example:
143
+ # ActiveAdmin.register Post do
144
+ #
145
+ # breadcrumb do
146
+ # [
147
+ # link_to('my piece', '/my/link/to/piece')
148
+ # ]
149
+ # end
150
+ # end
151
+ #
152
+ def breadcrumb(&block)
153
+ config.breadcrumb = block
154
+ end
155
+
156
+ def sidebar(name, options = {}, &block)
157
+ config.sidebar_sections << ActiveAdmin::SidebarSection.new(name, options, &block)
158
+ end
159
+
160
+ end
161
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+
4
+ class DynamicSetting
5
+ def self.build(setting, type)
6
+ (type ? klass(type) : self).new(setting)
7
+ end
8
+
9
+ def self.klass(type)
10
+ klass = "#{type.to_s.camelcase}Setting"
11
+ raise ArgumentError, "Unknown type: #{type}" unless ActiveAdmin.const_defined?(klass)
12
+ ActiveAdmin.const_get(klass)
13
+ end
14
+
15
+ def initialize(setting)
16
+ @setting = setting
17
+ end
18
+
19
+ def value(*_args)
20
+ @setting
21
+ end
22
+ end
23
+
24
+ # Many configuration options (Ex: site_title, title_image) could either be
25
+ # static (String), methods (Symbol) or procs (Proc). This wrapper takes care of
26
+ # returning the content when String or using instance_eval when Symbol or Proc.
27
+ #
28
+ class StringSymbolOrProcSetting < DynamicSetting
29
+ def value(context = self)
30
+ case @setting
31
+ when Symbol, Proc
32
+ context.instance_eval(&@setting)
33
+ else
34
+ @setting
35
+ end
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/dynamic_setting"
3
+ require "active_admin/settings_node"
4
+
5
+ module ActiveAdmin
6
+
7
+ class DynamicSettingsNode < SettingsNode
8
+ class << self
9
+ def register(name, value, type = nil)
10
+ class_attribute "#{name}_setting"
11
+ add_reader(name)
12
+ add_writer(name, type)
13
+ send "#{name}=", value
14
+ end
15
+
16
+ def add_reader(name)
17
+ define_singleton_method(name) do |*args|
18
+ send("#{name}_setting").value(*args)
19
+ end
20
+ end
21
+
22
+ def add_writer(name, type)
23
+ define_singleton_method("#{name}=") do |value|
24
+ send("#{name}_setting=", DynamicSetting.build(value, type))
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class Engine < ::Rails::Engine
4
+ # Set default values for app_path and load_paths before running initializers
5
+ initializer "active_admin.load_app_path", before: :load_config_initializers do |app|
6
+ ActiveAdmin::Application.setting :app_path, app.root
7
+ ActiveAdmin::Application.setting :load_paths, [File.expand_path("app/admin", app.root)]
8
+ end
9
+
10
+ initializer "active_admin.precompile", group: :all do |app|
11
+ unless ActiveAdmin.application.use_webpacker
12
+ ActiveAdmin.application.stylesheets.each do |path, _|
13
+ app.config.assets.precompile << path
14
+ end
15
+ ActiveAdmin.application.javascripts.each do |path, _|
16
+ app.config.assets.precompile << path
17
+ end
18
+ end
19
+ end
20
+
21
+ initializer "active_admin.routes" do
22
+ require "active_admin/helpers/routes/url_helpers"
23
+ end
24
+
25
+ initializer "active_admin.deprecator" do |app|
26
+ app.deprecators[:activeadmin] = ActiveAdmin.deprecator if app.respond_to?(:deprecators)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ # Exception class to raise when there is an authorized access
4
+ # exception thrown. The exception has a few goodies that may
5
+ # be useful for capturing / recognizing security issues.
6
+ class AccessDenied < StandardError
7
+ attr_reader :user, :action, :subject
8
+
9
+ def initialize(user, action, subject = nil)
10
+ @user = user
11
+ @action = action
12
+ @subject = subject
13
+
14
+ super()
15
+ end
16
+
17
+ def message
18
+ I18n.t("active_admin.access_denied.message")
19
+ end
20
+ end
21
+
22
+ class Error < RuntimeError
23
+ end
24
+
25
+ class ErrorLoading < Error
26
+ # Locates the most recent file and line from the caught exception's backtrace.
27
+ def find_cause(folder, backtrace)
28
+ backtrace.grep(/\/(#{folder}\/.*\.rb):(\d+)/) { [$1, $2] }.first
29
+ end
30
+ end
31
+
32
+ class DatabaseHitDuringLoad < ErrorLoading
33
+ def initialize(exception)
34
+ file, line = find_cause(:app, exception.backtrace)
35
+
36
+ super "Your file, #{file} (line #{line}), caused a database error while Active Admin was loading. This " +
37
+ "is most common when your database is missing or doesn't have the latest migrations applied. To " +
38
+ "prevent this error, move the code to a place where it will only be run when a page is rendered. " +
39
+ "One solution can be, to wrap the query in a Proc. " +
40
+ "Original error message: #{exception.message}"
41
+ end
42
+
43
+ def self.capture
44
+ yield
45
+ rescue *database_error_classes => exception
46
+ raise new exception
47
+ end
48
+
49
+ def self.database_error_classes
50
+ @classes ||= []
51
+ end
52
+ end
53
+
54
+ class DependencyError < ErrorLoading
55
+ end
56
+
57
+ class NoMenuError < KeyError
58
+ end
59
+
60
+ class GeneratorError < Error
61
+ end
62
+
63
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/filters/active_filter"
3
+
4
+ module ActiveAdmin
5
+ module Filters
6
+
7
+ class Active
8
+ attr_accessor :filters, :resource
9
+
10
+ # Instantiate a `Active` object containing collection of current active filters
11
+
12
+ # @param resource [ActiveAdmin::Resource] current resource
13
+ # @param search [Ransack::Search] search object
14
+ #
15
+ # @see ActiveAdmin::ResourceController::DataAcces#apply_filtering
16
+ def initialize(resource, search)
17
+ @resource = resource
18
+ @filters = build_filters(search.conditions)
19
+ end
20
+
21
+ private
22
+
23
+ def build_filters(conditions)
24
+ conditions.map { |condition| ActiveFilter.new(resource, condition.dup) }
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ module Filters
4
+
5
+ class ActiveFilter
6
+ include ActiveAdmin::ViewHelpers
7
+
8
+ attr_reader :resource, :condition, :related_class
9
+
10
+ # Instantiate a `ActiveFilter`
11
+ #
12
+ # @param resource [ActiveAdmin::Resource] current resource
13
+ # @param condition [Ransack::Nodes::Condition] applied ransack condition
14
+ def initialize(resource, condition)
15
+ @resource = resource
16
+ @condition = condition
17
+ @related_class = find_class if find_class?
18
+ end
19
+
20
+ def values
21
+ condition_values = condition.values.map(&:value)
22
+ if related_class
23
+ related_class.where(related_primary_key => condition_values)
24
+ else
25
+ condition_values
26
+ end
27
+ end
28
+
29
+ def label
30
+ translated_predicate = predicate_name.downcase
31
+ if filter_label && filter_label.is_a?(Proc)
32
+ "#{filter_label.call} #{translated_predicate}"
33
+ elsif filter_label
34
+ "#{filter_label} #{translated_predicate}"
35
+ elsif related_class
36
+ "#{related_class_name} #{translated_predicate}"
37
+ else
38
+ "#{attribute_name} #{translated_predicate}"
39
+ end.strip
40
+ end
41
+
42
+ def predicate_name
43
+ I18n.t(
44
+ "ransack.predicates.#{condition.predicate.name}",
45
+ default: ransack_predicate_name)
46
+ end
47
+
48
+ def html_options
49
+ { class: "current_filter current_filter_#{condition.key}" }
50
+ end
51
+
52
+ private
53
+
54
+ def resource_class
55
+ resource.resource_class
56
+ end
57
+
58
+ def attribute_name
59
+ resource_class.human_attribute_name(name)
60
+ end
61
+
62
+ def related_class_name
63
+ return unless related_class
64
+
65
+ related_class.model_name.human
66
+ end
67
+
68
+ def filter_label
69
+ return unless filter
70
+
71
+ filter[:label] || I18n.t(name, scope: ["formtastic", "labels"], default: nil)
72
+ end
73
+
74
+ #@return Ransack::Nodes::Attribute
75
+ def condition_attribute
76
+ condition.attributes[0]
77
+ end
78
+
79
+ def name
80
+ condition_attribute.attr_name
81
+ end
82
+
83
+ def ransack_predicate_name
84
+ Ransack::Translate.predicate(condition.predicate.name)
85
+ end
86
+
87
+ def find_class?
88
+ ["eq", "in"].include? condition.predicate.arel_predicate
89
+ end
90
+
91
+ # detect related class for Ransack::Nodes::Attribute
92
+ def find_class
93
+ if condition_attribute.klass != resource_class && condition_attribute.klass.primary_key == name.to_s
94
+ condition_attribute.klass
95
+ elsif predicate_association
96
+ predicate_association.klass
97
+ end
98
+ end
99
+
100
+ def filter
101
+ resource.filters[name.to_sym] || resource.filters[condition.key.to_sym]
102
+ end
103
+
104
+ def related_primary_key
105
+ if predicate_association
106
+ predicate_association.association_primary_key
107
+ elsif related_class
108
+ related_class.primary_key
109
+ end
110
+ end
111
+
112
+ def predicate_association
113
+ @predicate_association = find_predicate_association unless defined?(@predicate_association)
114
+ @predicate_association
115
+ end
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,28 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/filters/active"
3
+
4
+ module ActiveAdmin
5
+ module Filters
6
+ class ActiveSidebar < ActiveAdmin::SidebarSection
7
+
8
+ def initialize
9
+ super "search_status", sidebar_options
10
+ end
11
+
12
+ def block
13
+ -> { active_filters_sidebar_content }
14
+ end
15
+
16
+ def title
17
+ I18n.t("active_admin.search_status.headline")
18
+ end
19
+
20
+ protected
21
+
22
+ def sidebar_options
23
+ { only: :index, if: -> { active_admin_config.current_filters_enabled? && (params[:q] || params[:scope]) } }
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ module Filters
4
+ module DSL
5
+
6
+ # For docs, please see ActiveAdmin::Filters::ResourceExtension#add_filter
7
+ def filter(attribute, options = {})
8
+ config.add_filter(attribute, options)
9
+ end
10
+
11
+ # For docs, please see ActiveAdmin::Filters::ResourceExtension#remove_filter
12
+ def remove_filter(*attributes)
13
+ config.remove_filter(*attributes)
14
+ end
15
+
16
+ # For docs, please see ActiveAdmin::Filters::ResourceExtension#preserve_default_filters!
17
+ def preserve_default_filters!
18
+ config.preserve_default_filters!
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ module Filters
4
+ # This form builder defines methods to build filter forms such
5
+ # as the one found in the sidebar of the index page of a standard resource.
6
+ class FormBuilder < ::ActiveAdmin::FormBuilder
7
+ include ::ActiveAdmin::Filters::FormtasticAddons
8
+ self.input_namespaces = [::Object, ::ActiveAdmin::Inputs::Filters, ::ActiveAdmin::Inputs, ::Formtastic::Inputs]
9
+
10
+ # TODO: remove input class finders after formtastic 4 (where it will be default)
11
+ self.input_class_finder = ::Formtastic::InputClassFinder
12
+
13
+ def filter(method, options = {})
14
+ if method.present? && options[:as] ||= default_input_type(method)
15
+ template.concat input(method, options)
16
+ end
17
+ end
18
+
19
+ protected
20
+
21
+ # Returns the default filter type for a given attribute. If you want
22
+ # to use a custom search method, you have to specify the type yourself.
23
+ def default_input_type(method, options = {})
24
+ if method =~ /_(eq|cont|start|end)\z/
25
+ :string
26
+ elsif klass._ransackers.key?(method.to_s)
27
+ klass._ransackers[method.to_s].type
28
+ elsif reflection_for(method) || polymorphic_foreign_type?(method)
29
+ :select
30
+ elsif column = column_for(method)
31
+ case column.type
32
+ when :date, :datetime
33
+ :date_range
34
+ when :string, :text, :citext
35
+ :string
36
+ when :integer, :float, :decimal
37
+ :numeric
38
+ when :boolean
39
+ :boolean
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ # This module is included into the view
46
+ module ViewHelper
47
+
48
+ # Helper method to render a filter form
49
+ def active_admin_filters_form_for(search, filters, options = {})
50
+ defaults = { builder: ActiveAdmin::Filters::FormBuilder,
51
+ url: collection_path,
52
+ html: { class: "filter_form" } }
53
+ required = { html: { method: :get },
54
+ as: :q }
55
+ options = defaults.deep_merge(options).deep_merge(required)
56
+
57
+ form_for search, options do |f|
58
+ filters.each do |attribute, opts|
59
+ next if opts.key?(:if) && !call_method_or_proc_on(self, opts[:if])
60
+ next if opts.key?(:unless) && call_method_or_proc_on(self, opts[:unless])
61
+
62
+ filter_opts = opts.except(:if, :unless)
63
+ filter_opts[:input_html] = instance_exec(&filter_opts[:input_html]) if filter_opts[:input_html].is_a?(Proc)
64
+
65
+ f.filter attribute, filter_opts
66
+ end
67
+
68
+ buttons = content_tag :div, class: "buttons" do
69
+ f.submit(I18n.t("active_admin.filters.buttons.filter")) +
70
+ link_to(I18n.t("active_admin.filters.buttons.clear"), "#", class: "clear_filters_btn") +
71
+ hidden_field_tags_for(params, except: except_hidden_fields)
72
+ end
73
+
74
+ f.template.concat buttons
75
+ end
76
+ end
77
+
78
+ private
79
+
80
+ def except_hidden_fields
81
+ [:q, :page]
82
+ end
83
+ end
84
+
85
+ end
86
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ module Filters
4
+ module FormtasticAddons
5
+
6
+ #
7
+ # The below are Formtastic method overrides that jump inside of the Ransack
8
+ # search object to get at the object being searched upon.
9
+ #
10
+
11
+ def humanized_method_name
12
+ if klass.respond_to?(:human_attribute_name)
13
+ klass.human_attribute_name(method)
14
+ else
15
+ method.to_s.public_send(builder.label_str_method)
16
+ end
17
+ end
18
+
19
+ def reflection_for(method)
20
+ klass.reflect_on_association(method) if klass.respond_to? :reflect_on_association
21
+ end
22
+
23
+ def column_for(method)
24
+ klass.columns_hash[method.to_s] if klass.respond_to? :columns_hash
25
+ end
26
+
27
+ def column
28
+ column_for method
29
+ end
30
+
31
+ #
32
+ # The below are custom methods that Formtastic does not provide.
33
+ #
34
+
35
+ # The resource class, unwrapped from Ransack
36
+ def klass
37
+ @object.object.klass
38
+ end
39
+
40
+ def polymorphic_foreign_type?(method)
41
+ klass.reflect_on_all_associations.select { |r| r.macro == :belongs_to && r.options[:polymorphic] }
42
+ .map(&:foreign_type).include? method.to_s
43
+ end
44
+
45
+ #
46
+ # These help figure out whether the given method or association will be recognized by Ransack.
47
+ #
48
+
49
+ def searchable_has_many_through?
50
+ if klass.ransackable_associations.include?(method.to_s) && reflection && reflection.options[:through]
51
+ reflection.through_reflection.klass.ransackable_attributes.include? reflection.foreign_key
52
+ else
53
+ false
54
+ end
55
+ end
56
+
57
+ def seems_searchable?
58
+ column_for(method).nil? && (has_predicate? || scope?)
59
+ end
60
+
61
+ # If the given method has a predicate (like _eq or _lteq), it's pretty
62
+ # likely we're dealing with a valid search method.
63
+ def has_predicate?
64
+ !!Ransack::Predicate.detect_from_string(method.to_s)
65
+ end
66
+
67
+ # Ransack supports exposing selected scopes on your model for advanced searches.
68
+ def scope?
69
+ context = Ransack::Context.for klass
70
+ context.respond_to?(:ransackable_scope?) && context.ransackable_scope?(method.to_s, klass)
71
+ end
72
+
73
+ end
74
+ end
75
+ end