activeadmin 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/CHANGELOG.md +546 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +217 -0
- data/LICENSE +20 -0
- data/README.md +110 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +55 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_base.scss +41 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +326 -0
- data/app/assets/stylesheets/active_admin/_header.scss +156 -0
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +149 -0
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +152 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
- data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
- data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
- data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +55 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +13 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
- data/app/assets/stylesheets/active_admin/components/_tables.scss +113 -0
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
- data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +34 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/app/assets/stylesheets/active_admin/print.scss +287 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +41 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +18 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +15 -0
- data/app/views/active_admin/devise/registrations/new.html.erb +21 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/shared/_links.erb +33 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
- data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +39 -0
- data/config/locales/ar.yml +135 -0
- data/config/locales/bg.yml +119 -0
- data/config/locales/bs.yml +121 -0
- data/config/locales/ca.yml +106 -0
- data/config/locales/cs.yml +109 -0
- data/config/locales/da.yml +137 -0
- data/config/locales/de-CH.yml +101 -0
- data/config/locales/de.yml +144 -0
- data/config/locales/el.yml +126 -0
- data/config/locales/en-CA.yml +139 -0
- data/config/locales/en-GB.yml +139 -0
- data/config/locales/en.yml +162 -0
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +96 -0
- data/config/locales/es.yml +162 -0
- data/config/locales/fa.yml +119 -0
- data/config/locales/fi.yml +112 -0
- data/config/locales/fr.yml +141 -0
- data/config/locales/he.yml +141 -0
- data/config/locales/hr.yml +123 -0
- data/config/locales/hu.yml +102 -0
- data/config/locales/id.yml +135 -0
- data/config/locales/it.yml +144 -0
- data/config/locales/ja.yml +141 -0
- data/config/locales/ko.yml +120 -0
- data/config/locales/lt.yml +142 -0
- data/config/locales/lv.yml +92 -0
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +130 -0
- data/config/locales/nl.yml +144 -0
- data/config/locales/pl.yml +168 -0
- data/config/locales/pt-BR.yml +143 -0
- data/config/locales/pt-PT.yml +92 -0
- data/config/locales/ro.yml +96 -0
- data/config/locales/ru.yml +141 -0
- data/config/locales/sk.yml +109 -0
- data/config/locales/sv-SE.yml +135 -0
- data/config/locales/tr.yml +144 -0
- data/config/locales/uk.yml +138 -0
- data/config/locales/vi.yml +134 -0
- data/config/locales/zh-CN.yml +143 -0
- data/config/locales/zh-TW.yml +135 -0
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +118 -0
- data/docs/1-general-configuration.md +204 -0
- data/docs/10-custom-pages.md +150 -0
- data/docs/11-decorators.md +59 -0
- data/docs/12-arbre-components.md +214 -0
- data/docs/13-authorization-adapter.md +285 -0
- data/docs/14-gotchas.md +138 -0
- data/docs/2-resource-customization.md +466 -0
- data/docs/3-index-pages.md +328 -0
- data/docs/3-index-pages/custom-index.md +35 -0
- data/docs/3-index-pages/index-as-block.md +19 -0
- data/docs/3-index-pages/index-as-blog.md +69 -0
- data/docs/3-index-pages/index-as-grid.md +27 -0
- data/docs/3-index-pages/index-as-table.md +227 -0
- data/docs/4-csv-format.md +74 -0
- data/docs/5-forms.md +232 -0
- data/docs/6-show-pages.md +81 -0
- data/docs/7-sidebars.md +75 -0
- data/docs/8-custom-actions.md +177 -0
- data/docs/9-batch-actions.md +237 -0
- data/docs/CNAME +1 -0
- data/docs/Gemfile +4 -0
- data/docs/Gemfile.lock +249 -0
- data/docs/README.md +24 -0
- data/docs/_config.yml +2 -0
- data/docs/_includes/footer.html +8 -0
- data/docs/_includes/google-analytics.html +16 -0
- data/docs/_includes/head.html +7 -0
- data/docs/_includes/toc.html +98 -0
- data/docs/_includes/top-menu.html +17 -0
- data/docs/_layouts/default.html +21 -0
- data/docs/documentation.md +60 -0
- data/docs/images/activeadmin.png +0 -0
- data/docs/images/code-header.png +0 -0
- data/docs/images/divider.png +0 -0
- data/docs/images/features.png +0 -0
- data/docs/images/tidelift.svg +14 -0
- data/docs/index.html +125 -0
- data/docs/stylesheets/main.css +1176 -0
- data/lib/active_admin.rb +134 -0
- data/lib/active_admin/abstract_view_factory.rb +47 -0
- data/lib/active_admin/application.rb +234 -0
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +129 -0
- data/lib/active_admin/base_controller.rb +81 -0
- data/lib/active_admin/base_controller/authorization.rb +127 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/batch_actions.rb +16 -0
- data/lib/active_admin/batch_actions/controller.rb +40 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +155 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +38 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +58 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +38 -0
- data/lib/active_admin/callbacks.rb +88 -0
- data/lib/active_admin/cancan_adapter.rb +36 -0
- data/lib/active_admin/component.rb +5 -0
- data/lib/active_admin/controller_action.rb +13 -0
- data/lib/active_admin/csv_builder.rb +133 -0
- data/lib/active_admin/dependency.rb +100 -0
- data/lib/active_admin/deprecation.rb +10 -0
- data/lib/active_admin/devise.rb +80 -0
- data/lib/active_admin/dsl.rb +160 -0
- data/lib/active_admin/dynamic_setting.rb +38 -0
- data/lib/active_admin/dynamic_settings_node.rb +28 -0
- data/lib/active_admin/engine.rb +21 -0
- data/lib/active_admin/error.rb +64 -0
- data/lib/active_admin/filters.rb +11 -0
- data/lib/active_admin/filters/active.rb +29 -0
- data/lib/active_admin/filters/active_filter.rb +124 -0
- data/lib/active_admin/filters/active_sidebar.rb +54 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +85 -0
- data/lib/active_admin/filters/formtastic_addons.rb +79 -0
- data/lib/active_admin/filters/resource_extension.rb +155 -0
- data/lib/active_admin/form_builder.rb +182 -0
- data/lib/active_admin/generators/boilerplate.rb +45 -0
- data/lib/active_admin/helpers/collection.rb +19 -0
- data/lib/active_admin/helpers/i18n.rb +7 -0
- data/lib/active_admin/helpers/optional_display.rb +38 -0
- data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
- data/lib/active_admin/helpers/scope_chain.rb +24 -0
- data/lib/active_admin/inputs.rb +21 -0
- data/lib/active_admin/inputs/datepicker_input.rb +27 -0
- data/lib/active_admin/inputs/filters/base.rb +44 -0
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
- data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
- data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +49 -0
- data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
- data/lib/active_admin/inputs/filters/select_input.rb +58 -0
- data/lib/active_admin/inputs/filters/string_input.rb +26 -0
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/localizers.rb +11 -0
- data/lib/active_admin/localizers/resource_localizer.rb +35 -0
- data/lib/active_admin/menu.rb +102 -0
- data/lib/active_admin/menu_collection.rb +91 -0
- data/lib/active_admin/menu_item.rb +69 -0
- data/lib/active_admin/namespace.rb +266 -0
- data/lib/active_admin/namespace_settings.rb +110 -0
- data/lib/active_admin/order_clause.rb +48 -0
- data/lib/active_admin/orm/active_record.rb +5 -0
- data/lib/active_admin/orm/active_record/comments.rb +101 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +31 -0
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +100 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
- data/lib/active_admin/page.rb +111 -0
- data/lib/active_admin/page_controller.rb +29 -0
- data/lib/active_admin/page_dsl.rb +32 -0
- data/lib/active_admin/page_presenter.rb +33 -0
- data/lib/active_admin/pundit_adapter.rb +81 -0
- data/lib/active_admin/resource.rb +207 -0
- data/lib/active_admin/resource/action_items.rb +120 -0
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +50 -0
- data/lib/active_admin/resource/controllers.rb +19 -0
- data/lib/active_admin/resource/includes.rb +12 -0
- data/lib/active_admin/resource/menu.rb +67 -0
- data/lib/active_admin/resource/naming.rb +62 -0
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +82 -0
- data/lib/active_admin/resource/pagination.rb +23 -0
- data/lib/active_admin/resource/routes.rb +139 -0
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +52 -0
- data/lib/active_admin/resource/sidebars.rb +28 -0
- data/lib/active_admin/resource_collection.rb +72 -0
- data/lib/active_admin/resource_controller.rb +64 -0
- data/lib/active_admin/resource_controller/action_builder.rb +31 -0
- data/lib/active_admin/resource_controller/data_access.rb +322 -0
- data/lib/active_admin/resource_controller/decorators.rb +102 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +26 -0
- data/lib/active_admin/resource_controller/scoping.rb +31 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/resource_controller/streaming.rb +43 -0
- data/lib/active_admin/resource_dsl.rb +224 -0
- data/lib/active_admin/router.rb +114 -0
- data/lib/active_admin/scope.rb +64 -0
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/sidebar_section.rb +39 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +27 -0
- data/lib/active_admin/view_helpers.rb +20 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +45 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +33 -0
- data/lib/active_admin/view_helpers/display_helper.rb +104 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +59 -0
- data/lib/active_admin/view_helpers/fields_for.rb +50 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +14 -0
- data/lib/active_admin/view_helpers/form_helper.rb +20 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +100 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/active_admin_form.rb +155 -0
- data/lib/active_admin/views/components/attributes_table.rb +94 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +161 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +71 -0
- data/lib/active_admin/views/components/index_list.rb +69 -0
- data/lib/active_admin/views/components/menu.rb +32 -0
- data/lib/active_admin/views/components/menu_item.rb +58 -0
- data/lib/active_admin/views/components/paginated_collection.rb +159 -0
- data/lib/active_admin/views/components/panel.rb +38 -0
- data/lib/active_admin/views/components/scopes.rb +72 -0
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/sidebar_section.rb +34 -0
- data/lib/active_admin/views/components/site_title.rb +54 -0
- data/lib/active_admin/views/components/status_tag.rb +75 -0
- data/lib/active_admin/views/components/table_for.rb +209 -0
- data/lib/active_admin/views/components/tabs.rb +40 -0
- data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
- data/lib/active_admin/views/footer.rb +30 -0
- data/lib/active_admin/views/header.rb +19 -0
- data/lib/active_admin/views/index_as_block.rb +36 -0
- data/lib/active_admin/views/index_as_blog.rb +155 -0
- data/lib/active_admin/views/index_as_grid.rb +80 -0
- data/lib/active_admin/views/index_as_table.rb +392 -0
- data/lib/active_admin/views/pages/base.rb +126 -0
- data/lib/active_admin/views/pages/form.rb +64 -0
- data/lib/active_admin/views/pages/index.rb +163 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/page.rb +30 -0
- data/lib/active_admin/views/pages/show.rb +65 -0
- data/lib/active_admin/views/tabbed_navigation.rb +11 -0
- data/lib/active_admin/views/title_bar.rb +55 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +14 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +68 -0
- data/lib/generators/active_admin/install/install_generator.rb +49 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +315 -0
- data/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +32 -0
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
- data/lib/generators/active_admin/page/USAGE +8 -0
- data/lib/generators/active_admin/page/page_generator.rb +12 -0
- data/lib/generators/active_admin/page/templates/page.rb +5 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +20 -0
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +44 -0
- data/lib/ransack_ext.rb +20 -0
- data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
- data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
- data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
- data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
- data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
- data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
- data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
- data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
- data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
- data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
- data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
- data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
- data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
- data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
- data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
- data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
- data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
- metadata +616 -0
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'active_admin/orm/active_record/comments/views'
|
2
|
+
require 'active_admin/orm/active_record/comments/show_page_helper'
|
3
|
+
require 'active_admin/orm/active_record/comments/namespace_helper'
|
4
|
+
require 'active_admin/orm/active_record/comments/resource_helper'
|
5
|
+
|
6
|
+
# Add the comments configuration
|
7
|
+
ActiveAdmin::Application.inheritable_setting :comments, true
|
8
|
+
ActiveAdmin::Application.inheritable_setting :comments_registration_name, 'Comment'
|
9
|
+
ActiveAdmin::Application.inheritable_setting :comments_order, "created_at ASC"
|
10
|
+
ActiveAdmin::Application.inheritable_setting :comments_menu, {}
|
11
|
+
|
12
|
+
# Insert helper modules
|
13
|
+
ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
|
14
|
+
ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
|
15
|
+
ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
|
16
|
+
|
17
|
+
# Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
|
18
|
+
ActiveAdmin.autoload :Comment, 'active_admin/orm/active_record/comments/comment'
|
19
|
+
|
20
|
+
# Hint i18n-tasks about model and attribute translations used by default install
|
21
|
+
# i18n-tasks-use t('activerecord.models.comment')
|
22
|
+
# i18n-tasks-use t('activerecord.models.active_admin/comment')
|
23
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.author_type')
|
24
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.body')
|
25
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.created_at')
|
26
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.namespace')
|
27
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.resource_type')
|
28
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.updated_at')
|
29
|
+
# i18n-tasks-use t('active_admin.scopes.all')
|
30
|
+
|
31
|
+
# Walk through all the loaded namespaces after they're loaded
|
32
|
+
ActiveAdmin.after_load do |app|
|
33
|
+
app.namespaces.each do |namespace|
|
34
|
+
namespace.register ActiveAdmin::Comment, as: namespace.comments_registration_name do
|
35
|
+
actions :index, :show, :create, :destroy
|
36
|
+
|
37
|
+
menu namespace.comments ? namespace.comments_menu : false
|
38
|
+
|
39
|
+
config.comments = false # Don't allow comments on comments
|
40
|
+
config.batch_actions = false # The default destroy batch action isn't showing up anyway...
|
41
|
+
|
42
|
+
scope :all, show_count: false
|
43
|
+
# Register a scope for every namespace that exists.
|
44
|
+
# The current namespace will be the default scope.
|
45
|
+
app.namespaces.map(&:name).each do |name|
|
46
|
+
scope name, default: namespace.name == name do |scope|
|
47
|
+
scope.where namespace: name.to_s
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Store the author and namespace
|
52
|
+
before_save do |comment|
|
53
|
+
comment.namespace = active_admin_config.namespace.name
|
54
|
+
comment.author = current_active_admin_user
|
55
|
+
end
|
56
|
+
|
57
|
+
controller do
|
58
|
+
# Prevent N+1 queries
|
59
|
+
def scoped_collection
|
60
|
+
super.includes(:author, :resource)
|
61
|
+
end
|
62
|
+
|
63
|
+
# Redirect to the resource show page after comment creation
|
64
|
+
def create
|
65
|
+
create! do |success, failure|
|
66
|
+
success.html do
|
67
|
+
redirect_back fallback_location: active_admin_root
|
68
|
+
end
|
69
|
+
failure.html do
|
70
|
+
flash[:error] = I18n.t 'active_admin.comments.errors.empty_text'
|
71
|
+
redirect_back fallback_location: active_admin_root
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def destroy
|
76
|
+
destroy! do |success, failure|
|
77
|
+
success.html do
|
78
|
+
redirect_back fallback_location: active_admin_root
|
79
|
+
end
|
80
|
+
failure.html do
|
81
|
+
redirect_back fallback_location: active_admin_root
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
permit_params :body, :namespace, :resource_id, :resource_type
|
89
|
+
|
90
|
+
index do
|
91
|
+
column I18n.t('active_admin.comments.resource_type'), :resource_type
|
92
|
+
column I18n.t('active_admin.comments.author_type'), :author_type
|
93
|
+
column I18n.t('active_admin.comments.resource'), :resource
|
94
|
+
column I18n.t('active_admin.comments.author'), :author
|
95
|
+
column I18n.t('active_admin.comments.body'), :body
|
96
|
+
column I18n.t('active_admin.comments.created_at'), :created_at
|
97
|
+
actions
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class Comment < ActiveRecord::Base
|
3
|
+
|
4
|
+
self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
|
5
|
+
|
6
|
+
belongs_to :resource, polymorphic: true, optional: true
|
7
|
+
belongs_to :author, polymorphic: true
|
8
|
+
|
9
|
+
validates_presence_of :body, :namespace, :resource
|
10
|
+
|
11
|
+
before_create :set_resource_type
|
12
|
+
|
13
|
+
# @return [String] The name of the record to use for the polymorphic relationship
|
14
|
+
def self.resource_type(resource)
|
15
|
+
ResourceController::Decorators.undecorate(resource).class.base_class.name.to_s
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.find_for_resource_in_namespace(resource, namespace)
|
19
|
+
where(
|
20
|
+
resource_type: resource_type(resource),
|
21
|
+
resource_id: resource.id,
|
22
|
+
namespace: namespace.to_s
|
23
|
+
).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
|
24
|
+
end
|
25
|
+
|
26
|
+
def set_resource_type
|
27
|
+
self.resource_type = self.class.resource_type(resource)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Comments
|
3
|
+
|
4
|
+
module ResourceHelper
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
attr_accessor :comments
|
9
|
+
end
|
10
|
+
|
11
|
+
def comments?
|
12
|
+
(namespace.comments? && comments != false) || comments == true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Comments
|
3
|
+
|
4
|
+
# Adds #active_admin_comments to the show page for use
|
5
|
+
# and sets it up on the default main content
|
6
|
+
module ShowPageHelper
|
7
|
+
|
8
|
+
# Add admin comments to the main content if they are
|
9
|
+
# turned on for the current resource
|
10
|
+
def default_main_content
|
11
|
+
super
|
12
|
+
active_admin_comments if active_admin_config.comments?
|
13
|
+
end
|
14
|
+
|
15
|
+
# Display the comments for the resource. Same as calling
|
16
|
+
# #active_admin_comments_for with the current resource
|
17
|
+
def active_admin_comments(*args, &block)
|
18
|
+
active_admin_comments_for(resource, *args, &block)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'active_admin/views'
|
2
|
+
require 'active_admin/views/components/panel'
|
3
|
+
|
4
|
+
module ActiveAdmin
|
5
|
+
module Comments
|
6
|
+
module Views
|
7
|
+
|
8
|
+
class Comments < ActiveAdmin::Views::Panel
|
9
|
+
builder_method :active_admin_comments_for
|
10
|
+
|
11
|
+
attr_accessor :resource
|
12
|
+
|
13
|
+
def build(resource)
|
14
|
+
if authorized?(ActiveAdmin::Auth::READ, ActiveAdmin::Comment)
|
15
|
+
@resource = resource
|
16
|
+
@comments = active_admin_authorization.scope_collection(ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page]))
|
17
|
+
super(title, for: resource)
|
18
|
+
build_comments
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
protected
|
23
|
+
|
24
|
+
def title
|
25
|
+
I18n.t 'active_admin.comments.title_content', count: @comments.total_count
|
26
|
+
end
|
27
|
+
|
28
|
+
def build_comments
|
29
|
+
if @comments.any?
|
30
|
+
@comments.each(&method(:build_comment))
|
31
|
+
div page_entries_info(@comments).html_safe, class: 'pagination_information'
|
32
|
+
else
|
33
|
+
build_empty_message
|
34
|
+
end
|
35
|
+
|
36
|
+
text_node paginate @comments
|
37
|
+
|
38
|
+
if authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
|
39
|
+
build_comment_form
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def build_comment(comment)
|
44
|
+
div for: comment do
|
45
|
+
div class: 'active_admin_comment_meta' do
|
46
|
+
h4 class: 'active_admin_comment_author' do
|
47
|
+
comment.author ? auto_link(comment.author) : I18n.t('active_admin.comments.author_missing')
|
48
|
+
end
|
49
|
+
span pretty_format comment.created_at
|
50
|
+
if authorized?(ActiveAdmin::Auth::DESTROY, comment)
|
51
|
+
text_node link_to I18n.t('active_admin.comments.delete'), comments_url(comment.id), method: :delete, data: { confirm: I18n.t('active_admin.comments.delete_confirmation') }
|
52
|
+
end
|
53
|
+
end
|
54
|
+
div class: 'active_admin_comment_body' do
|
55
|
+
simple_format comment.body
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def build_empty_message
|
61
|
+
span I18n.t('active_admin.comments.no_comments_yet'), class: 'empty'
|
62
|
+
end
|
63
|
+
|
64
|
+
def comments_url(*args)
|
65
|
+
parts = []
|
66
|
+
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
67
|
+
parts << active_admin_namespace.comments_registration_name.underscore
|
68
|
+
parts << 'path'
|
69
|
+
send parts.join('_'), *args
|
70
|
+
end
|
71
|
+
|
72
|
+
def comment_form_url
|
73
|
+
parts = []
|
74
|
+
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
75
|
+
parts << active_admin_namespace.comments_registration_name.underscore.pluralize
|
76
|
+
parts << 'path'
|
77
|
+
send parts.join '_'
|
78
|
+
end
|
79
|
+
|
80
|
+
def build_comment_form
|
81
|
+
active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
|
82
|
+
f.inputs do
|
83
|
+
f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
|
84
|
+
f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
|
85
|
+
f.input :body, label: false, input_html: { size: '80x8' }
|
86
|
+
end
|
87
|
+
f.actions do
|
88
|
+
f.action :submit, label: I18n.t('active_admin.comments.add')
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def default_id_for_prefix
|
94
|
+
'active_admin_comments_for'
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# Mongoid-specific plugins should be required here
|
File without changes
|
@@ -0,0 +1,111 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
# Page is the primary data storage for page configuration in Active Admin
|
3
|
+
#
|
4
|
+
# When you register a page (ActiveAdmin.register_page "Status") you are actually creating
|
5
|
+
# a new Page instance within the given Namespace.
|
6
|
+
#
|
7
|
+
# The instance of the current page is available in PageController and views
|
8
|
+
# by calling the #active_admin_config method.
|
9
|
+
#
|
10
|
+
class Page
|
11
|
+
|
12
|
+
# The namespace this config belongs to
|
13
|
+
attr_reader :namespace
|
14
|
+
|
15
|
+
# The name of the page
|
16
|
+
attr_reader :name
|
17
|
+
|
18
|
+
# An array of custom actions defined for this page
|
19
|
+
attr_reader :page_actions
|
20
|
+
|
21
|
+
# Set breadcrumb builder
|
22
|
+
attr_accessor :breadcrumb
|
23
|
+
|
24
|
+
module Base
|
25
|
+
def initialize(namespace, name, options)
|
26
|
+
@namespace = namespace
|
27
|
+
@name = name
|
28
|
+
@options = options
|
29
|
+
@page_actions = []
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
include Base
|
34
|
+
include Resource::Controllers
|
35
|
+
include Resource::PagePresenters
|
36
|
+
include Resource::Sidebars
|
37
|
+
include Resource::ActionItems
|
38
|
+
include Resource::Menu
|
39
|
+
include Resource::Naming
|
40
|
+
include Resource::Routes
|
41
|
+
|
42
|
+
# label is singular
|
43
|
+
def plural_resource_label
|
44
|
+
name
|
45
|
+
end
|
46
|
+
|
47
|
+
def resource_name
|
48
|
+
@resource_name ||= Resource::Name.new(nil, name)
|
49
|
+
end
|
50
|
+
|
51
|
+
def underscored_resource_name
|
52
|
+
resource_name.to_s.parameterize.underscore
|
53
|
+
end
|
54
|
+
|
55
|
+
def camelized_resource_name
|
56
|
+
underscored_resource_name.camelize
|
57
|
+
end
|
58
|
+
|
59
|
+
def namespace_name
|
60
|
+
namespace.name.to_s
|
61
|
+
end
|
62
|
+
|
63
|
+
def default_menu_options
|
64
|
+
super.merge(id: resource_name)
|
65
|
+
end
|
66
|
+
|
67
|
+
def controller_name
|
68
|
+
[namespace.module_name, camelized_resource_name + "Controller"].compact.join('::')
|
69
|
+
end
|
70
|
+
|
71
|
+
# Override from `ActiveAdmin::Resource::Controllers`
|
72
|
+
def route_uncountable?
|
73
|
+
false
|
74
|
+
end
|
75
|
+
|
76
|
+
def add_default_action_items
|
77
|
+
end
|
78
|
+
|
79
|
+
def add_default_sidebar_sections
|
80
|
+
end
|
81
|
+
|
82
|
+
# Clears all the custom actions this page knows about
|
83
|
+
def clear_page_actions!
|
84
|
+
@page_actions = []
|
85
|
+
end
|
86
|
+
|
87
|
+
def belongs_to(target, options = {})
|
88
|
+
@belongs_to = Resource::BelongsTo.new(self, target, options)
|
89
|
+
self.navigation_menu_name = target unless @belongs_to.optional?
|
90
|
+
controller.send :belongs_to, target, options.dup
|
91
|
+
end
|
92
|
+
|
93
|
+
def belongs_to_config
|
94
|
+
@belongs_to
|
95
|
+
end
|
96
|
+
|
97
|
+
# Do we belong to another resource?
|
98
|
+
def belongs_to?
|
99
|
+
!!belongs_to_config
|
100
|
+
end
|
101
|
+
|
102
|
+
def breadcrumb
|
103
|
+
instance_variable_defined?(:@breadcrumb) ? @breadcrumb : namespace.breadcrumb
|
104
|
+
end
|
105
|
+
|
106
|
+
def order_clause
|
107
|
+
@order_clause || namespace.order_clause
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
|
3
|
+
# All Pages controllers inherit from this controller.
|
4
|
+
class PageController < BaseController
|
5
|
+
|
6
|
+
# Active admin actions don't require layout. All custom actions do.
|
7
|
+
ACTIVE_ADMIN_ACTIONS = [:index]
|
8
|
+
|
9
|
+
actions :index
|
10
|
+
|
11
|
+
before_action :authorize_access!
|
12
|
+
|
13
|
+
def index(options = {}, &block)
|
14
|
+
render "active_admin/page/index"
|
15
|
+
end
|
16
|
+
|
17
|
+
def clear_page_actions!
|
18
|
+
active_admin_config.clear_page_actions!
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def authorize_access!
|
24
|
+
permission = action_to_permission(params[:action])
|
25
|
+
authorize! permission, active_admin_config
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|