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,227 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/resource/action_items"
3
+ require "active_admin/resource/attributes"
4
+ require "active_admin/resource/controllers"
5
+ require "active_admin/resource/menu"
6
+ require "active_admin/resource/page_presenters"
7
+ require "active_admin/resource/pagination"
8
+ require "active_admin/resource/routes"
9
+ require "active_admin/resource/naming"
10
+ require "active_admin/resource/scopes"
11
+ require "active_admin/resource/includes"
12
+ require "active_admin/resource/scope_to"
13
+ require "active_admin/resource/sidebars"
14
+ require "active_admin/resource/belongs_to"
15
+ require "active_admin/resource/ordering"
16
+ require "active_admin/resource/model"
17
+
18
+ module ActiveAdmin
19
+
20
+ # Resource is the primary data storage for resource configuration in Active Admin
21
+ #
22
+ # When you register a resource (ActiveAdmin.register Post) you are actually creating
23
+ # a new Resource instance within the given Namespace.
24
+ #
25
+ # The instance of the current resource is available in ResourceController and views
26
+ # by calling the #active_admin_config method.
27
+ #
28
+ class Resource
29
+
30
+ # Event dispatched when a new resource is registered
31
+ RegisterEvent = "active_admin.resource.register".freeze
32
+
33
+ # The namespace this config belongs to
34
+ attr_reader :namespace
35
+
36
+ # The name of the resource class
37
+ attr_reader :resource_class_name
38
+
39
+ # An array of member actions defined for this resource
40
+ attr_reader :member_actions
41
+
42
+ # An array of collection actions defined for this resource
43
+ attr_reader :collection_actions
44
+
45
+ # The default sort order to use in the controller
46
+ attr_writer :sort_order
47
+ def sort_order
48
+ @sort_order ||= (resource_class.respond_to?(:primary_key) ? resource_class.primary_key.to_s : "id") + "_desc"
49
+ end
50
+
51
+ # Set the configuration for the CSV
52
+ attr_writer :csv_builder
53
+
54
+ # Set breadcrumb builder
55
+ attr_writer :breadcrumb
56
+
57
+ #Set order clause
58
+ attr_writer :order_clause
59
+ # Display create another checkbox on a new page
60
+ # @return [Boolean]
61
+ attr_writer :create_another
62
+
63
+ # Store a reference to the DSL so that we can dereference it during garbage collection.
64
+ attr_accessor :dsl
65
+
66
+ # The string identifying a class to decorate our resource with for the view.
67
+ # nil to not decorate.
68
+ attr_accessor :decorator_class_name
69
+
70
+ module Base
71
+ def initialize(namespace, resource_class, options = {})
72
+ @namespace = namespace
73
+ @resource_class_name = resource_class.respond_to?(:name) ? "::#{resource_class.name}" : resource_class.to_s
74
+ @options = options
75
+ @sort_order = options[:sort_order]
76
+ @member_actions = []
77
+ @collection_actions = []
78
+ end
79
+ end
80
+
81
+ include MethodOrProcHelper
82
+
83
+ include Base
84
+ include ActionItems
85
+ include Authorization
86
+ include Controllers
87
+ include Menu
88
+ include Naming
89
+ include PagePresenters
90
+ include Pagination
91
+ include Scopes
92
+ include Includes
93
+ include ScopeTo
94
+ include Sidebars
95
+ include Routes
96
+ include Ordering
97
+ include Attributes
98
+
99
+ # The class this resource wraps. If you register the Post model, Resource#resource_class
100
+ # will point to the Post class
101
+ def resource_class
102
+ resource_class_name.constantize
103
+ end
104
+
105
+ def decorator_class
106
+ decorator_class_name&.constantize
107
+ end
108
+
109
+ def resource_name_extension
110
+ @resource_name_extension ||= define_resource_name_extension(self)
111
+ end
112
+
113
+ def resource_table_name
114
+ resource_class.quoted_table_name
115
+ end
116
+
117
+ def resource_column_names
118
+ resource_class.column_names
119
+ end
120
+
121
+ def resource_quoted_column_name(column)
122
+ if resource_class.respond_to?(:with_connection)
123
+ resource_class.with_connection do |connection|
124
+ connection.quote_column_name(column)
125
+ end
126
+ else
127
+ resource_class.connection.quote_column_name(column)
128
+ end
129
+ end
130
+
131
+ # Clears all the member actions this resource knows about
132
+ def clear_member_actions!
133
+ @member_actions = []
134
+ end
135
+
136
+ def clear_collection_actions!
137
+ @collection_actions = []
138
+ end
139
+
140
+ # Return only defined resource actions
141
+ def defined_actions
142
+ controller.instance_methods.map(&:to_sym) & ResourceController::ACTIVE_ADMIN_ACTIONS
143
+ end
144
+
145
+ def belongs_to(target, options = {})
146
+ @belongs_to = Resource::BelongsTo.new(self, target, options)
147
+ self.menu_item_options = false if @belongs_to.required?
148
+ options[:class_name] ||= @belongs_to.resource.resource_class_name if @belongs_to.resource
149
+ controller.send :belongs_to, target, options.dup
150
+ end
151
+
152
+ def belongs_to_config
153
+ @belongs_to
154
+ end
155
+
156
+ def belongs_to_param
157
+ if belongs_to? && belongs_to_config.required?
158
+ belongs_to_config.to_param
159
+ end
160
+ end
161
+
162
+ # Do we belong to another resource?
163
+ def belongs_to?
164
+ !!belongs_to_config
165
+ end
166
+
167
+ # The csv builder for this resource
168
+ def csv_builder
169
+ @csv_builder || default_csv_builder
170
+ end
171
+
172
+ def breadcrumb
173
+ instance_variable_defined?(:@breadcrumb) ? @breadcrumb : namespace.breadcrumb
174
+ end
175
+
176
+ def order_clause
177
+ @order_clause || namespace.order_clause
178
+ end
179
+
180
+ def create_another
181
+ instance_variable_defined?(:@create_another) ? @create_another : namespace.create_another
182
+ end
183
+
184
+ def find_resource(id)
185
+ resource = resource_class.public_send *method_for_find(id)
186
+ (decorator_class && resource) ? decorator_class.new(resource) : resource
187
+ end
188
+
189
+ def resource_columns
190
+ resource_attributes.values
191
+ end
192
+
193
+ def resource_attributes
194
+ @resource_attributes ||= default_attributes
195
+ end
196
+
197
+ def association_columns
198
+ @association_columns ||= resource_attributes.select { |key, value| key != value }.values
199
+ end
200
+
201
+ def content_columns
202
+ @content_columns ||= resource_attributes.select { |key, value| key == value }.values
203
+ end
204
+
205
+ private
206
+
207
+ def method_for_find(id)
208
+ if finder = resources_configuration[:self][:finder]
209
+ [finder, id]
210
+ else
211
+ [:find_by, { resource_class.primary_key => id }]
212
+ end
213
+ end
214
+
215
+ def default_csv_builder
216
+ @default_csv_builder ||= CSVBuilder.default_for_resource(self)
217
+ end
218
+
219
+ def define_resource_name_extension(resource)
220
+ Module.new do
221
+ define_method :model_name do
222
+ resource.resource_name
223
+ end
224
+ end
225
+ end
226
+ end # class Resource
227
+ end # module ActiveAdmin
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ # This is a container for resources, which acts much like a Hash.
4
+ # It's assumed that an added resource responds to `resource_name`.
5
+ class ResourceCollection
6
+ include Enumerable
7
+ extend Forwardable
8
+ def_delegators :@collection, :empty?, :has_key?, :keys, :values, :size
9
+
10
+ def initialize
11
+ @collection = {}
12
+ end
13
+
14
+ def add(resource)
15
+ if match = @collection[resource.resource_name]
16
+ raise_if_mismatched! match, resource
17
+ match
18
+ else
19
+ @collection[resource.resource_name] = resource
20
+ end
21
+ end
22
+
23
+ # Changes `each` to pass in the value, instead of both the key and value.
24
+ def each(&block)
25
+ values.each &block
26
+ end
27
+
28
+ def [](obj)
29
+ @collection[obj] || find_resource(obj)
30
+ end
31
+
32
+ private
33
+
34
+ # Finds a resource based on the resource name, resource class, or base class.
35
+ def find_resource(obj)
36
+ resources.detect do |r|
37
+ r.resource_name.to_s == obj.to_s
38
+ end || resources.detect do |r|
39
+ r.resource_class.to_s == obj.to_s
40
+ end ||
41
+ if obj.respond_to? :base_class
42
+ resources.detect { |r| r.resource_class.to_s == obj.base_class.to_s }
43
+ end
44
+ end
45
+
46
+ def resources
47
+ select { |r| r.class <= Resource } # can otherwise be a Page
48
+ end
49
+
50
+ def raise_if_mismatched!(existing, given)
51
+ if existing.class != given.class
52
+ raise IncorrectClass.new existing, given
53
+ elsif given.class <= Resource && existing.resource_class != given.resource_class
54
+ raise ConfigMismatch.new existing, given
55
+ end
56
+ end
57
+
58
+ class IncorrectClass < StandardError
59
+ def initialize(existing, given)
60
+ super "You're trying to register #{given.resource_name} which is a #{given.class}, " +
61
+ "but #{existing.resource_name}, a #{existing.class} has already claimed that name."
62
+ end
63
+ end
64
+
65
+ class ConfigMismatch < StandardError
66
+ def initialize(existing, given)
67
+ super "You're trying to register #{given.resource_class} as #{given.resource_name}, " +
68
+ "but the existing #{existing.class} config was built for #{existing.resource_class}!"
69
+ end
70
+ end
71
+
72
+ end
73
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class ResourceController < BaseController
4
+
5
+ module ActionBuilder
6
+ extend ActiveSupport::Concern
7
+
8
+ module ClassMethods
9
+
10
+ def clear_member_actions!
11
+ remove_action_methods(:member)
12
+ active_admin_config.clear_member_actions!
13
+ end
14
+
15
+ def clear_collection_actions!
16
+ remove_action_methods(:collection)
17
+ active_admin_config.clear_collection_actions!
18
+ end
19
+
20
+ private
21
+
22
+ def remove_action_methods(actions_type)
23
+ active_admin_config.public_send("#{actions_type}_actions").each do |action|
24
+ remove_method action.name
25
+ end
26
+ end
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,348 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class ResourceController < BaseController
4
+
5
+ # This module overrides most of the data access methods in Inherited
6
+ # Resources to provide Active Admin with it's data.
7
+ #
8
+ # The module also deals with authorization and resource callbacks.
9
+ #
10
+ module DataAccess
11
+
12
+ def self.included(base)
13
+ base.class_exec do
14
+ include Callbacks
15
+ include ScopeChain
16
+
17
+ define_active_admin_callbacks :build, :create, :update, :save, :destroy
18
+
19
+ helper_method :current_scope
20
+ end
21
+ end
22
+
23
+ protected
24
+
25
+ COLLECTION_APPLIES = [
26
+ :authorization_scope,
27
+ :filtering,
28
+ :scoping,
29
+ :sorting,
30
+ :includes,
31
+ :pagination,
32
+ :collection_decorator
33
+ ].freeze
34
+
35
+ # Retrieve, memoize and authorize the current collection from the db. This
36
+ # method delegates the finding of the collection to #find_collection.
37
+ #
38
+ # Once #collection has been called, the collection is available using
39
+ # either the @collection instance variable or an instance variable named
40
+ # after the resource that the collection is for. eg: Post => @post.
41
+ #
42
+ # @return [ActiveRecord::Relation] The collection for the index
43
+ def collection
44
+ get_collection_ivar || begin
45
+ collection = find_collection
46
+ authorize! Authorization::READ, active_admin_config.resource_class
47
+ set_collection_ivar collection
48
+ end
49
+ end
50
+
51
+ # Does the actual work of retrieving the current collection from the db.
52
+ # This is a great method to override if you would like to perform
53
+ # some additional db # work before your controller returns and
54
+ # authorizes the collection.
55
+ #
56
+ # @return [ActiveRecord::Relation] The collection for the index
57
+ def find_collection(options = {})
58
+ collection = scoped_collection
59
+ collection_applies(options).each do |applyer|
60
+ collection = send("apply_#{applyer}", collection)
61
+ end
62
+ collection
63
+ end
64
+
65
+ # Override this method in your controllers to modify the start point
66
+ # of our searches and index.
67
+ #
68
+ # This method should return an ActiveRecord::Relation object so that
69
+ # the searching and filtering can be applied on top
70
+ #
71
+ # Note, unless you are doing something special, you should use the
72
+ # scope_to method from the Scoping module instead of overriding this
73
+ # method.
74
+ def scoped_collection
75
+ end_of_association_chain
76
+ end
77
+
78
+ # Retrieve, memoize and authorize a resource based on params[:id]. The
79
+ # actual work of finding the resource is done in #find_resource.
80
+ #
81
+ # This method is used on all the member actions:
82
+ #
83
+ # * show
84
+ # * edit
85
+ # * update
86
+ # * destroy
87
+ #
88
+ # @return [ActiveRecord::Base] An active record object
89
+ def resource
90
+ get_resource_ivar || begin
91
+ resource = find_resource
92
+ resource = apply_decorations(resource)
93
+ authorize_resource! resource
94
+
95
+ set_resource_ivar resource
96
+ end
97
+ end
98
+
99
+ # Does the actual work of finding a resource in the database. This
100
+ # method uses the finder method as defined in InheritedResources.
101
+ #
102
+ # @return [ActiveRecord::Base] An active record object.
103
+ def find_resource
104
+ scoped_collection.send method_for_find, params[:id]
105
+ end
106
+
107
+ # Builds, memoize and authorize a new instance of the resource. The
108
+ # actual work of building the new instance is delegated to the
109
+ # #build_new_resource method.
110
+ #
111
+ # This method is used to instantiate and authorize new resources in the
112
+ # new and create controller actions.
113
+ #
114
+ # @return [ActiveRecord::Base] An un-saved active record base object
115
+ def build_resource
116
+ get_resource_ivar || begin
117
+ resource = build_new_resource
118
+ resource = apply_decorations(resource)
119
+ resource = assign_attributes(resource, resource_params)
120
+ run_build_callbacks resource
121
+ authorize_resource! resource
122
+
123
+ set_resource_ivar resource
124
+ end
125
+ end
126
+
127
+ # Builds a new resource. This method uses the method_for_build provided
128
+ # by Inherited Resources.
129
+ #
130
+ # @return [ActiveRecord::Base] An un-saved active record base object
131
+ def build_new_resource
132
+ apply_authorization_scope(scoped_collection).send(
133
+ method_for_build,
134
+ *resource_params.map { |params| params.slice(active_admin_config.resource_class.inheritance_column) }
135
+ )
136
+ end
137
+
138
+ # Calls all the appropriate callbacks and then creates the new resource.
139
+ #
140
+ # @param [ActiveRecord::Base] object The new resource to create
141
+ #
142
+ # @return [void]
143
+ def create_resource(object)
144
+ run_create_callbacks object do
145
+ save_resource(object)
146
+ end
147
+ end
148
+
149
+ # Calls all the appropriate callbacks and then saves the new resource.
150
+ #
151
+ # @param [ActiveRecord::Base] object The new resource to save
152
+ #
153
+ # @return [void]
154
+ def save_resource(object)
155
+ run_save_callbacks object do
156
+ object.save
157
+ end
158
+ end
159
+
160
+ # Update an object with the given attributes. Also calls the appropriate
161
+ # callbacks for update action.
162
+ #
163
+ # @param [ActiveRecord::Base] object The instance to update
164
+ #
165
+ # @param [Array] attributes An array with the attributes in the first position
166
+ # and the Active Record "role" in the second. The role
167
+ # may be set to nil.
168
+ #
169
+ # @return [void]
170
+ def update_resource(object, attributes)
171
+ object = assign_attributes(object, attributes)
172
+
173
+ run_update_callbacks object do
174
+ save_resource(object)
175
+ end
176
+ end
177
+
178
+ # Destroys an object from the database and calls appropriate callbacks.
179
+ #
180
+ # @return [void]
181
+ def destroy_resource(object)
182
+ run_destroy_callbacks object do
183
+ object.destroy
184
+ end
185
+ end
186
+
187
+ #
188
+ # Collection Helper Methods
189
+ #
190
+
191
+ # Gives the authorization library a change to pre-scope the collection.
192
+ #
193
+ # In the case of the CanCan adapter, it calls `#accessible_by` on
194
+ # the collection.
195
+ #
196
+ # @param [ActiveRecord::Relation] collection The collection to scope
197
+ #
198
+ # @return [ActiveRecord::Relation] a scoped collection of query
199
+ def apply_authorization_scope(collection)
200
+ action_name = action_to_permission(params[:action])
201
+ active_admin_authorization.scope_collection(collection, action_name)
202
+ end
203
+
204
+ def apply_sorting(chain)
205
+ params[:order] ||= active_admin_config.sort_order
206
+ order_clause = active_admin_config.order_clause.new(active_admin_config, params[:order])
207
+
208
+ if order_clause.valid?
209
+ order_clause.apply(chain)
210
+ else
211
+ chain # just return the chain
212
+ end
213
+ end
214
+
215
+ # Applies any Ransack search methods to the currently scoped collection.
216
+ # Both `search` and `ransack` are provided, but we use `ransack` to prevent conflicts.
217
+ def apply_filtering(chain)
218
+ @search = chain.ransack(params[:q] || {})
219
+ @search.result
220
+ end
221
+
222
+ def apply_scoping(chain)
223
+ @collection_before_scope = chain
224
+
225
+ if current_scope
226
+ scope_chain(current_scope, chain)
227
+ else
228
+ chain
229
+ end
230
+ end
231
+
232
+ def apply_includes(chain)
233
+ if active_admin_config.includes.any?
234
+ chain.includes *active_admin_config.includes
235
+ else
236
+ chain
237
+ end
238
+ end
239
+
240
+ def collection_before_scope
241
+ @collection_before_scope
242
+ end
243
+
244
+ def current_scope
245
+ @current_scope ||= if params[:scope]
246
+ active_admin_config.get_scope_by_id(params[:scope])
247
+ else
248
+ active_admin_config.default_scope(self)
249
+ end
250
+ end
251
+
252
+ def apply_pagination(chain)
253
+ # skip pagination if CSV format was requested
254
+ return chain if params["format"] == "csv"
255
+ # skip pagination if already was paginated by scope
256
+ return chain if chain.respond_to?(:total_pages)
257
+ page = params[Kaminari.config.param_name]
258
+
259
+ paginate(chain, page, per_page)
260
+ end
261
+
262
+ def collection_applies(options = {})
263
+ only = Array(options.fetch(:only, COLLECTION_APPLIES))
264
+ except = Array(options.fetch(:except, []))
265
+
266
+ COLLECTION_APPLIES & only - except
267
+ end
268
+
269
+ def in_paginated_batches(&block)
270
+ ActiveRecord::Base.uncached do
271
+ (1..paginated_collection.total_pages).each do |page|
272
+ paginated_collection(page).each do |resource|
273
+ yield apply_decorator(resource)
274
+ end
275
+ end
276
+ end
277
+ end
278
+
279
+ def per_page
280
+ if active_admin_config.paginate
281
+ dynamic_per_page || configured_per_page
282
+ else
283
+ active_admin_config.max_per_page
284
+ end
285
+ end
286
+
287
+ def dynamic_per_page
288
+ params[:per_page] || @per_page
289
+ end
290
+
291
+ def configured_per_page
292
+ Array(active_admin_config.per_page).first
293
+ end
294
+
295
+ # @param resource [ActiveRecord::Base]
296
+ # @param attributes [Array<Hash]
297
+ # @return [ActiveRecord::Base] resource
298
+ #
299
+ def assign_attributes(resource, attributes)
300
+ if resource.respond_to?(:assign_attributes)
301
+ resource.assign_attributes(*attributes)
302
+ else
303
+ resource.attributes = attributes[0]
304
+ end
305
+
306
+ resource
307
+ end
308
+
309
+ # @param resource [ActiveRecord::Base]
310
+ # @return [ActiveRecord::Base] resource
311
+ #
312
+ def apply_decorations(resource)
313
+ apply_decorator(resource)
314
+ end
315
+
316
+ # @return [String]
317
+ def smart_resource_url
318
+ if create_another?
319
+ new_resource_url(create_another: params[:create_another])
320
+ else
321
+ super
322
+ end
323
+ end
324
+
325
+ private
326
+
327
+ # @return [Boolean] true if user requested to create one more
328
+ # resource after creating this one.
329
+ def create_another?
330
+ params[:create_another].present?
331
+ end
332
+
333
+ def paginated_collection(page_no = 1)
334
+ paginate(collection, page_no, batch_size)
335
+ end
336
+
337
+ def paginate(chain, page, per_page)
338
+ page_method_name = Kaminari.config.page_method_name
339
+
340
+ chain.public_send(page_method_name, page).per(per_page)
341
+ end
342
+
343
+ def batch_size
344
+ 1000
345
+ end
346
+ end
347
+ end
348
+ end