ultra-quick-hub 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.

Potentially problematic release.


This version of ultra-quick-hub might be problematic. Click here for more details.

Files changed (345) 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/core_ext.rb +148 -0
  63. data/activeadmin-3.5.1/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  64. data/activeadmin-3.5.1/app/javascript/active_admin/lib/filters.js +39 -0
  65. data/activeadmin-3.5.1/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  66. data/activeadmin-3.5.1/app/javascript/active_admin/lib/per-page.js +38 -0
  67. data/activeadmin-3.5.1/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  68. data/activeadmin-3.5.1/app/javascript/active_admin/lib/utils.js +40 -0
  69. data/activeadmin-3.5.1/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  70. data/activeadmin-3.5.1/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  71. data/activeadmin-3.5.1/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  72. data/activeadmin-3.5.1/app/views/active_admin/devise/passwords/edit.html.erb +18 -0
  73. data/activeadmin-3.5.1/app/views/active_admin/devise/passwords/new.html.erb +15 -0
  74. data/activeadmin-3.5.1/app/views/active_admin/devise/registrations/new.html.erb +21 -0
  75. data/activeadmin-3.5.1/app/views/active_admin/devise/sessions/new.html.erb +20 -0
  76. data/activeadmin-3.5.1/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  77. data/activeadmin-3.5.1/app/views/active_admin/devise/shared/_links.erb +33 -0
  78. data/activeadmin-3.5.1/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
  79. data/activeadmin-3.5.1/app/views/active_admin/page/index.html.arb +2 -0
  80. data/activeadmin-3.5.1/app/views/active_admin/resource/edit.html.arb +2 -0
  81. data/activeadmin-3.5.1/app/views/active_admin/resource/index.html.arb +2 -0
  82. data/activeadmin-3.5.1/app/views/active_admin/resource/new.html.arb +2 -0
  83. data/activeadmin-3.5.1/app/views/active_admin/resource/show.html.arb +2 -0
  84. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  85. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  86. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  87. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  88. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_page.html.erb +12 -0
  89. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  90. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  91. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  92. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  93. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  94. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  95. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  96. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  97. data/activeadmin-3.5.1/app/views/layouts/active_admin.html.arb +2 -0
  98. data/activeadmin-3.5.1/app/views/layouts/active_admin_logged_out.html.erb +50 -0
  99. data/activeadmin-3.5.1/config/locales/ar.yml +128 -0
  100. data/activeadmin-3.5.1/config/locales/az.yml +131 -0
  101. data/activeadmin-3.5.1/config/locales/bg.yml +112 -0
  102. data/activeadmin-3.5.1/config/locales/bs.yml +114 -0
  103. data/activeadmin-3.5.1/config/locales/ca.yml +98 -0
  104. data/activeadmin-3.5.1/config/locales/cs.yml +102 -0
  105. data/activeadmin-3.5.1/config/locales/da.yml +130 -0
  106. data/activeadmin-3.5.1/config/locales/de-CH.yml +94 -0
  107. data/activeadmin-3.5.1/config/locales/de.yml +154 -0
  108. data/activeadmin-3.5.1/config/locales/el.yml +119 -0
  109. data/activeadmin-3.5.1/config/locales/en-CA.yml +132 -0
  110. data/activeadmin-3.5.1/config/locales/en-GB.yml +132 -0
  111. data/activeadmin-3.5.1/config/locales/en.yml +154 -0
  112. data/activeadmin-3.5.1/config/locales/eo.yml +137 -0
  113. data/activeadmin-3.5.1/config/locales/es-MX.yml +90 -0
  114. data/activeadmin-3.5.1/config/locales/es.yml +154 -0
  115. data/activeadmin-3.5.1/config/locales/fa.yml +112 -0
  116. data/activeadmin-3.5.1/config/locales/fi.yml +105 -0
  117. data/activeadmin-3.5.1/config/locales/fr.yml +133 -0
  118. data/activeadmin-3.5.1/config/locales/he.yml +132 -0
  119. data/activeadmin-3.5.1/config/locales/hr.yml +116 -0
  120. data/activeadmin-3.5.1/config/locales/hu.yml +94 -0
  121. data/activeadmin-3.5.1/config/locales/id.yml +128 -0
  122. data/activeadmin-3.5.1/config/locales/it.yml +154 -0
  123. data/activeadmin-3.5.1/config/locales/ja.yml +133 -0
  124. data/activeadmin-3.5.1/config/locales/ko.yml +113 -0
  125. data/activeadmin-3.5.1/config/locales/lt.yml +134 -0
  126. data/activeadmin-3.5.1/config/locales/lv.yml +85 -0
  127. data/activeadmin-3.5.1/config/locales/mk.yml +126 -0
  128. data/activeadmin-3.5.1/config/locales/nb.yml +122 -0
  129. data/activeadmin-3.5.1/config/locales/nl.yml +136 -0
  130. data/activeadmin-3.5.1/config/locales/pl.yml +160 -0
  131. data/activeadmin-3.5.1/config/locales/pt-BR.yml +135 -0
  132. data/activeadmin-3.5.1/config/locales/pt-PT.yml +85 -0
  133. data/activeadmin-3.5.1/config/locales/ro.yml +90 -0
  134. data/activeadmin-3.5.1/config/locales/ru.yml +135 -0
  135. data/activeadmin-3.5.1/config/locales/sk.yml +160 -0
  136. data/activeadmin-3.5.1/config/locales/sv-SE.yml +154 -0
  137. data/activeadmin-3.5.1/config/locales/tr.yml +133 -0
  138. data/activeadmin-3.5.1/config/locales/uk.yml +132 -0
  139. data/activeadmin-3.5.1/config/locales/vi.yml +154 -0
  140. data/activeadmin-3.5.1/config/locales/zh-CN.yml +154 -0
  141. data/activeadmin-3.5.1/config/locales/zh-TW.yml +128 -0
  142. data/activeadmin-3.5.1/lib/active_admin/abstract_view_factory.rb +48 -0
  143. data/activeadmin-3.5.1/lib/active_admin/application.rb +234 -0
  144. data/activeadmin-3.5.1/lib/active_admin/application_settings.rb +43 -0
  145. data/activeadmin-3.5.1/lib/active_admin/asset_registration.rb +30 -0
  146. data/activeadmin-3.5.1/lib/active_admin/authorization_adapter.rb +132 -0
  147. data/activeadmin-3.5.1/lib/active_admin/base_controller/authorization.rb +129 -0
  148. data/activeadmin-3.5.1/lib/active_admin/base_controller/menu.rb +35 -0
  149. data/activeadmin-3.5.1/lib/active_admin/base_controller.rb +82 -0
  150. data/activeadmin-3.5.1/lib/active_admin/batch_actions/controller.rb +41 -0
  151. data/activeadmin-3.5.1/lib/active_admin/batch_actions/resource_extension.rb +157 -0
  152. data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/batch_action_form.rb +39 -0
  153. data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/batch_action_selector.rb +59 -0
  154. data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/selection_cells.rb +39 -0
  155. data/activeadmin-3.5.1/lib/active_admin/batch_actions.rb +17 -0
  156. data/activeadmin-3.5.1/lib/active_admin/callbacks.rb +89 -0
  157. data/activeadmin-3.5.1/lib/active_admin/cancan_adapter.rb +37 -0
  158. data/activeadmin-3.5.1/lib/active_admin/collection_decorator.rb +32 -0
  159. data/activeadmin-3.5.1/lib/active_admin/component.rb +6 -0
  160. data/activeadmin-3.5.1/lib/active_admin/controller_action.rb +14 -0
  161. data/activeadmin-3.5.1/lib/active_admin/csv_builder.rb +144 -0
  162. data/activeadmin-3.5.1/lib/active_admin/dependency.rb +97 -0
  163. data/activeadmin-3.5.1/lib/active_admin/devise.rb +91 -0
  164. data/activeadmin-3.5.1/lib/active_admin/dsl.rb +161 -0
  165. data/activeadmin-3.5.1/lib/active_admin/dynamic_setting.rb +39 -0
  166. data/activeadmin-3.5.1/lib/active_admin/dynamic_settings_node.rb +29 -0
  167. data/activeadmin-3.5.1/lib/active_admin/engine.rb +29 -0
  168. data/activeadmin-3.5.1/lib/active_admin/error.rb +63 -0
  169. data/activeadmin-3.5.1/lib/active_admin/filters/active.rb +30 -0
  170. data/activeadmin-3.5.1/lib/active_admin/filters/active_filter.rb +124 -0
  171. data/activeadmin-3.5.1/lib/active_admin/filters/active_sidebar.rb +28 -0
  172. data/activeadmin-3.5.1/lib/active_admin/filters/dsl.rb +22 -0
  173. data/activeadmin-3.5.1/lib/active_admin/filters/forms.rb +86 -0
  174. data/activeadmin-3.5.1/lib/active_admin/filters/formtastic_addons.rb +75 -0
  175. data/activeadmin-3.5.1/lib/active_admin/filters/resource_extension.rb +180 -0
  176. data/activeadmin-3.5.1/lib/active_admin/filters.rb +12 -0
  177. data/activeadmin-3.5.1/lib/active_admin/form_builder.rb +186 -0
  178. data/activeadmin-3.5.1/lib/active_admin/generators/boilerplate.rb +54 -0
  179. data/activeadmin-3.5.1/lib/active_admin/helpers/collection.rb +21 -0
  180. data/activeadmin-3.5.1/lib/active_admin/helpers/i18n.rb +8 -0
  181. data/activeadmin-3.5.1/lib/active_admin/helpers/optional_display.rb +39 -0
  182. data/activeadmin-3.5.1/lib/active_admin/helpers/routes/url_helpers.rb +16 -0
  183. data/activeadmin-3.5.1/lib/active_admin/helpers/scope_chain.rb +25 -0
  184. data/activeadmin-3.5.1/lib/active_admin/inputs/datepicker_input.rb +28 -0
  185. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/base/search_method_select.rb +76 -0
  186. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/base.rb +45 -0
  187. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/boolean_input.rb +25 -0
  188. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/check_boxes_input.rb +51 -0
  189. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/date_picker_input.rb +14 -0
  190. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/date_range_input.rb +53 -0
  191. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/numeric_input.rb +13 -0
  192. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/select_input.rb +59 -0
  193. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/string_input.rb +27 -0
  194. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/text_input.rb +26 -0
  195. data/activeadmin-3.5.1/lib/active_admin/inputs.rb +22 -0
  196. data/activeadmin-3.5.1/lib/active_admin/localizers/resource_localizer.rb +36 -0
  197. data/activeadmin-3.5.1/lib/active_admin/localizers.rb +12 -0
  198. data/activeadmin-3.5.1/lib/active_admin/menu.rb +107 -0
  199. data/activeadmin-3.5.1/lib/active_admin/menu_collection.rb +92 -0
  200. data/activeadmin-3.5.1/lib/active_admin/menu_item.rb +70 -0
  201. data/activeadmin-3.5.1/lib/active_admin/namespace.rb +267 -0
  202. data/activeadmin-3.5.1/lib/active_admin/namespace_settings.rb +127 -0
  203. data/activeadmin-3.5.1/lib/active_admin/order_clause.rb +49 -0
  204. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/comment.rb +40 -0
  205. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/namespace_helper.rb +15 -0
  206. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/resource_helper.rb +18 -0
  207. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/show_page_helper.rb +24 -0
  208. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +101 -0
  209. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/views.rb +3 -0
  210. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments.rb +102 -0
  211. data/activeadmin-3.5.1/lib/active_admin/orm/active_record.rb +6 -0
  212. data/activeadmin-3.5.1/lib/active_admin/orm/mongoid.rb +2 -0
  213. data/activeadmin-3.5.1/lib/active_admin/page.rb +112 -0
  214. data/activeadmin-3.5.1/lib/active_admin/page_controller.rb +30 -0
  215. data/activeadmin-3.5.1/lib/active_admin/page_dsl.rb +33 -0
  216. data/activeadmin-3.5.1/lib/active_admin/page_presenter.rb +34 -0
  217. data/activeadmin-3.5.1/lib/active_admin/pundit_adapter.rb +123 -0
  218. data/activeadmin-3.5.1/lib/active_admin/resource/action_items.rb +121 -0
  219. data/activeadmin-3.5.1/lib/active_admin/resource/attributes.rb +55 -0
  220. data/activeadmin-3.5.1/lib/active_admin/resource/belongs_to.rb +53 -0
  221. data/activeadmin-3.5.1/lib/active_admin/resource/controllers.rb +20 -0
  222. data/activeadmin-3.5.1/lib/active_admin/resource/includes.rb +13 -0
  223. data/activeadmin-3.5.1/lib/active_admin/resource/menu.rb +68 -0
  224. data/activeadmin-3.5.1/lib/active_admin/resource/model.rb +16 -0
  225. data/activeadmin-3.5.1/lib/active_admin/resource/naming.rb +63 -0
  226. data/activeadmin-3.5.1/lib/active_admin/resource/ordering.rb +12 -0
  227. data/activeadmin-3.5.1/lib/active_admin/resource/page_presenters.rb +83 -0
  228. data/activeadmin-3.5.1/lib/active_admin/resource/pagination.rb +24 -0
  229. data/activeadmin-3.5.1/lib/active_admin/resource/routes.rb +146 -0
  230. data/activeadmin-3.5.1/lib/active_admin/resource/scope_to.rb +75 -0
  231. data/activeadmin-3.5.1/lib/active_admin/resource/scopes.rb +53 -0
  232. data/activeadmin-3.5.1/lib/active_admin/resource/sidebars.rb +29 -0
  233. data/activeadmin-3.5.1/lib/active_admin/resource.rb +227 -0
  234. data/activeadmin-3.5.1/lib/active_admin/resource_collection.rb +73 -0
  235. data/activeadmin-3.5.1/lib/active_admin/resource_controller/action_builder.rb +32 -0
  236. data/activeadmin-3.5.1/lib/active_admin/resource_controller/data_access.rb +348 -0
  237. data/activeadmin-3.5.1/lib/active_admin/resource_controller/decorators.rb +81 -0
  238. data/activeadmin-3.5.1/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  239. data/activeadmin-3.5.1/lib/active_admin/resource_controller/resource_class_methods.rb +27 -0
  240. data/activeadmin-3.5.1/lib/active_admin/resource_controller/scoping.rb +32 -0
  241. data/activeadmin-3.5.1/lib/active_admin/resource_controller/sidebars.rb +19 -0
  242. data/activeadmin-3.5.1/lib/active_admin/resource_controller/streaming.rb +45 -0
  243. data/activeadmin-3.5.1/lib/active_admin/resource_controller.rb +68 -0
  244. data/activeadmin-3.5.1/lib/active_admin/resource_dsl.rb +210 -0
  245. data/activeadmin-3.5.1/lib/active_admin/router.rb +115 -0
  246. data/activeadmin-3.5.1/lib/active_admin/scope.rb +65 -0
  247. data/activeadmin-3.5.1/lib/active_admin/settings_node.rb +20 -0
  248. data/activeadmin-3.5.1/lib/active_admin/sidebar_section.rb +40 -0
  249. data/activeadmin-3.5.1/lib/active_admin/version.rb +4 -0
  250. data/activeadmin-3.5.1/lib/active_admin/view_factory.rb +28 -0
  251. data/activeadmin-3.5.1/lib/active_admin/view_helpers/active_admin_application_helper.rb +13 -0
  252. data/activeadmin-3.5.1/lib/active_admin/view_helpers/auto_link_helper.rb +46 -0
  253. data/activeadmin-3.5.1/lib/active_admin/view_helpers/breadcrumb_helper.rb +34 -0
  254. data/activeadmin-3.5.1/lib/active_admin/view_helpers/display_helper.rb +119 -0
  255. data/activeadmin-3.5.1/lib/active_admin/view_helpers/download_format_links_helper.rb +60 -0
  256. data/activeadmin-3.5.1/lib/active_admin/view_helpers/fields_for.rb +51 -0
  257. data/activeadmin-3.5.1/lib/active_admin/view_helpers/flash_helper.rb +15 -0
  258. data/activeadmin-3.5.1/lib/active_admin/view_helpers/form_helper.rb +21 -0
  259. data/activeadmin-3.5.1/lib/active_admin/view_helpers/method_or_proc_helper.rb +101 -0
  260. data/activeadmin-3.5.1/lib/active_admin/view_helpers/scope_name_helper.rb +17 -0
  261. data/activeadmin-3.5.1/lib/active_admin/view_helpers/sidebar_helper.rb +16 -0
  262. data/activeadmin-3.5.1/lib/active_admin/view_helpers/title_helper.rb +12 -0
  263. data/activeadmin-3.5.1/lib/active_admin/view_helpers/view_factory_helper.rb +12 -0
  264. data/activeadmin-3.5.1/lib/active_admin/view_helpers.rb +21 -0
  265. data/activeadmin-3.5.1/lib/active_admin/views/action_items.rb +18 -0
  266. data/activeadmin-3.5.1/lib/active_admin/views/components/active_admin_form.rb +164 -0
  267. data/activeadmin-3.5.1/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  268. data/activeadmin-3.5.1/lib/active_admin/views/components/attributes_table.rb +95 -0
  269. data/activeadmin-3.5.1/lib/active_admin/views/components/blank_slate.rb +18 -0
  270. data/activeadmin-3.5.1/lib/active_admin/views/components/columns.rb +162 -0
  271. data/activeadmin-3.5.1/lib/active_admin/views/components/dropdown_menu.rb +69 -0
  272. data/activeadmin-3.5.1/lib/active_admin/views/components/index_list.rb +70 -0
  273. data/activeadmin-3.5.1/lib/active_admin/views/components/menu.rb +33 -0
  274. data/activeadmin-3.5.1/lib/active_admin/views/components/menu_item.rb +59 -0
  275. data/activeadmin-3.5.1/lib/active_admin/views/components/paginated_collection.rb +164 -0
  276. data/activeadmin-3.5.1/lib/active_admin/views/components/panel.rb +39 -0
  277. data/activeadmin-3.5.1/lib/active_admin/views/components/scopes.rb +75 -0
  278. data/activeadmin-3.5.1/lib/active_admin/views/components/sidebar.rb +14 -0
  279. data/activeadmin-3.5.1/lib/active_admin/views/components/sidebar_section.rb +35 -0
  280. data/activeadmin-3.5.1/lib/active_admin/views/components/site_title.rb +55 -0
  281. data/activeadmin-3.5.1/lib/active_admin/views/components/status_tag.rb +76 -0
  282. data/activeadmin-3.5.1/lib/active_admin/views/components/table_for.rb +211 -0
  283. data/activeadmin-3.5.1/lib/active_admin/views/components/tabs.rb +41 -0
  284. data/activeadmin-3.5.1/lib/active_admin/views/components/unsupported_browser.rb +12 -0
  285. data/activeadmin-3.5.1/lib/active_admin/views/footer.rb +32 -0
  286. data/activeadmin-3.5.1/lib/active_admin/views/header.rb +20 -0
  287. data/activeadmin-3.5.1/lib/active_admin/views/index_as_block.rb +37 -0
  288. data/activeadmin-3.5.1/lib/active_admin/views/index_as_blog.rb +156 -0
  289. data/activeadmin-3.5.1/lib/active_admin/views/index_as_grid.rb +81 -0
  290. data/activeadmin-3.5.1/lib/active_admin/views/index_as_table.rb +401 -0
  291. data/activeadmin-3.5.1/lib/active_admin/views/pages/base.rb +134 -0
  292. data/activeadmin-3.5.1/lib/active_admin/views/pages/form.rb +65 -0
  293. data/activeadmin-3.5.1/lib/active_admin/views/pages/index.rb +166 -0
  294. data/activeadmin-3.5.1/lib/active_admin/views/pages/layout.rb +27 -0
  295. data/activeadmin-3.5.1/lib/active_admin/views/pages/page.rb +31 -0
  296. data/activeadmin-3.5.1/lib/active_admin/views/pages/show.rb +60 -0
  297. data/activeadmin-3.5.1/lib/active_admin/views/tabbed_navigation.rb +12 -0
  298. data/activeadmin-3.5.1/lib/active_admin/views/title_bar.rb +56 -0
  299. data/activeadmin-3.5.1/lib/active_admin/views.rb +9 -0
  300. data/activeadmin-3.5.1/lib/active_admin.rb +135 -0
  301. data/activeadmin-3.5.1/lib/activeadmin.rb +2 -0
  302. data/activeadmin-3.5.1/lib/generators/active_admin/assets/assets_generator.rb +15 -0
  303. data/activeadmin-3.5.1/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  304. data/activeadmin-3.5.1/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
  305. data/activeadmin-3.5.1/lib/generators/active_admin/devise/devise_generator.rb +69 -0
  306. data/activeadmin-3.5.1/lib/generators/active_admin/install/install_generator.rb +56 -0
  307. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/active_admin.rb.erb +352 -0
  308. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
  309. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  310. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
  311. data/activeadmin-3.5.1/lib/generators/active_admin/page/USAGE +8 -0
  312. data/activeadmin-3.5.1/lib/generators/active_admin/page/page_generator.rb +13 -0
  313. data/activeadmin-3.5.1/lib/generators/active_admin/page/templates/page.rb +6 -0
  314. data/activeadmin-3.5.1/lib/generators/active_admin/resource/resource_generator.rb +21 -0
  315. data/activeadmin-3.5.1/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
  316. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  317. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  318. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  319. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  320. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  321. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/data.js +39 -0
  322. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/disable-selection.js +51 -0
  323. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/focusable.js +79 -0
  324. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +81 -0
  325. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/keycode.js +51 -0
  326. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/labels.js +70 -0
  327. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/plugin.js +49 -0
  328. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/position.js +513 -0
  329. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/scroll-parent.js +50 -0
  330. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/tabbable.js +41 -0
  331. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/unique-id.js +54 -0
  332. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/version.js +20 -0
  333. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widget.js +761 -0
  334. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/button.js +454 -0
  335. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +294 -0
  336. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +304 -0
  337. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2240 -0
  338. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +957 -0
  339. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1264 -0
  340. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +226 -0
  341. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1281 -0
  342. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1614 -0
  343. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +918 -0
  344. data/ultra-quick-hub.gemspec +12 -0
  345. metadata +384 -0
@@ -0,0 +1,234 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/router"
3
+ require "active_admin/application_settings"
4
+ require "active_admin/namespace_settings"
5
+
6
+ module ActiveAdmin
7
+ class Application
8
+
9
+ class << self
10
+ def setting(name, default)
11
+ ApplicationSettings.register name, default
12
+ end
13
+
14
+ def inheritable_setting(name, default)
15
+ NamespaceSettings.register name, default
16
+ end
17
+ end
18
+
19
+ def settings
20
+ @settings ||= SettingsNode.build(ApplicationSettings)
21
+ end
22
+
23
+ def namespace_settings
24
+ @namespace_settings ||= SettingsNode.build(NamespaceSettings)
25
+ end
26
+
27
+ def respond_to_missing?(method, include_private = false)
28
+ [settings, namespace_settings].any? { |sets| sets.respond_to?(method) } || super
29
+ end
30
+
31
+ def method_missing(method, *args)
32
+ if settings.respond_to?(method)
33
+ settings.send(method, *args)
34
+ elsif namespace_settings.respond_to?(method)
35
+ namespace_settings.send(method, *args)
36
+ else
37
+ super
38
+ end
39
+ end
40
+
41
+ attr_reader :namespaces
42
+ def initialize
43
+ @namespaces = Namespace::Store.new
44
+ end
45
+
46
+ include AssetRegistration
47
+
48
+ # Event that gets triggered on load of Active Admin
49
+ BeforeLoadEvent = "active_admin.application.before_load".freeze
50
+ AfterLoadEvent = "active_admin.application.after_load".freeze
51
+
52
+ # Runs before the app's AA initializer
53
+ def setup!
54
+ register_default_assets
55
+ end
56
+
57
+ # Runs after the app's AA initializer
58
+ def prepare!
59
+ remove_active_admin_load_paths_from_rails_autoload_and_eager_load
60
+ attach_reloader
61
+ end
62
+
63
+ # Registers a brand new configuration for the given resource.
64
+ def register(resource, options = {}, &block)
65
+ ns = options.fetch(:namespace) { default_namespace }
66
+ namespace(ns).register resource, options, &block
67
+ end
68
+
69
+ # Creates a namespace for the given name
70
+ #
71
+ # Yields the namespace if a block is given
72
+ #
73
+ # @return [Namespace] the new or existing namespace
74
+ def namespace(name)
75
+ name ||= :root
76
+
77
+ namespace = namespaces[name.to_sym] ||= begin
78
+ namespace = Namespace.new(self, name)
79
+ ActiveSupport::Notifications.instrument ActiveAdmin::Namespace::RegisterEvent, { active_admin_namespace: namespace }
80
+ namespace
81
+ end
82
+
83
+ yield(namespace) if block_given?
84
+
85
+ namespace
86
+ end
87
+
88
+ # Register a page
89
+ #
90
+ # @param name [String] The page name
91
+ # @option [Hash] Accepts option :namespace.
92
+ # @&block The registration block.
93
+ #
94
+ def register_page(name, options = {}, &block)
95
+ ns = options.fetch(:namespace) { default_namespace }
96
+ namespace(ns).register_page name, options, &block
97
+ end
98
+
99
+ # Whether all configuration files have been loaded
100
+ def loaded?
101
+ @@loaded ||= false
102
+ end
103
+
104
+ # Removes all defined controllers from memory. Useful in
105
+ # development, where they are reloaded on each request.
106
+ def unload!
107
+ namespaces.each &:unload!
108
+ @@loaded = false
109
+ end
110
+
111
+ # Loads all ruby files that are within the load_paths setting.
112
+ # To reload everything simply call `ActiveAdmin.unload!`
113
+ def load!
114
+ unless loaded?
115
+ ActiveSupport::Notifications.instrument BeforeLoadEvent, { active_admin_application: self } # before_load hook
116
+ files.each { |file| load file } # load files
117
+ namespace(default_namespace) # init AA resources
118
+ ActiveSupport::Notifications.instrument AfterLoadEvent, { active_admin_application: self } # after_load hook
119
+ @@loaded = true
120
+ end
121
+ end
122
+
123
+ def load(file)
124
+ DatabaseHitDuringLoad.capture { super }
125
+ end
126
+
127
+ # Returns ALL the files to be loaded
128
+ def files
129
+ load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"].sort }
130
+ end
131
+
132
+ # Creates all the necessary routes for the ActiveAdmin configurations
133
+ #
134
+ # Use this within the routes.rb file:
135
+ #
136
+ # Application.routes.draw do |map|
137
+ # ActiveAdmin.routes(self)
138
+ # end
139
+ #
140
+ # @param rails_router [ActionDispatch::Routing::Mapper]
141
+ def routes(rails_router)
142
+ load!
143
+ Router.new(router: rails_router, namespaces: namespaces).apply
144
+ end
145
+
146
+ # Adds before, around and after filters to all controllers.
147
+ # Example usage:
148
+ # ActiveAdmin.before_action :authenticate_admin!
149
+ #
150
+ AbstractController::Callbacks::ClassMethods.public_instance_methods.
151
+ select { |m| m.match(/_action\z/) }.each do |name|
152
+ define_method name do |*args, &block|
153
+ ActiveSupport.on_load(:active_admin_controller) do
154
+ public_send name, *args, &block
155
+ end
156
+ end
157
+ end
158
+
159
+ def controllers_for_filters
160
+ controllers = [BaseController]
161
+ controllers.push *Devise.controllers_for_filters if Dependency.devise?
162
+ controllers
163
+ end
164
+
165
+ private
166
+
167
+ def register_default_assets
168
+ register_stylesheet "active_admin.css", media: "all"
169
+ register_javascript "active_admin.js"
170
+ end
171
+
172
+ # Since app/admin is alphabetically before app/models, we have to remove it
173
+ # from the host app's +autoload_paths+ to prevent missing constant errors.
174
+ #
175
+ # As well, we have to remove it from +eager_load_paths+ to prevent the
176
+ # files from being loaded twice in production.
177
+ def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
178
+ ActiveSupport::Dependencies.autoload_paths -= load_paths
179
+ Rails.application.config.eager_load_paths -= load_paths
180
+ end
181
+
182
+ # Hook into the Rails code reloading mechanism so that things are reloaded
183
+ # properly in development mode.
184
+ #
185
+ # If any of the app files (e.g. models) has changed, we need to reload all
186
+ # the admin files. If the admin files themselves has changed, we need to
187
+ # regenerate the routes as well.
188
+ def attach_reloader
189
+ Rails.application.config.after_initialize do |app|
190
+ unload_active_admin = -> { ActiveAdmin.application.unload! }
191
+
192
+ if app.config.reload_classes_only_on_change
193
+ # Rails is about to unload all the app files (e.g. models), so we
194
+ # should first unload the classes generated by Active Admin, otherwise
195
+ # they will contain references to the stale (unloaded) classes.
196
+ ActiveSupport::Reloader.to_prepare(prepend: true, &unload_active_admin)
197
+ else
198
+ # If the user has configured the app to always reload app files after
199
+ # each request, so we should unload the generated classes too.
200
+ ActiveSupport::Reloader.to_complete(&unload_active_admin)
201
+ end
202
+
203
+ admin_dirs = {}
204
+
205
+ load_paths.each do |path|
206
+ admin_dirs[path] = [:rb]
207
+ end
208
+
209
+ routes_reloader = app.config.file_watcher.new([], admin_dirs) do
210
+ app.reload_routes!
211
+ end
212
+
213
+ app.reloaders << routes_reloader
214
+
215
+ ActiveSupport::Reloader.to_prepare do
216
+ # Rails might have reloaded the routes for other reasons (e.g.
217
+ # routes.rb has changed), in which case Active Admin would have been
218
+ # loaded via the `ActiveAdmin.routes` call in `routes.rb`.
219
+ #
220
+ # Otherwise, we should check if any of the admin files are changed
221
+ # and force the routes to reload if necessary. This would again causes
222
+ # Active Admin to load via `ActiveAdmin.routes`.
223
+ #
224
+ # Finally, if Active Admin is still not loaded at this point, then we
225
+ # would need to load it manually.
226
+ unless ActiveAdmin.application.loaded?
227
+ routes_reloader.execute_if_updated
228
+ ActiveAdmin.application.load!
229
+ end
230
+ end
231
+ end
232
+ end
233
+ end
234
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/settings_node"
3
+
4
+ module ActiveAdmin
5
+ class ApplicationSettings < SettingsNode
6
+
7
+ # The default namespace to put controllers and routes inside. Set this
8
+ # in config/initializers/active_admin.rb using:
9
+ #
10
+ # config.default_namespace = :super_admin
11
+ #
12
+ register :default_namespace, :admin
13
+
14
+ register :app_path, Rails.root
15
+
16
+ # Load paths for admin configurations. Add folders to this load path
17
+ # to load up other resources for administration. External gems can
18
+ # include their paths in this load path to provide active_admin UIs
19
+ register :load_paths, [File.expand_path("app/admin", Rails.root)]
20
+
21
+ # Set default localize format for Date/Time values
22
+ register :localize_format, :long
23
+
24
+ # Active Admin makes educated guesses when displaying objects, this is
25
+ # the list of methods it tries calling in order
26
+ # Note that Formtastic also has 'collection_label_methods' similar to this
27
+ # used by auto generated dropdowns in filter or belongs_to field of Active Admin
28
+ register :display_name_methods, [ :display_name,
29
+ :full_name,
30
+ :name,
31
+ :username,
32
+ :login,
33
+ :title,
34
+ :email,
35
+ :to_s ]
36
+
37
+ # To make debugging easier, by default don't stream in development
38
+ register :disable_streaming_in, ["development"]
39
+
40
+ # Remove sensitive attributes from being displayed, made editable, or exported by default
41
+ register :filter_attributes, [:encrypted_password, :password, :password_confirmation]
42
+ end
43
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ module AssetRegistration
4
+
5
+ def register_stylesheet(path, options = {})
6
+ stylesheets[path] = options
7
+ end
8
+
9
+ def stylesheets
10
+ @stylesheets ||= {}
11
+ end
12
+
13
+ def clear_stylesheets!
14
+ stylesheets.clear
15
+ end
16
+
17
+ def register_javascript(path, options = {})
18
+ javascripts[path] = options
19
+ end
20
+
21
+ def javascripts
22
+ @javascripts ||= {}
23
+ end
24
+
25
+ def clear_javascripts!
26
+ javascripts.clear
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,132 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+
4
+ # Default Authorization permissions for Active Admin
5
+ module Authorization
6
+ READ = :read
7
+ NEW = :new
8
+ CREATE = :create
9
+ EDIT = :edit
10
+ UPDATE = :update
11
+ DESTROY = :destroy
12
+ end
13
+
14
+ Auth = Authorization
15
+
16
+ # Active Admin's default authorization adapter. This adapter returns true
17
+ # for all requests to `#authorized?`. It should be the starting point for
18
+ # implementing your own authorization adapter.
19
+ #
20
+ # To view an example subclass, check out `ActiveAdmin::CanCanAdapter`
21
+ class AuthorizationAdapter
22
+ attr_reader :resource, :user
23
+
24
+ # Initialize a new authorization adapter. This happens on each and
25
+ # every request to a controller.
26
+ #
27
+ # @param [ActiveAdmin::Resource, ActiveAdmin::Page] resource The resource
28
+ # that the user is currently on. Note, we may be authorizing access
29
+ # to a different subject, so don't rely on this other than to
30
+ # pull configuration information from.
31
+ #
32
+ # @param [any] user The current user. The user is set to whatever is returned
33
+ # from `#current_active_admin_user` in the controller.
34
+ #
35
+ def initialize(resource, user)
36
+ @resource = resource
37
+ @user = user
38
+ end
39
+
40
+ # Returns true of false depending on if the user is authorized to perform
41
+ # the action on the subject.
42
+ #
43
+ # @param [Symbol] action The name of the action to perform. Usually this will be
44
+ # one of the `ActiveAdmin::Auth::*` symbols.
45
+ #
46
+ # @param [any] subject The subject the action is being performed on usually this
47
+ # is a model object. Note, that this is NOT always in instance, it can be
48
+ # the class of the subject also. For example, Active Admin uses the class
49
+ # of the resource to decide if the resource should be displayed in the
50
+ # global navigation. To deal with this nicely in a case statement, take
51
+ # a look at `#normalized(klass)`
52
+ #
53
+ # @return [Boolean]
54
+ def authorized?(action, subject = nil)
55
+ true
56
+ end
57
+
58
+ # A hook method for authorization libraries to scope the collection. By
59
+ # default, we just return the same collection. The returned scope is used
60
+ # as the starting point for all queries to the db in the controller.
61
+ #
62
+ # @param [ActiveRecord::Relation] collection The collection the user is
63
+ # attempting to view.
64
+ #
65
+ # @param [Symbol] action The name of the action to perform. Usually this will be
66
+ # one of the `ActiveAdmin::Auth::*` symbols. Defaults to `Auth::READ` if
67
+ # no action passed in.
68
+ #
69
+ # @return [ActiveRecord::Relation] A new collection, scoped to the
70
+ # objects that the current user has access to.
71
+ def scope_collection(collection, action = Auth::READ)
72
+ collection
73
+ end
74
+
75
+ private
76
+
77
+ # The `#authorized?` method's subject can be set to both instances as well
78
+ # as classes of objects. This can make it much difficult to create simple
79
+ # case statements for authorization since you have to handle both the
80
+ # class level match and the instance level match.
81
+ #
82
+ # For example:
83
+ #
84
+ # class MyAuthAdapter < ActiveAdmin::AuthorizationAdapter
85
+ #
86
+ # def authorized?(action, subject = nil)
87
+ # case subject
88
+ # when Post
89
+ # true
90
+ # when Class
91
+ # if subject == Post
92
+ # true
93
+ # end
94
+ # end
95
+ # end
96
+ #
97
+ # end
98
+ #
99
+ # To handle this, the normalized method takes care of returning a object
100
+ # which implements `===` to be matched in a case statement.
101
+ #
102
+ # The above now becomes:
103
+ #
104
+ # class MyAuthAdapter < ActiveAdmin::AuthorizationAdapter
105
+ #
106
+ # def authorized?(action, subject = nil)
107
+ # case subject
108
+ # when normalized(Post)
109
+ # true
110
+ # end
111
+ # end
112
+ #
113
+ # end
114
+ def normalized(klass)
115
+ NormalizedMatcher.new(klass)
116
+ end
117
+
118
+ class NormalizedMatcher
119
+
120
+ def initialize(klass)
121
+ @klass = klass
122
+ end
123
+
124
+ def ===(other)
125
+ @klass == other || other.is_a?(@klass)
126
+ end
127
+
128
+ end
129
+
130
+ end
131
+
132
+ end
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class BaseController < ::InheritedResources::Base
4
+ module Authorization
5
+ extend ActiveSupport::Concern
6
+
7
+ ACTIONS_DICTIONARY = {
8
+ index: ActiveAdmin::Authorization::READ,
9
+ show: ActiveAdmin::Authorization::READ,
10
+ new: ActiveAdmin::Authorization::NEW,
11
+ create: ActiveAdmin::Authorization::CREATE,
12
+ edit: ActiveAdmin::Authorization::EDIT,
13
+ update: ActiveAdmin::Authorization::UPDATE,
14
+ destroy: ActiveAdmin::Authorization::DESTROY
15
+ }
16
+
17
+ included do
18
+ rescue_from ActiveAdmin::AccessDenied, with: :dispatch_active_admin_access_denied
19
+
20
+ helper_method :authorized?
21
+ helper_method :authorize!
22
+ helper_method :active_admin_authorization
23
+ end
24
+
25
+ protected
26
+
27
+ # Authorize the action and subject. Available in the controller
28
+ # as well as all the views.
29
+ #
30
+ # @param [Symbol] action The action to check if the user has permission
31
+ # to perform on the subject.
32
+ #
33
+ # @param [any] subject The subject that the user is trying to perform
34
+ # the action on.
35
+ #
36
+ # @return [Boolean]
37
+ #
38
+ def authorized?(action, subject = nil)
39
+ active_admin_authorization.authorized?(action, subject)
40
+ end
41
+
42
+ # Authorize the action and subject. Available in the controller
43
+ # as well as all the views. If the action is not allowd, it raises
44
+ # an ActiveAdmin::AccessDenied exception.
45
+ #
46
+ # @param [Symbol] action The action to check if the user has permission
47
+ # to perform on the subject.
48
+ #
49
+ # @param [any] subject The subject that the user is trying to perform
50
+ # the action on.
51
+ #
52
+ # @return [Boolean] True if authorized, otherwise raises
53
+ # an ActiveAdmin::AccessDenied.
54
+ def authorize!(action, subject = nil)
55
+ unless authorized? action, subject
56
+ raise ActiveAdmin::AccessDenied.new(
57
+ current_active_admin_user,
58
+ action,
59
+ subject)
60
+ end
61
+ end
62
+
63
+ # Performs authorization on the resource using the current controller
64
+ # action as the permission action.
65
+ #
66
+ def authorize_resource!(resource)
67
+ permission = action_to_permission(params[:action])
68
+ authorize! permission, resource
69
+ end
70
+
71
+ # Retrieve or instantiate the authorization instance for this resource
72
+ #
73
+ # @return [ActiveAdmin::AuthorizationAdapter]
74
+ def active_admin_authorization
75
+ @active_admin_authorization ||=
76
+ active_admin_authorization_adapter.new active_admin_config, current_active_admin_user
77
+ end
78
+
79
+ # Returns the class to be used as the authorization adapter
80
+ #
81
+ # @return [Class]
82
+ def active_admin_authorization_adapter
83
+ adapter = active_admin_namespace.authorization_adapter
84
+ if adapter.is_a? String
85
+ adapter.constantize
86
+ else
87
+ adapter
88
+ end
89
+ end
90
+
91
+ # Converts a controller action into one of the correct Active Admin
92
+ # authorization names. Uses the ACTIONS_DICTIONARY to convert the
93
+ # action name to permission.
94
+ #
95
+ # @param [String, Symbol] action The controller action name.
96
+ #
97
+ # @return [Symbol] The permission name to use.
98
+ def action_to_permission(action)
99
+ if action && action = action.to_sym
100
+ Authorization::ACTIONS_DICTIONARY[action] || action
101
+ end
102
+ end
103
+
104
+ def dispatch_active_admin_access_denied(exception)
105
+ instance_exec(self, exception, &active_admin_namespace.on_unauthorized_access.to_proc)
106
+ end
107
+
108
+ def rescue_active_admin_access_denied(exception)
109
+ error = exception.message
110
+
111
+ respond_to do |format|
112
+ format.html do
113
+ flash[:error] = error
114
+ redirect_backwards_or_to_root
115
+ end
116
+
117
+ format.csv { render body: error, status: :unauthorized }
118
+ format.json { render json: { error: error }, status: :unauthorized }
119
+ format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
120
+ end
121
+ end
122
+
123
+ def redirect_backwards_or_to_root
124
+ redirect_back fallback_location: active_admin_root
125
+ end
126
+
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ class BaseController < ::InheritedResources::Base
4
+ module Menu
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ before_action :set_current_tab
9
+ helper_method :current_menu
10
+ end
11
+
12
+ protected
13
+
14
+ def current_menu
15
+ active_admin_config.navigation_menu
16
+ end
17
+
18
+ # Set's @current_tab to be name of the tab to mark as current
19
+ # Get's called through a before filter
20
+ def set_current_tab
21
+ @current_tab = if current_menu && active_admin_config.belongs_to? && parent?
22
+ parent_item = active_admin_config.belongs_to_config.target.menu_item
23
+ if current_menu.include? parent_item
24
+ parent_item
25
+ else
26
+ active_admin_config.menu_item
27
+ end
28
+ else
29
+ active_admin_config.menu_item
30
+ end
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/base_controller/authorization"
3
+ require "active_admin/base_controller/menu"
4
+
5
+ module ActiveAdmin
6
+ # BaseController for ActiveAdmin.
7
+ # It implements ActiveAdmin controllers core features.
8
+ class BaseController < ::InheritedResources::Base
9
+ helper ::ActiveAdmin::ViewHelpers
10
+
11
+ layout :determine_active_admin_layout
12
+
13
+ before_action :only_render_implemented_actions
14
+ before_action :authenticate_active_admin_user
15
+
16
+ class << self
17
+ # Ensure that this method is available for the DSL
18
+ public :actions
19
+
20
+ # Reference to the Resource object which initialized
21
+ # this controller
22
+ attr_accessor :active_admin_config
23
+ end
24
+
25
+ include Authorization
26
+ include Menu
27
+
28
+ private
29
+
30
+ # By default Rails will render un-implemented actions when the view exists. Because Active
31
+ # Admin allows you to not render any of the actions by using the #actions method, we need
32
+ # to check if they are implemented.
33
+ def only_render_implemented_actions
34
+ raise AbstractController::ActionNotFound unless action_methods.include?(params[:action])
35
+ end
36
+
37
+ # Calls the authentication method as defined in ActiveAdmin.authentication_method
38
+ def authenticate_active_admin_user
39
+ send(active_admin_namespace.authentication_method) if active_admin_namespace.authentication_method
40
+ end
41
+
42
+ def current_active_admin_user
43
+ send(active_admin_namespace.current_user_method) if active_admin_namespace.current_user_method
44
+ end
45
+ helper_method :current_active_admin_user
46
+
47
+ def current_active_admin_user?
48
+ !!current_active_admin_user
49
+ end
50
+ helper_method :current_active_admin_user?
51
+
52
+ def active_admin_config
53
+ self.class.active_admin_config
54
+ end
55
+ helper_method :active_admin_config
56
+
57
+ def active_admin_namespace
58
+ active_admin_config.namespace
59
+ end
60
+ helper_method :active_admin_namespace
61
+
62
+ ACTIVE_ADMIN_ACTIONS = [:index, :show, :new, :create, :edit, :update, :destroy]
63
+
64
+ # Determine which layout to use.
65
+ #
66
+ # 1. If we're rendering a standard Active Admin action, we want layout(false)
67
+ # because these actions are subclasses of the Base page (which implements
68
+ # all the required layout code)
69
+ # 2. If we're rendering a custom action, we'll use the active_admin layout so
70
+ # that users can render any template inside Active Admin.
71
+ def determine_active_admin_layout
72
+ ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false : "active_admin"
73
+ end
74
+
75
+ def active_admin_root
76
+ controller, action = active_admin_namespace.root_to.split "#"
77
+ { controller: controller, action: action }
78
+ end
79
+
80
+ ActiveSupport.run_load_hooks(:active_admin_controller, self)
81
+ end
82
+ end