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,81 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class ResourceController < BaseController
4
+ module Decorators
5
+
6
+ protected
7
+
8
+ def apply_decorator(resource)
9
+ decorate? ? decorator_class.new(resource) : resource
10
+ end
11
+
12
+ def apply_collection_decorator(collection)
13
+ if decorate?
14
+ collection_decorator.decorate collection, with: decorator_class
15
+ else
16
+ collection
17
+ end
18
+ end
19
+
20
+ def self.undecorate(resource)
21
+ if resource.respond_to?(:decorated?) && resource.decorated?
22
+ resource.model
23
+ else
24
+ resource
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def decorate?
31
+ case action_name
32
+ when "new", "edit", "create", "update"
33
+ form = active_admin_config.get_page_presenter :form
34
+ form && form.options[:decorate] && decorator_class.present?
35
+ else
36
+ decorator_class.present?
37
+ end
38
+ end
39
+
40
+ def decorator_class
41
+ active_admin_config.decorator_class
42
+ end
43
+
44
+ # When using Draper, we wrap the collection draper in a new class that
45
+ # correctly delegates methods that Active Admin depends on.
46
+ def collection_decorator
47
+ if decorator_class
48
+ Wrapper.wrap decorator_class
49
+ end
50
+ end
51
+
52
+ class Wrapper
53
+ @cache = {}
54
+
55
+ def self.wrap(decorator)
56
+ collection_decorator = find_collection_decorator(decorator)
57
+ name = "#{collection_decorator.name} of #{decorator} + ActiveAdmin"
58
+ @cache[name] ||= wrap! collection_decorator, name
59
+ end
60
+
61
+ def self.wrap!(parent, name)
62
+ ::Class.new parent do
63
+ delegate :reorder, :page, :current_page, :total_pages, :limit_value,
64
+ :total_count, :offset, :to_key, :group_values,
65
+ :except, :find_each, :ransack, to: :object
66
+
67
+ define_singleton_method(:name) { name }
68
+ end
69
+ end
70
+
71
+ def self.find_collection_decorator(decorator)
72
+ if decorator.respond_to?(:collection_decorator_class)
73
+ decorator.collection_decorator_class
74
+ else
75
+ CollectionDecorator
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/resource"
3
+ require "active_admin/resource/model"
4
+
5
+ module ActiveAdmin
6
+ class ResourceController < BaseController
7
+ module PolymorphicRoutes
8
+ def polymorphic_url(record_or_hash_or_array, options = {})
9
+ super(map_named_resources_for(record_or_hash_or_array), options)
10
+ end
11
+
12
+ def polymorphic_path(record_or_hash_or_array, options = {})
13
+ super(map_named_resources_for(record_or_hash_or_array), options)
14
+ end
15
+
16
+ private
17
+
18
+ def map_named_resources_for(record_or_hash_or_array)
19
+ return record_or_hash_or_array unless record_or_hash_or_array.is_a?(Array)
20
+
21
+ record_or_hash_or_array.map { |record| to_named_resource(record) }
22
+ end
23
+
24
+ def to_named_resource(record)
25
+ if record.is_a?(resource_class)
26
+ return ActiveAdmin::Model.new(active_admin_config, record)
27
+ end
28
+
29
+ belongs_to_resource = active_admin_config.belongs_to_config.try(:resource)
30
+ if belongs_to_resource && record.is_a?(belongs_to_resource.resource_class)
31
+ return ActiveAdmin::Model.new(belongs_to_resource, record)
32
+ end
33
+
34
+ record
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class ResourceController < BaseController
4
+ module ResourceClassMethods
5
+
6
+ # Override the default `resource_class` class and instance
7
+ # methods to only return the class defined in the instance
8
+ # of ActiveAdmin::Resource
9
+ def override_resource_class_methods!
10
+ class_exec do
11
+ def self.resource_class=(klass); end
12
+
13
+ def self.resource_class
14
+ @active_admin_config ? @active_admin_config.resource_class : nil
15
+ end
16
+
17
+ private
18
+
19
+ def resource_class
20
+ self.class.resource_class
21
+ end
22
+ end
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class ResourceController < BaseController
4
+
5
+ # This module deals with scoping entire controllers to a relation
6
+ module Scoping
7
+ extend ActiveSupport::Concern
8
+
9
+ protected
10
+
11
+ # Override the default InheritedResource #begin_of_association_chain to allow
12
+ # the scope to be defined in the active admin configuration.
13
+ #
14
+ # If scope_to is a proc, we eval it, otherwise we call the method on the controller.
15
+ #
16
+ # Collection can be scoped conditionally with an :if or :unless proc.
17
+ def begin_of_association_chain
18
+ return nil unless active_admin_config.scope_to?(self)
19
+ MethodOrProcHelper.render_in_context(self, active_admin_config.scope_to_method)
20
+ end
21
+
22
+ # Overriding from InheritedResources::BaseHelpers
23
+ #
24
+ # Returns the method for the association chain when using
25
+ # the scope_to option
26
+ def method_for_association_chain
27
+ active_admin_config.scope_to_association_method || super
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class ResourceController < BaseController
4
+
5
+ module Sidebars
6
+
7
+ protected
8
+
9
+ def skip_sidebar!
10
+ @skip_sidebar = true
11
+ end
12
+
13
+ def skip_sidebar?
14
+ @skip_sidebar == true
15
+ end
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+ require "csv"
3
+
4
+ module ActiveAdmin
5
+ class ResourceController < BaseController
6
+
7
+ # This module overrides CSV responses to allow large data downloads.
8
+ # Could be expanded to JSON and XML in the future.
9
+ #
10
+ module Streaming
11
+
12
+ def index
13
+ super do |format|
14
+ format.csv { stream_csv }
15
+ yield(format) if block_given?
16
+ end
17
+ end
18
+
19
+ protected
20
+
21
+ def stream_resource(&block)
22
+ headers["X-Accel-Buffering"] = "no"
23
+ headers["Cache-Control"] = "no-cache"
24
+ headers["Last-Modified"] = Time.current.httpdate
25
+
26
+ if ActiveAdmin.application.disable_streaming_in.include? Rails.env
27
+ self.response_body = block[String.new]
28
+ else
29
+ self.response_body = Enumerator.new &block
30
+ end
31
+ end
32
+
33
+ def csv_filename
34
+ "#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.zone.now.to_date.to_s}.csv"
35
+ end
36
+
37
+ def stream_csv
38
+ headers["Content-Type"] = "text/csv; charset=utf-8" # In Rails 5 it's set to HTML??
39
+ headers["Content-Disposition"] = %{attachment; filename="#{csv_filename}"}
40
+ stream_resource &active_admin_config.csv_builder.method(:build).to_proc.curry[self]
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/collection_decorator"
3
+ require "active_admin/resource_controller/action_builder"
4
+ require "active_admin/resource_controller/data_access"
5
+ require "active_admin/resource_controller/decorators"
6
+ require "active_admin/resource_controller/polymorphic_routes"
7
+ require "active_admin/resource_controller/scoping"
8
+ require "active_admin/resource_controller/streaming"
9
+ require "active_admin/resource_controller/sidebars"
10
+ require "active_admin/resource_controller/resource_class_methods"
11
+
12
+ module ActiveAdmin
13
+ # All Resources Controller inherits from this controller.
14
+ # It implements actions and helpers for resources.
15
+ class ResourceController < BaseController
16
+ layout :determine_active_admin_layout
17
+
18
+ respond_to :html, :xml, :json
19
+ respond_to :csv, only: :index
20
+
21
+ include ActionBuilder
22
+ include Decorators
23
+ include DataAccess
24
+ include PolymorphicRoutes
25
+ include Scoping
26
+ include Streaming
27
+ include Sidebars
28
+ include ViewHelpers::DownloadFormatLinksHelper
29
+ extend ResourceClassMethods
30
+
31
+ def self.active_admin_config=(config)
32
+ if @active_admin_config = config
33
+ defaults resource_class: config.resource_class,
34
+ route_prefix: config.route_prefix,
35
+ instance_name: config.resource_name.singular
36
+ end
37
+ end
38
+
39
+ # Inherited Resources uses the `self.inherited(base)` hook to add
40
+ # in `self.resource_class`. To override it, we need to install
41
+ # our resource_class method each time we're inherited from.
42
+ def self.inherited(base)
43
+ super(base)
44
+ base.override_resource_class_methods!
45
+ end
46
+
47
+ private
48
+
49
+ # Returns the renderer class to use for the given action.
50
+ def renderer_for(action)
51
+ active_admin_namespace.view_factory["#{action}_page"]
52
+ end
53
+
54
+ helper_method :renderer_for
55
+
56
+ def restrict_format_access!
57
+ unless request.format.html?
58
+ presenter = active_admin_config.get_page_presenter(:index)
59
+ download_formats = (presenter || {}).fetch(:download_links, active_admin_config.namespace.download_links)
60
+ unless build_download_formats(download_formats).include?(request.format.symbol)
61
+ raise ActiveAdmin::AccessDenied.new(current_active_admin_user, :index)
62
+ end
63
+ end
64
+ end
65
+
66
+ before_action :restrict_format_access!, only: [:index, :show]
67
+ end
68
+ end
@@ -0,0 +1,210 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ # This is the class where all the register blocks are evaluated.
4
+ class ResourceDSL < DSL
5
+
6
+ private
7
+
8
+ # Redefine sort behaviour for column
9
+ #
10
+ # For example:
11
+ #
12
+ # # nulls last
13
+ # order_by(:age) do |order_clause|
14
+ # [order_clause.to_sql, 'NULLS LAST'].join(' ') if order_clause.order == 'desc'
15
+ # end
16
+ #
17
+ # # by last_name but in the case that there is no last name, by first_name.
18
+ # order_by(:full_name) do |order_clause|
19
+ # ['COALESCE(NULLIF(last_name, ''), first_name), first_name', order_clause.order].join(' ')
20
+ # end
21
+ #
22
+ #
23
+ def order_by(column, &block)
24
+ config.ordering[column] = block
25
+ end
26
+
27
+ def belongs_to(target, options = {})
28
+ config.belongs_to(target, options)
29
+ end
30
+
31
+ # Scope collection to a relation
32
+ def scope_to(*args, &block)
33
+ config.scope_to(*args, &block)
34
+ end
35
+
36
+ # Create a scope
37
+ def scope(*args, &block)
38
+ config.scope(*args, &block)
39
+ end
40
+
41
+ # Store relations that should be included
42
+ def includes(*args)
43
+ config.includes.push *args
44
+ end
45
+
46
+ #
47
+ # Keys included in the `permitted_params` setting are automatically whitelisted.
48
+ #
49
+ # Either
50
+ #
51
+ # permit_params :title, :author, :body, tags: []
52
+ #
53
+ # Or
54
+ #
55
+ # permit_params do
56
+ # defaults = [:title, :body]
57
+ # if current_user.admin?
58
+ # defaults + [:author]
59
+ # else
60
+ # defaults
61
+ # end
62
+ # end
63
+ #
64
+ def permit_params(*args, &block)
65
+ param_key = config.param_key.to_sym
66
+
67
+ controller do
68
+ define_method :permitted_params do
69
+ belongs_to_param = active_admin_config.belongs_to_param
70
+ create_another_param = :create_another if active_admin_config.create_another
71
+
72
+ permitted_params =
73
+ active_admin_namespace.permitted_params +
74
+ Array.wrap(belongs_to_param) +
75
+ Array.wrap(create_another_param)
76
+
77
+ params.permit(*permitted_params, param_key => block ? instance_exec(&block) : args)
78
+ end
79
+
80
+ private :permitted_params
81
+ end
82
+ end
83
+
84
+ # Configure the index page for the resource
85
+ def index(options = {}, &block)
86
+ options[:as] ||= :table
87
+ config.set_page_presenter :index, ActiveAdmin::PagePresenter.new(options, &block)
88
+ end
89
+
90
+ # Configure the show page for the resource
91
+ def show(options = {}, &block)
92
+ config.set_page_presenter :show, ActiveAdmin::PagePresenter.new(options, &block)
93
+ end
94
+
95
+ def form(options = {}, &block)
96
+ config.set_page_presenter :form, ActiveAdmin::PagePresenter.new(options, &block)
97
+ end
98
+
99
+ # Configure the CSV format
100
+ #
101
+ # For example:
102
+ #
103
+ # csv do
104
+ # column :name
105
+ # column("Author") { |post| post.author.full_name }
106
+ # end
107
+ #
108
+ # csv col_sep: ";", force_quotes: true do
109
+ # column :name
110
+ # end
111
+ #
112
+ def csv(options = {}, &block)
113
+ options[:resource] = config
114
+
115
+ config.csv_builder = CSVBuilder.new(options, &block)
116
+ end
117
+
118
+ # Member Actions give you the functionality of defining both the
119
+ # action and the route directly from your ActiveAdmin registration
120
+ # block.
121
+ #
122
+ # For example:
123
+ #
124
+ # ActiveAdmin.register Post do
125
+ # member_action :comments do
126
+ # @post = Post.find(params[:id])
127
+ # @comments = @post.comments
128
+ # end
129
+ # end
130
+ #
131
+ # Will create a new controller action comments and will hook it up to
132
+ # the named route (comments_admin_post_path) /admin/posts/:id/comments
133
+ #
134
+ # You can treat everything within the block as a standard Rails controller
135
+ # action.
136
+ #
137
+ def action(set, name, options = {}, &block)
138
+ warn "Warning: method `#{name}` already defined in #{controller.name}" if controller.method_defined?(name)
139
+
140
+ set << ControllerAction.new(name, options)
141
+ title = options.delete(:title)
142
+
143
+ controller do
144
+ before_action(only: [name]) { @page_title = title } if title
145
+ define_method(name, &block || Proc.new {})
146
+ end
147
+ end
148
+
149
+ def member_action(name, options = {}, &block)
150
+ action config.member_actions, name, options, &block
151
+ end
152
+
153
+ def collection_action(name, options = {}, &block)
154
+ action config.collection_actions, name, options, &block
155
+ end
156
+
157
+ def decorate_with(decorator_class)
158
+ # Force storage as a string. This will help us with reloading issues.
159
+ # Assuming decorator_class.to_s will return the name of the class allows
160
+ # us to handle a string or a class.
161
+ config.decorator_class_name = "::#{ decorator_class }"
162
+ end
163
+
164
+ # Defined Callbacks
165
+ #
166
+ # == After Build
167
+ # Called after the resource is built in the new and create actions.
168
+ #
169
+ # ActiveAdmin.register Post do
170
+ # after_build do |post|
171
+ # post.author = current_user
172
+ # end
173
+ # end
174
+ #
175
+ # == Before / After Create
176
+ # Called before and after a resource is saved to the db on the create action.
177
+ #
178
+ # == Before / After Update
179
+ # Called before and after a resource is saved to the db on the update action.
180
+ #
181
+ # == Before / After Save
182
+ # Called before and after the object is saved in the create and update action.
183
+ # Note: Gets called after the create and update callbacks
184
+ #
185
+ # == Before / After Destroy
186
+ # Called before and after the object is destroyed from the database.
187
+ #
188
+ delegate :before_build, :after_build, to: :controller
189
+ delegate :before_create, :after_create, to: :controller
190
+ delegate :before_update, :after_update, to: :controller
191
+ delegate :before_save, :after_save, to: :controller
192
+ delegate :before_destroy, :after_destroy, to: :controller
193
+
194
+ standard_rails_filters =
195
+ AbstractController::Callbacks::ClassMethods.public_instance_methods.select { |m| m.match(/_action\z/) }
196
+ delegate *standard_rails_filters, to: :controller
197
+
198
+ # Specify which actions to create in the controller
199
+ #
200
+ # Eg:
201
+ #
202
+ # ActiveAdmin.register Post do
203
+ # actions :index, :show
204
+ # end
205
+ #
206
+ # Will only create the index and show actions (no create, update or delete)
207
+ delegate :actions, to: :controller
208
+
209
+ end
210
+ end
@@ -0,0 +1,115 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ # @private
4
+ class Router
5
+ attr_reader :namespaces, :router
6
+
7
+ def initialize(router:, namespaces:)
8
+ @router = router
9
+ @namespaces = namespaces
10
+ end
11
+
12
+ def apply
13
+ define_root_routes
14
+ define_resources_routes
15
+ end
16
+
17
+ private
18
+
19
+ def define_root_routes
20
+ namespaces.each do |namespace|
21
+ if namespace.root?
22
+ router.root namespace.root_to_options.merge(to: namespace.root_to)
23
+ else
24
+ router.namespace namespace.name, **namespace.route_options.dup do
25
+ router.root namespace.root_to_options.merge(to: namespace.root_to, as: :root)
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ # Defines the routes for each resource
32
+ def define_resources_routes
33
+ resources = namespaces.flat_map { |n| n.resources.values }
34
+ resources.each do |config|
35
+ define_resource_routes(config)
36
+ end
37
+ end
38
+
39
+ def define_resource_routes(config)
40
+ if config.namespace.root?
41
+ define_routes(config)
42
+ else
43
+ # Add on the namespace if required
44
+ define_namespace(config)
45
+ end
46
+ end
47
+
48
+ def define_routes(config)
49
+ if config.belongs_to?
50
+ define_belongs_to_routes(config)
51
+ else
52
+ page_or_resource_routes(config)
53
+ end
54
+ end
55
+
56
+ def page_or_resource_routes(config)
57
+ config.is_a?(Page) ? page_routes(config) : resource_routes(config)
58
+ end
59
+
60
+ def resource_routes(config)
61
+ router.resources config.resource_name.route_key, only: config.defined_actions do
62
+ define_actions(config)
63
+ end
64
+ end
65
+
66
+ def page_routes(config)
67
+ page = config.underscored_resource_name
68
+ router.get "/#{page}", to: "#{page}#index"
69
+ config.page_actions.each do |action|
70
+ Array.wrap(action.http_verb).each do |verb|
71
+ build_route(verb, "/#{page}/#{action.name}" => "#{page}##{action.name}")
72
+ end
73
+ end
74
+ end
75
+
76
+ # Defines member and collection actions
77
+ def define_actions(config)
78
+ router.member do
79
+ config.member_actions.each { |action| build_action(action) }
80
+ end
81
+
82
+ router.collection do
83
+ config.collection_actions.each { |action| build_action(action) }
84
+ router.post :batch_action if config.batch_actions_enabled?
85
+ end
86
+ end
87
+
88
+ # Deals with +ControllerAction+ instances
89
+ # Builds one route for each HTTP verb passed in
90
+ def build_action(action)
91
+ build_route(action.http_verb, action.name)
92
+ end
93
+
94
+ def build_route(verbs, ...)
95
+ Array.wrap(verbs).each { |verb| router.send(verb, ...) }
96
+ end
97
+
98
+ def define_belongs_to_routes(config)
99
+ # If it's optional, make the normal resource routes
100
+ page_or_resource_routes(config) if config.belongs_to_config.optional?
101
+
102
+ # Make the nested belongs_to routes
103
+ # :only is set to nothing so that we don't clobber any existing routes on the resource
104
+ router.resources config.belongs_to_config.target.resource_name.plural, only: [] do
105
+ page_or_resource_routes(config)
106
+ end
107
+ end
108
+
109
+ def define_namespace(config)
110
+ router.namespace config.namespace.name, **config.namespace.route_options.dup do
111
+ define_routes(config)
112
+ end
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class Scope
4
+
5
+ attr_reader :scope_method, :id, :scope_block, :display_if_block, :show_count, :default_block, :group
6
+
7
+ # Create a Scope
8
+ #
9
+ # Examples:
10
+ #
11
+ # Scope.new(:published)
12
+ # # => Scope with name 'Published' and scope method :published
13
+ #
14
+ # Scope.new('Published', :public)
15
+ # # => Scope with name 'Published' and scope method :public
16
+ #
17
+ # Scope.new 'Published', :public, if: proc { current_admin_user.can? :manage, resource_class } do |articles|
18
+ # articles.where published: true
19
+ # end
20
+ # # => Scope with name 'Published' and scope method :public, optionally displaying the scope per the :if block
21
+ #
22
+ # Scope.new('Published') { |articles| articles.where(published: true) }
23
+ # # => Scope with name 'Published' using a block to scope
24
+ #
25
+ # Scope.new ->{Date.today.strftime '%A'}, :published_today
26
+ # # => Scope with dynamic title using the :published_today scope method
27
+ #
28
+ # Scope.new :published, nil, group: :status
29
+ # # => Scope with the group :status
30
+ #
31
+ def initialize(name, method = nil, options = {}, &block)
32
+ @name = name
33
+ @scope_method = method.try(:to_sym)
34
+
35
+ if name.is_a? Proc
36
+ raise "A string/symbol is required as the second argument if your label is a proc." unless method
37
+ @id = method.to_s.parameterize(separator: "_")
38
+ else
39
+ @scope_method ||= name.to_sym
40
+ @id = name.to_s.parameterize(separator: "_")
41
+ end
42
+
43
+ @scope_method = nil if @scope_method == :all
44
+ if block_given?
45
+ @scope_method = nil
46
+ @scope_block = block
47
+ end
48
+
49
+ @localizer = options[:localizer]
50
+ @show_count = options.fetch(:show_count, true)
51
+ @display_if_block = options[:if] || proc { true }
52
+ @default_block = options[:default] || proc { false }
53
+ @group = options[:group].try(:to_sym)
54
+ end
55
+
56
+ def name
57
+ case @name
58
+ when String then @name
59
+ when Symbol then @localizer ? @localizer.t(@name, scope: "scopes") : @name.to_s.titleize
60
+ else @name
61
+ end
62
+ end
63
+
64
+ end
65
+ end