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