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.
- checksums.yaml +7 -0
- data/activeadmin-3.5.1/CHANGELOG.md +1153 -0
- data/activeadmin-3.5.1/CODE_OF_CONDUCT.md +74 -0
- data/activeadmin-3.5.1/CONTRIBUTING.md +187 -0
- data/activeadmin-3.5.1/LICENSE +20 -0
- data/activeadmin-3.5.1/README.md +117 -0
- data/activeadmin-3.5.1/app/assets/javascripts/active_admin/base.js +520 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_base.scss +57 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_forms.scss +315 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_header.scss +188 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_normalize.scss +349 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_print.scss +287 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_typography.scss +100 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_batch_actions.scss +6 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_date_picker.scss +148 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +154 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_pagination.scss +58 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_scopes.scss +13 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_table_tools.scss +70 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_tables.scss +112 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_tabs.scss +68 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_variables.scss +51 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/structure/_footer.scss +19 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
- data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/structure/_title_bar.scss +43 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/base.js +28 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/ext/jquery-ui.js +7 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/ext/jquery.js +9 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/initializers/batch-actions.js +61 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/initializers/datepicker.js +19 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/initializers/filters.js +10 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/initializers/has-many.js +98 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/initializers/per-page.js +13 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/initializers/tabs.js +6 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/lib/filters.js +39 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/lib/modal-dialog.js +63 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/lib/per-page.js +38 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
- data/activeadmin-3.5.1/app/javascript/active_admin/lib/utils.js +40 -0
- data/activeadmin-3.5.1/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
- data/activeadmin-3.5.1/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/activeadmin-3.5.1/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/activeadmin-3.5.1/app/views/active_admin/devise/passwords/edit.html.erb +18 -0
- data/activeadmin-3.5.1/app/views/active_admin/devise/passwords/new.html.erb +15 -0
- data/activeadmin-3.5.1/app/views/active_admin/devise/registrations/new.html.erb +21 -0
- data/activeadmin-3.5.1/app/views/active_admin/devise/sessions/new.html.erb +20 -0
- data/activeadmin-3.5.1/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/activeadmin-3.5.1/app/views/active_admin/devise/shared/_links.erb +33 -0
- data/activeadmin-3.5.1/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
- data/activeadmin-3.5.1/app/views/active_admin/page/index.html.arb +2 -0
- data/activeadmin-3.5.1/app/views/active_admin/resource/edit.html.arb +2 -0
- data/activeadmin-3.5.1/app/views/active_admin/resource/index.html.arb +2 -0
- data/activeadmin-3.5.1/app/views/active_admin/resource/new.html.arb +2 -0
- data/activeadmin-3.5.1/app/views/active_admin/resource/show.html.arb +2 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin/_gap.html.erb +8 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin/_page.html.erb +12 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
- data/activeadmin-3.5.1/app/views/layouts/active_admin.html.arb +2 -0
- data/activeadmin-3.5.1/app/views/layouts/active_admin_logged_out.html.erb +50 -0
- data/activeadmin-3.5.1/config/locales/ar.yml +128 -0
- data/activeadmin-3.5.1/config/locales/az.yml +131 -0
- data/activeadmin-3.5.1/config/locales/bg.yml +112 -0
- data/activeadmin-3.5.1/config/locales/bs.yml +114 -0
- data/activeadmin-3.5.1/config/locales/ca.yml +98 -0
- data/activeadmin-3.5.1/config/locales/cs.yml +102 -0
- data/activeadmin-3.5.1/config/locales/da.yml +130 -0
- data/activeadmin-3.5.1/config/locales/de-CH.yml +94 -0
- data/activeadmin-3.5.1/config/locales/de.yml +154 -0
- data/activeadmin-3.5.1/config/locales/el.yml +119 -0
- data/activeadmin-3.5.1/config/locales/en-CA.yml +132 -0
- data/activeadmin-3.5.1/config/locales/en-GB.yml +132 -0
- data/activeadmin-3.5.1/config/locales/en.yml +154 -0
- data/activeadmin-3.5.1/config/locales/eo.yml +137 -0
- data/activeadmin-3.5.1/config/locales/es-MX.yml +90 -0
- data/activeadmin-3.5.1/config/locales/es.yml +154 -0
- data/activeadmin-3.5.1/config/locales/fa.yml +112 -0
- data/activeadmin-3.5.1/config/locales/fi.yml +105 -0
- data/activeadmin-3.5.1/config/locales/fr.yml +133 -0
- data/activeadmin-3.5.1/config/locales/he.yml +132 -0
- data/activeadmin-3.5.1/config/locales/hr.yml +116 -0
- data/activeadmin-3.5.1/config/locales/hu.yml +94 -0
- data/activeadmin-3.5.1/config/locales/id.yml +128 -0
- data/activeadmin-3.5.1/config/locales/it.yml +154 -0
- data/activeadmin-3.5.1/config/locales/ja.yml +133 -0
- data/activeadmin-3.5.1/config/locales/ko.yml +113 -0
- data/activeadmin-3.5.1/config/locales/lt.yml +134 -0
- data/activeadmin-3.5.1/config/locales/lv.yml +85 -0
- data/activeadmin-3.5.1/config/locales/mk.yml +126 -0
- data/activeadmin-3.5.1/config/locales/nb.yml +122 -0
- data/activeadmin-3.5.1/config/locales/nl.yml +136 -0
- data/activeadmin-3.5.1/config/locales/pl.yml +160 -0
- data/activeadmin-3.5.1/config/locales/pt-BR.yml +135 -0
- data/activeadmin-3.5.1/config/locales/pt-PT.yml +85 -0
- data/activeadmin-3.5.1/config/locales/ro.yml +90 -0
- data/activeadmin-3.5.1/config/locales/ru.yml +135 -0
- data/activeadmin-3.5.1/config/locales/sk.yml +160 -0
- data/activeadmin-3.5.1/config/locales/sv-SE.yml +154 -0
- data/activeadmin-3.5.1/config/locales/tr.yml +133 -0
- data/activeadmin-3.5.1/config/locales/uk.yml +132 -0
- data/activeadmin-3.5.1/config/locales/vi.yml +154 -0
- data/activeadmin-3.5.1/config/locales/zh-CN.yml +154 -0
- data/activeadmin-3.5.1/config/locales/zh-TW.yml +128 -0
- data/activeadmin-3.5.1/lib/active_admin/abstract_view_factory.rb +48 -0
- data/activeadmin-3.5.1/lib/active_admin/application.rb +234 -0
- data/activeadmin-3.5.1/lib/active_admin/application_settings.rb +43 -0
- data/activeadmin-3.5.1/lib/active_admin/asset_registration.rb +30 -0
- data/activeadmin-3.5.1/lib/active_admin/authorization_adapter.rb +132 -0
- data/activeadmin-3.5.1/lib/active_admin/base_controller/authorization.rb +129 -0
- data/activeadmin-3.5.1/lib/active_admin/base_controller/menu.rb +35 -0
- data/activeadmin-3.5.1/lib/active_admin/base_controller.rb +82 -0
- data/activeadmin-3.5.1/lib/active_admin/batch_actions/controller.rb +41 -0
- data/activeadmin-3.5.1/lib/active_admin/batch_actions/resource_extension.rb +157 -0
- data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/batch_action_form.rb +39 -0
- data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/batch_action_selector.rb +59 -0
- data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/selection_cells.rb +39 -0
- data/activeadmin-3.5.1/lib/active_admin/batch_actions.rb +17 -0
- data/activeadmin-3.5.1/lib/active_admin/callbacks.rb +89 -0
- data/activeadmin-3.5.1/lib/active_admin/cancan_adapter.rb +37 -0
- data/activeadmin-3.5.1/lib/active_admin/collection_decorator.rb +32 -0
- data/activeadmin-3.5.1/lib/active_admin/component.rb +6 -0
- data/activeadmin-3.5.1/lib/active_admin/controller_action.rb +14 -0
- data/activeadmin-3.5.1/lib/active_admin/csv_builder.rb +144 -0
- data/activeadmin-3.5.1/lib/active_admin/dependency.rb +97 -0
- data/activeadmin-3.5.1/lib/active_admin/devise.rb +91 -0
- data/activeadmin-3.5.1/lib/active_admin/dsl.rb +161 -0
- data/activeadmin-3.5.1/lib/active_admin/dynamic_setting.rb +39 -0
- data/activeadmin-3.5.1/lib/active_admin/dynamic_settings_node.rb +29 -0
- data/activeadmin-3.5.1/lib/active_admin/engine.rb +29 -0
- data/activeadmin-3.5.1/lib/active_admin/error.rb +63 -0
- data/activeadmin-3.5.1/lib/active_admin/filters/active.rb +30 -0
- data/activeadmin-3.5.1/lib/active_admin/filters/active_filter.rb +124 -0
- data/activeadmin-3.5.1/lib/active_admin/filters/active_sidebar.rb +28 -0
- data/activeadmin-3.5.1/lib/active_admin/filters/dsl.rb +22 -0
- data/activeadmin-3.5.1/lib/active_admin/filters/forms.rb +86 -0
- data/activeadmin-3.5.1/lib/active_admin/filters/formtastic_addons.rb +75 -0
- data/activeadmin-3.5.1/lib/active_admin/filters/resource_extension.rb +180 -0
- data/activeadmin-3.5.1/lib/active_admin/filters.rb +12 -0
- data/activeadmin-3.5.1/lib/active_admin/form_builder.rb +186 -0
- data/activeadmin-3.5.1/lib/active_admin/generators/boilerplate.rb +54 -0
- data/activeadmin-3.5.1/lib/active_admin/helpers/collection.rb +21 -0
- data/activeadmin-3.5.1/lib/active_admin/helpers/i18n.rb +8 -0
- data/activeadmin-3.5.1/lib/active_admin/helpers/optional_display.rb +39 -0
- data/activeadmin-3.5.1/lib/active_admin/helpers/routes/url_helpers.rb +16 -0
- data/activeadmin-3.5.1/lib/active_admin/helpers/scope_chain.rb +25 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/datepicker_input.rb +28 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/filters/base/search_method_select.rb +76 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/filters/base.rb +45 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/filters/boolean_input.rb +25 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/filters/check_boxes_input.rb +51 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/filters/date_picker_input.rb +14 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/filters/date_range_input.rb +53 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/filters/numeric_input.rb +13 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/filters/select_input.rb +59 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/filters/string_input.rb +27 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs/filters/text_input.rb +26 -0
- data/activeadmin-3.5.1/lib/active_admin/inputs.rb +22 -0
- data/activeadmin-3.5.1/lib/active_admin/localizers/resource_localizer.rb +36 -0
- data/activeadmin-3.5.1/lib/active_admin/localizers.rb +12 -0
- data/activeadmin-3.5.1/lib/active_admin/menu.rb +107 -0
- data/activeadmin-3.5.1/lib/active_admin/menu_collection.rb +92 -0
- data/activeadmin-3.5.1/lib/active_admin/menu_item.rb +70 -0
- data/activeadmin-3.5.1/lib/active_admin/namespace.rb +267 -0
- data/activeadmin-3.5.1/lib/active_admin/namespace_settings.rb +127 -0
- data/activeadmin-3.5.1/lib/active_admin/order_clause.rb +49 -0
- data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/comment.rb +40 -0
- data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/namespace_helper.rb +15 -0
- data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/resource_helper.rb +18 -0
- data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/show_page_helper.rb +24 -0
- data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +101 -0
- data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/views.rb +3 -0
- data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments.rb +102 -0
- data/activeadmin-3.5.1/lib/active_admin/orm/active_record.rb +6 -0
- data/activeadmin-3.5.1/lib/active_admin/orm/mongoid.rb +2 -0
- data/activeadmin-3.5.1/lib/active_admin/page.rb +112 -0
- data/activeadmin-3.5.1/lib/active_admin/page_controller.rb +30 -0
- data/activeadmin-3.5.1/lib/active_admin/page_dsl.rb +33 -0
- data/activeadmin-3.5.1/lib/active_admin/page_presenter.rb +34 -0
- data/activeadmin-3.5.1/lib/active_admin/pundit_adapter.rb +123 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/action_items.rb +121 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/attributes.rb +55 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/belongs_to.rb +53 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/controllers.rb +20 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/includes.rb +13 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/menu.rb +68 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/model.rb +16 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/naming.rb +63 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/ordering.rb +12 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/page_presenters.rb +83 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/pagination.rb +24 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/routes.rb +146 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/scope_to.rb +75 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/scopes.rb +53 -0
- data/activeadmin-3.5.1/lib/active_admin/resource/sidebars.rb +29 -0
- data/activeadmin-3.5.1/lib/active_admin/resource.rb +227 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_collection.rb +73 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_controller/action_builder.rb +32 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_controller/data_access.rb +348 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_controller/decorators.rb +81 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_controller/resource_class_methods.rb +27 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_controller/scoping.rb +32 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_controller/sidebars.rb +19 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_controller/streaming.rb +45 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_controller.rb +68 -0
- data/activeadmin-3.5.1/lib/active_admin/resource_dsl.rb +210 -0
- data/activeadmin-3.5.1/lib/active_admin/router.rb +115 -0
- data/activeadmin-3.5.1/lib/active_admin/scope.rb +65 -0
- data/activeadmin-3.5.1/lib/active_admin/settings_node.rb +20 -0
- data/activeadmin-3.5.1/lib/active_admin/sidebar_section.rb +40 -0
- data/activeadmin-3.5.1/lib/active_admin/version.rb +4 -0
- data/activeadmin-3.5.1/lib/active_admin/view_factory.rb +28 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/active_admin_application_helper.rb +13 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/auto_link_helper.rb +46 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/breadcrumb_helper.rb +34 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/display_helper.rb +119 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/download_format_links_helper.rb +60 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/fields_for.rb +51 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/flash_helper.rb +15 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/form_helper.rb +21 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/method_or_proc_helper.rb +101 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/scope_name_helper.rb +17 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/sidebar_helper.rb +16 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/title_helper.rb +12 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers/view_factory_helper.rb +12 -0
- data/activeadmin-3.5.1/lib/active_admin/view_helpers.rb +21 -0
- data/activeadmin-3.5.1/lib/active_admin/views/action_items.rb +18 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/active_admin_form.rb +164 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/attributes_table.rb +95 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/blank_slate.rb +18 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/columns.rb +162 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/dropdown_menu.rb +69 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/index_list.rb +70 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/menu.rb +33 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/menu_item.rb +59 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/paginated_collection.rb +164 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/panel.rb +39 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/scopes.rb +75 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/sidebar.rb +14 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/sidebar_section.rb +35 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/site_title.rb +55 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/status_tag.rb +76 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/table_for.rb +211 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/tabs.rb +41 -0
- data/activeadmin-3.5.1/lib/active_admin/views/components/unsupported_browser.rb +12 -0
- data/activeadmin-3.5.1/lib/active_admin/views/footer.rb +32 -0
- data/activeadmin-3.5.1/lib/active_admin/views/header.rb +20 -0
- data/activeadmin-3.5.1/lib/active_admin/views/index_as_block.rb +37 -0
- data/activeadmin-3.5.1/lib/active_admin/views/index_as_blog.rb +156 -0
- data/activeadmin-3.5.1/lib/active_admin/views/index_as_grid.rb +81 -0
- data/activeadmin-3.5.1/lib/active_admin/views/index_as_table.rb +401 -0
- data/activeadmin-3.5.1/lib/active_admin/views/pages/base.rb +134 -0
- data/activeadmin-3.5.1/lib/active_admin/views/pages/form.rb +65 -0
- data/activeadmin-3.5.1/lib/active_admin/views/pages/index.rb +166 -0
- data/activeadmin-3.5.1/lib/active_admin/views/pages/layout.rb +27 -0
- data/activeadmin-3.5.1/lib/active_admin/views/pages/page.rb +31 -0
- data/activeadmin-3.5.1/lib/active_admin/views/pages/show.rb +60 -0
- data/activeadmin-3.5.1/lib/active_admin/views/tabbed_navigation.rb +12 -0
- data/activeadmin-3.5.1/lib/active_admin/views/title_bar.rb +56 -0
- data/activeadmin-3.5.1/lib/active_admin/views.rb +9 -0
- data/activeadmin-3.5.1/lib/active_admin.rb +135 -0
- data/activeadmin-3.5.1/lib/activeadmin.rb +2 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/assets/assets_generator.rb +15 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/devise/devise_generator.rb +69 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/install/install_generator.rb +56 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/active_admin.rb.erb +352 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/page/USAGE +8 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/page/page_generator.rb +13 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/page/templates/page.rb +6 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/resource/resource_generator.rb +21 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
- data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/data.js +39 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/disable-selection.js +51 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/focusable.js +79 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +81 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/keycode.js +51 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/labels.js +70 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/plugin.js +49 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/position.js +513 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/scroll-parent.js +50 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/tabbable.js +41 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/unique-id.js +54 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/version.js +20 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widget.js +761 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/button.js +454 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +294 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +304 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2240 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +957 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1264 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +226 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1281 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1614 -0
- data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +918 -0
- data/super-sharp-tool.gemspec +12 -0
- 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
|