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,209 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
class TableFor < Arbre::HTML::Table
|
4
|
+
builder_method :table_for
|
5
|
+
|
6
|
+
def tag_name
|
7
|
+
'table'
|
8
|
+
end
|
9
|
+
|
10
|
+
def build(obj, *attrs)
|
11
|
+
options = attrs.extract_options!
|
12
|
+
@sortable = options.delete(:sortable)
|
13
|
+
@collection = obj.respond_to?(:each) && !obj.is_a?(Hash) ? obj : [obj]
|
14
|
+
@resource_class = options.delete(:i18n)
|
15
|
+
@resource_class ||= @collection.klass if @collection.respond_to? :klass
|
16
|
+
@columns = []
|
17
|
+
@row_class = options.delete(:row_class)
|
18
|
+
|
19
|
+
build_table
|
20
|
+
super(options)
|
21
|
+
columns(*attrs)
|
22
|
+
end
|
23
|
+
|
24
|
+
def columns(*attrs)
|
25
|
+
attrs.each { |attr| column(attr) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def column(*args, &block)
|
29
|
+
options = default_options.merge(args.extract_options!)
|
30
|
+
title = args[0]
|
31
|
+
data = args[1] || args[0]
|
32
|
+
|
33
|
+
col = Column.new(title, data, @resource_class, options, &block)
|
34
|
+
@columns << col
|
35
|
+
|
36
|
+
# Build our header item
|
37
|
+
within @header_row do
|
38
|
+
build_table_header(col)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Add a table cell for each item
|
42
|
+
@collection.each_with_index do |resource, index|
|
43
|
+
within @tbody.children[index] do
|
44
|
+
build_table_cell col, resource
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def sortable?
|
50
|
+
!!@sortable
|
51
|
+
end
|
52
|
+
|
53
|
+
protected
|
54
|
+
|
55
|
+
def build_table
|
56
|
+
build_table_head
|
57
|
+
build_table_body
|
58
|
+
end
|
59
|
+
|
60
|
+
def build_table_head
|
61
|
+
@thead = thead do
|
62
|
+
@header_row = tr
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def build_table_header(col)
|
67
|
+
classes = Arbre::HTML::ClassList.new
|
68
|
+
sort_key = sortable? && col.sortable? && col.sort_key
|
69
|
+
params = request.query_parameters.except :page, :order, :commit, :format
|
70
|
+
|
71
|
+
classes << 'sortable' if sort_key
|
72
|
+
classes << "sorted-#{current_sort[1]}" if sort_key && current_sort[0] == sort_key
|
73
|
+
classes << col.html_class
|
74
|
+
|
75
|
+
if sort_key
|
76
|
+
th class: classes do
|
77
|
+
link_to col.pretty_title, params: params, order: "#{sort_key}_#{order_for_sort_key(sort_key)}"
|
78
|
+
end
|
79
|
+
else
|
80
|
+
th col.pretty_title, class: classes
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def build_table_body
|
85
|
+
@tbody = tbody do
|
86
|
+
# Build enough rows for our collection
|
87
|
+
@collection.each do |elem|
|
88
|
+
classes = [helpers.cycle('odd', 'even')]
|
89
|
+
|
90
|
+
if @row_class
|
91
|
+
classes << @row_class.call(elem)
|
92
|
+
end
|
93
|
+
|
94
|
+
tr(class: classes.flatten.join(' '), id: dom_id_for(elem))
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def build_table_cell(col, resource)
|
100
|
+
td class: col.html_class do
|
101
|
+
html = helpers.format_attribute(resource, col.data)
|
102
|
+
# Don't add the same Arbre twice, while still allowing format_attribute to call status_tag
|
103
|
+
current_arbre_element << html unless current_arbre_element.children.include? html
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
# Returns an array for the current sort order
|
108
|
+
# current_sort[0] #=> sort_key
|
109
|
+
# current_sort[1] #=> asc | desc
|
110
|
+
def current_sort
|
111
|
+
@current_sort ||= begin
|
112
|
+
order_clause = active_admin_config.order_clause.new(active_admin_config, params[:order])
|
113
|
+
|
114
|
+
if order_clause.valid?
|
115
|
+
[order_clause.field, order_clause.order]
|
116
|
+
else
|
117
|
+
[]
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
# Returns the order to use for a given sort key
|
123
|
+
#
|
124
|
+
# Default is to use 'desc'. If the current sort key is
|
125
|
+
# 'desc' it will return 'asc'
|
126
|
+
def order_for_sort_key(sort_key)
|
127
|
+
current_key, current_order = current_sort
|
128
|
+
return 'desc' unless current_key == sort_key
|
129
|
+
current_order == 'desc' ? 'asc' : 'desc'
|
130
|
+
end
|
131
|
+
|
132
|
+
def default_options
|
133
|
+
{
|
134
|
+
i18n: @resource_class
|
135
|
+
}
|
136
|
+
end
|
137
|
+
|
138
|
+
class Column
|
139
|
+
|
140
|
+
attr_accessor :title, :data , :html_class
|
141
|
+
|
142
|
+
def initialize(*args, &block)
|
143
|
+
@options = args.extract_options!
|
144
|
+
|
145
|
+
@title = args[0]
|
146
|
+
html_classes = [:col]
|
147
|
+
if @options.has_key?(:class)
|
148
|
+
html_classes << @options.delete(:class)
|
149
|
+
elsif @title.present?
|
150
|
+
html_classes << "col-#{@title.to_s.parameterize(separator: "_")}"
|
151
|
+
end
|
152
|
+
@html_class = html_classes.join(' ')
|
153
|
+
@data = args[1] || args[0]
|
154
|
+
@data = block if block
|
155
|
+
@resource_class = args[2]
|
156
|
+
end
|
157
|
+
|
158
|
+
def sortable?
|
159
|
+
if @options.has_key?(:sortable)
|
160
|
+
!!@options[:sortable]
|
161
|
+
elsif @resource_class
|
162
|
+
@resource_class.column_names.include?(sort_column_name)
|
163
|
+
else
|
164
|
+
@title.present?
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
#
|
169
|
+
# Returns the key to be used for sorting this column
|
170
|
+
#
|
171
|
+
# Defaults to the column's method if its a symbol
|
172
|
+
# column :username
|
173
|
+
# # => Sort key will be set to 'username'
|
174
|
+
#
|
175
|
+
# You can set the sort key by passing a string or symbol
|
176
|
+
# to the sortable option:
|
177
|
+
# column :username, sortable: 'other_column_to_sort_on'
|
178
|
+
#
|
179
|
+
def sort_key
|
180
|
+
# If boolean or nil, use the default sort key.
|
181
|
+
if @options[:sortable].nil? || @options[:sortable] == true || @options[:sortable] == false
|
182
|
+
sort_column_name
|
183
|
+
else
|
184
|
+
@options[:sortable].to_s
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
def pretty_title
|
189
|
+
if @title.is_a? Symbol
|
190
|
+
default = @title.to_s.titleize
|
191
|
+
if @options[:i18n].respond_to? :human_attribute_name
|
192
|
+
@title = @options[:i18n].human_attribute_name @title, default: default
|
193
|
+
else
|
194
|
+
default
|
195
|
+
end
|
196
|
+
else
|
197
|
+
@title
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
private
|
202
|
+
|
203
|
+
def sort_column_name
|
204
|
+
@data.is_a?(Symbol) ? @data.to_s : @title.to_s
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
class Tabs < ActiveAdmin::Component
|
4
|
+
builder_method :tabs
|
5
|
+
|
6
|
+
def tab(title, options = {}, &block)
|
7
|
+
title = title.to_s.titleize if title.is_a? Symbol
|
8
|
+
@menu << build_menu_item(title, options, &block)
|
9
|
+
@tabs_content << build_content_item(title, options, &block)
|
10
|
+
end
|
11
|
+
|
12
|
+
def build(&block)
|
13
|
+
@menu = ul(class: 'nav nav-tabs', role: "tablist")
|
14
|
+
@tabs_content = div(class: 'tab-content')
|
15
|
+
end
|
16
|
+
|
17
|
+
def build_menu_item(title, options, &block)
|
18
|
+
fragment = options.fetch(:id, fragmentize(title))
|
19
|
+
|
20
|
+
html_options = options.fetch(:html_options, {})
|
21
|
+
li html_options do
|
22
|
+
link_to title, "##{fragment}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def build_content_item(title, options, &block)
|
27
|
+
options = options.reverse_merge(id: fragmentize(title))
|
28
|
+
div(options, &block)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def fragmentize(string)
|
34
|
+
result = string.parameterize
|
35
|
+
result = URI.encode(string) if result.blank?
|
36
|
+
result
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
class UnsupportedBrowser < Component
|
4
|
+
def build
|
5
|
+
h1 I18n.t("active_admin.unsupported_browser.headline").html_safe
|
6
|
+
para I18n.t("active_admin.unsupported_browser.recommendation").html_safe
|
7
|
+
para I18n.t("active_admin.unsupported_browser.turn_off_compatibility_view").html_safe
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
class Footer < Component
|
4
|
+
|
5
|
+
def build(namespace)
|
6
|
+
super id: "footer"
|
7
|
+
@namespace = namespace
|
8
|
+
|
9
|
+
if footer_text.present?
|
10
|
+
para footer_text
|
11
|
+
else
|
12
|
+
para powered_by_message
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def footer_text
|
19
|
+
@footer_text ||= @namespace.footer(self)
|
20
|
+
end
|
21
|
+
|
22
|
+
def powered_by_message
|
23
|
+
I18n.t('active_admin.powered_by',
|
24
|
+
active_admin: link_to("Active Admin", "https://activeadmin.info"),
|
25
|
+
version: ActiveAdmin::VERSION).html_safe
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
class Header < Component
|
4
|
+
|
5
|
+
def build(namespace, menu)
|
6
|
+
super(id: "header")
|
7
|
+
|
8
|
+
@namespace = namespace
|
9
|
+
@menu = menu
|
10
|
+
@utility_menu = @namespace.fetch_menu(:utility_navigation)
|
11
|
+
|
12
|
+
site_title @namespace
|
13
|
+
global_navigation @menu, class: 'header-item tabs'
|
14
|
+
utility_navigation @utility_menu, id: "utility_nav", class: 'header-item tabs'
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
|
4
|
+
# # Index as a Block
|
5
|
+
#
|
6
|
+
# If you want to fully customize the display of your resources on the index
|
7
|
+
# screen, Index as a Block allows you to render a block of content for each
|
8
|
+
# resource.
|
9
|
+
#
|
10
|
+
# ```ruby
|
11
|
+
# index as: :block do |product|
|
12
|
+
# div for: product do
|
13
|
+
# resource_selection_cell product
|
14
|
+
# h2 auto_link product.title
|
15
|
+
# div simple_format product.description
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
# ```
|
19
|
+
#
|
20
|
+
class IndexAsBlock < ActiveAdmin::Component
|
21
|
+
|
22
|
+
def build(page_presenter, collection)
|
23
|
+
add_class "index"
|
24
|
+
resource_selection_toggle_panel if active_admin_config.batch_actions.any?
|
25
|
+
collection.each do |obj|
|
26
|
+
instance_exec(obj, &page_presenter.block)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.index_name
|
31
|
+
"block"
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
|
4
|
+
# # Index as Blog
|
5
|
+
#
|
6
|
+
# Render your index page as a set of posts. The post has two main options:
|
7
|
+
# title and body.
|
8
|
+
#
|
9
|
+
# ```ruby
|
10
|
+
# index as: :blog do
|
11
|
+
# title :my_title # Calls #my_title on each resource
|
12
|
+
# body :my_body # Calls #my_body on each resource
|
13
|
+
# end
|
14
|
+
# ```
|
15
|
+
#
|
16
|
+
# ## Post Title
|
17
|
+
#
|
18
|
+
# The title is the content that will be rendered within a link to the
|
19
|
+
# resource. There are two main ways to set the content for the title
|
20
|
+
#
|
21
|
+
# First, you can pass in a method to be called on your resource. For example:
|
22
|
+
#
|
23
|
+
# ```ruby
|
24
|
+
# index as: :blog do
|
25
|
+
# title :a_method_to_call
|
26
|
+
# end
|
27
|
+
# ```
|
28
|
+
#
|
29
|
+
# Second, you can pass a block to the tile option which will then be
|
30
|
+
# used as the contents of the title. The resource being rendered
|
31
|
+
# is passed in to the block. For Example:
|
32
|
+
#
|
33
|
+
# ```ruby
|
34
|
+
# index as: :blog do
|
35
|
+
# title do |post|
|
36
|
+
# span post.title, class: 'title'
|
37
|
+
# span post.created_at, class: 'created_at'
|
38
|
+
# end
|
39
|
+
# end
|
40
|
+
# ```
|
41
|
+
#
|
42
|
+
# ## Post Body
|
43
|
+
#
|
44
|
+
# The body is rendered underneath the title of each post. The same two
|
45
|
+
# style of options work as the Post Title above.
|
46
|
+
#
|
47
|
+
# Call a method on the resource as the body:
|
48
|
+
#
|
49
|
+
# ```ruby
|
50
|
+
# index as: :blog do
|
51
|
+
# title :my_title
|
52
|
+
# body :my_body
|
53
|
+
# end
|
54
|
+
# ```
|
55
|
+
#
|
56
|
+
# Or, render a block as the body:
|
57
|
+
#
|
58
|
+
# ```ruby
|
59
|
+
# index as: :blog do
|
60
|
+
# title :my_title
|
61
|
+
# body do |post|
|
62
|
+
# div truncate post.title
|
63
|
+
# div class: 'meta' do
|
64
|
+
# span "Post in #{post.categories.join(', ')}"
|
65
|
+
# end
|
66
|
+
# end
|
67
|
+
# end
|
68
|
+
# ```
|
69
|
+
#
|
70
|
+
class IndexAsBlog < ActiveAdmin::Component
|
71
|
+
|
72
|
+
def build(page_presenter, collection)
|
73
|
+
@page_presenter = page_presenter
|
74
|
+
@collection = collection
|
75
|
+
|
76
|
+
# Call the block passed in. This will set the
|
77
|
+
# title and body methods
|
78
|
+
instance_exec &page_presenter.block if page_presenter.block
|
79
|
+
|
80
|
+
add_class "index"
|
81
|
+
build_posts
|
82
|
+
end
|
83
|
+
|
84
|
+
# Setter method for the configuration of the title
|
85
|
+
def title(method = nil, &block)
|
86
|
+
if block_given? || method
|
87
|
+
@title = block_given? ? block : method
|
88
|
+
end
|
89
|
+
@title
|
90
|
+
end
|
91
|
+
|
92
|
+
# Setter method for the configuration of the body
|
93
|
+
#
|
94
|
+
def body(method = nil, &block)
|
95
|
+
if block_given? || method
|
96
|
+
@body = block_given? ? block : method
|
97
|
+
end
|
98
|
+
@body
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.index_name
|
102
|
+
"blog"
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
|
107
|
+
def build_posts
|
108
|
+
resource_selection_toggle_panel if active_admin_config.batch_actions.any?
|
109
|
+
@collection.each do |post|
|
110
|
+
build_post(post)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def build_post(post)
|
115
|
+
div for: post do
|
116
|
+
resource_selection_cell(post) if active_admin_config.batch_actions.any?
|
117
|
+
build_title(post)
|
118
|
+
build_body(post)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def build_title(post)
|
123
|
+
if @title
|
124
|
+
h3 do
|
125
|
+
a(href: resource_path(post)) do
|
126
|
+
render_method_on_post_or_call_proc post, @title
|
127
|
+
end
|
128
|
+
end
|
129
|
+
else
|
130
|
+
h3 do
|
131
|
+
auto_link(post)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def build_body(post)
|
137
|
+
if @body
|
138
|
+
div class: 'content' do
|
139
|
+
render_method_on_post_or_call_proc post, @body
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def render_method_on_post_or_call_proc(post, proc)
|
145
|
+
case proc
|
146
|
+
when String, Symbol
|
147
|
+
post.public_send proc
|
148
|
+
else
|
149
|
+
instance_exec post, &proc
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
end # Posts
|
154
|
+
end
|
155
|
+
end
|