Showing preview only (2,799K chars total). Download the full file or copy to clipboard to get everything.
Repository: railsadminteam/rails_admin
Branch: master
Commit: d8e0809ea4b3
Files: 722
Total size: 2.5 MB
Directory structure:
gitextract_n6znt0mu/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ └── workflows/
│ ├── code-ql.yml
│ └── test.yml
├── .gitignore
├── .prettierignore
├── .rspec
├── .rubocop.yml
├── .rubocop_todo.yml
├── .teatro.yml
├── .yardopts
├── Appraisals
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Gemfile
├── LICENSE.md
├── Procfile.teatro
├── README.md
├── Rakefile
├── app/
│ ├── assets/
│ │ ├── javascripts/
│ │ │ └── rails_admin/
│ │ │ ├── application.js.erb
│ │ │ └── custom/
│ │ │ └── ui.js
│ │ └── stylesheets/
│ │ └── rails_admin/
│ │ ├── application.scss.erb
│ │ └── custom/
│ │ ├── mixins.scss
│ │ ├── theming.scss
│ │ └── variables.scss
│ ├── controllers/
│ │ └── rails_admin/
│ │ ├── application_controller.rb
│ │ └── main_controller.rb
│ ├── helpers/
│ │ └── rails_admin/
│ │ ├── application_helper.rb
│ │ ├── form_builder.rb
│ │ └── main_helper.rb
│ └── views/
│ ├── kaminari/
│ │ └── ra-twitter-bootstrap/
│ │ ├── _gap.html.erb
│ │ ├── _next_page.html.erb
│ │ ├── _page.html.erb
│ │ ├── _paginator.html.erb
│ │ ├── _prev_page.html.erb
│ │ └── without_count/
│ │ ├── _next_page.html.erb
│ │ ├── _paginator.html.erb
│ │ └── _prev_page.html.erb
│ ├── layouts/
│ │ └── rails_admin/
│ │ ├── _head.html.erb
│ │ ├── _navigation.html.erb
│ │ ├── _secondary_navigation.html.erb
│ │ ├── _sidebar_navigation.html.erb
│ │ ├── application.html.erb
│ │ ├── content.html.erb
│ │ └── modal.js.erb
│ └── rails_admin/
│ └── main/
│ ├── _dashboard_history.html.erb
│ ├── _delete_notice.html.erb
│ ├── _form_action_text.html.erb
│ ├── _form_boolean.html.erb
│ ├── _form_ck_editor.html.erb
│ ├── _form_code_mirror.html.erb
│ ├── _form_colorpicker.html.erb
│ ├── _form_datetime.html.erb
│ ├── _form_enumeration.html.erb
│ ├── _form_field.html.erb
│ ├── _form_file_upload.html.erb
│ ├── _form_filtering_multiselect.html.erb
│ ├── _form_filtering_select.html.erb
│ ├── _form_froala.html.erb
│ ├── _form_multiple_file_upload.html.erb
│ ├── _form_nested_many.html.erb
│ ├── _form_nested_one.html.erb
│ ├── _form_polymorphic_association.html.erb
│ ├── _form_simple_mde.html.erb
│ ├── _form_text.html.erb
│ ├── _form_wysihtml5.html.erb
│ ├── _submit_buttons.html.erb
│ ├── bulk_delete.html.erb
│ ├── dashboard.html.erb
│ ├── delete.html.erb
│ ├── edit.html.erb
│ ├── export.html.erb
│ ├── history.html.erb
│ ├── index.html.erb
│ ├── new.html.erb
│ └── show.html.erb
├── config/
│ ├── initializers/
│ │ ├── active_record_extensions.rb
│ │ └── mongoid_extensions.rb
│ ├── locales/
│ │ └── rails_admin.en.yml
│ └── routes.rb
├── gemfiles/
│ ├── composite_primary_keys.gemfile
│ ├── rails_6.0.gemfile
│ ├── rails_6.1.gemfile
│ ├── rails_7.0.gemfile
│ ├── rails_7.1.gemfile
│ ├── rails_7.2.gemfile
│ └── rails_8.0.gemfile
├── lib/
│ ├── generators/
│ │ └── rails_admin/
│ │ ├── importmap_formatter.rb
│ │ ├── install_generator.rb
│ │ ├── templates/
│ │ │ ├── initializer.erb
│ │ │ ├── rails_admin.js
│ │ │ ├── rails_admin.scss.erb
│ │ │ ├── rails_admin.vite.js
│ │ │ └── rails_admin.webpacker.js
│ │ └── utils.rb
│ ├── rails_admin/
│ │ ├── abstract_model.rb
│ │ ├── adapters/
│ │ │ ├── active_record/
│ │ │ │ ├── association.rb
│ │ │ │ ├── object_extension.rb
│ │ │ │ └── property.rb
│ │ │ ├── active_record.rb
│ │ │ ├── mongoid/
│ │ │ │ ├── association.rb
│ │ │ │ ├── bson.rb
│ │ │ │ ├── extension.rb
│ │ │ │ ├── object_extension.rb
│ │ │ │ └── property.rb
│ │ │ └── mongoid.rb
│ │ ├── config/
│ │ │ ├── actions/
│ │ │ │ ├── base.rb
│ │ │ │ ├── bulk_delete.rb
│ │ │ │ ├── dashboard.rb
│ │ │ │ ├── delete.rb
│ │ │ │ ├── edit.rb
│ │ │ │ ├── export.rb
│ │ │ │ ├── history_index.rb
│ │ │ │ ├── history_show.rb
│ │ │ │ ├── index.rb
│ │ │ │ ├── new.rb
│ │ │ │ ├── show.rb
│ │ │ │ └── show_in_app.rb
│ │ │ ├── actions.rb
│ │ │ ├── configurable.rb
│ │ │ ├── const_load_suppressor.rb
│ │ │ ├── fields/
│ │ │ │ ├── association.rb
│ │ │ │ ├── base.rb
│ │ │ │ ├── collection_association.rb
│ │ │ │ ├── factories/
│ │ │ │ │ ├── action_text.rb
│ │ │ │ │ ├── active_storage.rb
│ │ │ │ │ ├── association.rb
│ │ │ │ │ ├── carrierwave.rb
│ │ │ │ │ ├── devise.rb
│ │ │ │ │ ├── dragonfly.rb
│ │ │ │ │ ├── enum.rb
│ │ │ │ │ ├── paperclip.rb
│ │ │ │ │ ├── password.rb
│ │ │ │ │ └── shrine.rb
│ │ │ │ ├── group.rb
│ │ │ │ ├── singular_association.rb
│ │ │ │ ├── types/
│ │ │ │ │ ├── action_text.rb
│ │ │ │ │ ├── active_record_enum.rb
│ │ │ │ │ ├── active_storage.rb
│ │ │ │ │ ├── all.rb
│ │ │ │ │ ├── belongs_to_association.rb
│ │ │ │ │ ├── boolean.rb
│ │ │ │ │ ├── bson_object_id.rb
│ │ │ │ │ ├── carrierwave.rb
│ │ │ │ │ ├── citext.rb
│ │ │ │ │ ├── ck_editor.rb
│ │ │ │ │ ├── code_mirror.rb
│ │ │ │ │ ├── color.rb
│ │ │ │ │ ├── date.rb
│ │ │ │ │ ├── datetime.rb
│ │ │ │ │ ├── decimal.rb
│ │ │ │ │ ├── dragonfly.rb
│ │ │ │ │ ├── enum.rb
│ │ │ │ │ ├── file_upload.rb
│ │ │ │ │ ├── float.rb
│ │ │ │ │ ├── froala.rb
│ │ │ │ │ ├── has_and_belongs_to_many_association.rb
│ │ │ │ │ ├── has_many_association.rb
│ │ │ │ │ ├── has_one_association.rb
│ │ │ │ │ ├── hidden.rb
│ │ │ │ │ ├── inet.rb
│ │ │ │ │ ├── integer.rb
│ │ │ │ │ ├── json.rb
│ │ │ │ │ ├── multiple_active_storage.rb
│ │ │ │ │ ├── multiple_carrierwave.rb
│ │ │ │ │ ├── multiple_file_upload.rb
│ │ │ │ │ ├── numeric.rb
│ │ │ │ │ ├── paperclip.rb
│ │ │ │ │ ├── password.rb
│ │ │ │ │ ├── polymorphic_association.rb
│ │ │ │ │ ├── serialized.rb
│ │ │ │ │ ├── shrine.rb
│ │ │ │ │ ├── simple_mde.rb
│ │ │ │ │ ├── string.rb
│ │ │ │ │ ├── string_like.rb
│ │ │ │ │ ├── text.rb
│ │ │ │ │ ├── time.rb
│ │ │ │ │ ├── timestamp.rb
│ │ │ │ │ ├── uuid.rb
│ │ │ │ │ └── wysihtml5.rb
│ │ │ │ └── types.rb
│ │ │ ├── fields.rb
│ │ │ ├── groupable.rb
│ │ │ ├── has_description.rb
│ │ │ ├── has_fields.rb
│ │ │ ├── has_groups.rb
│ │ │ ├── hideable.rb
│ │ │ ├── inspectable.rb
│ │ │ ├── lazy_model.rb
│ │ │ ├── model.rb
│ │ │ ├── proxyable/
│ │ │ │ └── proxy.rb
│ │ │ ├── proxyable.rb
│ │ │ ├── sections/
│ │ │ │ ├── base.rb
│ │ │ │ ├── create.rb
│ │ │ │ ├── edit.rb
│ │ │ │ ├── export.rb
│ │ │ │ ├── list.rb
│ │ │ │ ├── modal.rb
│ │ │ │ ├── nested.rb
│ │ │ │ ├── show.rb
│ │ │ │ └── update.rb
│ │ │ └── sections.rb
│ │ ├── config.rb
│ │ ├── engine.rb
│ │ ├── extension.rb
│ │ ├── extensions/
│ │ │ ├── cancancan/
│ │ │ │ └── authorization_adapter.rb
│ │ │ ├── cancancan.rb
│ │ │ ├── controller_extension.rb
│ │ │ ├── paper_trail/
│ │ │ │ └── auditing_adapter.rb
│ │ │ ├── paper_trail.rb
│ │ │ ├── pundit/
│ │ │ │ └── authorization_adapter.rb
│ │ │ ├── pundit.rb
│ │ │ └── url_for_extension.rb
│ │ ├── support/
│ │ │ ├── composite_keys_serializer.rb
│ │ │ ├── csv_converter.rb
│ │ │ ├── datetime.rb
│ │ │ ├── es_module_processor.rb
│ │ │ └── hash_helper.rb
│ │ └── version.rb
│ ├── rails_admin.rb
│ └── tasks/
│ ├── .gitkeep
│ └── rails_admin.rake
├── package.json
├── rails_admin.gemspec
├── spec/
│ ├── controllers/
│ │ └── rails_admin/
│ │ ├── application_controller_spec.rb
│ │ └── main_controller_spec.rb
│ ├── dummy_app/
│ │ ├── .browserslistrc
│ │ ├── .dockerignore
│ │ ├── .gitignore
│ │ ├── Dockerfile
│ │ ├── Gemfile
│ │ ├── Procfile.dev
│ │ ├── Rakefile
│ │ ├── app/
│ │ │ ├── active_record/
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── abstract.rb
│ │ │ │ ├── another_field_test.rb
│ │ │ │ ├── ball.rb
│ │ │ │ ├── carrierwave_uploader.rb
│ │ │ │ ├── category.rb
│ │ │ │ ├── cms/
│ │ │ │ │ └── basic_page.rb
│ │ │ │ ├── cms.rb
│ │ │ │ ├── comment/
│ │ │ │ │ └── confirmed.rb
│ │ │ │ ├── comment.rb
│ │ │ │ ├── concerns/
│ │ │ │ │ └── taggable.rb
│ │ │ │ ├── deeply_nested_field_test.rb
│ │ │ │ ├── division.rb
│ │ │ │ ├── draft.rb
│ │ │ │ ├── fan.rb
│ │ │ │ ├── fanship.rb
│ │ │ │ ├── favorite_player.rb
│ │ │ │ ├── field_test.rb
│ │ │ │ ├── hardball.rb
│ │ │ │ ├── image.rb
│ │ │ │ ├── league.rb
│ │ │ │ ├── managed_team.rb
│ │ │ │ ├── managing_user.rb
│ │ │ │ ├── nested_fan.rb
│ │ │ │ ├── nested_favorite_player.rb
│ │ │ │ ├── nested_field_test.rb
│ │ │ │ ├── paper_trail_test/
│ │ │ │ │ └── subclass_in_namespace.rb
│ │ │ │ ├── paper_trail_test.rb
│ │ │ │ ├── paper_trail_test_subclass.rb
│ │ │ │ ├── paper_trail_test_with_custom_association.rb
│ │ │ │ ├── player.rb
│ │ │ │ ├── read_only_comment.rb
│ │ │ │ ├── restricted_team.rb
│ │ │ │ ├── shrine_uploader.rb
│ │ │ │ ├── shrine_versioning_uploader.rb
│ │ │ │ ├── team.rb
│ │ │ │ ├── trail.rb
│ │ │ │ ├── two_level/
│ │ │ │ │ ├── namespaced/
│ │ │ │ │ │ └── polymorphic_association_test.rb
│ │ │ │ │ └── namespaced.rb
│ │ │ │ ├── user/
│ │ │ │ │ └── confirmed.rb
│ │ │ │ ├── user.rb
│ │ │ │ └── without_table.rb
│ │ │ ├── assets/
│ │ │ │ ├── builds/
│ │ │ │ │ └── .keep
│ │ │ │ ├── config/
│ │ │ │ │ └── manifest.js
│ │ │ │ ├── javascripts/
│ │ │ │ │ ├── application.js
│ │ │ │ │ ├── rails-ujs.esm.js.erb
│ │ │ │ │ └── rails_admin/
│ │ │ │ │ └── custom/
│ │ │ │ │ └── ui.js
│ │ │ │ └── stylesheets/
│ │ │ │ ├── application.css
│ │ │ │ ├── rails_admin/
│ │ │ │ │ └── custom/
│ │ │ │ │ └── theming.scss
│ │ │ │ └── rails_admin.scss
│ │ │ ├── controllers/
│ │ │ │ ├── application_controller.rb
│ │ │ │ └── players_controller.rb
│ │ │ ├── eager_loaded/
│ │ │ │ └── basketball.rb
│ │ │ ├── frontend/
│ │ │ │ ├── entrypoints/
│ │ │ │ │ ├── application.js
│ │ │ │ │ └── rails_admin.js
│ │ │ │ └── stylesheets/
│ │ │ │ └── rails_admin.scss
│ │ │ ├── javascript/
│ │ │ │ ├── application.js
│ │ │ │ ├── rails_admin.js
│ │ │ │ └── rails_admin.scss
│ │ │ ├── jobs/
│ │ │ │ ├── application_job.rb
│ │ │ │ └── null_job.rb
│ │ │ ├── locales/
│ │ │ │ └── models.en.yml
│ │ │ ├── mailers/
│ │ │ │ └── .gitkeep
│ │ │ ├── mongoid/
│ │ │ │ ├── another_field_test.rb
│ │ │ │ ├── ball.rb
│ │ │ │ ├── carrierwave_uploader.rb
│ │ │ │ ├── category.rb
│ │ │ │ ├── cms/
│ │ │ │ │ └── basic_page.rb
│ │ │ │ ├── cms.rb
│ │ │ │ ├── comment/
│ │ │ │ │ └── confirmed.rb
│ │ │ │ ├── comment.rb
│ │ │ │ ├── concerns/
│ │ │ │ │ └── taggable.rb
│ │ │ │ ├── deeply_nested_field_test.rb
│ │ │ │ ├── division.rb
│ │ │ │ ├── draft.rb
│ │ │ │ ├── embed.rb
│ │ │ │ ├── fan.rb
│ │ │ │ ├── field_test.rb
│ │ │ │ ├── hardball.rb
│ │ │ │ ├── image.rb
│ │ │ │ ├── league.rb
│ │ │ │ ├── managed_team.rb
│ │ │ │ ├── managing_user.rb
│ │ │ │ ├── nested_field_test.rb
│ │ │ │ ├── player.rb
│ │ │ │ ├── read_only_comment.rb
│ │ │ │ ├── restricted_team.rb
│ │ │ │ ├── shrine_uploader.rb
│ │ │ │ ├── shrine_versioning_uploader.rb
│ │ │ │ ├── team.rb
│ │ │ │ ├── two_level/
│ │ │ │ │ └── namespaced/
│ │ │ │ │ └── polymorphic_association_test.rb
│ │ │ │ ├── user/
│ │ │ │ │ └── confirmed.rb
│ │ │ │ └── user.rb
│ │ │ └── views/
│ │ │ ├── layouts/
│ │ │ │ └── application.html.erb
│ │ │ └── players/
│ │ │ └── show.html.erb
│ │ ├── babel.config.js
│ │ ├── bin/
│ │ │ ├── bundle
│ │ │ ├── dev
│ │ │ ├── docker-entrypoint
│ │ │ ├── importmap
│ │ │ ├── rails
│ │ │ ├── rake
│ │ │ ├── setup
│ │ │ ├── update
│ │ │ ├── vite
│ │ │ ├── webpack
│ │ │ └── webpack-dev-server
│ │ ├── config/
│ │ │ ├── application.rb
│ │ │ ├── boot.rb
│ │ │ ├── database.yml
│ │ │ ├── dockerfile.yml
│ │ │ ├── environment.rb
│ │ │ ├── environments/
│ │ │ │ ├── development.rb
│ │ │ │ ├── production.rb
│ │ │ │ └── test.rb
│ │ │ ├── importmap.rails_admin.rb
│ │ │ ├── importmap.rb
│ │ │ ├── initializers/
│ │ │ │ ├── application_controller_renderer.rb
│ │ │ │ ├── assets.rb
│ │ │ │ ├── backtrace_silencers.rb
│ │ │ │ ├── cookies_serializer.rb
│ │ │ │ ├── cors.rb
│ │ │ │ ├── devise.rb
│ │ │ │ ├── dragonfly.rb
│ │ │ │ ├── filter_parameter_logging.rb
│ │ │ │ ├── inflections.rb
│ │ │ │ ├── mime_types.rb
│ │ │ │ ├── mongoid.rb
│ │ │ │ ├── rails_admin.rb
│ │ │ │ ├── secret_token.rb
│ │ │ │ ├── session_patch.rb
│ │ │ │ ├── session_store.rb
│ │ │ │ ├── shrine.rb
│ │ │ │ └── wrap_parameters.rb
│ │ │ ├── locales/
│ │ │ │ ├── devise.en.yml
│ │ │ │ ├── en.yml
│ │ │ │ └── fr.yml
│ │ │ ├── mongoid5.yml
│ │ │ ├── mongoid6.yml
│ │ │ ├── puma.rb
│ │ │ ├── routes.rb
│ │ │ ├── secrets.yml
│ │ │ ├── storage.yml
│ │ │ ├── vite.json
│ │ │ ├── webpack/
│ │ │ │ ├── development.js
│ │ │ │ ├── environment.js
│ │ │ │ ├── production.js
│ │ │ │ └── test.js
│ │ │ └── webpacker.yml
│ │ ├── config.ru
│ │ ├── db/
│ │ │ ├── migrate/
│ │ │ │ ├── 00000000000001_create_divisions_migration.rb
│ │ │ │ ├── 00000000000002_create_drafts_migration.rb
│ │ │ │ ├── 00000000000003_create_leagues_migration.rb
│ │ │ │ ├── 00000000000004_create_players_migration.rb
│ │ │ │ ├── 00000000000005_create_teams_migration.rb
│ │ │ │ ├── 00000000000006_devise_create_users.rb
│ │ │ │ ├── 00000000000007_create_histories_table.rb
│ │ │ │ ├── 00000000000008_create_fans_migration.rb
│ │ │ │ ├── 00000000000009_create_fans_teams_migration.rb
│ │ │ │ ├── 00000000000010_add_revenue_to_team_migration.rb
│ │ │ │ ├── 00000000000011_add_suspended_to_player_migration.rb
│ │ │ │ ├── 00000000000012_add_avatar_columns_to_user.rb
│ │ │ │ ├── 00000000000013_add_roles_to_user.rb
│ │ │ │ ├── 00000000000014_add_color_to_team_migration.rb
│ │ │ │ ├── 20101223222233_create_rel_tests.rb
│ │ │ │ ├── 20110103205808_create_comments.rb
│ │ │ │ ├── 20110123042530_rename_histories_to_rails_admin_histories.rb
│ │ │ │ ├── 20110224184303_create_field_tests.rb
│ │ │ │ ├── 20110328193014_create_cms_basic_pages.rb
│ │ │ │ ├── 20110329183136_remove_league_id_from_teams.rb
│ │ │ │ ├── 20110607152842_add_format_to_field_test.rb
│ │ │ │ ├── 20110714095433_create_balls.rb
│ │ │ │ ├── 20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb
│ │ │ │ ├── 20110901131551_change_division_primary_key.rb
│ │ │ │ ├── 20110901142530_rename_league_id_foreign_key_on_divisions.rb
│ │ │ │ ├── 20110901150912_set_primary_key_not_null_for_divisions.rb
│ │ │ │ ├── 20110901154834_change_length_for_rails_admin_histories.rb
│ │ │ │ ├── 20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb
│ │ │ │ ├── 20111115041025_add_type_to_balls.rb
│ │ │ │ ├── 20111123092549_create_nested_field_tests.rb
│ │ │ │ ├── 20111130075338_add_dragonfly_asset_name_to_field_tests.rb
│ │ │ │ ├── 20111215083258_create_foo_bars.rb
│ │ │ │ ├── 20120117151733_add_custom_field_to_teams.rb
│ │ │ │ ├── 20120118122004_add_categories.rb
│ │ │ │ ├── 20120319041705_drop_rel_tests.rb
│ │ │ │ ├── 20120720075608_create_another_field_tests.rb
│ │ │ │ ├── 20120928075608_create_images.rb
│ │ │ │ ├── 20140412075608_create_deeply_nested_field_tests.rb
│ │ │ │ ├── 20140826093220_create_paper_trail_tests.rb
│ │ │ │ ├── 20140826093552_create_versions.rb
│ │ │ │ ├── 20150815102450_add_refile_to_field_tests.rb
│ │ │ │ ├── 20151027181550_change_field_test_id_to_nested_field_tests.rb
│ │ │ │ ├── 20160728152942_add_main_sponsor_to_teams.rb
│ │ │ │ ├── 20160728153058_add_formation_to_players.rb
│ │ │ │ ├── 20171229220713_add_enum_fields_to_field_tests.rb
│ │ │ │ ├── 20180701084251_create_active_storage_tables.active_storage.rb
│ │ │ │ ├── 20180707101855_add_carrierwave_assets_to_field_tests.rb
│ │ │ │ ├── 20181029101829_add_shrine_data_to_field_tests.rb
│ │ │ │ ├── 20190531065324_create_action_text_tables.action_text.rb
│ │ │ │ ├── 20201127111952_update_active_storage_tables.rb
│ │ │ │ ├── 20210811121027_create_two_level_namespaced_polymorphic_association_tests.rb
│ │ │ │ ├── 20210812115908_create_custom_versions.rb
│ │ │ │ ├── 20211011235734_add_bool_field_open.rb
│ │ │ │ ├── 20220416102741_create_composite_key_tables.rb
│ │ │ │ └── 20240921171953_add_non_nullable_boolean_field.rb
│ │ │ ├── schema.rb
│ │ │ └── seeds.rb
│ │ ├── doc/
│ │ │ └── README_FOR_APP
│ │ ├── fly.toml
│ │ ├── lib/
│ │ │ ├── assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── does_not_load_autoload_paths_not_in_eager_load.rb
│ │ │ └── tasks/
│ │ │ └── .gitkeep
│ │ ├── package.json
│ │ ├── postcss.config.js
│ │ ├── public/
│ │ │ ├── 404.html
│ │ │ ├── 422.html
│ │ │ ├── 500.html
│ │ │ ├── robots.txt
│ │ │ └── system/
│ │ │ └── dragonfly/
│ │ │ └── development/
│ │ │ └── 2011/
│ │ │ └── 11/
│ │ │ ├── 24/
│ │ │ │ └── 10_36_27_888_Pensive_Parakeet.jpg.meta
│ │ │ └── 30/
│ │ │ └── 08_54_39_906_Costa_Rican_Frog.jpg.meta
│ │ ├── vendor/
│ │ │ └── javascript/
│ │ │ └── .keep
│ │ ├── vite.config.ts
│ │ └── webpack.config.js
│ ├── factories.rb
│ ├── fixtures/
│ │ └── test.txt
│ ├── helpers/
│ │ └── rails_admin/
│ │ ├── application_helper_spec.rb
│ │ ├── form_builder_spec.rb
│ │ └── main_helper_spec.rb
│ ├── integration/
│ │ ├── actions/
│ │ │ ├── base_spec.rb
│ │ │ ├── bulk_delete_spec.rb
│ │ │ ├── dashboard_spec.rb
│ │ │ ├── delete_spec.rb
│ │ │ ├── edit_spec.rb
│ │ │ ├── export_spec.rb
│ │ │ ├── history_index_spec.rb
│ │ │ ├── history_show_spec.rb
│ │ │ ├── index_spec.rb
│ │ │ ├── new_spec.rb
│ │ │ ├── show_in_app_spec.rb
│ │ │ └── show_spec.rb
│ │ ├── auditing/
│ │ │ └── paper_trail_spec.rb
│ │ ├── authentication/
│ │ │ └── devise_spec.rb
│ │ ├── authorization/
│ │ │ ├── cancancan_spec.rb
│ │ │ └── pundit_spec.rb
│ │ ├── fields/
│ │ │ ├── action_text_spec.rb
│ │ │ ├── active_record_enum_spec.rb
│ │ │ ├── active_storage_spec.rb
│ │ │ ├── base_spec.rb
│ │ │ ├── belongs_to_association_spec.rb
│ │ │ ├── boolean_spec.rb
│ │ │ ├── carrierwave_spec.rb
│ │ │ ├── ck_editor_spec.rb
│ │ │ ├── code_mirror_spec.rb
│ │ │ ├── color_spec.rb
│ │ │ ├── date_spec.rb
│ │ │ ├── datetime_spec.rb
│ │ │ ├── enum_spec.rb
│ │ │ ├── file_upload_spec.rb
│ │ │ ├── floara_spec.rb
│ │ │ ├── has_and_belongs_to_many_association_spec.rb
│ │ │ ├── has_many_association_spec.rb
│ │ │ ├── has_one_association_spec.rb
│ │ │ ├── hidden_spec.rb
│ │ │ ├── multiple_active_storage_spec.rb
│ │ │ ├── multiple_carrierwave_spec.rb
│ │ │ ├── multiple_file_upload_spec.rb
│ │ │ ├── paperclip_spec.rb
│ │ │ ├── polymorphic_assosiation_spec.rb
│ │ │ ├── serialized_spec.rb
│ │ │ ├── shrine_spec.rb
│ │ │ ├── simple_mde_spec.rb
│ │ │ ├── time_spec.rb
│ │ │ └── wysihtml5_spec.rb
│ │ ├── rails_admin_spec.rb
│ │ └── widgets/
│ │ ├── datetimepicker_spec.rb
│ │ ├── filter_box_spec.rb
│ │ ├── filtering_multi_select_spec.rb
│ │ ├── filtering_select_spec.rb
│ │ ├── nested_many_spec.rb
│ │ ├── nested_one_spec.rb
│ │ └── remote_form_spec.rb
│ ├── orm/
│ │ ├── active_record.rb
│ │ └── mongoid.rb
│ ├── policies.rb
│ ├── rails_admin/
│ │ ├── abstract_model_spec.rb
│ │ ├── active_record_extension_spec.rb
│ │ ├── adapters/
│ │ │ ├── active_record/
│ │ │ │ ├── association_spec.rb
│ │ │ │ ├── object_extension_spec.rb
│ │ │ │ └── property_spec.rb
│ │ │ ├── active_record_spec.rb
│ │ │ ├── mongoid/
│ │ │ │ ├── association_spec.rb
│ │ │ │ ├── object_extension_spec.rb
│ │ │ │ └── property_spec.rb
│ │ │ └── mongoid_spec.rb
│ │ ├── config/
│ │ │ ├── actions/
│ │ │ │ └── base_spec.rb
│ │ │ ├── actions_spec.rb
│ │ │ ├── configurable_spec.rb
│ │ │ ├── const_load_suppressor_spec.rb
│ │ │ ├── fields/
│ │ │ │ ├── association_spec.rb
│ │ │ │ ├── base_spec.rb
│ │ │ │ └── types/
│ │ │ │ ├── action_text_spec.rb
│ │ │ │ ├── active_record_enum_spec.rb
│ │ │ │ ├── active_storage_spec.rb
│ │ │ │ ├── belongs_to_association_spec.rb
│ │ │ │ ├── boolean_spec.rb
│ │ │ │ ├── bson_object_id_spec.rb
│ │ │ │ ├── carrierwave_spec.rb
│ │ │ │ ├── citext_spec.rb
│ │ │ │ ├── ck_editor_spec.rb
│ │ │ │ ├── code_mirror_spec.rb
│ │ │ │ ├── color_spec.rb
│ │ │ │ ├── date_spec.rb
│ │ │ │ ├── datetime_spec.rb
│ │ │ │ ├── decimal_spec.rb
│ │ │ │ ├── drangonfly_spec.rb
│ │ │ │ ├── enum_spec.rb
│ │ │ │ ├── file_upload_spec.rb
│ │ │ │ ├── float_spec.rb
│ │ │ │ ├── froala_spec.rb
│ │ │ │ ├── has_and_belongs_to_many_association_spec.rb
│ │ │ │ ├── has_many_association_spec.rb
│ │ │ │ ├── has_one_association_spec.rb
│ │ │ │ ├── hidden_spec.rb
│ │ │ │ ├── inet_spec.rb
│ │ │ │ ├── integer_spec.rb
│ │ │ │ ├── json_spec.rb
│ │ │ │ ├── multiple_active_storage_spec.rb
│ │ │ │ ├── multiple_carrierwave_spec.rb
│ │ │ │ ├── multiple_file_upload_spec.rb
│ │ │ │ ├── numeric_spec.rb
│ │ │ │ ├── paperclip_spec.rb
│ │ │ │ ├── password_spec.rb
│ │ │ │ ├── serialized_spec.rb
│ │ │ │ ├── shrine_spec.rb
│ │ │ │ ├── simple_mde_spec.rb
│ │ │ │ ├── string_like_spec.rb
│ │ │ │ ├── string_spec.rb
│ │ │ │ ├── text_spec.rb
│ │ │ │ ├── time_spec.rb
│ │ │ │ ├── timestamp_spec.rb
│ │ │ │ ├── uuid_spec.rb
│ │ │ │ └── wysihtml5_spec.rb
│ │ │ ├── fields_spec.rb
│ │ │ ├── has_description_spec.rb
│ │ │ ├── has_fields_spec.rb
│ │ │ ├── lazy_model_spec.rb
│ │ │ ├── model_spec.rb
│ │ │ ├── proxyable_spec.rb
│ │ │ ├── sections/
│ │ │ │ └── list_spec.rb
│ │ │ └── sections_spec.rb
│ │ ├── config_spec.rb
│ │ ├── engine_spec.rb
│ │ ├── extentions/
│ │ │ ├── cancancan/
│ │ │ │ └── authorization_adapter_spec.rb
│ │ │ └── paper_trail/
│ │ │ ├── auditing_adapter_spec.rb
│ │ │ └── version_proxy_spec.rb
│ │ ├── install_generator_spec.rb
│ │ ├── support/
│ │ │ ├── csv_converter_spec.rb
│ │ │ ├── datetime_spec.rb
│ │ │ └── hash_helper_spec.rb
│ │ └── version_spec.rb
│ ├── shared_examples/
│ │ └── shared_examples_for_field_types.rb
│ ├── spec_helper.rb
│ └── support/
│ ├── cuprite_logger.rb
│ ├── fakeio.rb
│ ├── fixtures.rb
│ └── jquery.simulate.drag-sortable.js
├── src/
│ └── rails_admin/
│ ├── abstract-select.js
│ ├── base.js
│ ├── filter-box.js
│ ├── filtering-multiselect.js
│ ├── filtering-select.js
│ ├── i18n.js
│ ├── jquery.js
│ ├── nested-form-hooks.js
│ ├── remote-form.js
│ ├── sidescroll.js
│ ├── styles/
│ │ ├── base/
│ │ │ ├── README.txt
│ │ │ ├── mixins.scss
│ │ │ ├── theming.scss
│ │ │ └── variables.scss
│ │ ├── base.scss
│ │ ├── filtering-multiselect.scss
│ │ ├── filtering-select.scss
│ │ └── widgets.scss
│ ├── ui.js
│ ├── vendor/
│ │ └── jquery_nested_form.js
│ └── widgets.js
└── vendor/
└── assets/
├── javascripts/
│ └── rails_admin/
│ ├── bootstrap.js
│ ├── flatpickr-with-locales.js
│ ├── jquery-ui/
│ │ ├── data.js
│ │ ├── effect.js
│ │ ├── ie.js
│ │ ├── keycode.js
│ │ ├── position.js
│ │ ├── safe-active-element.js
│ │ ├── scroll-parent.js
│ │ ├── unique-id.js
│ │ ├── version.js
│ │ ├── widget.js
│ │ └── widgets/
│ │ ├── autocomplete.js
│ │ ├── menu.js
│ │ ├── mouse.js
│ │ └── sortable.js
│ ├── jquery3.js
│ └── popper.js
└── stylesheets/
└── rails_admin/
├── bootstrap/
│ ├── _accordion.scss
│ ├── _alert.scss
│ ├── _badge.scss
│ ├── _breadcrumb.scss
│ ├── _button-group.scss
│ ├── _buttons.scss
│ ├── _card.scss
│ ├── _carousel.scss
│ ├── _close.scss
│ ├── _containers.scss
│ ├── _dropdown.scss
│ ├── _forms.scss
│ ├── _functions.scss
│ ├── _grid.scss
│ ├── _helpers.scss
│ ├── _images.scss
│ ├── _list-group.scss
│ ├── _mixins.scss
│ ├── _modal.scss
│ ├── _nav.scss
│ ├── _navbar.scss
│ ├── _offcanvas.scss
│ ├── _pagination.scss
│ ├── _placeholders.scss
│ ├── _popover.scss
│ ├── _progress.scss
│ ├── _reboot.scss
│ ├── _root.scss
│ ├── _spinners.scss
│ ├── _tables.scss
│ ├── _toasts.scss
│ ├── _tooltip.scss
│ ├── _transitions.scss
│ ├── _type.scss
│ ├── _utilities.scss
│ ├── _variables.scss
│ ├── bootstrap.scss
│ ├── forms/
│ │ ├── _floating-labels.scss
│ │ ├── _form-check.scss
│ │ ├── _form-control.scss
│ │ ├── _form-range.scss
│ │ ├── _form-select.scss
│ │ ├── _form-text.scss
│ │ ├── _input-group.scss
│ │ ├── _labels.scss
│ │ └── _validation.scss
│ ├── helpers/
│ │ ├── _clearfix.scss
│ │ ├── _colored-links.scss
│ │ ├── _position.scss
│ │ ├── _ratio.scss
│ │ ├── _stacks.scss
│ │ ├── _stretched-link.scss
│ │ ├── _text-truncation.scss
│ │ ├── _visually-hidden.scss
│ │ └── _vr.scss
│ ├── mixins/
│ │ ├── _alert.scss
│ │ ├── _backdrop.scss
│ │ ├── _border-radius.scss
│ │ ├── _box-shadow.scss
│ │ ├── _breakpoints.scss
│ │ ├── _buttons.scss
│ │ ├── _caret.scss
│ │ ├── _clearfix.scss
│ │ ├── _color-scheme.scss
│ │ ├── _container.scss
│ │ ├── _deprecate.scss
│ │ ├── _forms.scss
│ │ ├── _gradients.scss
│ │ ├── _grid.scss
│ │ ├── _image.scss
│ │ ├── _list-group.scss
│ │ ├── _lists.scss
│ │ ├── _pagination.scss
│ │ ├── _reset-text.scss
│ │ ├── _resize.scss
│ │ ├── _table-variants.scss
│ │ ├── _text-truncate.scss
│ │ ├── _transition.scss
│ │ ├── _utilities.scss
│ │ └── _visually-hidden.scss
│ ├── utilities/
│ │ └── _api.scss
│ └── vendor/
│ └── _rfs.scss
├── flatpickr.css
└── font-awesome.scss
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ""
labels: ""
assignees: ""
---
**Describe the bug**
A clear and concise description of what the bug is.
**Reproduction steps**
Steps to reproduce the issue seen.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Additional context**
- `rails` version:
- `rails_admin` version:
- `rails_admin` npm package version:
- full stack trace (if there's an exception)
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ""
labels: enhancement
assignees: ""
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe proposed solution(s)**
A clear and concise description of what you want to happen.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/workflows/code-ql.yml
================================================
name: "CodeQL"
on:
push:
branches: [master]
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
schedule:
- cron: "12 00 * * 5"
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: ["ruby"]
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
================================================
FILE: .github/workflows/test.yml
================================================
name: Test
on: [push, pull_request]
jobs:
rspec:
name: RSpec
strategy:
fail-fast: false
matrix:
ruby:
- "3.2"
- "3.3"
- "3.4"
gemfile: [gemfiles/rails_8.0.gemfile]
orm: [active_record]
adapter: [sqlite3]
asset: [webpack]
include:
- ruby: 2.6
gemfile: gemfiles/rails_6.0.gemfile
orm: active_record
adapter: sqlite3
asset: sprockets
- ruby: 2.7
gemfile: gemfiles/rails_6.1.gemfile
orm: active_record
adapter: sqlite3
asset: sprockets
- ruby: 2.7
gemfile: gemfiles/rails_6.1.gemfile
orm: active_record
adapter: sqlite3
asset: webpacker
- ruby: "3.0"
gemfile: gemfiles/rails_7.0.gemfile
orm: active_record
adapter: sqlite3
asset: sprockets
- ruby: "3.1"
gemfile: gemfiles/rails_7.1.gemfile
orm: active_record
adapter: sqlite3
asset: sprockets
- ruby: "3.2"
gemfile: gemfiles/rails_7.2.gemfile
orm: active_record
adapter: sqlite3
asset: sprockets
- ruby: "3.4"
gemfile: gemfiles/rails_8.0.gemfile
orm: active_record
adapter: mysql2
asset: importmap
- ruby: "3.4"
gemfile: gemfiles/rails_8.0.gemfile
orm: active_record
adapter: postgresql
asset: sprockets
- ruby: "3.4"
gemfile: gemfiles/rails_8.0.gemfile
orm: active_record
adapter: sqlite3
asset: vite
- ruby: "3.4"
gemfile: gemfiles/rails_8.0.gemfile
orm: active_record
adapter: sqlite3
asset: sprockets
- ruby: "3.2"
gemfile: gemfiles/composite_primary_keys.gemfile
orm: active_record
adapter: sqlite3
asset: sprockets
- ruby: 2.7
gemfile: gemfiles/rails_6.0.gemfile
orm: mongoid
adapter: sqlite3
asset: sprockets
- ruby: "3.0"
gemfile: gemfiles/rails_6.1.gemfile
orm: mongoid
adapter: sqlite3
asset: sprockets
- ruby: "3.1"
gemfile: gemfiles/rails_7.0.gemfile
orm: mongoid
adapter: sqlite3
asset: sprockets
- ruby: "3.2"
gemfile: gemfiles/rails_7.1.gemfile
orm: mongoid
adapter: sqlite3
asset: sprockets
- ruby: "3.3"
gemfile: gemfiles/rails_7.2.gemfile
orm: mongoid
adapter: sqlite3
asset: sprockets
- ruby: "3.4"
gemfile: gemfiles/rails_8.0.gemfile
orm: mongoid
adapter: sqlite3
asset: sprockets
- ruby: jruby-9.4
gemfile: gemfiles/rails_7.1.gemfile
orm: active_record
adapter: mysql2
asset: sprockets
- ruby: jruby-9.4
gemfile: gemfiles/rails_7.1.gemfile
orm: mongoid
adapter: sqlite3
asset: sprockets
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0
ports:
- 3306:3306
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
postgres:
image: postgres:11
ports:
- 5432:5432
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
mongo:
image: mongo:4.4
ports:
- 27017:27017
env:
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
CI_ORM: ${{ matrix.orm }}
CI_ASSET: ${{ matrix.asset }}
JRUBY_OPTS: --debug
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
cache-version: gems-${{ hashFiles('Gemfile', 'gemfiles/*.gemfile') }}
env:
MAKEFLAGS: make --jobs 4
BUNDLE_WITHOUT: development
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Install ImageMagick
run: sudo apt-get install imagemagick
- name: Setup application
env:
BUNDLE_GEMFILE: ../../${{ matrix.gemfile }}
CI_ASSET: ${{ matrix.asset }}
CI_DB_ADAPTER: ${{ matrix.adapter }}
RAILS_ENV: test
NODE_OPTIONS: --openssl-legacy-provider
run: |
yarn install
cd spec/dummy_app
bundle exec rake rails_admin:prepare_ci_env db:create db:schema:load
yarn install
case "$CI_ASSET" in
"webpack" ) yarn build && yarn build:css ;;
"importmap" ) yarn build:css ;;
esac
cd ../../
- name: Run tests
run: bundle exec rspec
- name: Coveralls Parallel
if: ${{ github.repository_owner == 'railsadminteam' }}
uses: coverallsapp/github-action@v2
continue-on-error: true
with:
github-token: ${{ secrets.github_token }}
flag-name: run-${{ matrix.ruby }}-${{ matrix.gemfile }}-${{ matrix.orm }}-${{ matrix.adapter }}
parallel: true
coveralls:
name: Coveralls
if: ${{ github.repository_owner == 'railsadminteam' }}
needs: rspec
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true
prettier:
name: Prettier
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
- name: Install dependencies
run: yarn install
- name: Run check
run: yarn run prettier --check .
rubocop:
name: RuboCop
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.2"
bundler-cache: true
cache-version: gems-${{ hashFiles('Gemfile') }}
- name: Install dependencies
run: bundle install --without development --jobs=3 --retry=3 --path=vendor/bundle
- name: Run check
run: bundle exec rake rubocop
================================================
FILE: .gitignore
================================================
*.gem
*.log
*.rbc
*.swp
.bundle
.idea/
.vscode/
.rvmrc
.sass-cache
.yardoc
/.emacs.desktop
/gemfiles/*.lock
/node_modules/*
/rails_admin.gems
/spec/generators/tmp
/spec/lib/tmp
/yarn.lock
Gemfile.lock
coverage/*
db/*.sqlite3
db/*.sqlite3-journal
doc/*
log/*.log
pkg/*
spec/dummy_app/db/*.sqlite3
spec/dummy_app/db/*.sqlite3-journal
spec/dummy_app/log/*.log
spec/dummy_app/public/uploads
spec/dummy_app/Gemfile*.lock
tmp/**/*
nbproject
================================================
FILE: .prettierignore
================================================
coverage
lib/generators/rails_admin/templates
spec/dummy_app/app/assets/builds
spec/dummy_app/public
spec/dummy_app/tmp
spec/support/jquery.simulate.drag-sortable.js
vendor
================================================
FILE: .rspec
================================================
--color
--order=random
--profile
--exclude-pattern 'dummy_app/node_modules/rails_admin/**/*_spec.rb'
================================================
FILE: .rubocop.yml
================================================
inherit_from: .rubocop_todo.yml
require:
- rubocop-performance
AllCops:
Exclude:
- "gemfiles/*"
- "node_modules/**/*"
- "spec/dummy_app/bin/**/*"
- "spec/dummy_app/db/schema.rb"
- "spec/dummy_app/node_modules/**/*"
- "spec/dummy_app/tmp/**/*"
- "vendor/bundle/**/*"
NewCops: disable
SuggestExtensions: false
TargetRubyVersion: 2.6
Gemspec/DeprecatedAttributeAssignment:
Enabled: true
Layout/AccessModifierIndentation:
EnforcedStyle: outdent
Layout/DotPosition:
EnforcedStyle: trailing
Layout/LineEndStringConcatenationIndentation:
Enabled: true
Layout/LineLength:
AllowURI: true
Enabled: false
Layout/MultilineAssignmentLayout:
Enabled: true
SupportedTypes: [case, if]
Layout/SpaceBeforeBrackets:
Enabled: true
Layout/SpaceInsideHashLiteralBraces:
EnforcedStyle: no_space
Lint/AmbiguousAssignment:
Enabled: true
Lint/AmbiguousRange:
Enabled: true
Lint/DeprecatedConstants:
Enabled: true
Lint/DuplicateBranch:
Enabled: true
IgnoreLiteralBranches: true
Lint/DuplicateRegexpCharacterClassElement:
Enabled: true
Lint/EmptyBlock:
Enabled: true
Exclude:
- "spec/**/*"
Lint/EmptyClass:
Enabled: true
Exclude:
- "spec/**/*"
Lint/EmptyInPattern:
Enabled: true
Lint/LambdaWithoutLiteralBlock:
Enabled: true
Lint/NoReturnInBeginEndBlocks:
Enabled: true
Lint/NumberedParameterAssignment:
Enabled: true
Lint/OrAssignmentToConstant:
Enabled: true
Lint/RedundantDirGlobSort:
Enabled: true
Lint/SymbolConversion:
Enabled: true
Lint/ToEnumArguments:
Enabled: true
Lint/TripleQuotes:
Enabled: true
Lint/UnexpectedBlockArity:
Enabled: true
Lint/UnmodifiedReduceAccumulator:
Enabled: true
Metrics/AbcSize:
Max: 69.98 # TODO: Lower to 15
Metrics/BlockNesting:
Max: 3
Metrics/ClassLength:
CountComments: false
Max: 201 # TODO: Lower to 100
Metrics/CyclomaticComplexity:
Max: 15 # TODO: Lower to 6
Metrics/MethodLength:
CountComments: false
Max: 29 # TODO: Lower to 15
Metrics/ModuleLength:
Max: 219 # TODO: Lower to 100
Metrics/ParameterLists:
Max: 8 # TODO: Lower to 4
CountKeywordArgs: true
Metrics/PerceivedComplexity:
Max: 17 # TODO: Lower to 7
Naming/FileName:
Exclude:
- "lib/rails_admin/bootstrap-sass.rb"
Naming/InclusiveLanguage:
Enabled: true
Style/Alias:
Enabled: false
Style/ArgumentsForwarding:
Enabled: true
Style/CollectionCompact:
Enabled: true
Style/CollectionMethods:
PreferredMethods:
map: "collect"
reduce: "inject"
find: "detect"
find_all: "select"
Style/Documentation:
Enabled: false
Style/DocumentDynamicEvalDefinition:
Enabled: false
Style/DoubleNegation:
Enabled: false
Style/EachWithObject:
Enabled: false
Style/EndlessMethod:
Enabled: true
Style/HashConversion:
Enabled: true
Style/HashExcept:
Enabled: true
Style/IfWithBooleanLiteralBranches:
Enabled: true
Style/InPatternThen:
Enabled: true
Style/Lambda:
Enabled: false
Style/MultilineInPatternThen:
Enabled: true
Style/NegatedIfElseCondition:
Enabled: true
Style/NumericPredicate:
Enabled: false
Style/NilLambda:
Enabled: true
Style/QuotedSymbols:
Enabled: true
Style/RaiseArgs:
EnforcedStyle: compact
Style/RedundantArgument:
Enabled: true
Style/RedundantParentheses:
Enabled: false
Style/RedundantSelfAssignmentBranch:
Enabled: true
Style/StringChars:
Enabled: true
Style/SwapValues:
Enabled: true
Style/TrailingCommaInArguments:
EnforcedStyleForMultiline: "comma"
Style/TrailingCommaInArrayLiteral:
EnforcedStyleForMultiline: "comma"
Style/TrailingCommaInHashLiteral:
EnforcedStyleForMultiline: "comma"
================================================
FILE: .rubocop_todo.yml
================================================
# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2021-11-20 13:57:54 UTC using RuboCop version 1.23.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
# Offense count: 51
# Configuration parameters: AllowedMethods.
# AllowedMethods: enums
Lint/ConstantDefinitionInBlock:
Enabled: false
# Offense count: 1
Lint/ReturnInVoidContext:
Exclude:
- "lib/rails_admin/support/csv_converter.rb"
# Offense count: 226
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
# IgnoredMethods: refine
Metrics/BlockLength:
Max: 1135
# Offense count: 1
# Configuration parameters: Max, CountKeywordArgs.
Metrics/ParameterLists:
MaxOptionalParameters: 4
# Offense count: 6
Naming/AccessorMethodName:
Exclude:
- "app/controllers/rails_admin/application_controller.rb"
- "app/controllers/rails_admin/main_controller.rb"
- "lib/rails_admin/abstract_model.rb"
# Offense count: 2
# Configuration parameters: EnforcedStyleForLeadingUnderscores.
# SupportedStylesForLeadingUnderscores: disallowed, required, optional
Naming/MemoizedInstanceVariableName:
Exclude:
- "app/controllers/rails_admin/application_controller.rb"
- "lib/rails_admin/config/has_description.rb"
# Offense count: 2
# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
# AllowedNames: at, by, db, id, in, io, ip, of, on, os, pp, to
Naming/MethodParameterName:
Exclude:
- "lib/rails_admin/abstract_model.rb"
- "spec/rails_admin/adapters/mongoid/property_spec.rb"
# Offense count: 1
# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers.
# SupportedStyles: snake_case, normalcase, non_integer
# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339
Naming/VariableNumber:
Exclude:
- "spec/helpers/rails_admin/application_helper_spec.rb"
# Offense count: 11
Style/ClassVars:
Exclude:
- "lib/rails_admin/abstract_model.rb"
- "lib/rails_admin/config.rb"
- "lib/rails_admin/config/actions.rb"
- "lib/rails_admin/config/fields.rb"
- "lib/rails_admin/config/fields/types.rb"
# Offense count: 2
# Configuration parameters: MaxUnannotatedPlaceholdersAllowed, IgnoredMethods.
# SupportedStyles: annotated, template, unannotated
Style/FormatStringToken:
EnforcedStyle: template
# Offense count: 8
# Configuration parameters: MinBodyLength.
Style/GuardClause:
Exclude:
- "app/helpers/rails_admin/main_helper.rb"
- "lib/rails_admin.rb"
- "lib/rails_admin/bootstrap-sass.rb"
- "lib/rails_admin/config.rb"
- "lib/rails_admin/config/actions.rb"
- "lib/rails_admin/config/fields/types/polymorphic_association.rb"
- "lib/rails_admin/config/sections/list.rb"
# Offense count: 2
Style/MissingRespondToMissing:
Exclude:
- "lib/rails_admin/config/model.rb"
- "lib/rails_admin/config/proxyable/proxy.rb"
# Offense count: 17
# Configuration parameters: AllowedMethods.
# AllowedMethods: respond_to_missing?
Style/OptionalBooleanParameter:
Exclude:
- "app/helpers/rails_admin/application_helper.rb"
- "lib/rails_admin/config/fields/types/active_storage.rb"
- "lib/rails_admin/config/fields/types/carrierwave.rb"
- "lib/rails_admin/config/fields/types/dragonfly.rb"
- "lib/rails_admin/config/fields/types/multiple_active_storage.rb"
- "lib/rails_admin/config/fields/types/multiple_carrierwave.rb"
- "lib/rails_admin/config/fields/types/multiple_file_upload.rb"
- "lib/rails_admin/config/fields/types/paperclip.rb"
- "lib/rails_admin/config/has_fields.rb"
- "spec/integration/fields/file_upload_spec.rb"
- "spec/integration/fields/multiple_file_upload_spec.rb"
- "spec/orm/active_record.rb"
- "spec/orm/mongoid.rb"
- "spec/rails_admin/config/fields/types/multiple_file_upload_spec.rb"
# Offense count: 3
# Cop supports --auto-correct.
# Configuration parameters: Mode.
Style/StringConcatenation:
Exclude:
- "app/helpers/rails_admin/application_helper.rb"
- "lib/rails_admin/extensions/paper_trail/auditing_adapter.rb"
# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
# SupportedStyles: single_quotes, double_quotes
Style/StringLiterals:
Exclude:
- "app/helpers/rails_admin/application_helper.rb"
================================================
FILE: .teatro.yml
================================================
project:
platform: rails
stage:
before:
- export CI_DB_ADAPTER=postgresql
- export CI_ORM=active_record
- cp Procfile.teatro Procfile
- cd spec/dummy_app
- cp ../../config/database.yml config/
- bundle install --without development --jobs=3 --retry=3
- ln -sf $PWD/public ../../public
database:
- bundle exec rake db:create db:migrate db:seed
config:
database: postgresql
services:
- postgresql
================================================
FILE: .yardopts
================================================
--no-private
--protected
--markup markdown
-
LICENSE.md
================================================
FILE: Appraisals
================================================
# frozen_string_literal: true
appraise 'rails-6.0' do
gem 'rails', '~> 6.0.0'
gem 'concurrent-ruby', '1.3.4' # Workaround for https://github.com/rails/rails/issues/54260
gem 'psych', '~> 3.3'
gem 'turbo-rails', '< 2.0.8'
group :test do
gem 'cancancan', ['~> 3.0', '< 3.6']
gem 'pundit', '~> 2.1.0'
end
group :active_record do
platforms :jruby do
gem 'activerecord-jdbcmysql-adapter', '~> 60.0'
gem 'activerecord-jdbcpostgresql-adapter', '~> 60.0'
gem 'activerecord-jdbcsqlite3-adapter', '~> 60.0'
end
end
group :mongoid do
gem 'cancancan-mongoid'
gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
gem 'database_cleaner-mongoid', '>= 2.0', require: false
gem 'kaminari-mongoid'
gem 'mongoid', '~> 7.0'
gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
gem 'shrine-mongoid', '~> 1.0'
end
end
appraise 'rails-6.1' do
gem 'rails', '~> 6.1.0'
gem 'concurrent-ruby', '1.3.4' # Workaround for https://github.com/rails/rails/issues/54260
group :active_record do
platforms :jruby do
gem 'activerecord-jdbcmysql-adapter', '~> 61.0'
gem 'activerecord-jdbcpostgresql-adapter', '~> 61.0'
gem 'activerecord-jdbcsqlite3-adapter', '~> 61.0'
end
end
group :mongoid do
gem 'cancancan-mongoid'
gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
gem 'database_cleaner-mongoid', '>= 2.0', require: false
gem 'kaminari-mongoid'
gem 'mongoid', '~> 7.0'
gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
gem 'shrine-mongoid', '~> 1.0'
end
end
appraise 'rails-7.0' do
gem 'rails', '~> 7.0.0', '7.0.8.6' # Pinning until the fix for https://github.com/basecamp/trix/issues/1209 become available in actiontext
gem 'concurrent-ruby', '1.3.4' # Workaround for https://github.com/rails/rails/issues/54260
gem 'importmap-rails', require: false
gem 'nokogiri', '~> 1.16.0', platform: :jruby
group :active_record do
platforms :ruby, :mswin, :mingw, :x64_mingw do
gem 'sqlite3', '~> 1.3'
end
platforms :jruby do
gem 'activerecord-jdbcmysql-adapter', '~> 70.0'
gem 'activerecord-jdbcpostgresql-adapter', '~> 70.0'
gem 'activerecord-jdbcsqlite3-adapter', '~> 70.0'
end
end
group :mongoid do
gem 'cancancan-mongoid'
gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
gem 'database_cleaner-mongoid', '>= 2.0', require: false
gem 'kaminari-mongoid'
gem 'mongoid', '~> 8.0'
gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
gem 'shrine-mongoid', '~> 1.0'
end
end
appraise 'rails-7.1' do
gem 'rails', '~> 7.1.0'
gem 'importmap-rails', require: false
group :active_record do
platforms :ruby, :mswin, :mingw, :x64_mingw do
gem 'sqlite3', '~> 1.3'
end
platforms :jruby do
gem 'activerecord-jdbcmysql-adapter', '~> 71.0'
gem 'activerecord-jdbcpostgresql-adapter', '~> 71.0'
gem 'activerecord-jdbcsqlite3-adapter', '~> 71.0'
end
end
group :mongoid do
gem 'cancancan-mongoid'
gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
gem 'database_cleaner-mongoid', '>= 2.0', require: false
gem 'kaminari-mongoid'
gem 'mongoid', '~> 8.0'
gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
gem 'shrine-mongoid', '~> 1.0'
end
end
appraise 'rails-7.2' do
gem 'rails', '~> 7.2.0'
gem 'importmap-rails', require: false
group :mongoid do
gem 'cancancan-mongoid'
gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
gem 'database_cleaner-mongoid', '>= 2.0', require: false
gem 'kaminari-mongoid'
gem 'mongoid', '~> 8.0'
gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
gem 'shrine-mongoid', '~> 1.0'
end
end
appraise 'rails-8.0' do
gem 'rails', '~> 8.0.0'
gem 'importmap-rails', require: false
group :mongoid do
gem 'cancancan-mongoid'
gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
gem 'database_cleaner-mongoid', '>= 2.0', require: false
gem 'kaminari-mongoid'
gem 'mongoid', '~> 9.0'
gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
gem 'shrine-mongoid', '~> 1.0'
end
end
appraise 'composite_primary_keys' do
gem 'rails', '~> 7.0.0', '7.0.8.6' # Pinning until the fix for https://github.com/basecamp/trix/issues/1209 become available in actiontext
gem 'concurrent-ruby', '1.3.4' # Workaround for https://github.com/rails/rails/issues/54260
group :active_record do
gem 'composite_primary_keys'
platforms :ruby, :mswin, :mingw, :x64_mingw do
gem 'sqlite3', '~> 1.3'
end
end
end
================================================
FILE: CHANGELOG.md
================================================
# RailsAdmin Changelog
## [Unreleased](https://github.com/railsadminteam/rails_admin/tree/HEAD)
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.3.0...HEAD)
## [3.3.0](https://github.com/railsadminteam/rails_admin/tree/v3.3.0) - 2024-12-08
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.1...v3.3.0)
### Added
- Rails 8.0 support ([#3702](https://github.com/railsadminteam/rails_admin/pull/3702))
## [3.2.1](https://github.com/railsadminteam/rails_admin/tree/v3.2.0) - 2024-10-10
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.0...v3.2.1)
### Fixed
- Disable Turbo's prefetch behavior globally, to prevent custom actions unintentionally triggered ([f54a102](https://github.com/railsadminteam/rails_admin/commit/f54a102c6b0a420244ef044503944574ef1dfbd2), [#3701](https://github.com/railsadminteam/rails_admin/issues/3701))
## [3.2.0](https://github.com/railsadminteam/rails_admin/tree/v3.2.0) - 2024-09-08
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.0.rc...v3.2.0)
### Fixed
- Fix polymorphic id doesn't reset properly in an edge case ([7b2ffb1](https://github.com/railsadminteam/rails_admin/commit/7b2ffb12386e06a0e6e0bace6d331fc5af989e38), [#3630](https://github.com/railsadminteam/rails_admin/pull/3630))
## [3.2.0.rc](https://github.com/railsadminteam/rails_admin/tree/v3.2.0.rc) - 2024-08-25
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.0.beta...v3.2.0.rc)
### Added
- ActiveRecord 7.1 composite primary keys support ([53b89c9](https://github.com/railsadminteam/rails_admin/commit/53b89c9161e48c0f9b4ecd5f544398c9360ea50f))
### Changed
- Introduce SingularAssociation and CollectionAssociation to tidy up the view files ([876be11](https://github.com/railsadminteam/rails_admin/commit/876be11ec01237596b2f27e15239e86418ce7610))
### Fixed
- Fix to show a thumbnail of all representable ActiveStorage attachments ([#3656](https://github.com/railsadminteam/rails_admin/pull/3656), [7754ac3](https://github.com/railsadminteam/rails_admin/commit/7754ac34eb8e0af7605b2e52ae0646b17e9bb0c6))
- Fix to detect images properly in FileUpload and MultipleFileUpload field ([35c8702](https://github.com/railsadminteam/rails_admin/commit/35c8702351aa300bddcc950d36d68b80742f5011), [#3633](https://github.com/railsadminteam/rails_admin/pull/3633))
- Fix to reset polymorphic id selection upon type change ([#3630](https://github.com/railsadminteam/rails_admin/pull/3630), [13114e5](https://github.com/railsadminteam/rails_admin/commit/13114e5629d49eab14d58df1319eb068dacedba7))
- Lock jQuery UI version due to incompatibility with 1.14 ([5245d5b](https://github.com/railsadminteam/rails_admin/commit/5245d5bb91691d646219b5243f3f881a0144a3fd), [#3692](https://github.com/railsadminteam/rails_admin/issues/3692))
## [3.2.0.beta](https://github.com/railsadminteam/rails_admin/tree/v3.2.0.beta) - 2024-07-13
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.4...v3.2.0.beta)
### Added
- Allow turbo-rails 2 in gemspec ([#3671](https://github.com/railsadminteam/rails_admin/pull/3671))
- ViteRuby integration ([#3643](https://github.com/railsadminteam/rails_admin/pull/3643), [0e12e5b](https://github.com/railsadminteam/rails_admin/commit/0e12e5b465997c14d5b7a4d500a0d4cebed21aa9))
- Support client-side dynamic scoping ([12715f2](https://github.com/railsadminteam/rails_admin/commit/12715f2dd12d97f0676e548e4271906df424b89d), [#2934](https://github.com/railsadminteam/rails_admin/issues/2934))
- Add support for `%-l` option to Flatpickr ([#3616](https://github.com/railsadminteam/rails_admin/pull/3616))
### Changed
- Handle has_one assignment on the field level, making patched has_one getters/setters unnecessary ([91737ab](https://github.com/railsadminteam/rails_admin/commit/91737ab3c2fa22cbe08aedd28770a12704fde6c7))
### Fixed
- Use require_relative to avoid modifying $LOAD_PATH in gemspec ([#3690](https://github.com/railsadminteam/rails_admin/pull/3690))
- Tidy up trailing whitespace in gem post_install_message ([#3689](https://github.com/railsadminteam/rails_admin/pull/3689))
- Fix enum filter breaking when pre-populated ([d62f604](https://github.com/railsadminteam/rails_admin/commit/d62f604cc8d7d1434f7dfe0c5aca3aaf3dc2547b), [#3651](https://github.com/railsadminteam/rails_admin/issues/3651))
- Fix error on searching or sorting by ActiveStorage field ([dba6c4b](https://github.com/railsadminteam/rails_admin/commit/dba6c4b815fbe4aa4f62a13b660e865a89151838), [#3678](https://github.com/railsadminteam/rails_admin/issues/3678))
- Fix to remove trailing slash from meta tags ([#3672](https://github.com/railsadminteam/rails_admin/pull/3672))
- Fix default config path for ImportmapFormatter being misspelled ([#3676](https://github.com/railsadminteam/rails_admin/pull/3676))
- Fix table names not quoted properly on sorting ([#3652](https://github.com/railsadminteam/rails_admin/pull/3652), [#1631](https://github.com/railsadminteam/rails_admin/issues/1631))
- Fix ActiveStorage/ActionText detection less likely to cause false positives ([073b809](https://github.com/railsadminteam/rails_admin/commit/073b809853b6bc231841e3f8dd9d35875220c616), [#3659](https://github.com/railsadminteam/rails_admin/issues/3659))
- Fix boolean fields in a Mongoid embedded document fails to be updated ([#3555](https://github.com/railsadminteam/rails_admin/pull/3555), [#3554](https://github.com/railsadminteam/rails_admin/issues/3554))
- Fix wrongly referring to `:update_only` in nested fields ([#3649](https://github.com/railsadminteam/rails_admin/pull/3649))
- Fix to use HTML `q` element for better localization support ([#3636](https://github.com/railsadminteam/rails_admin/pull/3636))
- Fix `is_blank` and `is_present` filters breaking for uuid columns ([#3629](https://github.com/railsadminteam/rails_admin/pull/3629), [#3669](https://github.com/railsadminteam/rails_admin/issues/3669))
- Fix polymorphic association target classes not set correctly in subclasses ([2a89ebc](https://github.com/railsadminteam/rails_admin/commit/2a89ebcfa96243697988f6570b9c9be19a7a01b5), [#3631](https://github.com/railsadminteam/rails_admin/issues/3631))
### Security
- Validate `return_to` param using `request.base_url` to prevent arbitrary redirection ([#3627](https://github.com/railsadminteam/rails_admin/pull/3627))
## [3.1.4](https://github.com/railsadminteam/rails_admin/tree/v3.1.4) - 2024-07-09
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.3...v3.1.4)
### Fixed
- Fix [32f91e4](https://github.com/railsadminteam/rails_admin/commit/32f91e4b49205e44d3931c2e36d9f7273384a250) broke fields with HTML tags ([758d249](https://github.com/railsadminteam/rails_admin/commit/758d249d950062be6840f9c96e2a286e02b92a1e), [#3686](https://github.com/railsadminteam/rails_admin/issues/3686#issuecomment-2215491140))
## [3.1.3](https://github.com/railsadminteam/rails_admin/tree/v3.1.3) - 2024-07-06
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.2...v3.1.3)
### Fixed
- Fix bson 5.0 compatibility ([13da4f0](https://github.com/railsadminteam/rails_admin/commit/13da4f0191f5185dadecdfe9e6fc9ca808f7f73d))
- Fix Importmap 2.0 compatibility ([bd0cf97](https://github.com/railsadminteam/rails_admin/commit/bd0cf97530d93dc66577e5d1ea0da2ebf3b57737))
### Security
- Fix XSS vulnerability in the list view ([b5a287d](https://github.com/railsadminteam/rails_admin/commit/b5a287d82e2cbd1737a1a01e11ede2911cce7fef), [GHSA-8qgm-g2vv-vwvc](https://github.com/railsadminteam/rails_admin/security/advisories/GHSA-8qgm-g2vv-vwvc))
## [3.1.2](https://github.com/railsadminteam/rails_admin/tree/v3.1.2) - 2023-03-23
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.1...v3.1.2)
### Fixed
- Fix install failing with importmap setup ([aca22b6](https://github.com/railsadminteam/rails_admin/commit/aca22b6ba1eca1ac618525334cf14fc946e1c99e), [#3609](https://github.com/railsadminteam/rails_admin/issues/3609))
- Fix to show non-eager-loaded models which are explicitly configured ([87c9d5b](https://github.com/railsadminteam/rails_admin/commit/87c9d5bc5b6ffb423e72054b3cfe8f949c12c178), [#3604](https://github.com/railsadminteam/rails_admin/issues/3604))
- Fix `rails_admin.dom_ready` event not triggered with jQuery `on` ([2ee43de](https://github.com/railsadminteam/rails_admin/commit/2ee43deb1fa8d3a9e3ea0e589c1687d684e19ad6), [33773d7](https://github.com/railsadminteam/rails_admin/commit/33773d7f8dd43eeb0f6a7c125c4bee170132e5d2), [#3600](https://github.com/railsadminteam/rails_admin/discussions/3600))
- Restore caching in RailsAdmin::Config::Model#excluded? ([#3587](https://github.com/railsadminteam/rails_admin/pull/3587))
- Optimize/simplify viable_models file path to class name logic ([#3589](https://github.com/railsadminteam/rails_admin/pull/3589))
## [3.1.1](https://github.com/railsadminteam/rails_admin/tree/v3.1.1) - 2022-12-18
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.0...v3.1.1)
### Changed
- Relax Font-Awesome dependency to allow Webpacker users to stay on 5.x ([3a7f348](https://github.com/railsadminteam/rails_admin/commit/3a7f34875248e446b48fd76870f0c337fee6dcf9), [#3565](https://github.com/railsadminteam/rails_admin/issues/3565))
### Removed
- Remove unused glphyicon assets ([#3578](https://github.com/railsadminteam/rails_admin/pull/3578))
### Fixed
- Simplify uses of defined? ([#3561](https://github.com/railsadminteam/rails_admin/pull/3561))
- Define jQuery object in separate file to support esbuild ([#3571](https://github.com/railsadminteam/rails_admin/pull/3571))
- Fix filter box being duplicated on browser back ([c6b1893](https://github.com/railsadminteam/rails_admin/commit/c6b18934cff3db0768836d799ee1bea54045709c), [#3570](https://github.com/railsadminteam/rails_admin/issues/3570))
- Fix sidebar menu expanding horizontally, preventing vertical scroll ([9997c10](https://github.com/railsadminteam/rails_admin/commit/9997c1095066aaac39afb27bf8de705cf6ccb1ef), [#3564](https://github.com/railsadminteam/rails_admin/issues/3564))
## [3.1.0](https://github.com/railsadminteam/rails_admin/tree/v3.1.0) - 2022-11-06
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.0.rc2...v3.1.0)
### Fixed
- Fix to use defer instead of async to ensure script loading order ([2a40976](https://github.com/railsadminteam/rails_admin/commit/2a409764b13a4e23fc848725c604d318e3375484), [#3513](https://github.com/railsadminteam/rails_admin/issues/3513))
- Improve filter method select box appearance ([#3559](https://github.com/railsadminteam/rails_admin/pull/3559))
## [3.1.0.rc2](https://github.com/railsadminteam/rails_admin/tree/v3.1.0.rc2) - 2022-10-02
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.0.rc...v3.1.0.rc2)
### Fixed
- Fix sidebar style broken in attempt to support Bootstrap 5.2 ([d7abba4](https://github.com/railsadminteam/rails_admin/commit/d7abba4e8a2e380b4d7f8fb3b37302300af63de5), [#3553](https://github.com/railsadminteam/rails_admin/issues/3553))
## [3.1.0.rc](https://github.com/railsadminteam/rails_admin/tree/v3.1.0.rc) - 2022-09-22
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.0.beta...v3.1.0.rc)
### Added
- Add ability to limit filter operators ([be9a75e](https://github.com/railsadminteam/rails_admin/commit/be9a75e504edd9a754157a4ddba590e8a5d14149))
- Support filtering has_one associations ([9657774](https://github.com/railsadminteam/rails_admin/commit/9657774b423912357d8ad8a476b644bb4e36dc30))
- Add ability to set default order of PaperTrail versions ([a1c4c67](https://github.com/railsadminteam/rails_admin/commit/a1c4c673041642ae2a2aa07e3f0555e17be9d940), [#3095](https://github.com/railsadminteam/rails_admin/pull/3095))
- Add block-style DSL support for extension adapters ([951b708](https://github.com/railsadminteam/rails_admin/commit/951b70878cb007d54b4a7aeadd708d4c7668727b))
- Make sidebar navigation collapsible ([e8cb8ed](https://github.com/railsadminteam/rails_admin/commit/e8cb8edd39246bf75ed72295b7832faf5056367c), [#3198](https://github.com/railsadminteam/rails_admin/pull/3198))
- Add ability to show a help text under the search box ([94f16fb](https://github.com/railsadminteam/rails_admin/commit/94f16fb5fdfdaa867173e95820583a68e5a306c5))
- Support for ActiveStorage direct uploads ([e13c7e2](https://github.com/railsadminteam/rails_admin/commit/e13c7e23f789ed2a575eff01b75e52a41cc930b7), [#3296](https://github.com/railsadminteam/rails_admin/issues/3296))
### Changed
- Load ActionText assets statically to enable full-featured setup ([458d0fb](https://github.com/railsadminteam/rails_admin/commit/458d0fb56d79d4fa0a252ad1ca715fd0a3b4b900), [#3251](https://github.com/railsadminteam/rails_admin/issues/3251), [#3386](https://github.com/railsadminteam/rails_admin/issues/3386))
- Change ES Module processing not to affect non-RailsAdmin assets ([f8219bf](https://github.com/railsadminteam/rails_admin/commit/f8219bf3bc508c5e42f5d044cf6355a56726f8b2))
- Change RailsAdmin initialization process to evaluate the config block immediately but load constants lazily ([#3541](https://github.com/railsadminteam/rails_admin/pull/3541), [33e9214](https://github.com/railsadminteam/rails_admin/commit/33e92147214975cddace61737cbbde3117663efe))
- Restore the loading indicator back ([32e6b14](https://github.com/railsadminteam/rails_admin/commit/32e6b1463ecf66b38e6fdc7924426d9753d71eab), [b9ee7f0](https://github.com/railsadminteam/rails_admin/commit/b9ee7f0c202abc7c09726bdaa28536e7ec25127e), [#3500](https://github.com/railsadminteam/rails_admin/issues/3500))
### Fixed
- Fix Bootstrap 5.2 compatibility ([ef76fce](https://github.com/railsadminteam/rails_admin/commit/ef76fcea0b23aed04f6568448cd157ccc9ba30a0))
- Fix filtering select widget options being empty on browser back ([3cffc00](https://github.com/railsadminteam/rails_admin/commit/3cffc0002079bc9d515dc0f3b31513c7166aa2b9))
- Fix RailsAdmin widgets not activated after a validation error ([a604da5](https://github.com/railsadminteam/rails_admin/commit/a604da5670378e57da7b5492afad40e4f4ad083d))
- Fix export action didn't use export section for eager loading ([4cc3f30](https://github.com/railsadminteam/rails_admin/commit/4cc3f304cc0bc4a7dbaf41a6e4e12ecbdbba6e22), [#1954](https://github.com/railsadminteam/rails_admin/issues/1954))
- Fix Dart Sass 2.0 division deprecations ([#3544](https://github.com/railsadminteam/rails_admin/pull/3544), [3a177c2](https://github.com/railsadminteam/rails_admin/commit/3a177c2e8c1b1d782186ee5bbb3c0d44cc4c0060))
- Fix unable to focus elements on modals opened from remote forms ([#3539](https://github.com/railsadminteam/rails_admin/pull/3539), [#3538](https://github.com/railsadminteam/rails_admin/issues/3538))
- Improve pagination appearance on smaller screens ([a2e366e](https://github.com/railsadminteam/rails_admin/commit/a2e366e8839c9046b9f9fde219875a05bc1a66bb), [#3516](https://github.com/railsadminteam/rails_admin/issues/3516))
- Fix the value of submit buttons being lost on submission ([60e1150](https://github.com/railsadminteam/rails_admin/commit/60e115053ea34fa42c3099464106cf6e58dbfa03), [#3513](https://github.com/railsadminteam/rails_admin/issues/3513))
- Fix breaking with a has_and_belongs_to_many association with scope given ([c2bf6db](https://github.com/railsadminteam/rails_admin/commit/c2bf6db41a97b46741bc41b56fd9700c8bdfc9e4), [#2067](https://github.com/railsadminteam/rails_admin/issues/2067))
- Fix nested fields don't toggle properly after pushing 'Add a new ...' button ([d1f1154](https://github.com/railsadminteam/rails_admin/commit/d1f115425c4a8d119fdeb37802fe472ae278918d), [#3528](https://github.com/railsadminteam/rails_admin/issues/3528))
## [3.1.0.beta](https://github.com/railsadminteam/rails_admin/tree/v3.1.0.beta) - 2022-06-20
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0...v3.1.0.beta)
### Added
- Support Importmap and Webpack, via [importmap-rails](https://github.com/rails/importmap-rails) / [jsbundling-rails](https://github.com/rails/jsbundling-rails) and [cssbundling-rails](https://github.com/rails/cssbundling-rails) ([#3488](https://github.com/railsadminteam/rails_admin/pull/3488))
- Support [Composite Primary Keys](https://github.com/composite-primary-keys/composite_primary_keys) gem ([#3527](https://github.com/railsadminteam/rails_admin/pull/3527))
- Allow configuration of Navbar css class ([126f7ac](https://github.com/railsadminteam/rails_admin/commit/126f7ac79b2ce7846cbbed7bbca1cc26dfe46fb6), [#3507](https://github.com/railsadminteam/rails_admin/issues/3507))
### Changed
- Update vendorized jQuery to 3.6.0 ([#3524](https://github.com/railsadminteam/rails_admin/pull/3524))
- Enable frozen string literals across the project ([#3483](https://github.com/railsadminteam/rails_admin/pull/3483))
### Fixed
- Fix edit user link in the top navigation pointing to wrong URL ([#3531](https://github.com/railsadminteam/rails_admin/pull/3531))
- Fix MultipleActiveStorage field deleting previous attachments when updating a record in Rails 7.0 ([974c54a](https://github.com/railsadminteam/rails_admin/commit/974c54a2a3372690ca189f6e7e90ce365bcd4ff5), [#3520](https://github.com/railsadminteam/rails_admin/issues/3520))
- Fix remote form submission breaking when used with HTTP/2 ([#3515](https://github.com/railsadminteam/rails_admin/pull/3515))
- Fix to maintain 2.x hover / active behavior for side navigation links ([#3511](https://github.com/railsadminteam/rails_admin/pull/3511))
- Fix default sort by behavior when `list.sort_by` points to a field with a table reference for `:sortable` ([#3509](https://github.com/railsadminteam/rails_admin/pull/3509), [9959925](https://github.com/railsadminteam/rails_admin/commit/9959925e49812d6fdaf7341ede4b1d66d926e8d8))
- Fix to insert whitespace after sidebar navigation icon to maintain visual consistency ([#3504](https://github.com/railsadminteam/rails_admin/pull/3504))
- Fix orderable multiselect buttons not rendered correctly ([#3506](https://github.com/railsadminteam/rails_admin/pull/3506))
- Fix to use badges instead of labels, which are removed in Bootstrap 5 ([#3503](https://github.com/railsadminteam/rails_admin/pull/3503))
## [3.0.0](https://github.com/railsadminteam/rails_admin/tree/v3.0.0) - 2022-03-21
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.rc4...v3.0.0)
### Fixed
- Fix table sorting not working ([83a0c88](https://github.com/railsadminteam/rails_admin/commit/83a0c889f1de38a0b24c412b0f0f7484add86b29), [#3497](https://github.com/railsadminteam/rails_admin/issues/3497))
- Fix reset button by the query box not working ([4a583e9](https://github.com/railsadminteam/rails_admin/commit/4a583e924c5bef6bfc46d6a49ab751c2323ba23e))
## [3.0.0.rc4](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.rc4) - 2022-03-13
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.rc3...v3.0.0.rc4)
### Added
- Instruct users on potential issues with npm package installation ([2b0594c](https://github.com/railsadminteam/rails_admin/commit/2b0594c6824eb4eed217cbab9477639b61eb99db), [c7a74f1](https://github.com/railsadminteam/rails_admin/commit/c7a74f1ce7a040b8c87b24fe1907ddd9088bf1e5))
### Changed
- Upgrade vendorized Flatpickr to 4.6.11 ([7f8c831](https://github.com/railsadminteam/rails_admin/commit/7f8c831b9aa407987ba89191c21040e2e72e366e))
### Fixed
- Fix not utilizing full browser width after Bootstrap 5 upgrade ([#3493](https://github.com/railsadminteam/rails_admin/pull/3493))
- Fix the style for show views broken on Bootstrap 5 upgrade ([#3491](https://github.com/railsadminteam/rails_admin/pull/3491))
- Fix Pundit 2.2 deprecation for not using Pundit::Authorization ([e38eb46](https://github.com/railsadminteam/rails_admin/commit/e38eb46ffe79cd866c34b837dd4cfbb65361558f))
- Fix JS issues when navigating across the main app and RailsAdmin ([eb4a185](https://github.com/railsadminteam/rails_admin/commit/eb4a18558e9d8c69aeea3fd733f5dc251f3f79f9), [#3484](https://github.com/railsadminteam/rails_admin/pull/3484))
## [3.0.0.rc3](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.rc3) - 2022-02-27
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.rc2...v3.0.0.rc3)
### Fixed
- Fix the style of list scope tabs ([#3477](https://github.com/railsadminteam/rails_admin/pull/3477))
- Fix rake tasks executed twice ([7d56cd6](https://github.com/railsadminteam/rails_admin/commit/7d56cd6af2d468cca44af5211559af0e744f5cb4))
- Fix the style of the header user link when show_gravatar is false ([#3475](https://github.com/railsadminteam/rails_admin/pull/3475))
- Fix 'Cancel' button for delete/bulk_delete action also didn't work ([1fa8486](https://github.com/railsadminteam/rails_admin/commit/1fa8486ead39596e9e0ac62a945fb0aed63929a8), [#3468](https://github.com/railsadminteam/rails_admin/issues/3468))
- Fix failing to export after introducing Turbo Drive ([c749d93](https://github.com/railsadminteam/rails_admin/commit/c749d939e29434937e8558bcb1f3e219fe98c69d), [#3461 (comment)](https://github.com/railsadminteam/rails_admin/pull/3461#issuecomment-1048588801))
## [3.0.0.rc2](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.rc2) - 2022-02-20
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.rc...v3.0.0.rc2)
### Added
- Some improvements to make the upgrade process more friendlier ([#3471](https://github.com/railsadminteam/rails_admin/pull/3471), [3771542](https://github.com/railsadminteam/rails_admin/commit/377154268257d3753093dcd3dd2fd79b7438b9aa), [3b04a96](https://github.com/railsadminteam/rails_admin/commit/3b04a9616169d568b1a6cee26becf9bfea0ee386))
### Fixed
- Fix 'Save and add another', 'Save and edit', 'Cancel' buttons didn't work right ([ac0a563](https://github.com/railsadminteam/rails_admin/commit/ac0a563a0bf91bf33c693e19717148ed77f843fd), [#3468](https://github.com/railsadminteam/rails_admin/issues/3468))
- Fix failing to precompile assets when the database connection is unavailable ([#3470](https://github.com/railsadminteam/rails_admin/pull/3470), [#3469](https://github.com/railsadminteam/rails_admin/issues/3469))
- Fix custom theme overrides not working ([3d7f3b3](https://github.com/railsadminteam/rails_admin/commit/3d7f3b33a1ca6fabbd8606bb178babae930cce25), [#3466](https://github.com/railsadminteam/rails_admin/issues/3466))
## [3.0.0.rc](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.rc) - 2022-02-06
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.beta2...v3.0.0.rc)
### Added
- Support Mongoid's Storage Field Names ([cefa23c](https://github.com/railsadminteam/rails_admin/commit/cefa23c9d23d06dc1134228e142e6f0aa4655c54), [#1745](https://github.com/railsadminteam/rails_admin/issues/1745))
- Allow save/delete operations to be disabled based on an object's `#read_only?` status ([9cd7541](https://github.com/railsadminteam/rails_admin/commit/9cd7541a2e6af4ae4941b200840a1474baeb2f06), [#1684](https://github.com/railsadminteam/rails_admin/issues/1684))
- Allow customizing model's last created time ([d6d380a](https://github.com/railsadminteam/rails_admin/commit/d6d380a02e955c3b14ff7dc30f1809a2a6cd0f47), [#3010](https://github.com/railsadminteam/rails_admin/issues/3010))
- Add ability to hide the dashboard history section ([#3189](https://github.com/railsadminteam/rails_admin/pull/3189))
- Add model scope configuration option, which enables 'unscoped' mode ([8d905f9](https://github.com/railsadminteam/rails_admin/commit/8d905f9e2f1102e8addf324b496720e3fd47bf1d), [#1348](https://github.com/railsadminteam/rails_admin/issues/1348))
### Changed
- Switch from pjax to Turbo Drive, due to pjax's low maintenance activity ([#3461](https://github.com/railsadminteam/rails_admin/pull/3461), [#3435](https://github.com/railsadminteam/rails_admin/pull/3435))
- Upgrade Bootstrap to 5.1.3 ([#3455](https://github.com/railsadminteam/rails_admin/pull/3455), [#3083](https://github.com/railsadminteam/rails_admin/issues/3083))
- Switch datetime picker library to Flatpickr ([#3455](https://github.com/railsadminteam/rails_admin/pull/3455))
### Removed
- Drop support for Ruby 2.5 ([#3430](https://github.com/railsadminteam/rails_admin/pull/3430))
- Remove Sections::List#sort_reverse because of having very limited usecase ([0c7bc61](https://github.com/railsadminteam/rails_admin/commit/0c7bc6124a189e5307f2bd1f960dd06495932d10), [#1181](https://github.com/railsadminteam/rails_admin/issues/1181))
### Fixed
- Fix failing to detect encoding with JDBC MySQL adapter ([0dfe2e4](https://github.com/railsadminteam/rails_admin/commit/0dfe2e4d1301cc353f972b28ab19554a53cad482))
- Fix unable to start app when using redis-session-store ([#3462](https://github.com/railsadminteam/rails_admin/pull/3462))
- Fix ActiveRecord ObjectExtension has_one setter breaks with custom primary key class ([0e2e0e4](https://github.com/railsadminteam/rails_admin/commit/0e2e0e4e24328a063813a3a5266a15faee7960c8), [#3460](https://github.com/railsadminteam/rails_admin/issues/3460))
- Fix inheritance of parent_controller not updated properly when controllers were eagerly loaded ([#3458](https://github.com/railsadminteam/rails_admin/pull/3458))
- Fix to retrieve actions correctly in the action `#bulk_action` ([#3407](https://github.com/railsadminteam/rails_admin/pull/3407))
- Fix issue when RailsAdmin::MainController needs to dispatch a method call using `#respond_to_missing?` ([da51b91](https://github.com/railsadminteam/rails_admin/commit/da51b91f712b235c0c6e2a120724fcb31ff28168), [#3454](https://github.com/railsadminteam/rails_admin/issues/3454))
- Fix modal foreign keys are not prepopulated unless the association inverse_of is configured ([75504d0](https://github.com/railsadminteam/rails_admin/commit/75504d08ee6197a3a2c72a56ea30f01272b1d28b), [#2585](https://github.com/railsadminteam/rails_admin/issues/2585))
## [3.0.0.beta2](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.beta2) - 2021-12-25
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.beta...v3.0.0.beta2)
### Fixed
- Fix NameError 'uninitialized constant RailsAdmin::Version' on install ([d2ad520](https://github.com/railsadminteam/rails_admin/commit/d2ad5209f98d8678c6317b49f13727b8605048b3), [#3452](https://github.com/railsadminteam/rails_admin/issues/3452))
## [3.0.0.beta](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.beta) - 2021-12-20
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.2.1...v3.0.0.beta)
### Added
- Rails 7.0.0 support ([011b9ae](https://github.com/railsadminteam/rails_admin/commit/011b9aea12d2c3a5e8654786e49071254baacf18), [670d803](https://github.com/railsadminteam/rails_admin/commit/670d803c262429600c6eb7f59f8b36aa145081e5))
- Webpacker support ([#3414](https://github.com/railsadminteam/rails_admin/pull/3414))
- Add #link_target to action configuration ([#3419](https://github.com/railsadminteam/rails_admin/pull/3419))
- Add not like (=does not contain) operator ([#3410](https://github.com/railsadminteam/rails_admin/pull/3410))
- Support for PostgreSQL citext data type ([#3413](https://github.com/railsadminteam/rails_admin/pull/3413), [#2177](https://github.com/railsadminteam/rails_admin/issues/2177))
- Allow #configure to handle multiple fields for a section at once ([#3406](https://github.com/railsadminteam/rails_admin/pull/3406), [#2667](https://github.com/railsadminteam/rails_admin/issues/2667))
- Add has_one id setters/getters, eliminating the need for explicitly defining them ([42f0a5f](https://github.com/railsadminteam/rails_admin/commit/42f0a5f5aac4b7481dcd4950803d12077b598ce5), [#2625](https://github.com/railsadminteam/rails_admin/issues/2625))
- Support for Mongoid's has_and_belongs_to_many custom primary_key ([3f67637](https://github.com/railsadminteam/rails_admin/commit/3f676371ce7fc088220095afa12d3e20c2c6123a), [#3097](https://github.com/railsadminteam/rails_admin/pull/3097))
- Support for eager-loading arbitrary associations ([4404758](https://github.com/railsadminteam/rails_admin/commit/44047580b7d536a84a92c173a3bd00dc9d211399), [#2928](https://github.com/railsadminteam/rails_admin/issues/2928))
- Support for nullable boolean field ([7583369](https://github.com/railsadminteam/rails_admin/commit/7583369a1d1763e542d36930a968726425cacb6c), [#3145](https://github.com/railsadminteam/rails_admin/issues/3145))
- Support for configuration reload in development mode ([e4ae669](https://github.com/railsadminteam/rails_admin/commit/e4ae6698e52e56a1cefdf5c4097b29b8306f21e2), [#2726](https://github.com/railsadminteam/rails_admin/issues/2726), [08f50aa](https://github.com/railsadminteam/rails_admin/commit/08f50aabc1922aeb289ced4ccbe9f983bc1aaa89), [#3420](https://github.com/railsadminteam/rails_admin/issues/3420))
- Add 'No objects found' placeholder in filtering-select as well ([7e3a1a6](https://github.com/railsadminteam/rails_admin/commit/7e3a1a632811a917f2cbd8dbe471861bc0a1ac85), [#3332](https://github.com/railsadminteam/rails_admin/issues/3332))
- Add inline_edit to HasManyAssociation as well ([798ab1b](https://github.com/railsadminteam/rails_admin/commit/798ab1b6ae400f2b853441a9fa48f8e7ad24208d), [#1911](https://github.com/railsadminteam/rails_admin/issues/1911))
- Add hover highlight to the list table for better visibility ([#3221](https://github.com/railsadminteam/rails_admin/pull/3221))
- Add ability to show disabled actions, as well as completely hiding ([6c877ea](https://github.com/railsadminteam/rails_admin/commit/6c877eac1a052881b2d4950a44d41f7fd77b044f), [#1765](https://github.com/railsadminteam/rails_admin/issues/1765))
- Add the message 'no records found' when a list is empty ([#3365](https://github.com/railsadminteam/rails_admin/pull/3365), [a5fe6f8](https://github.com/railsadminteam/rails_admin/commit/a5fe6f806498975a91ae11544ce21310592774a2), [#3329](https://github.com/railsadminteam/rails_admin/issues/3329))
- Add a way to clear belongs_to selection using mouse ([ac3fe35](https://github.com/railsadminteam/rails_admin/commit/ac3fe35b65e858a3b528a523e1b6fbeafe1d359b), [#2090](https://github.com/railsadminteam/rails_admin/issues/2090))
- Add HTML5 validation for float-like field types ([#3378](https://github.com/railsadminteam/rails_admin/pull/3378), [#3289](https://github.com/railsadminteam/rails_admin/issues/3289))
### Changed
- Remove horizontal pagination and always use sidescroll view for list action table ([d51e943](https://github.com/railsadminteam/rails_admin/commit/d51e94314de4b510df0767a695d5953bb7b3fad5))
- Replace image assets with Font Awesome icons ([a0a568b](https://github.com/railsadminteam/rails_admin/commit/a0a568bc866158382b52ec24639699695146794c))
- Switch templates from HAML to ERB ([#3425](https://github.com/railsadminteam/rails_admin/pull/3425), [#3439](https://github.com/railsadminteam/rails_admin/pull/3439), [#3173](https://github.com/railsadminteam/rails_admin/issues/3173))
- Rewrite some JavaScript code not to use jQuery ([#3416](https://github.com/railsadminteam/rails_admin/pull/3416), [#3417](https://github.com/railsadminteam/rails_admin/pull/3417))
- Upgrade FontAwesome to 5.15.4 ([cb1ac73](https://github.com/railsadminteam/rails_admin/commit/cb1ac732c4df85cc082c4e40f2c8a7d144ceb9f2))
- Stop using AbstractObject and use raw model instances with extension ([af88091](https://github.com/railsadminteam/rails_admin/commit/af88091d11590dc95df4866c62fba0c49a7bb9a8), [#2847](https://github.com/railsadminteam/rails_admin/issues/2847))
- Switch from jquery_ujs to rails-ujs ([#3390](https://github.com/railsadminteam/rails_admin/pull/3390), [dea63f4](https://github.com/railsadminteam/rails_admin/commit/dea63f49ee18644ee5e8dee1fb57e0c742d27a97))
- Make colorpicker field use HTML5 native color picker ([#3387](https://github.com/railsadminteam/rails_admin/pull/3387))
- Change to use ISO 8601 time format for browser-server communication, instead of localized value ([01e8d5f](https://github.com/railsadminteam/rails_admin/commit/01e8d5fc8ec94e68af6fdbd80759a751cd83f74a), [#3344](https://github.com/railsadminteam/rails_admin/issues/3344))
### Removed
- Remove dependency for builder and remotipart ([#3427](https://github.com/railsadminteam/rails_admin/pull/3427), [58b76d1](https://github.com/railsadminteam/rails_admin/commit/58b76d1e66ec06b752567da9c118f611105ff39f))
- Remove capitalization helper, letting I18n to perform necessary transformation ([#3396](https://github.com/railsadminteam/rails_admin/pull/3396))
- Remove jQuery Migrate ([#3389](https://github.com/railsadminteam/rails_admin/pull/3389), [b385d4d](https://github.com/railsadminteam/rails_admin/commit/b385d4d50f372de65d8c6c33a4b8256403894483))
- Remove the legacy history adapter([#3374](https://github.com/railsadminteam/rails_admin/issues/3374), [b627580](https://github.com/railsadminteam/rails_admin/commit/b62758039308872e7abe91a51715e1608bfd0915))
- Drop support for Ruby < 2.5 and Rails 5.x([decf428](https://github.com/railsadminteam/rails_admin/commit/decf4280183b8b6a453aa802942fc825524c2f13), [17e20b6](https://github.com/railsadminteam/rails_admin/commit/17e20b6daef1708598ab8cff5678501f8bac4709))
### Fixed
- Reduce object allocations when rendering main navigation menu ([#3412](https://github.com/railsadminteam/rails_admin/pull/3412))
- Fix N+1 queries for ActiveStorage attachments ([e4d5b2f](https://github.com/railsadminteam/rails_admin/commit/e4d5b2f3bece0f5f3e5f588e20e52031ad33e124), [#3282](https://github.com/railsadminteam/rails_admin/issues/3282))
- Fix to convert DateTime format for Moment.js as much as possible ([6d5c049](https://github.com/railsadminteam/rails_admin/commit/6d5c049124d0b390f4612e8e6524f00500afe52e), [#2736](https://github.com/railsadminteam/rails_admin/issues/2736), [#3009](https://github.com/railsadminteam/rails_admin/issues/3009))
- Fix config.parent_controller to work after the class loading ([5bd9805](https://github.com/railsadminteam/rails_admin/commit/5bd980564a565906a6fda87d2ef31590d3e3b0a5), [#2790](https://github.com/railsadminteam/rails_admin/issues/2790))
- Fix NoMethodError when Mongoid's raise_not_found_error is false ([973bd8e](https://github.com/railsadminteam/rails_admin/commit/973bd8e50591a538841575c33b6221706481dae3), [#2623](https://github.com/railsadminteam/rails_admin/issues/2623))
- Fix NoMethodError "undefined method 'has_one_attached'" ([e4ae669](https://github.com/railsadminteam/rails_admin/commit/e4ae6698e52e56a1cefdf5c4097b29b8306f21e2), [#3025](https://github.com/railsadminteam/rails_admin/issues/3025))
- Fix NoMethodError "undefined method `label' for nil:NilClass" on export ([f2104b5](https://github.com/railsadminteam/rails_admin/commit/f2104b595930491a18ede44c9e1a8c881a0316b8), [#1685](https://github.com/railsadminteam/rails_admin/issues/1685))
- Fix Kaminari's custom param_name was not used in history_index and history_show ([#3227](https://github.com/railsadminteam/rails_admin/pull/3227), [#3400](https://github.com/railsadminteam/rails_admin/pull/3400))
- Fix Gravater and email were not shown when the current user is not editable ([bd44929](https://github.com/railsadminteam/rails_admin/commit/bd449292088cb68aad22b282b6344778862187e5), [#3237](https://github.com/railsadminteam/rails_admin/issues/3237))
- Fix RailsAdmin::Config.reset didn't clear the effect of previous included_models/excluded_models ([1190d51](https://github.com/railsadminteam/rails_admin/commit/1190d510ee73949af618bd279e4712f1be4550b6), [#3305](https://github.com/railsadminteam/rails_admin/issues/3305))
- Fix duplication of filtering-multiselect on browser back ([3c10b09](https://github.com/railsadminteam/rails_admin/commit/3c10b0918b65e64624f06ebd5e402181f478cc64), [#3211](https://github.com/railsadminteam/rails_admin/issues/3211))
- Fix no error message is shown on failure with dependent: :restrict_with_error ([bf353cc](https://github.com/railsadminteam/rails_admin/commit/bf353cc76d6e56d511e9c5a87d0ffbd83669e3f2), [#3323](https://github.com/railsadminteam/rails_admin/issues/3223))
- Fix read-only associations are shown empty if it has no value ([7580f33](https://github.com/railsadminteam/rails_admin/commit/7580f3366a6e4a16b439de7fd64860fe26628ad7), [#2681](https://github.com/railsadminteam/rails_admin/issues/2681))
- Fix hidden fields taking up some space ([5aaee51](https://github.com/railsadminteam/rails_admin/commit/5aaee5153441fd82854a998ac02ebbe303b82bf2), [#3380](https://github.com/railsadminteam/rails_admin/issues/3380))
- Fix to show validation errors in modals ([f67defb](https://github.com/railsadminteam/rails_admin/commit/f67defb55ad9d1a1fe8428029c947bcd00b5ce8a), [#1735](https://github.com/railsadminteam/rails_admin/issues/1735))
- Fix image file detection by using Mime::Type ([#3398](https://github.com/railsadminteam/rails_admin/pull/3398), [#3239](https://github.com/railsadminteam/rails_admin/issues/3239))
- Fix 'no objects' message not showing up in filtering-multiselect widget ([aa5545c](https://github.com/railsadminteam/rails_admin/commit/aa5545c928ce0de80142966c19b64be76d88286f))
- Fix 'Delete Image' translation does not work well in some languages ([#3382](https://github.com/railsadminteam/rails_admin/pull/3382), [#3260](https://github.com/railsadminteam/rails_admin/issues/3260))
- Fix polymorphic associations don't work with namespaced classes ([#3377](https://github.com/railsadminteam/rails_admin/pull/3377), [#3376](https://github.com/railsadminteam/rails_admin/issues/3376))
- Fix Boolean pretty_value to include default fallback ([#3379](https://github.com/railsadminteam/rails_admin/pull/3379))
- Fix history#index not supporting models with custom version classes ([ed19f9e](https://github.com/railsadminteam/rails_admin/commit/ed19f9e793b91de1c2bc9133e026b0396e6ec777))
- Fix models stored in eager_load_paths are not picked up by #viable_models ([#3373](https://github.com/railsadminteam/rails_admin/issues/3373), [238f18e](https://github.com/railsadminteam/rails_admin/commit/238f18ee2386f9858670b7995dcb628b8fe6bde9))
- Fix polymorphic associations don't work with namespaced classes([#3376](https://github.com/railsadminteam/rails_admin/issues/3376))
## [2.2.1](https://github.com/railsadminteam/rails_admin/tree/v2.2.0) - 2021-08-08
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.2.0...v2.2.1)
### Fixed
- Fix missing select options for single-select enum filters([#3372](https://github.com/railsadminteam/rails_admin/pull/3372))
## [2.2.0](https://github.com/railsadminteam/rails_admin/tree/v2.2.0) - 2021-07-24
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.1.1...v2.2.0)
### Added
- Support for PaperTrail's alternative versions association name([#3354](https://github.com/railsadminteam/rails_admin/pull/3354))
### Changed
- Update jQuery to 3.x with introducing jQuery.migrate([#3348](https://github.com/railsadminteam/rails_admin/pull/3348), [973dee06](https://github.com/railsadminteam/rails_admin/commit/973dee065938a58d1aef4119a4bc90ac15792421), [#3370](https://github.com/railsadminteam/rails_admin/pull/3370))
- Update Moment.js to 2.29.1([#3348](https://github.com/railsadminteam/rails_admin/pull/3348), [973dee06](https://github.com/railsadminteam/rails_admin/commit/973dee065938a58d1aef4119a4bc90ac15792421), [7962a194](https://github.com/railsadminteam/rails_admin/commit/7962a19469a709c00f481a50a6d1e7ddd1e37cc6))
- Update Bootstrap to 3.4.1([#3348](https://github.com/railsadminteam/rails_admin/pull/3348), [973dee06](https://github.com/railsadminteam/rails_admin/commit/973dee065938a58d1aef4119a4bc90ac15792421))
- Update Bootstrap Datetime Picker to 4.17.49([7962a194](https://github.com/railsadminteam/rails_admin/commit/7962a19469a709c00f481a50a6d1e7ddd1e37cc6))
### Removed
- Remove unnecessary devise patch([#3352](https://github.com/railsadminteam/rails_admin/pull/3352))
### Fixed
- Zeitwerk incompatibility([#3190](https://github.com/railsadminteam/rails_admin/issues/3328), [97ccc289](https://github.com/railsadminteam/rails_admin/commit/97ccc28940d65fee53b30c409c49032fbb0885db))
## [2.1.1](https://github.com/railsadminteam/rails_admin/tree/v2.1.1) - 2021-03-14
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.1.0...v2.1.1)
### Fixed
- Fix AbstractObject's proxying was incompatible with keyword arguments in Ruby 3.0 ([#3342](https://github.com/railsadminteam/rails_admin/issues/3342))
## [2.1.0](https://github.com/railsadminteam/rails_admin/tree/v2.1.0) - 2021-02-28
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.0.2...v2.1.0)
### Added
- Ability to set default filter operator for fields ([#3318](https://github.com/railsadminteam/rails_admin/pull/3318))
- Shrine 3.x support ([#3257](https://github.com/railsadminteam/rails_admin/pull/3257))
- Rails 6.1 compatibility ([f0c46f1e](https://github.com/railsadminteam/rails_admin/commit/f0c46f1e128b5d31d812ff3a80d15db8692c848b))
### Fixed
- Some translation entries of filtering-multiselect weren't localizable ([#3315](https://github.com/railsadminteam/rails_admin/pull/3315))
- Thumbnail generation breaks when used with ActiveStorage 6.x and ruby-vips ([#3255](https://github.com/railsadminteam/rails_admin/pull/3255), [2dba791c](https://github.com/railsadminteam/rails_admin/commit/2dba791c9135b3202d662f90fac443d282869bd6))
- Hide present/blank filter options for required fields ([#3340](https://github.com/railsadminteam/rails_admin/pull/3340))
- Fix to show correct filename for multiple attachments ([#3295](https://github.com/railsadminteam/rails_admin/pull/3295))
- Fix encoding detection was incompatible with DB connection proxies like active_record_host_pool gem ([#3313](https://github.com/railsadminteam/rails_admin/pull/3313))
- Fix hidden fields breaking indentation ([#3278](https://github.com/railsadminteam/rails_admin/pull/3278), [#2487](https://github.com/railsadminteam/rails_admin/issues/2487))
### Removed
- Remove `yell_for_non_accessible_fields` option since it has no effect since 0.5.0 ([#3249](https://github.com/railsadminteam/rails_admin/pull/3249))
## [2.0.2](https://github.com/railsadminteam/rails_admin/tree/v2.0.2) - 2020-03-17
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.0.1...v2.0.2)
### Fixed
- Fix to use I18n to translate the button 'Reset filters'([#3248](https://github.com/railsadminteam/rails_admin/pull/3248))
### Security
- Fix XSS vulnerability in nested forms([d72090ec](https://github.com/railsadminteam/rails_admin/commit/d72090ec6a07c3b9b7b48ab50f3d405f91ff4375))
## [2.0.1](https://github.com/railsadminteam/rails_admin/tree/v2.0.1) - 2019-12-31
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.0.0...v2.0.1)
### Fixed
- Fix Zeitwerk incompatible behavior of autoloading constants during initialization([#3190](https://github.com/railsadminteam/rails_admin/issues/3190), [e275012b](https://github.com/railsadminteam/rails_admin/commit/e275012b630453cb1187e71a938382a3c5d3ef39))
- Fix empty fields being hidden regardless of `compact_show_view`([#3213](https://github.com/railsadminteam/rails_admin/pull/3213))
- Fix `filter_scope` not using `default_search_operator` as default([#3212](https://github.com/railsadminteam/rails_admin/pull/3212))
- Fix PaperTrail integration returning `nil` as username instead of `whodunnit`([#3210](https://github.com/railsadminteam/rails_admin/pull/3210))
- Fix Sprockets 4 incompatibility of vendorized Fontawesome([#3204](https://github.com/railsadminteam/rails_admin/issues/3204), [#3207](https://github.com/railsadminteam/rails_admin/pull/3207))
### Security
- Update moment.js to 2.24.0 to address security vulnerability([#3182](https://github.com/railsadminteam/rails_admin/issues/3182), [#3201](https://github.com/railsadminteam/rails_admin/pull/3201))
## [2.0.0](https://github.com/railsadminteam/rails_admin/tree/v2.0.0) - 2019-08-18
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.0.0.rc...v2.0.0)
### Fixed
- Fix support for belongs_to with custom primary key was broken in 2.0.0.rc([#3184](https://github.com/railsadminteam/rails_admin/issues/3184), [0e92ca43](https://github.com/railsadminteam/rails_admin/commit/0e92ca43fe7782a8d62ae9285a8d3de7857c9853))
- Fix missing translation `en.admin.misc.ago`([#3180](https://github.com/railsadminteam/rails_admin/pull/3180))
## [2.0.0.rc](https://github.com/railsadminteam/rails_admin/tree/v2.0.0.rc) - 2019-08-04
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.0.0.beta...v2.0.0.rc)
### Added
- Add Support for CarrierWave 2.0 multiple file upload's keep, append and reorder feature([fb093e04](https://github.com/railsadminteam/rails_admin/commit/fb093e04502e7bff30594f5baf1227abb7199384))
- Add ability to configure way how custom actions show up in root/top/sidebar navigation([#2844](https://github.com/railsadminteam/rails_admin/pull/2844))
### Changed
- [BREAKING CHANGE] Stop authorization adapters assigning attributes on create and update, just check for permission instead([#3120](https://github.com/railsadminteam/rails_admin/pull/3120), [c84d1703](https://github.com/railsadminteam/rails_admin/commit/c84d1703b47b396382d152471dac8fc8dc41aefd))
- [BREAKING CHANGE] Do not show tableless models by default([#3157](https://github.com/railsadminteam/rails_admin/issues/3157), [87b38b33](https://github.com/railsadminteam/rails_admin/commit/87b38b336cc668a74803dec4628215e2e2941248))
- [BREAKING CHANGE] Convert empty string into nil for nullable string-like fields to achieve uniqueness-index friendliness([#2099](https://github.com/railsadminteam/rails_admin/issues/2099), [#3172](https://github.com/railsadminteam/rails_admin/issues/3172), [3f9ab1cc](https://github.com/railsadminteam/rails_admin/commit/3f9ab1cc009caa8b466f34da692c3561da2235e4))
- Extract head from application template for ease of customization([#3114](https://github.com/railsadminteam/rails_admin/pull/3114))
- Rename `delete_key` to `delete_value`, used to identify which file to delete in multiple file upload([8b8c3a44](https://github.com/railsadminteam/rails_admin/commit/8b8c3a44177465823128e9b48b11467ccf7db001))
- Get rid of CoffeeScript, use plain JavaScript instead([#3111](https://github.com/railsadminteam/rails_admin/issues/3111), [#3168](https://github.com/railsadminteam/rails_admin/pull/3168))
- Replace sass-rails with sassc-rails([#3156](https://github.com/railsadminteam/rails_admin/pull/3156))
### Removed
- Drop support for CanCan, please use its successor CanCanCan([6b7495f1](https://github.com/railsadminteam/rails_admin/commit/6b7495f1454e30027a9d77b911206cc7703170a3))
- Drop support for CanCanCan legacy `can :dashboard` style dashboard ability notation([5bebac24](https://github.com/railsadminteam/rails_admin/commit/5bebac2488906f3739717108efadedaa091ccaf5))
- Drop Refile support due to maintenance inactivity([25ae06a9](https://github.com/railsadminteam/rails_admin/commit/25ae06a9a6eb534afa4a5f17e64ca346086bb3b8))
### Fixed
- Fix PaperTrail pagination breaks when Kaminari's `page_method_name` is set([#3170](https://github.com/railsadminteam/rails_admin/issues/3170), [136b943c](https://github.com/railsadminteam/rails_admin/commit/136b943ce842eba6b0a13dc2956ddc9ce20d006c))
- Fix failing to pass config location to CKEditor([#3162](https://github.com/railsadminteam/rails_admin/issues/3162), [c38b76d7](https://github.com/railsadminteam/rails_admin/commit/c38b76d707f198be0ac8baa1ff02dde7bd02344f))
- Fix CarrierWave multiple file uploader breaking when used with Fog([#3070](https://github.com/railsadminteam/rails_admin/issues/3070))
- Fix placeholder being picked up as a selection in filtering-multiselect([#2807](https://github.com/railsadminteam/rails_admin/issues/2807), [15502601](https://github.com/railsadminteam/rails_admin/commit/15502601ccd0bbbaeb364a0ee605f360d65c5cbb))
- Fix breaking with has_many and custom primary key([#1878](https://github.com/railsadminteam/rails_admin/issues/1878), [be7d2f4a](https://github.com/railsadminteam/rails_admin/commit/be7d2f4a3ad1fda788f92a0e0dd4a83b98f141f4))
- Fix to choose right LIKE statement in per-model basis([#1676](https://github.com/railsadminteam/rails_admin/issues/1676), [4ea4575e](https://github.com/railsadminteam/rails_admin/commit/4ea4575e934e26cec4a5b214b9fe68cb96b40247))
- Fix polymorphic associations not using STI base classes for polymorphic type([#2136](https://github.com/railsadminteam/rails_admin/pull/2136))
### Security
- Add `rel="noopener"` to all `target="_blank"` links to prevent Reverse tabnabbing([#2960](https://github.com/railsadminteam/rails_admin/issues/2960), [#3169](https://github.com/railsadminteam/rails_admin/pull/3169))
## [2.0.0.beta](https://github.com/railsadminteam/rails_admin/tree/v2.0.0.beta) - 2019-06-08
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.4.2...v2.0.0.beta)
### Added
- Rails 6 support([#3122](https://github.com/railsadminteam/rails_admin/pull/3122))
- ActionText support([#3144](https://github.com/railsadminteam/rails_admin/issues/3144), [Wiki](https://github.com/railsadminteam/rails_admin/wiki/ActionText))
- sass-rails 6 support([#3129](https://github.com/railsadminteam/rails_admin/issues/3129))
- Sidescroll feature([#3017](https://github.com/railsadminteam/rails_admin/pull/3017), [Wiki](https://github.com/railsadminteam/rails_admin/wiki/Horizontally-scrolling-table-with-frozen-columns-in-list-view))
- Custom search feature([#343](https://github.com/railsadminteam/rails_admin/issues/343), [#3019](https://github.com/railsadminteam/rails_admin/pull/3019), [Wiki](https://github.com/railsadminteam/rails_admin/wiki/Custom-Search))
- Filtering-select feature for polymorphic association([#2886](https://github.com/railsadminteam/rails_admin/pull/2886))
- Shrine support([#3081](https://github.com/railsadminteam/rails_admin/pull/3081))
- Flexibility for localication of _time_ ago([#3135](https://github.com/railsadminteam/rails_admin/pull/3135), [49add741](https://github.com/railsadminteam/rails_admin/commit/49add7413794e2a1423b86399ef476414d22970f))
### Changed
- Vendorize font-awesome to allow using different version in app([#3039](https://github.com/railsadminteam/rails_admin/issues/3039))
- Stop inlining JavaScripts for CSP friendliness([#3087](https://github.com/railsadminteam/rails_admin/issues/3087))
- Richtext editors now uses CDN-hosted assets([#3126](https://github.com/railsadminteam/rails_admin/issues/3126))
### Removed
- Remove deprecated DSL syntax for richtext editors([e0b390d9](https://github.com/railsadminteam/rails_admin/commit/e0b390d99eab64c99f1f3cccae2029649e90e11c))
- Drop support for Ruby 2.1 and Rails 4.x([dd247804](https://github.com/railsadminteam/rails_admin/commit/dd24780445f4dd676ae033c69a5b64347b80c3bc))
### Fixed
- Fix Mongoid query and filter parsing value twice([#2755](https://github.com/railsadminteam/rails_admin/issues/2755))
- Fix thread-safety issues([#2897](https://github.com/railsadminteam/rails_admin/issues/2897), [#2942](https://github.com/railsadminteam/rails_admin/issues/2942), [1d22bc66](https://github.com/railsadminteam/rails_admin/commit/1d22bc66168ac9ea478ea95b4b3b79f41263c0bd))
- Fix compact_show_view not showing Boolean falses([#2416](https://github.com/railsadminteam/rails_admin/issues/2416))
- Fix PaperTrail fail to fetch versions for STI subclasses([#2865](https://github.com/railsadminteam/rails_admin/pull/2865))
- Fix Dragonfly factory breaks if a model not extending Dragonfly::Model is passed([#2720](https://github.com/railsadminteam/rails_admin/pull/2720))
- Fix PaperTrail adapter not using Kaminari's `page_method_name` for pagination([#2712](https://github.com/railsadminteam/rails_admin/pull/2712))
- Fix #bulk_menu was not using passed `abstract_model` ([#2782](https://github.com/railsadminteam/rails_admin/pull/2782))
- Fix wrong styles when using multiple instances of CodeMirror([#3107](https://github.com/railsadminteam/rails_admin/pull/3107))
- Fix password being cleared when used with Devise 4.6([72bc0373](https://github.com/railsadminteam/rails_admin/commit/72bc03736162ffef8e5b99f42ca605d17fe7e7d0))
- ActiveStorage factory caused const missing for Mongoid([#3088](https://github.com/railsadminteam/rails_admin/pull/3088), [db927687](https://github.com/railsadminteam/rails_admin/commit/db9276879c8e8c5e8772261725ef0e0cdadd9cf1))
- Fix exact matches were using LIKE, which was not index-friendly([#3000](https://github.com/railsadminteam/rails_admin/pull/3000))
- Middleware check failed when using RedisStore([#3076](https://github.com/railsadminteam/rails_admin/issues/3076))
- Fix field being reset to default after an error([#3066](https://github.com/railsadminteam/rails_admin/pull/3066))
## [1.4.2](https://github.com/railsadminteam/rails_admin/tree/v1.4.2) - 2018-09-23
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.4.1...v1.4.2)
### Fixed
- Fix `can't modify frozen Array` error on startup([#3060](https://github.com/railsadminteam/rails_admin/issues/3060))
- Fix deprecation warning with PaperTrail.whodunnit([#3059](https://github.com/railsadminteam/rails_admin/pull/3059))
## [1.4.1](https://github.com/railsadminteam/rails_admin/tree/v1.4.1) - 2018-08-19
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.4.0...v1.4.1)
### Fixed
- Export crashes for models with JSON field([#3056](https://github.com/railsadminteam/rails_admin/pull/3056))
- Middlewares being mangled by engine initializer, causing app's session store configuration to be overwritten([#3048](https://github.com/railsadminteam/rails_admin/issues/3048), [59478af9](https://github.com/railsadminteam/rails_admin/commit/59478af9a05c76bdfe35e94e63c60ba89c27a483))
## [1.4.0](https://github.com/railsadminteam/rails_admin/tree/v1.4.0) - 2018-07-22
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.3.0...v1.4.0)
### Added
- Support for ActiveStorage([#2990](https://github.com/railsadminteam/rails_admin/issues/2990), [#3037](https://github.com/railsadminteam/rails_admin/pull/3037))
- Support for multiple file upload for ActiveStorage and CarrierWave ([5bb2d375](https://github.com/railsadminteam/rails_admin/commit/5bb2d375a236268e51c7e8682c2d110d9e52970f))
- Support for Mongoid 7.0([9ef623f6](https://github.com/railsadminteam/rails_admin/commit/9ef623f6cba73adbf86833d9eb07f1be3924a133), [#3013](https://github.com/railsadminteam/rails_admin/issues/3013))
- Support for CanCanCan 2.0([a32d49e4](https://github.com/railsadminteam/rails_admin/commit/a32d49e4b96944905443588a1216b3362ee64c1a), [#2901](https://github.com/railsadminteam/rails_admin/issues/2901))
- Support for Pundit 2.0([bc60c978](https://github.com/railsadminteam/rails_admin/commit/bc60c978adfebe09cdad2c199878d8ff966374f1))
- Support for jquery-ui-rails 6.0([#2951](https://github.com/railsadminteam/rails_admin/issues/2951), [#3003](https://github.com/railsadminteam/rails_admin/issues/3003))
### Fixed
- Make code reloading work([#3041](https://github.com/railsadminteam/rails_admin/pull/3041))
- Improved support for Rails API mode, requiring needed middlewares in engine's initializer([#2919](https://github.com/railsadminteam/rails_admin/issues/2919), [#3006](https://github.com/railsadminteam/rails_admin/pull/3006))
- Make the link text to uploaded file shorter, instead of showing full url([#2983](https://github.com/railsadminteam/rails_admin/pull/2983))
- Fix duplication of filters on browser back([#2998](https://github.com/railsadminteam/rails_admin/pull/2998))
- Fix "can't modify frozen array" exception on code reload([#2999](https://github.com/railsadminteam/rails_admin/pull/2999))
- Fix incorrectly comparing numeric columns with empty string when handling blank operator([#3007](https://github.com/railsadminteam/rails_admin/pull/3007))
## [1.3.0](https://github.com/railsadminteam/rails_admin/tree/v1.3.0) - 2018-02-18
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.2.0...v1.3.0)
### Added
- Configurability for forgery protection setting([#2989](https://github.com/railsadminteam/rails_admin/pull/2989))
- Configurability for the number of audit records displayed into dashboard([#2982](https://github.com/railsadminteam/rails_admin/pull/2982))
- Add limited pagination mode, which doesn't require count query([#2968](https://github.com/railsadminteam/rails_admin/pull/2968))
- Prettier output of JSON field value([#2937](https://github.com/railsadminteam/rails_admin/pull/2937), [#2973](https://github.com/railsadminteam/rails_admin/pull/2973), [#2980](https://github.com/railsadminteam/rails_admin/pull/2980))
- Add markdown field support through SimpleMDE([#2949](https://github.com/railsadminteam/rails_admin/pull/2949))
- Checkboxes for bulk actions in index page can be turned off now([#2917](https://github.com/railsadminteam/rails_admin/pull/2917))
### Fixed
- Parse JS translations as JSON([#2925](https://github.com/railsadminteam/rails_admin/pull/2925))
- Re-selecting an item after unselecting has no effect in filtering-multiselect([#2912](https://github.com/railsadminteam/rails_admin/issues/2912))
- Stop memoization of datetime parser to handle locale changes([#2824](https://github.com/railsadminteam/rails_admin/pull/2824))
- Filters for ActiveRecord Enum field behaved incorrectly for enums whose labels are different from values([#2971](https://github.com/railsadminteam/rails_admin/pull/2971))
- Client-side required validation was not enforced in filtering-select widget([#2905](https://github.com/railsadminteam/rails_admin/pull/2905))
- Filter refresh button was broken([#2890](https://github.com/railsadminteam/rails_admin/pull/2890))
### Security
- Fix XSS vulnerability in filter and multi-select widget([#2985](https://github.com/railsadminteam/rails_admin/issues/2985), [44f09ed7](https://github.com/railsadminteam/rails_admin/commit/44f09ed72b5e0e917a5d61bd89c48d97c494b41c))
## [1.2.0](https://github.com/railsadminteam/rails_admin/tree/v1.2.0) - 2017-05-31
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.1.1...v1.2.0)
### Added
- Add ILIKE support for PostgreSQL/PostGIS adapter, multibyte downcase for other adapters([#2766](https://github.com/railsadminteam/rails_admin/pull/2766))
- Support for UUID query([#2766](https://github.com/railsadminteam/rails_admin/pull/2766))
- Support for Haml 5([#2840](https://github.com/railsadminteam/rails_admin/pull/2840), [#2870](https://github.com/railsadminteam/rails_admin/pull/2870), [#2877](https://github.com/railsadminteam/rails_admin/pull/2877))
- Add instance option to append a CSS class for rows([#2860](https://github.com/railsadminteam/rails_admin/pull/2860))
### Fixed
- Remove usage of alias_method_chain, deprecated in Rails 5.0([#2864](https://github.com/railsadminteam/rails_admin/pull/2864))
- Load models from eager_load, not autoload_paths([#2771](https://github.com/railsadminteam/rails_admin/pull/2771))
- jQuery 3.0 doesn't have size(), use length instead([#2841](https://github.com/railsadminteam/rails_admin/pull/2841))
- Prepopulation of the new form didn't work with namespaced models([#2701](https://github.com/railsadminteam/rails_admin/pull/2701))
## [1.1.1](https://github.com/railsadminteam/rails_admin/tree/v1.1.1) - 2016-12-25
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.1.0...v1.1.1)
### Fixed
- CSV export broke with empty tables([#2796](https://github.com/railsadminteam/rails_admin/issues/2796), [#2797](https://github.com/railsadminteam/rails_admin/pull/2797))
- ActiveRecord adapter's #encoding did not work with Oracle enhanced adapter([#2789](https://github.com/railsadminteam/rails_admin/pull/2789))
- ActiveRecord 5 belongs_to presence validators were unintentionally disabled due to initialization mishandling([#2785](https://github.com/railsadminteam/rails_admin/issues/2785), [#2786](https://github.com/railsadminteam/rails_admin/issues/2786))
- Destroy failure caused subsequent index action to return 404, instead of 200([#2775](https://github.com/railsadminteam/rails_admin/issues/2775), [#2776](https://github.com/railsadminteam/rails_admin/pull/2776))
- CSVConverter#to_csv now accepts string-keyed hashes([#2740](https://github.com/railsadminteam/rails_admin/issues/2740), [#2741](https://github.com/railsadminteam/rails_admin/pull/2741))
### Security
- Fix CSRF vulnerability([b13e879e](https://github.com/railsadminteam/rails_admin/commit/b13e879eb93b661204e9fb5e55f7afa4f397537a))
## [1.1.0](https://github.com/railsadminteam/rails_admin/tree/v1.1.0) - 2016-10-30
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.0.0...v1.1.0)
### Added
- DSL for association eager-loading([#1325](https://github.com/railsadminteam/rails_admin/issues/1325), [#1342](https://github.com/railsadminteam/rails_admin/issues/1342))
### Fixed
- Fix nested has_many form failing to add items([#2737](https://github.com/railsadminteam/rails_admin/pull/2737))
## [1.0.0](https://github.com/railsadminteam/rails_admin/tree/v1.0.0) - 2016-09-19
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.0.0.rc...v1.0.0)
### Added
- Introduce setup hook for authorization/auditing adapters([ba2088c6](https://github.com/railsadminteam/rails_admin/commit/ba2088c6ecabd354b4b67c50bb00fccdbd1e6240))
- Add viewport meta tag for mobile layout adjustment([#2664](https://github.com/railsadminteam/rails_admin/pull/2664))
- Support for ActiveRecord::Enum using string columns([#2680](https://github.com/railsadminteam/rails_admin/pull/2680))
### Changed
- Limit children for deletion notice([#2491](https://github.com/railsadminteam/rails_admin/pull/2491))
- [BREAKING CHANGE] Change parent controller to ActionController::Base for out-of-box support of Rails 5 API mode([#2688](https://github.com/railsadminteam/rails_admin/issues/2688))
- To keep old behavior, add `config.parent_controller = '::ApplicationController'` in your RailsAdmin initializer.
### Fixed
- ActiveRecord Enum fields could not be updated correctly([#2659](https://github.com/railsadminteam/rails_admin/pull/2659), [#2713](https://github.com/railsadminteam/rails_admin/issues/2713))
- Fix performance issue with filtering-multiselect widget([#2715](https://github.com/railsadminteam/rails_admin/pull/2715))
- Restore back rails_admin_controller?([#2268](https://github.com/railsadminteam/rails_admin/issues/2268))
- Duplication of autocomplete fields when using browser back/forward buttons([#2677](https://github.com/railsadminteam/rails_admin/issues/2677), [#2678](https://github.com/railsadminteam/rails_admin/pull/2678))
- Filter refresh button was broken([#2705](https://github.com/railsadminteam/rails_admin/issues/2705), [#2706](https://github.com/railsadminteam/rails_admin/pull/2706))
- Fix presence filtering on boolean columns([#1099](https://github.com/railsadminteam/rails_admin/issues/1099), [#2675](https://github.com/railsadminteam/rails_admin/pull/2675))
- Pundit::AuthorizationNotPerformedError was raised when used with Pundit([#2683](https://github.com/railsadminteam/rails_admin/pull/2683))
## [1.0.0.rc](https://github.com/railsadminteam/rails_admin/tree/v1.0.0.rc) - 2016-07-18
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v0.8.1...v1.0.0.rc)
### Added
- Rails 5 support
- PaperTrail 5 support([9c42783a](https://github.com/railsadminteam/rails_admin/commit/9c42783aa65b704f4a5d467608c49b746c47b81b))
- Support for multiple configuration blocks([#1781](https://github.com/railsadminteam/rails_admin/pull/1781), [#2670](https://github.com/railsadminteam/rails_admin/pull/2670))
- Default association limit is now configurable([#2508](https://github.com/railsadminteam/rails_admin/pull/2058))
### Changed
- Prefix kaminari bootstrap views with `ra-` to avoid name conflict([#2283](https://github.com/railsadminteam/rails_admin/issues/2283), [#2651](https://github.com/railsadminteam/rails_admin/pull/2651))
- Gravatar icon is now optional([#2570](https://github.com/railsadminteam/rails_admin/pull/2570))
- Improve bootstrap-wysihtml5-rails support([#2650](https://github.com/railsadminteam/rails_admin/pull/2650))
- Explicitly call the #t method on I18n([#2564](https://github.com/railsadminteam/rails_admin/pull/2564))
- Improve dashboard performance by querying with id instead of updated_at([#2514](https://github.com/railsadminteam/rails_admin/issues/2514), [#2551](https://github.com/railsadminteam/rails_admin/pull/2551))
- Improve encoding support in CSV converter([#2508](https://github.com/railsadminteam/rails_admin/pull/2508), [dca8911f](https://github.com/railsadminteam/rails_admin/commit/dca8911f240ea11ebb186c33573188aa9e1b031d))
- Add SVG file extension to the image detection method([#2533](https://github.com/railsadminteam/rails_admin/pull/2533))
- Update linear gradient syntax to make autoprefixer happy([#2531](https://github.com/railsadminteam/rails_admin/pull/2531))
- Improve export layout ([#2505](https://github.com/railsadminteam/rails_admin/pull/2505))
### Removed
- Remove safe_yaml dependency([#2397](https://github.com/railsadminteam/rails_admin/pull/2397))
- Drop support for Ruby < 2.1.0
### Fixed
- Pagination did not work when showing all history([#2553](https://github.com/railsadminteam/rails_admin/pull/2553))
- Make filter-box label clickable([#2573](https://github.com/railsadminteam/rails_admin/pull/2573))
- Colorpicker form did not have the default css class `form-control`([#2571](https://github.com/railsadminteam/rails_admin/pull/2571))
- Stop assuming locale en is available([#2155](https://github.com/railsadminteam/rails_admin/issues/2155))
- Fix undefined method error with nested polymorphics([#1338](https://github.com/railsadminteam/rails_admin/issues/1338), [#2110](https://github.com/railsadminteam/rails_admin/pull/2110))
- Fix issue with nav does not check pjax config from an action([#2309](https://github.com/railsadminteam/rails_admin/pull/2309))
- Model label should be pluralized with locale([#1983](https://github.com/railsadminteam/rails_admin/pull/1983))
- Fix delocalize strftime_format for DateTime.strptime to support minus([#2547](https://github.com/railsadminteam/rails_admin/pull/2547))
- Fix Syntax Error in removal of new nested entity([#2539](https://github.com/railsadminteam/rails_admin/pull/2539))
- Fix momentjs translations for '%-d' format day of the month([#2540](https://github.com/railsadminteam/rails_admin/pull/2540))
- Fix Mongoid BSON object field ([#2495](https://github.com/railsadminteam/rails_admin/issues/2495))
- Make browser ignore validations of removed nested child models([#2443](https://github.com/railsadminteam/rails_admin/issues/2443), [#2490](https://github.com/railsadminteam/rails_admin/pull/2490))
## [0.8.1](https://github.com/railsadminteam/rails_admin/tree/v0.8.1) - 2015-11-24
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v0.8.0...v0.8.1)
### Fixed
- `vendor/` directory was missing from gemspec([#2481](https://github.com/railsadminteam/rails_admin/issues/2481), [#2482](https://github.com/railsadminteam/rails_admin/pull/2482))
## [0.8.0](https://github.com/railsadminteam/rails_admin/tree/v0.8.0) - 2015-11-23
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v0.7.0...v0.8.0)
### Added
- Feature to deactivate filtering-multiselect widget's remove buttons through `removable?` field option([#2446](https://github.com/railsadminteam/rails_admin/issues/2446))
- Pundit integration([#2399](https://github.com/railsadminteam/rails_admin/pull/2399) by Team CodeBenders, RGSoC'15)
- Refile support([#2385](https://github.com/railsadminteam/rails_admin/pull/2385))
### Changed
- Some UI improvements in export view([#2394](https://github.com/railsadminteam/rails_admin/pull/2394))
- `rails_admin/custom/variables.scss` is now imported first to take advantage of Sass's `default!`([#2404](https://github.com/railsadminteam/rails_admin/pull/2404))
- Proxy classes now inherit from BasicObject([#2434](https://github.com/railsadminteam/rails_admin/issues/2434))
- Show sidebar scrollbar only on demand([#2419](https://github.com/railsadminteam/rails_admin/pull/2419))
- RailsAdmin no longer gets excluded from NewRelic instrumentation by default([#2402](https://github.com/railsadminteam/rails_admin/pull/2402))
- Improve efficiency of filter query in Postgres([#2401](https://github.com/railsadminteam/rails_admin/pull/2401))
- Replace old jQueryUI datepicker with jQuery Bootstrap datetimepicker ([#2391](https://github.com/railsadminteam/rails_admin/pull/2391))
- Turn Hash#symbolize into a helper to prevent namespace conflict([#2388](https://github.com/railsadminteam/rails_admin/pull/2388))
### Removed
- The L10n translation `admin.misc.filter_date_format` datepicker search filters, has been dropped in favor of field oriented configuration ([#2391](https://github.com/railsadminteam/rails_admin/pull/2391))
### Fixed
- AR#count broke when default-scoped with select([#2129](https://github.com/railsadminteam/rails_admin/pull/2129), [#2447](https://github.com/railsadminteam/rails_admin/issues/2447))
- Datepicker could not handle Spanish date properly([#982](https://github.com/railsadminteam/rails_admin/issues/982), [#2451](https://github.com/railsadminteam/rails_admin/pull/2451))
- Paperclip's `attachment_definitions` does not exist unless `has_attached_file`-ed([#1674](https://github.com/railsadminteam/rails_admin/issues/1674))
- `.btn` class was used without a modifier([#2417](https://github.com/railsadminteam/rails_admin/pull/2417))
- Filtering-multiselect widget ignored order([#2231](https://github.com/railsadminteam/rails_admin/issues/2231), [#2412](https://github.com/railsadminteam/rails_admin/pull/2412))
- Add missing .alert-dismissible class to flash([#2411](https://github.com/railsadminteam/rails_admin/pull/2411))
- Keep field order on changing the existing field's type([#2409](https://github.com/railsadminteam/rails_admin/pull/2409))
- Add button for nested-many form in modal disappeared on click([#2372](https://github.com/railsadminteam/rails_admin/issues/2372), [#2383](https://github.com/railsadminteam/rails_admin/pull/2383))
### Security
- Fix XSS vulnerability in polymorphic select([#2479](https://github.com/railsadminteam/rails_admin/pull/2479))
## [0.7.0](https://github.com/railsadminteam/rails_admin/tree/v0.7.0) - 2015-08-16
[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v0.6.8...v0.7.0)
### Added
- Support for ActiveRecord::Enum ([#1993](https://github.com/railsadminteam/rails_admin/issues/1993))
- Multiselect-widget shows user friendly message, instead of just being blank ([#1369](https://github.com/railsadminteam/rails_admin/issues/1369), [#2360](https://github.com/railsadminteam/rails_admin/pull/2360))
- Configuration option to turn browser validation off ([#2339](https://github.com/railsadminteam/rails_admin/pull/2339), [#2373](https://github.com/railsadminteam/rails_admin/pull/2373))
### Changed
- Multiselect-widget inserts a new item to the bottom, instead of top ([#2167](https://github.com/railsadminteam/rails_admin/pull/2167))
- Migrated Cerulean theme to Bootstrap3 ([#2352](https://github.com/railsadminteam/rails_admin/pull/2352))
- Better html markup for input fields ([#2336](https://github.com/railsadminteam/rails_admin/pull/2336))
- Update filter dropdown button to Bootstrap3 ([#2277](https://github.com/railsadminteam/rails_admin/pull/2277))
- Improve navbar appearance ([#2310](https://github.com/railsadminteam/rails_admin/pull/2310))
- Do not monkey patch the app's YAML ([#2331](https://github.com/railsadminteam/rails_admin/pull/2331))
### Fixed
- Browser validation prevented saving of persisted upload fields ([#2376](https://github.com/railsadminteam/rails_admin/issues/2376))
- Fix inconsistent styling in static_navigation ([#2378](https://github.com/railsadminteam/rails_admin/pull/2378))
- Fix css regression for has_one and has_many nested form ([#2337](https://github.com/railsadminteam/rails_admin/pull/2337))
- HTML string inputs should not have a size attribute valorized with 0 ([#2335](https://github.com/railsadminteam/rails_admin/pull/2335))
### Security
- Fix XSS vulnerability in filtering-select widget
- Fix XSS vulnerability in association fields ([#2343](https://github.com/railsadminteam/rails_admin/issues/2343))
================================================
FILE: CONTRIBUTING.md
================================================
## Contributing
In the spirit of [free software][free-sw], **everyone** is encouraged to help
improve this project.
[free-sw]: http://www.fsf.org/licensing/essays/free-sw.html
Here are some ways _you_ can contribute:
- by using alpha, beta, and prerelease versions
- by triaging bug reports
- by writing or editing documentation
- by writing specifications
- by writing code (**no patch is too small**: fix typos, add comments, clean up
inconsistent whitespace)
- by refactoring code
- by fixing [issues][]
- by reviewing patches
- by suggesting new features
- [financially][gittip]
[issues]: https://github.com/railsadminteam/rails_admin/issues
[gittip]: https://www.gittip.com/sferik/
## Development
### Running tests locally
To run the test suite, you need Google Chrome and ImageMagick (or GraphicsMagick).
Example installation on macOS using Homebrew:
```bash
# install imagemagick:
brew install imagemagick
# install google chrome with cask:
brew install brew-cask
brew install google-chrome --cask
# install mysql
brew install mysql
# install openssl
brew install openssl@3
```
Example installation on Ubuntu:
```bash
# install imagemagick:
sudo apt update -y && sudo apt install imagemagick -y
# install google chrome:
sudo apt update -y && wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && sudo apt install ./google-chrome-stable_current_amd64.deb -y
```
Then you need to do this one-time setup:
```bash
# On Mac, you may run into problems with the mysql2 gem that require flags to be set in bundle config
# See: https://github.com/brianmario/mysql2/issues/1345
bundle config build.mysql2 '-- --with-cflags="-Wno-error=implicit-function-declaration" --with-ldflags=-L/opt/homebrew/opt/zstd/lib'
bundle install
yarn install
# install dependencies for each appraisal:
bundle exec appraisal install
# precompile assets in the dummy app:
cd spec/dummy_app && yarn install && yarn build && yarn build:css && cd -
```
Then you will be able to run the specs:
```bash
bundle exec appraisal rails-7.0 rspec
```
### Tests run against multiple versions of Rails
In CI, we use [appraisal] to run tests against multiple versions of Rails. The
[gemfiles/ directory] contains the Gemfiles used to create the CI build matrix.
See the [GitHub Actions configuration] for more details on what Ruby versions
run what Rails versions.
[appraisal]: https://github.com/thoughtbot/appraisal
[gemfiles/ directory]: ./gemfiles
[github actions configuration]: ./.github/workflows/test.yml
## Getting Help
We use a [mailing list][list] for user support. If you've got a "how do
I do this?" or "this doesn't seem to work the way I expect" type of
issue or just want some help, please post a message to the [mailing
list][list].
## Submitting an Issue
If you're confident that you've found a bug in
rails_admin, please [open an issue][issues], but check to make sure it hasn't
already been submitted. When submitting a bug report, please include a
[Gist][] that includes a stack trace and any details that may be
necessary to reproduce the bug, including your gem version, Ruby
version, and operating system. Ideally, a bug report should include a
pull request with failing specs.
[gist]: https://gist.github.com/
[list]: http://groups.google.com/group/rails_admin
## Submitting a Pull Request
1. [Fork the repository.][fork]
2. Create a branch.
3. Add specs for your unimplemented feature or bug fix.
4. Run `bundle exec rake spec`. If your specs pass, return to step 3.
5. Implement your feature or bug fix.
6. Run `bundle exec rake default`. If your specs fail, return to step 5.
7. Run `open coverage/index.html`. If your changes are not completely covered
by your tests, return to step 3.
8. Add, commit, and push your changes.
9. [Submit a pull request.][pr]
[fork]: http://help.github.com/fork-a-repo/
[pr]: http://help.github.com/send-pull-requests/
================================================
FILE: Gemfile
================================================
# frozen_string_literal: true
source 'https://rubygems.org'
gem 'appraisal', '>= 2.0'
gem 'devise', '~> 4.7'
gem 'net-smtp', require: false
gem 'rails'
gem 'sassc-rails', '~> 2.1'
gem 'turbo-rails'
gem 'vite_rails', require: false
gem 'webpacker', require: false
gem 'webrick'
group :development, :test do
gem 'pry', '>= 0.9'
end
group :test do
gem 'cancancan', '~> 3.0'
gem 'carrierwave', ['>= 2.0.0.rc', '< 3']
gem 'cuprite', '!= 0.15.1'
gem 'database_cleaner-active_record', '>= 2.0', require: false
gem 'dragonfly', '~> 1.0'
gem 'factory_bot', '>= 4.2', '!= 6.4.5'
gem 'generator_spec', '>= 0.8'
gem 'kt-paperclip'
gem 'launchy', '>= 2.2'
gem 'mini_magick', '>= 3.4'
gem 'pundit'
gem 'rack-cache', require: 'rack/cache'
gem 'rspec-expectations', '!= 3.8.3'
gem 'rspec-rails', '>= 4.0.0.beta2'
gem 'rspec-retry'
gem 'rubocop', ['~> 1.20', '!= 1.22.2'], require: false
gem 'rubocop-performance', require: false
gem 'shrine', '~> 3.0'
gem 'simplecov', '>= 0.9', require: false
gem 'simplecov-lcov', require: false
gem 'timecop', '>= 0.5'
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]
end
group :active_record do
gem 'paper_trail', '>= 12.0'
platforms :ruby, :mswin, :mingw, :x64_mingw do
gem 'mysql2', '>= 0.3.14'
gem 'pg', '>= 1.0.0'
gem 'sqlite3', '>= 1.3.0'
end
end
gemspec
================================================
FILE: LICENSE.md
================================================
Copyright (c) 2010-2016 Erik Michaels-Ober
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: Procfile.teatro
================================================
web: cd spec/dummy_app && bundle exec rails server
================================================
FILE: README.md
================================================
# RailsAdmin
[][gem]
[][ghactions]
[][coveralls]
[][codeclimate]
[][semver]
[gem]: https://rubygems.org/gems/rails_admin
[ghactions]: https://github.com/railsadminteam/rails_admin/actions/workflows/test.yml
[coveralls]: https://coveralls.io/r/railsadminteam/rails_admin
[codeclimate]: https://codeclimate.com/github/railsadminteam/rails_admin
[semver]: https://dependabot.com/compatibility-score.html?dependency-name=rails_admin&package-manager=bundler&version-scheme=semver
RailsAdmin is a Rails engine that provides an easy-to-use interface for managing your data.
## Getting started
- Check out [the docs][docs].
- Try the [live demo][demo]. ([Source code][dummy_app])
[demo]: https://rails-admin.fly.dev/admin/
[dummy_app]: https://github.com/railsadminteam/rails_admin/tree/master/spec/dummy_app
[docs]: https://github.com/railsadminteam/rails_admin/wiki
## Features
- CRUD any data with ease
- Custom actions
- Automatic form validation
- Search and filtering
- Export data to CSV/JSON/XML
- Authentication (via [Devise](https://github.com/plataformatec/devise) or other)
- Authorization (via [CanCanCan](https://github.com/CanCanCommunity/cancancan) or [Pundit](https://github.com/elabs/pundit))
- User action history (via [PaperTrail](https://github.com/airblade/paper_trail))
- Supported ORMs
- ActiveRecord
- Mongoid
## Installation
1. On your gemfile: `gem 'rails_admin', '~> 3.0'`
2. Run `bundle install`
3. Run `rails g rails_admin:install`
4. Provide a namespace for the routes when asked
5. Start a server `rails s` and administer your data at [/admin](http://localhost:3000/admin). (if you chose default namespace: /admin)
## Upgrading from 2.x
Due to introduction of Webpack/Webpacker support, some additional dependency and configuration will be needed.
Running `rails g rails_admin:install` will suggest you some required changes, based on current setup of your app.
## Configuration
### Global
In `config/initializers/rails_admin.rb`:
[Details](https://github.com/railsadminteam/rails_admin/wiki/Base-configuration)
To begin with, you may be interested in setting up [Devise](https://github.com/railsadminteam/rails_admin/wiki/Devise), [CanCanCan](https://github.com/railsadminteam/rails_admin/wiki/Cancancan) or [Papertrail](https://github.com/railsadminteam/rails_admin/wiki/Papertrail)!
### Per model
```ruby
class Ball < ActiveRecord::Base
validates :name, presence: true
belongs_to :player
rails_admin do
configure :player do
label 'Owner of this ball: '
end
end
end
```
Details: [Models](https://github.com/railsadminteam/rails_admin/wiki/Models), [Groups](https://github.com/railsadminteam/rails_admin/wiki/Groups), [Fields](https://github.com/railsadminteam/rails_admin/wiki/Fields)
## Support
If you have a question, please check this README, the wiki, and the [list of
known issues][troubleshoot].
[troubleshoot]: https://github.com/railsadminteam/rails_admin/wiki/Troubleshoot
If you still have a question, you can ask the [official RailsAdmin mailing
list][list].
[list]: http://groups.google.com/group/rails_admin
If you think you found a bug in RailsAdmin, you can [submit an issue](https://github.com/railsadminteam/rails_admin/issues/new).
## Supported Ruby Versions
This library aims to support and is [tested against][ghactions] the following Ruby implementations:
- Ruby 2.6
- Ruby 2.7
- Ruby 3.0
- Ruby 3.1
- Ruby 3.2
- [JRuby][]
[jruby]: http://jruby.org/
================================================
FILE: Rakefile
================================================
# frozen_string_literal: true
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
Dir['lib/tasks/*.rake'].each { |rake| load rake }
require 'bundler'
Bundler::GemHelper.install_tasks
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec)
task test: :spec
begin
require 'rubocop/rake_task'
RuboCop::RakeTask.new
rescue LoadError
desc 'Run RuboCop'
task :rubocop do
warn 'Rubocop is disabled'
end
end
task default: %i[spec rubocop]
namespace :vendorize do
desc 'Tasks for vendorizing assets'
task :flatpickr do
Dir.chdir(__dir__)
flatpickr = File.read('node_modules/flatpickr/dist/flatpickr.js')
locales = Dir.glob('node_modules/flatpickr/dist/l10n/*.js').map { |f| File.read(f) }
File.write('vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js', ([flatpickr] + locales).join("\n"))
end
end
================================================
FILE: app/assets/javascripts/rails_admin/application.js.erb
================================================
//= require 'rails-ujs'
//= require 'turbo'
//= require 'rails_admin/jquery3'
//= require 'jquery_nested_form'
//= require 'rails_admin/jquery-ui/effect'
//= require 'rails_admin/jquery-ui/widgets/sortable'
//= require 'rails_admin/jquery-ui/widgets/autocomplete'
//= require 'rails_admin/flatpickr-with-locales'
//= require 'rails_admin/popper'
//= require 'rails_admin/bootstrap'
//= require 'rails_admin/abstract-select'
//= require 'rails_admin/filter-box'
//= require 'rails_admin/filtering-multiselect'
//= require 'rails_admin/filtering-select'
//= require 'rails_admin/remote-form'
//= require 'rails_admin/nested-form-hooks'
//= require 'rails_admin/i18n'
//= require 'rails_admin/widgets'
//= require 'rails_admin/sidescroll'
//= require 'rails_admin/ui'
//= require 'rails_admin/custom/ui'
<% if defined?(ActiveStorage::Engine) %>
//= require activestorage
<% end %>
<% if defined?(ActionText::Engine) && Rails.gem_version >= Gem::Version.new('7.0') %>
//= require trix
//= require actiontext
<% end %>
================================================
FILE: app/assets/javascripts/rails_admin/custom/ui.js
================================================
// override this file in your application to add custom behaviour
================================================
FILE: app/assets/stylesheets/rails_admin/application.scss.erb
================================================
@charset "UTF-8";
/*** Variables ***/
@import "rails_admin/custom/variables";
@import "rails_admin/styles/base/variables";
/*** Mixins ***/
@import "rails_admin/styles/base/mixins";
@import "rails_admin/custom/mixins";
/*** Bootstrap ***/
@import "rails_admin/bootstrap/bootstrap";
/*** Libraries ***/
@import "rails_admin/flatpickr";
@import "rails_admin/styles/filtering-select";
@import "rails_admin/styles/filtering-multiselect";
@import "rails_admin/styles/widgets";
/*** Font-awesome ***/
@import "rails_admin/font-awesome";
/*** RailsAdmin Theming ***/
@import "rails_admin/styles/base/theming";
@import "rails_admin/custom/theming";
<% if defined?(ActionText::Engine) && Rails.gem_version >= Gem::Version.new('7.0') %>
@import "trix";
<% end %>
================================================
FILE: app/assets/stylesheets/rails_admin/custom/mixins.scss
================================================
/*
Customize Sass mixins from Twitter-Bootstrap/RailsAdmin theme or add new ones for your own use.
Copy this file to your app/assets/rails_admin/custom/mixins.scss, leave this one untouched
Don't require it in your application.rb
Available mixins to use/override:
https://github.com/twbs/bootstrap-sass/tree/master/assets/stylesheets/bootstrap/mixins
https://github.com/railsadminteam/rails_admin/blob/master/src/rails_admin/styles/base/mixins.scss
Plus the ones from your theme.
*/
================================================
FILE: app/assets/stylesheets/rails_admin/custom/theming.scss
================================================
/*
Customize RailsAdmin theme here.
Copy this file to your app/assets/stylesheets/rails_admin/custom/theming.scss, leave this one untouched
Don't require it in your application.rb
Look at the markup in RailsAdmin and go there to get inspiration from:
http://getbootstrap.com
Test me: (actual color should be the one defined in variables.scss if you did)
body { background-color: $link-color; }
*/
================================================
FILE: app/assets/stylesheets/rails_admin/custom/variables.scss
================================================
/*
Customize Sass variables from Twitter-Bootstrap/RailsAdmin theme or add new ones for your own use.
Copy this file to your app/assets/rails_admin/custom/variables.scss, leave this one untouched
Don't require it in your application.rb
Available variables to use/override:
https://github.com/twbs/bootstrap-sass/blob/master/assets/stylesheets/bootstrap/_variables.scss
https://github.com/railsadminteam/rails_admin/blob/master/src/rails_admin/styles/base/variables.scss
Plus the ones from your themes.
Test me: pink links
$link-color: #F0F;
*/
================================================
FILE: app/controllers/rails_admin/application_controller.rb
================================================
# frozen_string_literal: true
require 'rails_admin/abstract_model'
module RailsAdmin
class ModelNotFound < ::StandardError
end
class ObjectNotFound < ::StandardError
end
class ActionNotAllowed < ::StandardError
end
class ApplicationController < Config.parent_controller.constantize
include RailsAdmin::Extensions::ControllerExtension
protect_from_forgery(Config.forgery_protection_settings)
before_action :_authenticate!
before_action :_authorize!
before_action :_audit!
helper_method :_current_user, :_get_plugin_name
attr_reader :object, :model_config, :abstract_model, :authorization_adapter
def get_model
@model_name = to_model_name(params[:model_name])
raise RailsAdmin::ModelNotFound unless (@abstract_model = RailsAdmin::AbstractModel.new(@model_name))
raise RailsAdmin::ModelNotFound if (@model_config = @abstract_model.config).excluded?
@properties = @abstract_model.properties
end
def get_object
raise RailsAdmin::ObjectNotFound unless (@object = @abstract_model.get(params[:id], @model_config.scope))
end
def to_model_name(param)
param.split('~').collect(&:camelize).join('::')
end
def _current_user
instance_eval(&RailsAdmin::Config.current_user_method)
end
private
def _get_plugin_name
@plugin_name_array ||= [RailsAdmin.config.main_app_name.is_a?(Proc) ? instance_eval(&RailsAdmin.config.main_app_name) : RailsAdmin.config.main_app_name].flatten
end
def _authenticate!
instance_eval(&RailsAdmin::Config.authenticate_with)
end
def _authorize!
instance_eval(&RailsAdmin::Config.authorize_with)
end
def _audit!
instance_eval(&RailsAdmin::Config.audit_with)
end
def rails_admin_controller?
true
end
rescue_from RailsAdmin::ObjectNotFound do
flash[:error] = I18n.t('admin.flash.object_not_found', model: @model_name, id: params[:id])
params[:action] = 'index'
@status_code = :not_found
index
end
rescue_from RailsAdmin::ModelNotFound do
flash[:error] = I18n.t('admin.flash.model_not_found', model: @model_name)
params[:action] = 'dashboard'
@status_code = :not_found
dashboard
end
end
end
================================================
FILE: app/controllers/rails_admin/main_controller.rb
================================================
# frozen_string_literal: true
module RailsAdmin
class MainController < RailsAdmin::ApplicationController
include ActionView::Helpers::TextHelper
include RailsAdmin::MainHelper
include RailsAdmin::ApplicationHelper
before_action :check_for_cancel
def bulk_action
get_model
process(params[:bulk_action]) if params[:bulk_action].in?(RailsAdmin::Config::Actions.all(:bulkable, controller: self, abstract_model: @abstract_model).collect(&:route_fragment))
end
def list_entries(model_config = @model_config, auth_scope_key = :index, additional_scope = get_association_scope_from_params, pagination = !(params[:associated_collection] || params[:all] || params[:bulk_ids]))
scope = model_config.scope
auth_scope = @authorization_adapter&.query(auth_scope_key, model_config.abstract_model)
scope = scope.merge(auth_scope) if auth_scope
scope = scope.instance_eval(&additional_scope) if additional_scope
get_collection(model_config, scope, pagination)
end
private
def action_missing(name, *_args)
action = RailsAdmin::Config::Actions.find(name.to_sym)
raise AbstractController::ActionNotFound.new("The action '#{name}' could not be found for #{self.class.name}") unless action
get_model unless action.root?
get_object if action.member?
@authorization_adapter.try(:authorize, action.authorization_key, @abstract_model, @object)
@action = action.with({controller: self, abstract_model: @abstract_model, object: @object})
raise(ActionNotAllowed) unless @action.enabled?
@page_name = wording_for(:title)
instance_eval(&@action.controller)
end
def method_missing(name, *args, &block)
action = RailsAdmin::Config::Actions.find(name.to_sym)
if action
action_missing name, *args, &block
else
super
end
end
def respond_to_missing?(sym, include_private)
if RailsAdmin::Config::Actions.find(sym)
true
else
super
end
end
def back_or_index
allowed_return_to?(params[:return_to].to_s) ? params[:return_to] : index_path
end
def allowed_return_to?(url)
url != request.fullpath && url.start_with?(request.base_url, '/') && !url.start_with?('//')
end
def get_sort_hash(model_config)
field = model_config.list.fields.detect { |f| f.name.to_s == params[:sort] }
# If no sort param, default to the `sort_by` specified in the list config
field ||= model_config.list.possible_fields.detect { |f| f.name == model_config.list.sort_by.try(:to_sym) }
column =
if field.nil? || field.sortable == false # use default sort, asked field does not exist or is not sortable
model_config.list.sort_by
else
field.sort_column
end
params[:sort_reverse] ||= 'false'
{sort: column, sort_reverse: (params[:sort_reverse] == (field&.sort_reverse&.to_s || 'true'))}
end
def redirect_to_on_success
notice = I18n.t('admin.flash.successful', name: @model_config.label, action: I18n.t("admin.actions.#{@action.key}.done"))
if params[:_add_another]
redirect_to new_path(return_to: params[:return_to]), flash: {success: notice}
elsif params[:_add_edit]
redirect_to edit_path(id: @object.id, return_to: params[:return_to]), flash: {success: notice}
else
redirect_to back_or_index, flash: {success: notice}
end
end
def visible_fields(action, model_config = @model_config)
model_config.send(action).with(controller: self, view: view_context, object: @object).visible_fields
end
def sanitize_params_for!(action, model_config = @model_config, target_params = params[@abstract_model.param_key])
return unless target_params.present?
fields = visible_fields(action, model_config)
allowed_methods = fields.collect(&:allowed_methods).flatten.uniq.collect(&:to_s) << 'id' << '_destroy'
fields.each { |field| field.parse_input(target_params) }
target_params.slice!(*allowed_methods)
target_params.permit! if target_params.respond_to?(:permit!)
fields.select(&:nested_form).each do |association|
children_params = association.multiple? ? target_params[association.method_name].try(:values) : [target_params[association.method_name]].compact
(children_params || []).each do |children_param|
sanitize_params_for!(:nested, association.associated_model_config, children_param)
end
end
end
def handle_save_error(whereto = :new)
flash.now[:error] = I18n.t('admin.flash.error', name: @model_config.label, action: I18n.t("admin.actions.#{@action.key}.done").html_safe).html_safe
flash.now[:error] += %(<br>- #{@object.errors.full_messages.join('<br>- ')}).html_safe
respond_to do |format|
format.html { render whereto, status: :not_acceptable }
format.js { render whereto, layout: 'rails_admin/modal', status: :not_acceptable, content_type: Mime[:html].to_s }
end
end
def check_for_cancel
return unless params[:_continue] || (params[:bulk_action] && !params[:bulk_ids])
redirect_to(back_or_index, notice: I18n.t('admin.flash.noaction'))
end
def get_collection(model_config, scope, pagination)
section = @action.key == :export ? model_config.export : model_config.list
eager_loads = section.fields.flat_map(&:eager_load_values)
options = {}
options = options.merge(page: (params[Kaminari.config.param_name] || 1).to_i, per: (params[:per] || model_config.list.items_per_page)) if pagination
options = options.merge(include: eager_loads) unless eager_loads.blank?
options = options.merge(get_sort_hash(model_config))
options = options.merge(query: params[:query]) if params[:query].present?
options = options.merge(filters: params[:f]) if params[:f].present?
options = options.merge(bulk_ids: params[:bulk_ids]) if params[:bulk_ids]
model_config.abstract_model.all(options, scope)
end
def get_association_scope_from_params
return nil unless params[:associated_collection].present?
source_abstract_model = RailsAdmin::AbstractModel.new(to_model_name(params[:source_abstract_model]))
source_model_config = source_abstract_model.config
source_object = source_abstract_model.get(params[:source_object_id])
action = params[:current_action].in?(%w[create update]) ? params[:current_action] : 'edit'
@association = source_model_config.send(action).fields.detect { |f| f.name == params[:associated_collection].to_sym }.with(controller: self, object: source_object)
@association.associated_collection_scope
end
end
end
================================================
FILE: app/helpers/rails_admin/application_helper.rb
================================================
# frozen_string_literal: true
module RailsAdmin
module ApplicationHelper
def authorized?(action_name, abstract_model = nil, object = nil)
object = nil if object.try :new_record?
action(action_name, abstract_model, object).try(:authorized?)
end
def current_action
params[:action].in?(%w[create new]) ? 'create' : 'update'
end
def current_action?(action, abstract_model = @abstract_model, object = @object)
@action.custom_key == action.custom_key &&
abstract_model.try(:to_param) == @abstract_model.try(:to_param) &&
(@object.try(:persisted?) ? @object.id == object.try(:id) : !object.try(:persisted?))
end
def action(key, abstract_model = nil, object = nil)
RailsAdmin::Config::Actions.find(key, controller: controller, abstract_model: abstract_model, object: object)
end
def actions(scope = :all, abstract_model = nil, object = nil)
RailsAdmin::Config::Actions.all(scope, controller: controller, abstract_model: abstract_model, object: object)
end
def edit_user_link
return nil unless _current_user.try(:email).present?
return nil unless (abstract_model = RailsAdmin.config(_current_user.class).abstract_model)
edit_action = action(:edit, abstract_model, _current_user)
authorized = edit_action.try(:authorized?)
content = edit_user_link_label
if authorized
edit_url = rails_admin.url_for(
action: edit_action.action_name,
model_name: abstract_model.to_param,
controller: 'rails_admin/main',
id: _current_user.id,
)
link_to content, edit_url, class: 'nav-link'
else
content_tag :span, content, class: 'nav-link'
end
end
def logout_path
if defined?(Devise)
scope = Devise::Mapping.find_scope!(_current_user)
begin
main_app.send("destroy_#{scope}_session_path")
rescue StandardError
false
end
elsif main_app.respond_to?(:logout_path)
main_app.logout_path
end
end
def logout_method
return [Devise.sign_out_via].flatten.first if defined?(Devise)
:delete
end
def wording_for(label, action = @action, abstract_model = @abstract_model, object = @object)
model_config = abstract_model.try(:config)
object = nil unless abstract_model && object.is_a?(abstract_model.model)
action = RailsAdmin::Config::Actions.find(action.to_sym) if action.is_a?(Symbol) || action.is_a?(String)
I18n.t(
"admin.actions.#{action.i18n_key}.#{label}",
model_label: model_config&.label,
model_label_plural: model_config&.label_plural,
object_label: model_config && object.try(model_config.object_label_method),
)
end
def main_navigation
nodes_stack = RailsAdmin::Config.visible_models(controller: controller)
node_model_names = nodes_stack.collect { |c| c.abstract_model.model_name }
parent_groups = nodes_stack.group_by { |n| n.parent&.to_s }
nodes_stack.group_by(&:navigation_label).collect do |navigation_label, nodes|
nodes = nodes.select { |n| n.parent.nil? || !n.parent.to_s.in?(node_model_names) }
li_stack = navigation parent_groups, nodes
label = navigation_label || t('admin.misc.navigation')
collapsible_stack(label, 'main', li_stack)
end.join.html_safe
end
def root_navigation
actions(:root).select(&:show_in_sidebar).group_by(&:sidebar_label).collect do |label, nodes|
li_stack = nodes.map do |node|
url = rails_admin.url_for(action: node.action_name, controller: 'rails_admin/main')
nav_icon = node.link_icon ? %(<i class="#{node.link_icon}"></i>).html_safe : ''
content_tag :li do
link_to nav_icon + " " + wording_for(:menu, node), url, class: "nav-link"
end
end.join.html_safe
label ||= t('admin.misc.root_navigation')
collapsible_stack(label, 'action', li_stack)
end.join.html_safe
end
def static_navigation
li_stack = RailsAdmin::Config.navigation_static_links.collect do |title, url|
content_tag(:li, link_to(title.to_s, url, target: '_blank', rel: 'noopener noreferrer', class: 'nav-link'))
end.join.html_safe
label = RailsAdmin::Config.navigation_static_label || t('admin.misc.navigation_static_label')
collapsible_stack(label, 'static', li_stack) || ''
end
def navigation(parent_groups, nodes, level = 0)
nodes.collect do |node|
abstract_model = node.abstract_model
model_param = abstract_model.to_param
url = rails_admin.url_for(action: :index, controller: 'rails_admin/main', model_name: model_param)
nav_icon = node.navigation_icon ? %(<i class="#{node.navigation_icon}"></i>).html_safe : ''
css_classes = ['nav-link']
css_classes.push("nav-level-#{level}") if level > 0
css_classes.push('active') if @action && current_action?(@action, model_param)
li = content_tag :li, data: {model: model_param} do
link_to nav_icon + " " + node.label_plural, url, class: css_classes.join(' ')
end
child_nodes = parent_groups[abstract_model.model_name]
child_nodes ? li + navigation(parent_groups, child_nodes, level + 1) : li
end.join.html_safe
end
def breadcrumb(action = @action, _acc = [])
begin
(parent_actions ||= []) << action
end while action.breadcrumb_parent && (action = action(*action.breadcrumb_parent)) # rubocop:disable Lint/Loop
content_tag(:ol, class: 'breadcrumb') do
parent_actions.collect do |a|
am = a.send(:eval, 'bindings[:abstract_model]')
o = a.send(:eval, 'bindings[:object]')
content_tag(:li, class: ['breadcrumb-item', current_action?(a, am, o) && 'active']) do
if current_action?(a, am, o)
wording_for(:breadcrumb, a, am, o)
elsif a.http_methods.include?(:get)
link_to rails_admin.url_for(action: a.action_name, controller: 'rails_admin/main', model_name: am.try(:to_param), id: (o.try(:persisted?) && o.try(:id) || nil)) do
wording_for(:breadcrumb, a, am, o)
end
else
content_tag(:span, wording_for(:breadcrumb, a, am, o))
end
end
end.reverse.join.html_safe
end
end
# parent => :root, :collection, :member
# perf matters here (no action view trickery)
def menu_for(parent, abstract_model = nil, object = nil, only_icon = false)
actions = actions(parent, abstract_model, object).select { |a| a.http_methods.include?(:get) && a.show_in_menu }
actions.collect do |action|
wording = wording_for(:menu, action)
li_class = ['nav-item', 'icon', "#{action.key}_#{parent}_link"].
concat(action.enabled? ? [] : ['disabled'])
content_tag(:li, {class: li_class}.merge(only_icon ? {title: wording, rel: 'tooltip'} : {})) do
label = content_tag(:i, '', {class: action.link_icon}) + ' ' + content_tag(:span, wording, (only_icon ? {style: 'display:none'} : {}))
if action.enabled? || !only_icon
href =
if action.enabled?
rails_admin.url_for(action: action.action_name, controller: 'rails_admin/main', model_name: abstract_model.try(:to_param), id: (object.try(:persisted?) && object.try(:id) || nil))
else
'javascript:void(0)'
end
content_tag(:a, label, {href: href, target: action.link_target, class: ['nav-link', current_action?(action) && 'active', !action.enabled? && 'disabled'].compact}.merge(action.turbo? ? {} : {data: {turbo: 'false'}}))
else
content_tag(:span, label)
end
end
end.join(' ').html_safe
end
def bulk_menu(abstract_model = @abstract_model)
actions = actions(:bulkable, abstract_model)
return '' if actions.empty?
content_tag :li, class: 'nav-item dropdown dropdown-menu-end' do
content_tag(:a, class: 'nav-link dropdown-toggle', data: {'bs-toggle': 'dropdown'}, href: '#') { t('admin.misc.bulk_menu_title').html_safe + ' ' + '<b class="caret"></b>'.html_safe } +
content_tag(:ul, class: 'dropdown-menu', style: 'left:auto; right:0;') do
actions.collect do |action|
content_tag :li do
link_to wording_for(:bulk_link, action, abstract_model), '#', class: 'dropdown-item bulk-link', data: {action: action.action_name}
end
end.join.html_safe
end
end.html_safe
end
def flash_alert_class(flash_key)
case flash_key.to_s
when 'error' then 'alert-danger'
when 'alert' then 'alert-warning'
when 'notice' then 'alert-info'
else "alert-#{flash_key}"
end
end
def handle_asset_dependency_error
yield
rescue LoadError => e
if /sassc/.match?(e.message)
e = e.exception <<~MSG
#{e.message}
RailsAdmin requires the gem sassc-rails, make sure to put `gem 'sassc-rails'` to Gemfile.
MSG
end
raise e
end
# Workaround for https://github.com/rails/rails/issues/31325
def image_tag(source, options = {})
if %w[ActiveStorage::Variant ActiveStorage::VariantWithRecord ActiveStorage::Preview].include? source.class.to_s
super main_app.route_for(ActiveStorage.resolve_model_to_route, source), options
else
super
end
end
private
def edit_user_link_label
[
RailsAdmin::Config.show_gravatar &&
image_tag(gravatar_url(_current_user.email), alt: ''),
content_tag(:span, _current_user.email),
].filter(&:present?).join.html_safe
end
def gravatar_url(email)
"https://secure.gravatar.com/avatar/#{Digest::MD5.hexdigest email}?s=30"
end
def collapsible_stack(label, class_prefix, li_stack)
return nil unless li_stack.present?
collapse_classname = "#{class_prefix}-#{Digest::MD5.hexdigest(label)[0..7]}"
content_tag(:li, class: 'mb-1') do
content_tag(:button, 'aria-expanded': true, class: 'btn btn-toggle align-items-center rounded', data: {bs_toggle: "collapse", bs_target: ".sidebar .#{collapse_classname}"}) do
content_tag(:i, '', class: 'fas fa-chevron-down') + html_escape(' ' + label)
end +
content_tag(:div, class: "collapse show #{collapse_classname}") do
content_tag(:ul, class: 'btn-toggle-nav list-unstyled fw-normal pb-1') do
li_stack
end
end
end
end
end
end
================================================
FILE: app/helpers/rails_admin/form_builder.rb
================================================
# frozen_string_literal: true
require 'nested_form/builder_mixin'
module RailsAdmin
class FormBuilder < ::ActionView::Helpers::FormBuilder
include ::NestedForm::BuilderMixin
include ::RailsAdmin::ApplicationHelper
def generate(options = {})
without_field_error_proc_added_div do
options.reverse_merge!(
action: @template.controller.params[:action],
model_config: @template.instance_variable_get(:@model_config),
nested_in: false,
)
object_infos +
visible_groups(options[:model_config], generator_action(options[:action], options[:nested_in])).collect do |fieldset|
fieldset_for fieldset, options[:nested_in]
end.join.html_safe +
(options[:nested_in] ? '' : @template.render(partial: 'rails_admin/main/submit_buttons'))
end
end
def fieldset_for(fieldset, nested_in)
fields = fieldset.with(
form: self,
object: @object,
view: @template,
controller: @template.controller,
).visible_fields
return if fields.empty?
@template.content_tag :fieldset do
contents = []
contents << @template.content_tag(:legend, %(<i class="fas fa-chevron-#{fieldset.active? ? 'down' : 'right'}"></i> #{fieldset.label}).html_safe, style: fieldset.name == :default ? 'display:none' : '')
contents << @template.content_tag(:p, fieldset.help) if fieldset.help.present?
contents << fields.collect { |field| field_wrapper_for(field, nested_in) }.join
contents.join.html_safe
end
end
def field_wrapper_for(field, nested_in)
# do not show nested field if the target is the origin
return if nested_field_association?(field, nested_in)
@template.content_tag(:div, class: "control-group row mb-3 #{field.type_css_class} #{field.css_class} #{'error' if field.errors.present?}", id: "#{dom_id(field)}_field") do
if field.label
label(field.method_name, field.label, class: 'col-sm-2 col-form-label text-md-end') +
(field.nested_form ? field_for(field) : input_for(field))
else
field.nested_form ? field_for(field) : input_for(field)
end
end
end
def input_for(field)
css = 'col-sm-10 controls'
css += ' has-error' if field.errors.present?
@template.content_tag(:div, class: css) do
field_for(field) +
errors_for(field) +
help_for(field)
end
end
def errors_for(field)
field.errors.present? ? @template.content_tag(:span, field.errors.to_sentence, class: 'help-inline text-danger') : ''.html_safe
end
def help_for(field)
field.help.present? ? @template.content_tag(:div, field.help, class: 'form-text') : ''.html_safe
end
def field_for(field)
field.read_only? ? @template.content_tag(:div, field.pretty_value, class: 'form-control-static') : field.render
end
def object_infos
model_config = RailsAdmin.config(object)
model_label = model_config.label
object_label =
if object.new_record?
I18n.t('admin.form.new_model', name: model_label)
else
object.send(model_config.object_label_method).presence || "#{model_config.label} ##{object.id}"
end
%(<span style="display:none" class="object-infos" data-model-label="#{model_label}" data-object-label="#{CGI.escapeHTML(object_label.to_s)}"></span>).html_safe
end
def jquery_namespace(field)
%(#{'#modal ' if @template.controller.params[:modal]}##{dom_id(field)}_field)
end
def dom_id(field)
(@dom_id ||= {})[field.name] ||=
[
@object_name.to_s.gsub(/\]\[|[^-a-zA-Z0-9:.]/, '_').sub(/_$/, ''),
options[:index],
field.method_name,
].reject(&:blank?).join('_')
end
def dom_name(field)
(@dom_name ||= {})[field.name] ||= %(#{@object_name}#{options[:index] && "[#{options[:index]}]"}[#{field.method_name}]#{field.is_a?(Config::Fields::Association) && field.multiple? ? '[]' : ''})
end
def hidden_field(method, options = {})
if method == :id && object.id.is_a?(Array)
super method, {value: RailsAdmin.config.composite_keys_serializer.serialize(object.id)}
else
super
end
end
protected
def generator_action(action, nested)
if nested
action = :nested
elsif @template.request.format == 'text/javascript'
action = :modal
end
action
end
def visible_groups(model_config, action)
model_config.send(action).with(
form: self,
object: @object,
view: @template,
controller: @template.controller,
).visible_groups
end
def without_field_error_proc_added_div
default_field_error_proc = ::ActionView::Base.field_error_proc
begin
::ActionView::Base.field_error_proc = proc { |html_tag, _instance| html_tag }
yield
ensure
::ActionView::Base.field_error_proc = default_field_error_proc
end
end
private
def nested_field_association?(field, nested_in)
field.inverse_of.presence && nested_in.presence && field.inverse_of == nested_in.name &&
(@template.instance_variable_get(:@model_config).abstract_model == field.abstract_model ||
field.name == nested_in.inverse_of)
end
end
end
================================================
FILE: app/helpers/rails_admin/main_helper.rb
================================================
# frozen_string_literal: true
module RailsAdmin
module MainHelper
def rails_admin_form_for(*args, &block)
options = args.extract_options!.reverse_merge(builder: RailsAdmin::FormBuilder)
(options[:html] ||= {})[:novalidate] ||= !RailsAdmin::Config.browser_validations
form_for(*(args << options), &block) << after_nested_form_callbacks
end
def get_indicator(percent)
return '' if percent < 0 # none
return 'info' if percent < 34 # < 1/100 of max
return 'success' if percent < 67 # < 1/10 of max
return 'warning' if percent < 84 # < 1/3 of max
'danger' # > 1/3 of max
end
def filterable_fields
@filterable_fields ||= @model_config.list.fields.select(&:filterable?)
end
def ordered_filters
return @ordered_filters if @ordered_filters.present?
@index = 0
@ordered_filters = (params[:f].try(:permit!).try(:to_h) || @model_config.list.filters).inject({}) do |memo, filter|
field_name = filter.is_a?(Array) ? filter.first : filter
(filter.is_a?(Array) ? filter.last : {(@index += 1) => {'v' => ''}}).each do |index, filter_hash|
if filter_hash['disabled'].blank?
memo[index] = {field_name => filter_hash}
else
params[:f].delete(field_name)
end
end
memo
end.to_a.sort_by(&:first)
end
def ordered_filter_options
if ordered_filters
@ordered_filter_options ||= ordered_filters.map do |duplet|
filter_for_field = duplet[1]
filter_name = filter_for_field.keys.first
filter_hash = filter_for_field.values.first
unless (field = filterable_fields.find { |f| f.name == filter_name.to_sym }&.with({view: self}))
raise "#{filter_name} is not currently filterable; filterable fields are #{filterable_fields.map(&:name).join(', ')}"
end
field.filter_options.merge(
index: duplet[0],
operator: filter_hash['o'] || field.default_filter_operator,
value: filter_hash['v'],
)
end
end
end
end
end
================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb
================================================
<li class="page-item disabled">
<a href="#" class="page-link">
<%= raw(t 'admin.pagination.truncate') %>
</a>
</li>
================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb
================================================
<% if current_page.last? %>
<li class="page-item next disabled">
<%= link_to raw(t 'admin.pagination.next'), '#', class: 'page-link' %>
</li>
<% else %>
<li class="page-item next">
<%= link_to raw(t 'admin.pagination.next'), url, class: 'page-link' %>
</li>
<% end %>
================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/_page.html.erb
================================================
<% if page.current? %>
<li class="page-item active">
<%= link_to page, url, class: 'page-link' %>
</li>
<% else %>
<li class="page-item">
<%= link_to page, url, class: 'page-link' %>
</li>
<% end %>
================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb
================================================
<%= paginator.render do %>
<nav aria-label="Page navigation">
<ul class="pagination">
<%= prev_page_tag %>
<% each_page do |page| %>
<% if page.left_outer? or page.right_outer? or page.inside_window? %>
<%= page_tag page %>
<% elsif !page.was_truncated? %>
<%= gap_tag %>
<% end %>
<% end %>
<%= next_page_tag %>
</ul>
</nav>
<% end %>
================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb
================================================
<% if current_page.first? %>
<li class="page-item prev disabled">
<%= link_to raw(t 'admin.pagination.previous'), '#', class: 'page-link' %>
</li>
<% else %>
<li class="page-item prev">
<%= link_to raw(t 'admin.pagination.previous'), url, class: 'page-link' %>
</li>
<% end %>
================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb
================================================
<% if current_page.last? %>
<li class="page-item next disabled">
<%= link_to raw(t 'admin.pagination.next'), '#', class: 'page-link' %>
</li>
<% else %>
<li class="page-item next">
<%= link_to raw(t 'admin.pagination.next'), url, class: 'page-link' %>
</li>
<% end %>
================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb
================================================
<%= paginator.render do %>
<nav aria-label="Page navigation">
<ul class="pagination">
<%= prev_page_tag if !current_page.first? %>
<%= next_page_tag %>
</ul>
</nav>
<% end %>
================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb
================================================
<% if current_page.first? %>
<li class="page-item prev disabled">
<%= link_to raw(t 'admin.pagination.previous'), '#', class: 'page-link' %>
</li>
<% else %>
<li class="page-item prev">
<%= link_to raw(t 'admin.pagination.previous'), url, class: 'page-link' %>
</li>
<% end %>
================================================
FILE: app/views/layouts/rails_admin/_head.html.erb
================================================
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="width=device-width, initial-scale=1" name="viewport; charset=utf-8">
<meta content="NONE,NOARCHIVE" name="robots">
<meta content="false" name="turbo-prefetch">
<%= csrf_meta_tag %>
<% case RailsAdmin::config.asset_source
when :webpacker %>
<%= stylesheet_pack_tag "rails_admin", data: {'turbo-track': 'reload'} %>
<%= javascript_pack_tag "rails_admin", defer: true, data: {'turbo-track': 'reload'} %>
<% when :sprockets %>
<% handle_asset_dependency_error do %>
<%= stylesheet_link_tag "rails_admin/application.css", media: :all, data: {'turbo-track': 'reload'} %>
<%= javascript_include_tag "rails_admin/application.js", defer: true, data: {'turbo-track': 'reload'} %>
<% end %>
<% when :vite %>
<%= vite_javascript_tag "rails_admin", defer: true, data: {'turbo-track': 'reload'} %>
<% when :webpack %>
<%= stylesheet_link_tag "rails_admin.css", media: :all, data: {'turbo-track': 'reload'} %>
<%= javascript_include_tag "rails_admin.js", defer: true, data: {'turbo-track': 'reload'} %>
<% when :importmap %>
<%= stylesheet_link_tag "rails_admin.css", media: :all, data: {'turbo-track': 'reload'} %>
<%= javascript_inline_importmap_tag(RailsAdmin::Engine.importmap.to_json(resolver: self)) %>
<%= javascript_importmap_module_preload_tags(RailsAdmin::Engine.importmap) %>
<%= javascript_importmap_shim_nonce_configuration_tag if respond_to? :javascript_importmap_shim_nonce_configuration_tag %>
<%= javascript_importmap_shim_tag if respond_to? :javascript_importmap_shim_tag %>
<%= # Preload jQuery and make it global, unless jQuery UI fails to initialize
tag.script "import jQuery from 'jquery'; window.jQuery = jQuery;".html_safe, type: "module" %>
<%= javascript_import_module_tag 'rails_admin' %>
<% else
raise "Unknown asset_source: #{RailsAdmin::config.asset_source}"
end %>
================================================
FILE: app/views/layouts/rails_admin/_navigation.html.erb
================================================
<div class="container-fluid">
<a class="navbar-brand" href="<%= dashboard_path %>">
<%= _get_plugin_name[0] || 'Rails' %>
<small>
<%= _get_plugin_name[1] || 'Admin' %>
</small>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#secondary-navigation">
<span class="sr-only">
<%= t('admin.toggle_navigation') %>
</span>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="secondary-navigation">
<%= render partial: 'layouts/rails_admin/secondary_navigation' %>
</div>
</div>
================================================
FILE: app/views/layouts/rails_admin/_secondary_navigation.html.erb
================================================
<ul class="navbar-nav ms-auto root_links">
<% actions(:root).select(&:show_in_navigation).each do |action| %>
<li class="nav-item <%= action.action_name %>_root_link">
<%= link_to wording_for(:menu, action), { action: action.action_name, controller: 'rails_admin/main' }, {class: ['nav-link']}.merge(action.turbo? ? {} : {data: {turbo: 'false'}}) %>
</li>
<% end %>
<% if main_app_root_path = (main_app.root_path rescue false) %>
<li class="nav-item">
<%= link_to t('admin.home.name'), main_app_root_path, class: 'nav-link' %>
</li>
<% end %>
<% if _current_user %>
<% if user_link = edit_user_link %>
<li class="nav-item edit_user_root_link">
<%= user_link %>
</li>
<% end %>
<% if logout_path.present? %>
<li class="nav-item">
<%= link_to logout_path, method: logout_method, class: 'nav-link', data: {turbo: 'false'} do %>
<span class="badge bg-danger"><%= t('admin.misc.log_out') %></span>
<% end %>
</li>
<% end %>
<% end %>
</ul>
================================================
FILE: app/views/layouts/rails_admin/_sidebar_navigation.html.erb
================================================
<ul class="sidebar col-sm-3 col-md-2 nav btn-toggle-nav flex-column flex-nowrap bg-light">
<%= main_navigation %>
<%= root_navigation %>
<%= static_navigation %>
</ul>
================================================
FILE: app/views/layouts/rails_admin/application.html.erb
================================================
<!DOCTYPE html>
<html lang="<%= I18n.locale %>">
<head>
<%= render "layouts/rails_admin/head" %>
</head>
<body class="rails_admin">
<div data-i18n-options="<%= I18n.t("admin.js").to_json %>" id="admin-js"></div>
<div class="badge bg-warning" id="loading" style="display:none; position:fixed; right:20px; bottom:20px; z-index:100000">
<%= t('admin.loading') %>
</div>
<nav class="navbar navbar-expand-md fixed-top <%= RailsAdmin::Config.navbar_css_classes.join(' ') %>">
<%= render "layouts/rails_admin/navigation" %>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 flex-wrap p-0">
<%= render "layouts/rails_admin/sidebar_navigation" %>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2">
<div class="container-fluid">
<%= render template: 'layouts/rails_admin/content' %>
</div>
</div>
</div>
</div>
</body>
</html>
================================================
FILE: app/views/layouts/rails_admin/content.html.erb
================================================
<title>
<%= "#{@abstract_model.try(:pretty_name) || @page_name} | #{[_get_plugin_name[0] || 'Rails', _get_plugin_name[1] || 'Admin'].join(' ')}" %>
</title>
<header class="py-2 m-2 border-bottom" data-model="<%= @abstract_model.to_param %>">
<h1>
<%= @page_name %>
</h1>
</header>
<% flash && flash.each do |key, value| %>
<div class="<%= flash_alert_class(key) %> alert alert-dismissible">
<%= value %>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<% end %>
<nav aria-label="breadcrumb">
<%= breadcrumb %>
</nav>
<ul class="nav nav-tabs mb-3">
<%= menu_for((@abstract_model ? (@object.try(:persisted?) ? :member : :collection) : :root), @abstract_model, @object) %>
<%= content_for :contextual_tabs %>
</ul>
<%= yield %>
================================================
FILE: app/views/layouts/rails_admin/modal.js.erb
================================================
<% flash && flash.each do |key, value| %>
<div class="<%= flash_alert_class(key) %> alert alert-dismissible">
<%= value %>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<% end %>
<%= yield %>
================================================
FILE: app/views/rails_admin/main/_dashboard_history.html.erb
================================================
<table class="table table-condensed table-striped table-hover">
<thead>
<tr>
<th class="shrink user">
<%= t("admin.table_headers.username") %>
</th>
<th class="shrink items">
<%= t("admin.table_headers.item") %>
</th>
<th class="changes">
<%= t("admin.table_headers.changes") %>
</th>
</tr>
</thead>
<tbody class="table-group-divider">
<% @history.each do |t| %>
<% abstract_model = RailsAdmin.config(t.table).abstract_model %>
<tr>
<td>
<%= t.try :username %>
</td>
<% if o = abstract_model.try(:get, t.item) %>
<% label = o.send(abstract_model.config.object_label_method) %>
<% if show_action = action(:show, abstract_model, o) %>
<td>
<%= link_to(label, url_for(action: show_action.action_name, model_name: abstract_model.to_param, id: o.id)) %>
</td>
<% else %>
<td>
<%= label %>
</td>
<% end %>
<% else %>
<% label = Object.const_defined?(t.table) ? t.table.constantize.model_name.human : t.table %>
<td>
<%= "#{label} ##{t.item}" %>
</td>
<% end %>
<td>
<%= t.message %>
</td>
</tr>
<% end %>
</tbody>
</table>
================================================
FILE: app/views/rails_admin/main/_delete_notice.html.erb
================================================
<% object = delete_notice %>
<li style="display:block; margin-top:10px">
<span class="label label-default">
<%= @abstract_model.pretty_name %>
</span>
<% wording = object.send(@model_config.object_label_method) %>
<% if show_action = action(:show, @abstract_model, object) %>
<%= link_to(wording, url_for(action: show_action.action_name, model_name: @abstract_model.to_param, id: object.id)) %>
<% else %>
<%= wording %>
<% end %>
<ul>
<% @abstract_model.each_associated_children(object) do |association, children| %>
<% humanized_association = @abstract_model.model.human_attribute_name association.name %>
<% limit = children.count > 12 ? 10 : children.count %>
<% children.first(limit).each do |child| %>
<%= content_tag :li, class: dom_class(child) do %>
<% child_config = RailsAdmin.config(child) %>
<%= humanized_association.singularize %>
<% wording = child.send(child_config.object_label_method) %>
<% if child.id && (show_action = action(:show, child_config.abstract_model, child)) %>
<%= link_to(wording, url_for(action: show_action.action_name, model_name: child_config.abstract_model.to_param, id: child.id)) %>
<% else %>
<%= wording %>
<% end %>
<% end %>
<% end %>
<% if children.count > limit %>
<li>
<%= t('admin.misc.more', count: children.count - limit, models_name: humanized_association) %>
</li>
<% end %>
<% end %>
</ul>
</li>
================================================
FILE: app/views/rails_admin/main/_form_action_text.html.erb
================================================
<%
js_data = {
csspath: field.css_location,
jspath: field.js_location,
warn_dynamic_load: field.warn_dynamic_load
}
%>
<%= form.rich_text_area field.method_name, field.html_attributes.reverse_merge(data: { options: js_data.to_json }) %>
================================================
FILE: app/views/rails_admin/main/_form_boolean.html.erb
================================================
<% if field.nullable? %>
<div class="btn-group" role="group">
<% {'1': [true, 'btn-outline-success'], '0': [false, 'btn-outline-danger'], '': [nil, 'btn-outline-secondary']}.each do |text, (value, btn_class)| %>
<%= form.radio_button field.method_name, text, field.html_attributes.reverse_merge({ checked: field.form_value == value, required: field.required, class: 'btn-check' }) %>
<%= form.label "#{field.method_name}_#{text}", class: "#{field.css_classes[value]} btn #{btn_class}" do %>
<%= field.labels[value].html_safe %>
<% end %>
<% end %>
</div>
<% else %>
<div class="col-form-label">
<%= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({ value: field.form_value, checked: field.form_value.in?([true, '1']), required: field.required, class: 'form-check-input' }) %>
</div>
<% end %>
================================================
FILE: app/views/rails_admin/main/_form_ck_editor.html.erb
================================================
<%
js_data = {
jspath: field.location ? field.location : field.base_location + "ckeditor.js",
base_location: field.base_location,
options: {
customConfig: field.config_js ? field.config_js : field.base_location + "config.js"
}
}
%>
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'ckeditor', options: js_data.to_json }).reverse_merge({ value: field.form_value }) %>
================================================
FILE: app/views/rails_admin/main/_form_code_mirror.html.erb
================================================
<%
js_data = {
csspath: field.css_location,
jspath: field.js_location,
options: field.config,
locations: field.assets
}
%>
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'codemirror', options: js_data.to_json }).reverse_merge({ value: field.form_value }) %>
================================================
FILE: app/views/rails_admin/main/_form_colorpicker.html.erb
================================================
<div class="row">
<div class="col-sm-2">
<%= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({class: 'form-control', value: field.form_value}) %>
</div>
</div>
================================================
FILE: app/views/rails_admin/main/_form_datetime.html.erb
================================================
<div class="row">
<div class="col-sm-4">
<div class="input-group">
<%= form.text_field field.method_name, field.html_attributes.reverse_merge({autocomplete: 'off', class: 'form-control', data: {datetimepicker: true, options: field.datepicker_options.to_json}, value: field.form_value}) %>
<%= form.label(field.method_name, class: 'input-group-text') do %>
<i class="fa fa-fw fa-calendar"></i>
<% end %>
</div>
</div>
</div>
================================================
FILE: app/views/rails_admin/main/_form_enumeration.html.erb
================================================
<% unless field.multiple? %>
<div class="row">
<div class="col-sm-4">
<%= form.select field.method_name, field.enum, { include_blank: true }.reverse_merge({ selected: field.form_value }), field.html_attributes.reverse_merge({ data: { enumeration: true }, placeholder: t('admin.misc.search') }) %>
</div>
</div>
<% else %>
<%
js_data = {
xhr: false,
sortable: false,
cacheAll: true,
regional: {
add: t("admin.misc.add_new"),
chooseAll: t("admin.misc.chose_all"),
clearAll: t("admin.misc.clear_all"),
down: t("admin.misc.down"),
remove: t("admin.misc.remove"),
search: t("admin.misc.search"),
up: t("admin.misc.up")
}
}
%>
<%= form.select field.method_name, field.enum, { selected: field.form_value, object: form.object }, field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: js_data.to_json }, multiple: true}) %>
<% end %>
================================================
FILE: app/views/rails_admin/main/_form_field.html.erb
================================================
<%= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({ value: field.form_value, class: 'form-control', required: field.required}) %>
================================================
FILE: app/views/rails_admin/main/_form_file_upload.html.erb
================================================
<% file = field.value %>
<% if field.cache_method %>
<%= form.hidden_field(field.cache_method, value: field.cache_value) %>
<% end %>
<div class="toggle mb-2" style="<%= ('display:none;' if file && field.delete_method && form.object.send(field.delete_method) == '1') %>">
<% if value = field.pretty_value %>
<%= value %>
<% end %>
<%= form.file_field(field.name, {data: {fileupload: true}}.deep_merge(field.html_attributes)) %>
</div>
<% if field.optional? && field.errors.blank? && file && field.delete_method %>
<a class="btn btn-info btn-remove-image" data-toggle="button" href="#" role="button">
<i class="fas fa-trash"></i>
<%= I18n.t('admin.actions.delete.link', object_label: field.label) %>
</a>
<%= form.check_box(field.delete_method, style: 'display:none;') %>
<% end %>
================================================
FILE: app/views/rails_admin/main/_form_filtering_multiselect.html.erb
================================================
<%
config = field.associated_model_config
%>
<div class="row">
<div class="col-auto">
<input name="<%= form.dom_name(field) %>" type="hidden" />
<%=
form.select field.method_name, field.collection, { selected: field.form_value, object: form.object },
field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: field.widget_options.to_json }, multiple: true})
%>
</div>
<% if authorized?(:new, config.abstract_model) && field.inline_add %>
<div class="col-sm-4 modal-actions">
<% path_hash = { model_name: config.abstract_model.to_param, modal: true }.merge!(field.associated_prepopulate_params) %>
<%= link_to "<i class=\"fas fa-plus\"></i> ".html_safe + wording_for(:link, :new, config.abstract_model), '#', data: { link: new_path(path_hash) }, class: "create btn btn-info", style: 'margin-left:10px' %>
</div>
<% end %>
</div>
================================================
FILE: app/views/rails_admin/main/_form_filtering_select.html.erb
================================================
<%
config = field.associated_model_config
%>
<div class="row">
<div class="col-sm-4">
<%=
form.select field.method_name, field.collection, { selected: field.form_value, include_blank: true },
field.html_attributes.reverse_merge({ data: { filteringselect: true, options: field.widget_options.to_json }, placeholder: t('admin.misc.search') })
%>
</div>
<div class="col-sm-8 mt-2 mt-md-0 modal-actions">
<% if authorized?(:new, config.abstract_model) && field.inline_add %>
<% path_hash = { model_name: config.abstract_model.to_param, modal: true }.merge!(field.associated_prepopulate_params) %>
<%= link_to "<i class=\"fas fa-plus\"></i> ".html_safe + wording_for(:link, :new, config.abstract_model), '#', data: { link: new_path(path_hash) }, class: "btn btn-info create" %>
<% end %>
<% if authorized?(:edit, config.abstract_model) && field.inline_edit %>
<%= link_to "<i class=\"fas fa-pencil-alt\"></i> ".html_safe + wording_for(:link, :edit, config.abstract_model), '#', data: { link: edit_path(model_name: config.abstract_model.to_param, modal: true, id: '__ID__') }, class: "btn btn-info update ms-2#{' disabled' if field.value.nil?}" %>
<% end %>
</div>
</div>
================================================
FILE: app/views/rails_admin/main/_form_froala.html.erb
================================================
<%
js_data = {
csspath: field.css_location,
jspath: field.js_location,
config_options: field.config_options.to_json
}
%>
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'froala-wysiwyg', options: js_data.to_json }).reverse_merge({ value: field.form_value }) %>
================================================
FILE: app/views/rails_admin/main/_form_multiple_file_upload.html.erb
================================================
<% field.attachments.each_with_index do |attachment, i| %>
<div class="<%= field.reorderable? ? 'sortables' : '' %> toggle mb-2">
<%= attachment.pretty_value %>
<% if field.delete_method || field.keep_method %>
<a class="btn btn-info btn-remove-image" data-toggle="button" href="#" role="button">
<i class="fas fa-trash"></i>
<%= I18n.t('admin.form.delete_file', field_label: field.label, number: i + 1) %>
</a>
<% if field.keep_method %>
<%= form.check_box(field.keep_method, {multiple:true, checked: true, style: 'display:none;'}, attachment.keep_value, nil) %>
<% elsif field.delete_method %>
<%= form.check_box(field.delete_method, {multiple:true, style: 'display:none;'}, attachment.delete_value, nil) %>
<% end %>
<% end %>
</div>
<% end %>
<%= form.file_field(field.name, { data: { :"multiple-fileupload" => true }, multiple: true }.deep_merge(field.html_attributes)) %>
<% if field.cache_method %>
<%= form.hidden_field(field.cache_method) %>
<% end %>
================================================
FILE: app/views/rails_admin/main/_form_nested_many.html.erb
================================================
<div class="controls col-sm-10" data-nestedmany="true">
<div class="btn-group">
<a class="<%= (field.active? ? 'active' : '') %> btn btn-info toggler" data-bs-target="<%= form.jquery_namespace(field) %> .collapse" data-bs-toggle="collapse" role="button">
<i class="fas"></i>
</a>
<% if field.inline_add %>
<%= form.link_to_add "<i class=\"fas fa-plus\"></i> #{wording_for(:link, :new, field.associated_model_config.abstract_model)}".html_safe, field.name, { class: 'btn btn-info' } %>
<% end %>
</div>
<%= form.errors_for(field) %>
<%= form.help_for(field) %>
<ul class="nav nav-tabs collapse"></ul>
</div>
<div class="tab-content collapse">
<%= form.fields_for field.name do |nested_form| %>
<% if field.nested_form[:allow_destroy] || nested_form.options[:child_index] == "new_#{field.name}" %>
<%= nested_form.link_to_remove '<span class="btn btn-danger"><i class="fas fa-trash"></i></span>'.html_safe %>
<% end %>
<%= nested_form.generate({action: :nested, model_config: field.associated_model_config, nested_in: field }) %>
<% end %>
</div>
================================================
FILE: app/views/rails_admin/main/_form_nested_one.html.erb
================================================
<div class="controls col-sm-10" data-nestedone="true">
<ul class="nav collapse"></ul>
<div class="btn-group">
<a class="<%= (field.active? ? 'active' : '') %> btn btn-info toggler" data-bs-target="<%= form.jquery_namespace(field) %> .collapse" data-bs-toggle="collapse" role="button">
<i class="fas"></i>
</a>
<% if field.inline_add %>
<%= form.link_to_add "<i class=\"fas fa-plus\"></i> #{wording_for(:link, :new, field.associated_model_config.abstract_model)}".html_safe, field.name, { class: 'btn btn-info', :'data-add-label' => "<i class=\"fas fa-plus\"></i> #{wording_for(:link, :new, field.associated_model_config.abstract_model)}".gsub("\n", "") } %>
<% end %>
</div>
<%= form.errors_for(field) %>
<%= form.help_for(field) %>
</div>
<div class="tab-content collapse">
<%= form.fields_for field.name do |nested_form| %>
<% if field.nested_form[:allow_destroy] %>
<%= nested_form.link_to_remove '<span class="btn btn-danger"><i class="fas fa-trash"></i></span>'.html_safe %>
<% end %>
<%= nested_form.generate({action: :nested, model_config: field.associated_model_config, nested_in: field }) %>
<% end %>
</div>
================================================
FILE: app/views/rails_admin/main/_form_polymorphic_association.html.erb
================================================
<%
column_type_dom_id = form.dom_id(field).sub(field.method_name.to_s, field.type_column)
%>
<div class="row">
<div class="col-sm-3">
<% field.widget_options_for_types.each do |model, value| %>
<div data-options="<%= value.to_json %>" id="<%= model %>-js-options"></div>
<% end %>
<%=
form.select field.type_column, field.type_collection, {include_blank: true, selected: field.selected_type},
class: "form-select", id: column_type_dom_id, data: { polymorphic: true, urls: field.type_urls.to_json },
style: "float: left; margin-right: 10px;"
%>
</div>
<div class="col-sm-4">
<%=
form.select field.method_name, field.collection, {include_blank: true, selected: field.selected_id},
class: "form-control", data: { filteringselect: true, options: field.widget_options },
placeholder: 'Search'
%>
</div>
</div>
================================================
FILE: app/views/rails_admin/main/_form_simple_mde.html.erb
================================================
<%
js_data = {
js_location: field.js_location,
css_location: field.css_location,
instance_config: field.instance_config
}
%>
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'simplemde', options: js_data.to_json }).reverse_merge({ value: field.form_value }) %>
================================================
FILE: app/views/rails_admin/main/_form_text.html.erb
================================================
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: false, options: {}.to_json }).reverse_merge({ value: field.form_value, class: 'form-control', required: field.required }) %>
================================================
FILE: app/views/rails_admin/main/_form_wysihtml5.html.erb
================================================
<%
js_data = {
csspath: field.css_location,
jspath: field.js_location,
config_options: field.config_options.to_json
}
%>
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'bootstrap-wysihtml5', options: js_data.to_json }).reverse_merge({ value: field.form_value }) %>
================================================
FILE: app/views/rails_admin/main/_submit_buttons.html.erb
================================================
<div class="form-actions row justify-content-end my-3">
<div class="col-sm-10">
<input name="return_to" type="<%= :hidden %>" value="<%= (params[:return_to].presence || request.referer) %>" />
<button class="btn btn-primary" data-disable-with="<%= t("admin.form.save") %>" name="_save" type="submit"<%= ' disabled' unless @action.enabled? %>>
<i class="fas fa-check"></i>
<%= t("admin.form.save") %>
</button>
<span class="extra_buttons">
<% if @action.enabled? && authorized?(:new, @abstract_model) %>
<button class="btn btn-info" data-disable-with="<%= t("admin.form.save_and_add_another") %>" name="_add_another" type="submit">
<%= t("admin.form.save_and_add_another") %>
</button>
<% end %>
<% if @action.enabled? && authorized?(:edit, @abstract_model) %>
<button class="btn btn-info" data-disable-with="<%= t("admin.form.save_and_edit") %>" name="_add_edit" type="submit"<%= ' disabled' unless @action.enabled? %>>
<%= t("admin.form.save_and_edit") %>
</button>
<% end %>
<button class="btn btn-light" data-disable-with="<%= t("admin.form.cancel") %>" formnovalidate="<%= true %>" name="_continue" type="submit">
<i class="fas fa-times"></i>
<%= t("admin.form.cancel") %>
</button>
</span>
</div>
</div>
================================================
FILE: app/views/rails_admin/main/bulk_delete.html.erb
================================================
<h4>
<%= I18n.t('admin.form.bulk_delete') %>
</h4>
<ul>
<%= render partial: "delete_notice", collection: @objects %>
</ul>
<%= form_tag bulk_delete_path(model_name: @abstract_model.to_param, bulk_ids: @objects.map(&:id)), method: :delete do %>
<div class="form-actions">
<input name="return_to" type="<%= :hidden %>" value="<%= (params[:return_to].presence || request.referer) %>" />
<button class="btn btn-danger" data-disable-with="<%= t("admin.form.confirmation") %>" type="submit">
<i class="fas fa-check"></i>
<%= t("admin.form.confirmation") %>
</button>
<button class="btn" data-disable-with="<%= t("admin.form.cancel") %>" name="_continue" type="submit">
<i class="fas fa-times"></i>
<%= t("admin.form.cancel") %>
</button>
</div>
<% end %>
================================================
FILE: app/views/rails_admin/main/dashboard.html.erb
================================================
<% if @abstract_models %>
<table class="table table-condensed table-striped table-hover">
<thead>
<tr>
<th class="shrink model-name">
<%= t "admin.table_headers.model_name" %>
</th>
<th class="shrink last-created">
<%= t "admin.table_headers.last_created" %>
</th>
<th class="records">
<%= t "admin.table_headers.records" %>
</th>
<th class="shrink controls"></th>
</tr>
</thead>
<tbody class="table-group-divider">
<% @abstract_models.each do |abstract_model| %>
<% if authorized? :index, abstract_model %>
<% index_path = index_path(model_name: abstract_model.to_param) %>
<% row_class = "#{cycle("odd", "even")}#{" link" if index_path} #{abstract_model.param_key}_links" %>
<tr class="<%= row_class %>" data-link="<%= index_path %>">
<% last_created = @most_recent_created[abstract_model.model.name] %>
<% active = last_created.try(:today?) %>
<td>
<span class="show">
<%= link_to abstract_model.config.label_plural, index_path %>
</span>
</td>
<td>
<% if last_created %>
<%= t "admin.misc.time_ago", time: time_ago_in_words(last_created), default: "#{time_ago_in_words(last_created)} #{t("admin.misc.ago")}" %>
<% end %>
</td>
<td>
<% count = @count[abstract_model.model.name] %>
<% percent = count > 0 ? (@max <= 1 ? count : ((Math.log(count+1) * 100.0) / Math.log(@max+1)).to_i) : -1 %>
<div class="<%= active ? 'active progress-bar-striped ' : '' %>progress" style="margin-bottom:0px">
<div class="bg-<%= get_indicator(percent) %> progress-bar animate-width-to" data-animate-length="<%= ([1.0, percent].max.to_i * 20) %>" data-animate-width-to="<%= [2.0, percent].max.to_i %>%" style="width:2%">
<%= @count[abstract_model.model.name] %>
</div>
</div>
</td>
<td class="links">
<ul class="nav d-inline list-inline">
<%= menu_for :collection, abstract_model, nil, true %>
</ul>
</td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
<% end %>
<% if @history && authorized?(:history_index) %>
<div class="block" id="block-tables">
<div class="content">
<h2>
<%= t("admin.actions.history_index.menu") %>
</h2>
<%= render partial: 'rails_admin/main/dashboard_history' %>
</div>
</div>
<% end %>
================================================
FILE: app/views/rails_admin/main/delete.html.erb
================================================
<h4>
<%= t("admin.form.are_you_sure_you_want_to_delete_the_object", model_name: @abstract_model.pretty_name.downcase) %>
<q><strong><%= @model_config.with(object: @object).object_label %></strong></q>
<%= t("admin.form.all_of_the_following_related_items_will_be_deleted") %>
</h4>
<ul>
<%= render partial: "delete_notice", object: @object %>
</ul>
<%= form_for(@object, url: delete_path(model_name: @abstract_model.to_param, id: @object.id), html: {method: "delete"}) do %>
<input name="return_to" type="<%= :hidden %>" value="<%= (params[:return_to].presence || request.referer) %>" />
<div class="form-actions">
<button class="btn btn-danger" data-disable-with="<%= t("admin.form.confirmation") %>" type="submit">
<i class="fas fa-check"></i>
<%= t("admin.form.confirmation") %>
</button>
<button class="btn" data-disable-with="<%= t("admin.form.cancel") %>" name="_continue" type="submit">
<i class="fas fa-times"></i>
<%= t("admin.form.cancel") %>
</button>
</div>
<% end %>
================================================
FILE: app/views/rails_admin/main/edit.html.erb
================================================
<%= rails_admin_form_for @object, url: edit_path(@abstract_model, @object.id), as: @abstract_model.param_key, html: { method: "put", multipart: true, class: "main", data: { title: @page_name } } do |form| %>
<%= form.generate action: :update %>
<% end %>
================================================
FILE: app/views/rails_admin/main/export.html.erb
================================================
<% params = request.params.except(:action, :controller, :utf8, :page, :per_page, :format, :authenticity_token) %>
<% visible_fields = @model_config.export.with(view: self, object: @abstract_model.model.new, controller: self.controller).visible_fields %>
<%= form_tag export_path(params.merge(all: true)), method: 'post', class: "main", data: {turbo: false} do %>
<input name="send_data" type="hidden" value="true" />
<fieldset id="fields_to_export" class="mb-3">
<legend>
<i class="fas fa-chevron-down"></i>
<%= t('admin.export.select') %>
</legend>
<div class="form-group control-group">
<div class="col-sm-12">
<div class="checkbox">
<label for="check_all">
<%= check_box_tag 'all', 'all', true, { id: 'check_all' } %>
<b>
<%= t('admin.export.select_all_fields') %>
</b>
</label>
</div>
</div>
</div>
<div class="control-group row">
<div class="col-sm-12">
<div class="card bg-light my-2 reverse-selection" rel="tooltip" role="button" title="<%= t('admin.export.click_to_reverse_selection') %>">
<div class="card-body p-2">
<b><%= t('admin.export.fields_from', name: @model_config.label_plural.downcase) %></b>
</div>
</div>
<div class="controls">
<div class="row">
<% visible_fields.select{ |f| !f.association? || f.association.polymorphic? }.each do |field| %>
<% list = field.virtual? ? 'methods' : 'only' %>
<div class="checkbox col-sm-3 my-1">
<% if field.association? && field.association.polymorphic? %>
<label for="schema_<%= list %>_<%= field.method_name %>">
<%= check_box_tag "schema[#{list}][]", field.method_name, true, { id: "schema_#{list}_#{field.method_name}" } %>
<%= field.label + " [id]" %>
</label>
<% polymorphic_type_column_name = @abstract_model.properties.detect {|p| field.association.foreign_type == p.name }.name %>
<label for="schema_<%= list %>_<%= polymorphic_type_column_name %>">
<%= check_box_tag "schema[#{list}][]", polymorphic_type_column_name, true, { id: "schema_#{list}_#{polymorphic_type_column_name}" } %>
<%= field.label + " [type]" %>
</label>
<% else %>
<label for="schema_<%= list %>_<%= field.name %>">
<%= check_box_tag "schema[#{list}][]", field.name, true, { id: "schema_#{list}_#{field.name}" } %>
<%= field.label %>
</label>
<% end %>
</div>
<% end %>
</div>
</div>
</div>
</div>
<% visible_fields.select{ |f| f.association? && !f.association.polymorphic? }.each do |field| %>
<% fields = field.associated_model_config.export.with(controller: self.controller, view: self, object: (associated_model = field.associated_model_config.abstract_model.model).new).visible_fields.select{ |f| !f.association? } %>
<div class="control-group row">
<div class="col-sm-12">
<div class="card bg-light my-2 reverse-selection" rel="tooltip" role="button" title="<%= t('admin.export.click_to_reverse_selection') %>">
<div class="card-body p-2">
<b><%= t('admin.export.fields_from_associated', name: field.label.downcase) %></b>
</div>
</div>
<div class="controls">
<div class="row">
<% fields.each do |associated_model_field| %>
<% list = associated_model_field.virtual? ? 'methods' : 'only' %>
<div class="checkbox col-sm-3 my-1">
<label for="schema_include_<%= field.name %>_<%= list %>_<%= associated_model_field.name %>">
<%= check_box_tag "schema[include][#{field.name}][#{list}][]", associated_model_field.name, true, { id: "schema_include_#{field.name}_#{list}_#{associated_model_field.name}" } %>
<%= associated_model_field.label %>
</label>
</div>
<% end %>
</div>
</div>
</div>
</div>
<% end %>
</fieldset>
<fieldset>
<legend>
<i class="fas fa-chevron-down"></i>
<%= t('admin.export.options_for', name: 'csv') %>
</legend>
<div class="control-group row">
<% guessed_encoding = @abstract_model.encoding %>
<label class="col-sm-2 col-form-label text-md-end" for="csv_options_encoding_to">
<%= t('admin.export.csv.encoding_to') %>
</label>
<div class="col-sm-10 controls">
<div class="w-50">
<%= select_tag 'csv_options[encoding_to]', options_for_select(Encoding.name_list.sort), include_blank: true, placeholder: t('admin.misc.search'), :'data-enumeration' => true %>
</div>
<p class="form-text">
<%= t('admin.export.csv.encoding_to_help', name: guessed_encoding) %>
</p>
</div>
</div>
<div class="control-group row">
<label class="col-sm-2 col-form-label text-md-end" for="csv_options_skip_header">
<%= t('admin.export.csv.skip_header') %>
</label>
<div class="col-sm-10 controls">
<div class="col-form-label">
<label>
<%= check_box_tag 'csv_options[skip_header]', 'true' %>
</label>
</div>
<p class="form-text">
<%= t('admin.export.csv.skip_header_help') %>
</p>
</div>
</div>
<div class="control-group row">
<label class="col-sm-2 col-form-label text-md-end" for="csv_options_generator_col_sep">
<%= t('admin.export.csv.col_sep') %>
</label>
<div class="col-sm-10 controls">
<div class="w-50">
<%= select_tag 'csv_options[generator][col_sep]', options_for_select({ '' => t('admin.export.csv.default_col_sep'), "<comma> ','" => ',', "<semicolon> ';'" => ';', '<tabs>' => "'\t'" }), placeholder: t('admin.misc.search'), :'data-enumeration' => true %>
</div>
<p class="form-text">
<%= t('admin.export.csv.col_sep_help', value: t('admin.export.csv.default_col_sep')) %>
</p>
</div>
</div>
</fieldset>
<div class="form-actions row justify-content-end mb-3">
<div class="col-sm-offset-2 col-sm-10">
<input name="return_to" type="<%= :hidden %>" value="<%= (params[:return_to].presence || request.referer) %>" />
<button class="btn btn-primary" name="csv" type="submit">
<i class="fas fa-check"></i>
<%= t("admin.export.confirmation", name: 'csv') %>
</button>
<button class="btn btn-info" name="json" type="submit">
<%= t("admin.export.confirmation", name: 'json') %>
</button>
<button class="btn btn-info" name="xml" type="submit">
<%= t("admin.export.confirmation", name: 'xml') %>
</button>
<button class="btn btn-light" name="_continue" type="submit">
<i class="fas fa-times"></i>
<%= t("admin.form.cancel") %>
</button>
</div>
</div>
<% end %>
================================================
FILE: app/views/rails_admin/main/history.html.erb
================================================
<% params = request.params.except(:action, :controller, :model_name) %>
<% query = params[:query] %>
<% filter = params[:filter] %>
<% sort = params[:sort] %>
<% sort_reverse = params[:sort_reverse] %>
<% path_method = params[:id] ? "history_show_path" : "history_index_path" %>
<%= form_tag("", method: "get", class: "search form-inline") do %>
<div class="card mb-3 p-3 bg-light">
<div class="row">
<div class="col-sm-6">
<div class="input-group">
<input class="form-control" name="query" placeholder="<%= t("admin.misc.filter") %>" type="search" value="<%= query %>" />
<button class="btn btn-primary" data-disable-with="<%= '<i class="fas fa-sync"></i> ' + t('admin.misc.refresh') %>" type="submit">
<i class="fas fa-sync"></i>
<%= t("admin.misc.refresh") %>
</button>
</div>
</div>
</div>
</div>
<% end %>
<table class="table table-condensed table-striped table-hover" id="history">
<thead>
<tr>
<% columns = [] %>
<% columns << { property_name: "created_at", css_class: "created_at",link_text: t('admin.table_headers.created_at') } %>
<% columns << { property_name: "username", css_class: "username", link_text: t('admin.table_headers.username') } %>
<% columns << { property_name: "item", css_class: "item", link_text: t('admin.table_headers.item') } if @general %>
<% columns << { property_name: "message", css_class: "message", link_text: t('admin.table_headers.message') } %>
<% columns.each do |column| %>
<% property_name = column[:property_name] %>
<% selected = (sort == property_name) %>
<% sort_direction = (sort_reverse ? "headerSortUp" : "headerSortDown" if selected) %>
<% sort_location = send(path_method, params.except("sort_reverse").merge(model_name: @abstract_model.to_param, sort: property_name).merge(selected && sort_reverse != "true" ? {sort_reverse: "true"} : {})) %>
<th class="header <%= column[:css_class] %> <%= sort_direction if selected %>" data-href="<%= sort_location %>">
<%= column[:link_text] %>
</th>
<% end %>
</tr>
</thead>
<tbody class="table-group-divider">
<% @history.each_with_index do |object, index| %>
<tr>
<% unless object.created_at.nil? %>
<td>
<%= l(object.created_at, format: :long, default: l(object.created_at, format: :long)) %>
</td>
<% end %>
<td>
<%= object.username %>
</td>
<% if @general %>
<% if o = @abstract_model.get(object.item) %>
<% label = o.send(@abstract_model.config.object_label_method) %>
<% if show_action = action(:show, @abstract_model, o) %>
<td>
<%= link_to(label, url_for(action: show_action.action_name, model_name: @abstract_model.to_param, id: o.id)) %>
</td>
<% else %>
<td>
<%= label %>
</td>
<% end %>
<% else %>
<td>
<%= "#{@abstract_model.config.label} ##{object.item}" %>
</td>
<% end %>
<% end %>
<td>
<%= object.message.in?(['delete', 'new']) ? t("admin.actions.#{object.message}.done").capitalize : object.message %>
</td>
</tr>
<% end %>
</tbody>
</table>
<% unless params[:all] || !@history.respond_to?(:current_page) %>
<%= paginate(@history, theme: 'ra-twitter-bootstrap') %>
<%= link_to(t("admin.misc.show_all"), send(path_method, params.merge(all: true)), class: "show-all btn btn-light") unless (tc = @history.total_count) <= @history.size || tc > 100 %>
<% end %>
================================================
FILE: app/views/rails_admin/main/index.html.erb
================================================
<%
query = params[:query]
params = request.params.except(:authenticity_token, :action, :controller, :utf8, :bulk_export)
params.delete(:query) if params[:query].blank?
params.delete(:sort_reverse) unless params[:sort_reverse] == 'true'
sort_reverse = params[:sort_reverse]
sort = params[:sort]
params.delete(:sort) if params[:sort] == @model_config.list.sort_by.to_s
export_action = RailsAdmin::Config::Actions.find(:export, { controller: self.controller, abstract_model: @abstract_model })
export_action = nil unless export_action && authorized?(export_action.authorization_key, @abstract_model)
description = RailsAdmin.config(@abstract_model.model_name).description
properties = @model_config.list.with(controller: self.controller, view: self, object: @abstract_model.model.new).fields_for_table
checkboxes = @model_config.list.checkboxes?
table_table_header_count = begin
count = checkboxes ? 1 : 0
count = count + properties.count
end
%>
<% content_for :contextual_tabs do %>
<% if filterable_fields.present? %>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">
<%= t('admin.misc.add_filter') %>
<b class="caret"></b>
</a>
<ul class="dropdown-menu dropdown-menu-end" id="filters">
<% filterable_fields.each do |field| %>
<li>
<a
href="#"
class="dropdown-item"
data-options="<%= field.with(view: self).filter_options.to_json %>"
>
<%= field.label %>
</a>
</li>
<% end %>
</ul>
</li>
<% end %>
<% if checkboxes %>
<%= bulk_menu %>
<% end %>
<% end %>
<style>
<% properties.select{ |p| p.column_width.present? }.each do |property| %>
<%= "#list th.#{property.css_class} { width: #{property.column_width}px; min-width: #{property.column_width}px; }" %>
<%= "#list td.#{property.css_class} { max-width: #{property.column_width}px;}" %>
<% end %>
</style>
<div id="list">
<%= form_tag(index_path(params.except(*%w[page f query])), method: :get) do %>
<div class="card mb-3 p-3 bg-light">
<div class="row" data-options="<%= ordered_filter_options.to_json %>" id="filters_box"></div>
<hr class="filters_box" style="display:<%= ordered_filters.empty? ? 'none' : 'block' %>"/>
<div class="row">
<div class="col-sm-6">
<div class="input-group">
<input class="form-control" name="query" placeholder="<%= t("admin.misc.filter") %>" type="search" value="<%= query %>" />
<button class="btn btn-primary" data-disable-with="<%= '<i class="fas fa-sync"></i>' + t('admin.misc.refresh') %>" type="submit">
<i class="fas fa-sync"></i>
<%= t('admin.misc.refresh') %>
</button>
<button class="btn btn-info" id="remove_filter" title="<%= t('admin.misc.reset_filters') %>">
<i class="fas fa-times"></i>
</button>
</div>
<% if @model_config.list.search_help.present? %>
<div class="form-text"><%= @model_config.list.search_help %></div>
<% end %>
</div>
<div class="col-sm-6 text-end">
<% if export_action %>
<%= link_to wording_for(:link, export_action), export_path(params.except('page')), class: 'btn btn-info' %>
<% end %>
</div>
</div>
</div>
<% end %>
<% unless @model_config.list.scopes.empty? %>
<ul class="nav nav-tabs" id="scope_selector">
<% @model_config.list.scopes.each_with_index do |scope, index| %>
<% scope = '_all' if scope.nil? %>
<li class="nav-item">
<a href="<%= index_path(params.merge(scope: scope, page: nil)) %>" class="nav-link <%= 'active' if scope.to_s == params[:scope] || (params[:scope].blank? && index == 0) %>">
<%= I18n.t("admin.scopes.#{@abstract_model.to_param}.#{scope}", default: I18n.t("admin.scopes.#{scope}", default: scope.to_s.titleize)) %>
</a>
</li>
<% end %>
</ul>
<% end %>
<%= form_tag bulk_action_path(model_name: @abstract_model.to_param), method: :post, id: "bulk_form", class: ["form", "mb-3"] do %>
<%= hidden_field_tag :bulk_action %>
<% if description.present? %>
<p>
<strong>
<%= description %>
</strong>
</p>
<% end %>
<div id="sidescroll">
<table class="table table-condensed table-striped table-hover">
<thead>
<tr>
<% if checkboxes %>
<th class="shrink sticky">
<input class="toggle" type="checkbox" />
</th>
<% end %>
<% properties.each do |property| %>
<% selected = (sort == property.name.to_s) %>
<% if property.sortable %>
<% sort_location = index_path params.except('sort_reverse').except('page').merge(sort: property.name).merge(selected && sort_reverse != "true" ? {sort_reverse: "true"} : {}) %>
<% sort_direction = (sort_reverse == 'true' ? "headerSortUp" : "headerSortDown" if selected) %>
<% end %>
<th class="<%= [property.sortable && "header", property.sortable && sort_direction, property.sticky? && 'sticky', property.css_class, property.type_css_class].select(&:present?).join(' ') %>" data-href="<%= property.sortable && sort_location %>" rel="tooltip" title="<%= property.hint %>">
<%= property.label %>
</th>
<% end %>
<th class="last shrink"></th>
</tr>
</thead>
<tbody class="table-group-divider">
<% @objects.each do |object| %>
<tr class="<%= @abstract_model.param_key %>_row <%= @model_config.list.with(object: object).row_css_class %>">
<% if checkboxes %>
<td class="sticky">
<%= check_box_tag "bulk_ids[]", object.id.to_s, false %>
</td>
<% end %>
<% properties.map{ |property| property.bind(:object, object) }.each do |property| %>
<% value = property.pretty_value %>
<%= content_tag(:td, class: [property.sticky? && 'sticky', property.css_class, property.type_css_class].select(&:present?), title: strip_tags(value.to_s)) do %>
<%= value %>
<% end %>
<% end %>
<td class="last links ra-sidescroll-frozen">
<ul class="nav d-inline list-inline">
<%= menu_for :member, @abstract_model, object, true %>
</ul>
</td>
</tr>
<% end %>
<% if @objects.empty? %>
<tr class="empty_row">
<td colspan="<%= table_table_header_count %>">
<%= I18n.t('admin.actions.index.no_records') %>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
<% if @model_config.list.limited_pagination %>
<div class="row">
<div class="col-md-6">
<%= paginate(@objects, theme: 'ra-twitter-bootstrap/without_count', total_pages: Float::INFINITY) %>
</div>
</div>
<% elsif @objects.respond_to?(:total_count) %>
<% total_count = @objects.total_count.to_i %>
<div class="row">
<div class="col-md-6">
<%= paginate(@objects, theme: 'ra-twitter-bootstrap') %>
</div>
</div>
<div class="row">
<div class="col-md-6">
<%= link_to(t("admin.misc.show_all"), index_path(params.merge(all: true)), class: "show-all btn btn-light clearfix") unless total_count > 100 || total_count <= @objects.to_a.size %>
</div>
</div>
<div class="clearfix total-count">
<%= "#{total_count} #{@model_config.pluralize(total_count).downcase}" %>
</div>
<% else %>
<div class="clearfix total-count">
<%= "#{@objects.size} #{@model_config.pluralize(@objects.size).downcase}" %>
</div>
<% end %>
<% end %>
</div>
================================================
FILE: app/views/rails_admin/main/new.html.erb
================================================
<%= rails_admin_form_for @object, url: new_path(model_name: @abstract_model.to_param), as: @abstract_model.param_key, html: { multipart: true, class: "main", data: { title: @page_name } } do |form| %>
<%= form.generate action: :create %>
<% end %>
================================================
FILE: app/views/rails_admin/main/show.html.erb
================================================
<% @model_config.show.with(object: @object, view: self, controller: self.controller).visible_groups.each do |fieldset| %>
<% unless (fields = fieldset.with(object: @object, view: self, controller: self.controller).visible_fields).empty? %>
<% unless (fields = fields.reject{ |f| RailsAdmin::config.compact_show_view && (f.formatted_value.nil? || f.formatted_value == '') }).empty? %>
<div class="fieldset">
<h4>
<%= fieldset.label %>
</h4>
<% if fieldset.help %>
<p>
<%= fieldset.help %>
</p>
<% end %>
<div class="list-group">
<% fields.each_with_index do |field, index| %>
<div class="list-group-item border-0 <%= field.type_css_class %> <%= field.css_class %>">
<div class="card">
<h5 class="card-header bg-light">
<%= field.label %>
</h5>
<div class="card-body">
<%= field.pretty_value %>
</div>
</div>
</div>
<% end %>
</dl>
</div>
<% end %>
<% end %>
<% end %>
================================================
FILE: config/initializers/active_record_extensions.rb
================================================
# frozen_string_literal: true
ActiveSupport.on_load(:active_record) do
module ActiveRecord
class Base
def self.rails_admin(&block)
RailsAdmin.config(self, &block)
end
def rails_admin_default_object_label_method
new_record? ? "new #{self.class}" : "#{self.class} ##{id}"
end
def safe_send(value)
if has_attribute?(value)
read_attribute(value)
else
send(value)
end
end
end
end
end
================================================
FILE: config/initializers/mongoid_extensions.rb
================================================
# frozen_string_literal: true
if defined?(::Mongoid::Document)
require 'rails_admin/adapters/mongoid/extension'
Mongoid::Document.include RailsAdmin::Adapters::Mongoid::Extension
end
================================================
FILE: config/locales/rails_admin.en.yml
================================================
en:
admin:
js:
true: "True"
false: "False"
is_present: Is present
is_blank: Is blank
date: Date ...
between_and_: Between ... and ...
today: Today
yesterday: Yesterday
this_week: This week
last_week: Last week
time: Time ...
number: Number ...
contains: Contains
does_not_contain: Does not contain
is_exactly: Is exactly
starts_with: Starts with
ends_with: Ends with
too_many_objects: "Too many objects, use search box above"
no_objects: "No objects found"
clear: Clear
lo
gitextract_n6znt0mu/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ └── workflows/
│ ├── code-ql.yml
│ └── test.yml
├── .gitignore
├── .prettierignore
├── .rspec
├── .rubocop.yml
├── .rubocop_todo.yml
├── .teatro.yml
├── .yardopts
├── Appraisals
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Gemfile
├── LICENSE.md
├── Procfile.teatro
├── README.md
├── Rakefile
├── app/
│ ├── assets/
│ │ ├── javascripts/
│ │ │ └── rails_admin/
│ │ │ ├── application.js.erb
│ │ │ └── custom/
│ │ │ └── ui.js
│ │ └── stylesheets/
│ │ └── rails_admin/
│ │ ├── application.scss.erb
│ │ └── custom/
│ │ ├── mixins.scss
│ │ ├── theming.scss
│ │ └── variables.scss
│ ├── controllers/
│ │ └── rails_admin/
│ │ ├── application_controller.rb
│ │ └── main_controller.rb
│ ├── helpers/
│ │ └── rails_admin/
│ │ ├── application_helper.rb
│ │ ├── form_builder.rb
│ │ └── main_helper.rb
│ └── views/
│ ├── kaminari/
│ │ └── ra-twitter-bootstrap/
│ │ ├── _gap.html.erb
│ │ ├── _next_page.html.erb
│ │ ├── _page.html.erb
│ │ ├── _paginator.html.erb
│ │ ├── _prev_page.html.erb
│ │ └── without_count/
│ │ ├── _next_page.html.erb
│ │ ├── _paginator.html.erb
│ │ └── _prev_page.html.erb
│ ├── layouts/
│ │ └── rails_admin/
│ │ ├── _head.html.erb
│ │ ├── _navigation.html.erb
│ │ ├── _secondary_navigation.html.erb
│ │ ├── _sidebar_navigation.html.erb
│ │ ├── application.html.erb
│ │ ├── content.html.erb
│ │ └── modal.js.erb
│ └── rails_admin/
│ └── main/
│ ├── _dashboard_history.html.erb
│ ├── _delete_notice.html.erb
│ ├── _form_action_text.html.erb
│ ├── _form_boolean.html.erb
│ ├── _form_ck_editor.html.erb
│ ├── _form_code_mirror.html.erb
│ ├── _form_colorpicker.html.erb
│ ├── _form_datetime.html.erb
│ ├── _form_enumeration.html.erb
│ ├── _form_field.html.erb
│ ├── _form_file_upload.html.erb
│ ├── _form_filtering_multiselect.html.erb
│ ├── _form_filtering_select.html.erb
│ ├── _form_froala.html.erb
│ ├── _form_multiple_file_upload.html.erb
│ ├── _form_nested_many.html.erb
│ ├── _form_nested_one.html.erb
│ ├── _form_polymorphic_association.html.erb
│ ├── _form_simple_mde.html.erb
│ ├── _form_text.html.erb
│ ├── _form_wysihtml5.html.erb
│ ├── _submit_buttons.html.erb
│ ├── bulk_delete.html.erb
│ ├── dashboard.html.erb
│ ├── delete.html.erb
│ ├── edit.html.erb
│ ├── export.html.erb
│ ├── history.html.erb
│ ├── index.html.erb
│ ├── new.html.erb
│ └── show.html.erb
├── config/
│ ├── initializers/
│ │ ├── active_record_extensions.rb
│ │ └── mongoid_extensions.rb
│ ├── locales/
│ │ └── rails_admin.en.yml
│ └── routes.rb
├── gemfiles/
│ ├── composite_primary_keys.gemfile
│ ├── rails_6.0.gemfile
│ ├── rails_6.1.gemfile
│ ├── rails_7.0.gemfile
│ ├── rails_7.1.gemfile
│ ├── rails_7.2.gemfile
│ └── rails_8.0.gemfile
├── lib/
│ ├── generators/
│ │ └── rails_admin/
│ │ ├── importmap_formatter.rb
│ │ ├── install_generator.rb
│ │ ├── templates/
│ │ │ ├── initializer.erb
│ │ │ ├── rails_admin.js
│ │ │ ├── rails_admin.scss.erb
│ │ │ ├── rails_admin.vite.js
│ │ │ └── rails_admin.webpacker.js
│ │ └── utils.rb
│ ├── rails_admin/
│ │ ├── abstract_model.rb
│ │ ├── adapters/
│ │ │ ├── active_record/
│ │ │ │ ├── association.rb
│ │ │ │ ├── object_extension.rb
│ │ │ │ └── property.rb
│ │ │ ├── active_record.rb
│ │ │ ├── mongoid/
│ │ │ │ ├── association.rb
│ │ │ │ ├── bson.rb
│ │ │ │ ├── extension.rb
│ │ │ │ ├── object_extension.rb
│ │ │ │ └── property.rb
│ │ │ └── mongoid.rb
│ │ ├── config/
│ │ │ ├── actions/
│ │ │ │ ├── base.rb
│ │ │ │ ├── bulk_delete.rb
│ │ │ │ ├── dashboard.rb
│ │ │ │ ├── delete.rb
│ │ │ │ ├── edit.rb
│ │ │ │ ├── export.rb
│ │ │ │ ├── history_index.rb
│ │ │ │ ├── history_show.rb
│ │ │ │ ├── index.rb
│ │ │ │ ├── new.rb
│ │ │ │ ├── show.rb
│ │ │ │ └── show_in_app.rb
│ │ │ ├── actions.rb
│ │ │ ├── configurable.rb
│ │ │ ├── const_load_suppressor.rb
│ │ │ ├── fields/
│ │ │ │ ├── association.rb
│ │ │ │ ├── base.rb
│ │ │ │ ├── collection_association.rb
│ │ │ │ ├── factories/
│ │ │ │ │ ├── action_text.rb
│ │ │ │ │ ├── active_storage.rb
│ │ │ │ │ ├── association.rb
│ │ │ │ │ ├── carrierwave.rb
│ │ │ │ │ ├── devise.rb
│ │ │ │ │ ├── dragonfly.rb
│ │ │ │ │ ├── enum.rb
│ │ │ │ │ ├── paperclip.rb
│ │ │ │ │ ├── password.rb
│ │ │ │ │ └── shrine.rb
│ │ │ │ ├── group.rb
│ │ │ │ ├── singular_association.rb
│ │ │ │ ├── types/
│ │ │ │ │ ├── action_text.rb
│ │ │ │ │ ├── active_record_enum.rb
│ │ │ │ │ ├── active_storage.rb
│ │ │ │ │ ├── all.rb
│ │ │ │ │ ├── belongs_to_association.rb
│ │ │ │ │ ├── boolean.rb
│ │ │ │ │ ├── bson_object_id.rb
│ │ │ │ │ ├── carrierwave.rb
│ │ │ │ │ ├── citext.rb
│ │ │ │ │ ├── ck_editor.rb
│ │ │ │ │ ├── code_mirror.rb
│ │ │ │ │ ├── color.rb
│ │ │ │ │ ├── date.rb
│ │ │ │ │ ├── datetime.rb
│ │ │ │ │ ├── decimal.rb
│ │ │ │ │ ├── dragonfly.rb
│ │ │ │ │ ├── enum.rb
│ │ │ │ │ ├── file_upload.rb
│ │ │ │ │ ├── float.rb
│ │ │ │ │ ├── froala.rb
│ │ │ │ │ ├── has_and_belongs_to_many_association.rb
│ │ │ │ │ ├── has_many_association.rb
│ │ │ │ │ ├── has_one_association.rb
│ │ │ │ │ ├── hidden.rb
│ │ │ │ │ ├── inet.rb
│ │ │ │ │ ├── integer.rb
│ │ │ │ │ ├── json.rb
│ │ │ │ │ ├── multiple_active_storage.rb
│ │ │ │ │ ├── multiple_carrierwave.rb
│ │ │ │ │ ├── multiple_file_upload.rb
│ │ │ │ │ ├── numeric.rb
│ │ │ │ │ ├── paperclip.rb
│ │ │ │ │ ├── password.rb
│ │ │ │ │ ├── polymorphic_association.rb
│ │ │ │ │ ├── serialized.rb
│ │ │ │ │ ├── shrine.rb
│ │ │ │ │ ├── simple_mde.rb
│ │ │ │ │ ├── string.rb
│ │ │ │ │ ├── string_like.rb
│ │ │ │ │ ├── text.rb
│ │ │ │ │ ├── time.rb
│ │ │ │ │ ├── timestamp.rb
│ │ │ │ │ ├── uuid.rb
│ │ │ │ │ └── wysihtml5.rb
│ │ │ │ └── types.rb
│ │ │ ├── fields.rb
│ │ │ ├── groupable.rb
│ │ │ ├── has_description.rb
│ │ │ ├── has_fields.rb
│ │ │ ├── has_groups.rb
│ │ │ ├── hideable.rb
│ │ │ ├── inspectable.rb
│ │ │ ├── lazy_model.rb
│ │ │ ├── model.rb
│ │ │ ├── proxyable/
│ │ │ │ └── proxy.rb
│ │ │ ├── proxyable.rb
│ │ │ ├── sections/
│ │ │ │ ├── base.rb
│ │ │ │ ├── create.rb
│ │ │ │ ├── edit.rb
│ │ │ │ ├── export.rb
│ │ │ │ ├── list.rb
│ │ │ │ ├── modal.rb
│ │ │ │ ├── nested.rb
│ │ │ │ ├── show.rb
│ │ │ │ └── update.rb
│ │ │ └── sections.rb
│ │ ├── config.rb
│ │ ├── engine.rb
│ │ ├── extension.rb
│ │ ├── extensions/
│ │ │ ├── cancancan/
│ │ │ │ └── authorization_adapter.rb
│ │ │ ├── cancancan.rb
│ │ │ ├── controller_extension.rb
│ │ │ ├── paper_trail/
│ │ │ │ └── auditing_adapter.rb
│ │ │ ├── paper_trail.rb
│ │ │ ├── pundit/
│ │ │ │ └── authorization_adapter.rb
│ │ │ ├── pundit.rb
│ │ │ └── url_for_extension.rb
│ │ ├── support/
│ │ │ ├── composite_keys_serializer.rb
│ │ │ ├── csv_converter.rb
│ │ │ ├── datetime.rb
│ │ │ ├── es_module_processor.rb
│ │ │ └── hash_helper.rb
│ │ └── version.rb
│ ├── rails_admin.rb
│ └── tasks/
│ ├── .gitkeep
│ └── rails_admin.rake
├── package.json
├── rails_admin.gemspec
├── spec/
│ ├── controllers/
│ │ └── rails_admin/
│ │ ├── application_controller_spec.rb
│ │ └── main_controller_spec.rb
│ ├── dummy_app/
│ │ ├── .browserslistrc
│ │ ├── .dockerignore
│ │ ├── .gitignore
│ │ ├── Dockerfile
│ │ ├── Gemfile
│ │ ├── Procfile.dev
│ │ ├── Rakefile
│ │ ├── app/
│ │ │ ├── active_record/
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── abstract.rb
│ │ │ │ ├── another_field_test.rb
│ │ │ │ ├── ball.rb
│ │ │ │ ├── carrierwave_uploader.rb
│ │ │ │ ├── category.rb
│ │ │ │ ├── cms/
│ │ │ │ │ └── basic_page.rb
│ │ │ │ ├── cms.rb
│ │ │ │ ├── comment/
│ │ │ │ │ └── confirmed.rb
│ │ │ │ ├── comment.rb
│ │ │ │ ├── concerns/
│ │ │ │ │ └── taggable.rb
│ │ │ │ ├── deeply_nested_field_test.rb
│ │ │ │ ├── division.rb
│ │ │ │ ├── draft.rb
│ │ │ │ ├── fan.rb
│ │ │ │ ├── fanship.rb
│ │ │ │ ├── favorite_player.rb
│ │ │ │ ├── field_test.rb
│ │ │ │ ├── hardball.rb
│ │ │ │ ├── image.rb
│ │ │ │ ├── league.rb
│ │ │ │ ├── managed_team.rb
│ │ │ │ ├── managing_user.rb
│ │ │ │ ├── nested_fan.rb
│ │ │ │ ├── nested_favorite_player.rb
│ │ │ │ ├── nested_field_test.rb
│ │ │ │ ├── paper_trail_test/
│ │ │ │ │ └── subclass_in_namespace.rb
│ │ │ │ ├── paper_trail_test.rb
│ │ │ │ ├── paper_trail_test_subclass.rb
│ │ │ │ ├── paper_trail_test_with_custom_association.rb
│ │ │ │ ├── player.rb
│ │ │ │ ├── read_only_comment.rb
│ │ │ │ ├── restricted_team.rb
│ │ │ │ ├── shrine_uploader.rb
│ │ │ │ ├── shrine_versioning_uploader.rb
│ │ │ │ ├── team.rb
│ │ │ │ ├── trail.rb
│ │ │ │ ├── two_level/
│ │ │ │ │ ├── namespaced/
│ │ │ │ │ │ └── polymorphic_association_test.rb
│ │ │ │ │ └── namespaced.rb
│ │ │ │ ├── user/
│ │ │ │ │ └── confirmed.rb
│ │ │ │ ├── user.rb
│ │ │ │ └── without_table.rb
│ │ │ ├── assets/
│ │ │ │ ├── builds/
│ │ │ │ │ └── .keep
│ │ │ │ ├── config/
│ │ │ │ │ └── manifest.js
│ │ │ │ ├── javascripts/
│ │ │ │ │ ├── application.js
│ │ │ │ │ ├── rails-ujs.esm.js.erb
│ │ │ │ │ └── rails_admin/
│ │ │ │ │ └── custom/
│ │ │ │ │ └── ui.js
│ │ │ │ └── stylesheets/
│ │ │ │ ├── application.css
│ │ │ │ ├── rails_admin/
│ │ │ │ │ └── custom/
│ │ │ │ │ └── theming.scss
│ │ │ │ └── rails_admin.scss
│ │ │ ├── controllers/
│ │ │ │ ├── application_controller.rb
│ │ │ │ └── players_controller.rb
│ │ │ ├── eager_loaded/
│ │ │ │ └── basketball.rb
│ │ │ ├── frontend/
│ │ │ │ ├── entrypoints/
│ │ │ │ │ ├── application.js
│ │ │ │ │ └── rails_admin.js
│ │ │ │ └── stylesheets/
│ │ │ │ └── rails_admin.scss
│ │ │ ├── javascript/
│ │ │ │ ├── application.js
│ │ │ │ ├── rails_admin.js
│ │ │ │ └── rails_admin.scss
│ │ │ ├── jobs/
│ │ │ │ ├── application_job.rb
│ │ │ │ └── null_job.rb
│ │ │ ├── locales/
│ │ │ │ └── models.en.yml
│ │ │ ├── mailers/
│ │ │ │ └── .gitkeep
│ │ │ ├── mongoid/
│ │ │ │ ├── another_field_test.rb
│ │ │ │ ├── ball.rb
│ │ │ │ ├── carrierwave_uploader.rb
│ │ │ │ ├── category.rb
│ │ │ │ ├── cms/
│ │ │ │ │ └── basic_page.rb
│ │ │ │ ├── cms.rb
│ │ │ │ ├── comment/
│ │ │ │ │ └── confirmed.rb
│ │ │ │ ├── comment.rb
│ │ │ │ ├── concerns/
│ │ │ │ │ └── taggable.rb
│ │ │ │ ├── deeply_nested_field_test.rb
│ │ │ │ ├── division.rb
│ │ │ │ ├── draft.rb
│ │ │ │ ├── embed.rb
│ │ │ │ ├── fan.rb
│ │ │ │ ├── field_test.rb
│ │ │ │ ├── hardball.rb
│ │ │ │ ├── image.rb
│ │ │ │ ├── league.rb
│ │ │ │ ├── managed_team.rb
│ │ │ │ ├── managing_user.rb
│ │ │ │ ├── nested_field_test.rb
│ │ │ │ ├── player.rb
│ │ │ │ ├── read_only_comment.rb
│ │ │ │ ├── restricted_team.rb
│ │ │ │ ├── shrine_uploader.rb
│ │ │ │ ├── shrine_versioning_uploader.rb
│ │ │ │ ├── team.rb
│ │ │ │ ├── two_level/
│ │ │ │ │ └── namespaced/
│ │ │ │ │ └── polymorphic_association_test.rb
│ │ │ │ ├── user/
│ │ │ │ │ └── confirmed.rb
│ │ │ │ └── user.rb
│ │ │ └── views/
│ │ │ ├── layouts/
│ │ │ │ └── application.html.erb
│ │ │ └── players/
│ │ │ └── show.html.erb
│ │ ├── babel.config.js
│ │ ├── bin/
│ │ │ ├── bundle
│ │ │ ├── dev
│ │ │ ├── docker-entrypoint
│ │ │ ├── importmap
│ │ │ ├── rails
│ │ │ ├── rake
│ │ │ ├── setup
│ │ │ ├── update
│ │ │ ├── vite
│ │ │ ├── webpack
│ │ │ └── webpack-dev-server
│ │ ├── config/
│ │ │ ├── application.rb
│ │ │ ├── boot.rb
│ │ │ ├── database.yml
│ │ │ ├── dockerfile.yml
│ │ │ ├── environment.rb
│ │ │ ├── environments/
│ │ │ │ ├── development.rb
│ │ │ │ ├── production.rb
│ │ │ │ └── test.rb
│ │ │ ├── importmap.rails_admin.rb
│ │ │ ├── importmap.rb
│ │ │ ├── initializers/
│ │ │ │ ├── application_controller_renderer.rb
│ │ │ │ ├── assets.rb
│ │ │ │ ├── backtrace_silencers.rb
│ │ │ │ ├── cookies_serializer.rb
│ │ │ │ ├── cors.rb
│ │ │ │ ├── devise.rb
│ │ │ │ ├── dragonfly.rb
│ │ │ │ ├── filter_parameter_logging.rb
│ │ │ │ ├── inflections.rb
│ │ │ │ ├── mime_types.rb
│ │ │ │ ├── mongoid.rb
│ │ │ │ ├── rails_admin.rb
│ │ │ │ ├── secret_token.rb
│ │ │ │ ├── session_patch.rb
│ │ │ │ ├── session_store.rb
│ │ │ │ ├── shrine.rb
│ │ │ │ └── wrap_parameters.rb
│ │ │ ├── locales/
│ │ │ │ ├── devise.en.yml
│ │ │ │ ├── en.yml
│ │ │ │ └── fr.yml
│ │ │ ├── mongoid5.yml
│ │ │ ├── mongoid6.yml
│ │ │ ├── puma.rb
│ │ │ ├── routes.rb
│ │ │ ├── secrets.yml
│ │ │ ├── storage.yml
│ │ │ ├── vite.json
│ │ │ ├── webpack/
│ │ │ │ ├── development.js
│ │ │ │ ├── environment.js
│ │ │ │ ├── production.js
│ │ │ │ └── test.js
│ │ │ └── webpacker.yml
│ │ ├── config.ru
│ │ ├── db/
│ │ │ ├── migrate/
│ │ │ │ ├── 00000000000001_create_divisions_migration.rb
│ │ │ │ ├── 00000000000002_create_drafts_migration.rb
│ │ │ │ ├── 00000000000003_create_leagues_migration.rb
│ │ │ │ ├── 00000000000004_create_players_migration.rb
│ │ │ │ ├── 00000000000005_create_teams_migration.rb
│ │ │ │ ├── 00000000000006_devise_create_users.rb
│ │ │ │ ├── 00000000000007_create_histories_table.rb
│ │ │ │ ├── 00000000000008_create_fans_migration.rb
│ │ │ │ ├── 00000000000009_create_fans_teams_migration.rb
│ │ │ │ ├── 00000000000010_add_revenue_to_team_migration.rb
│ │ │ │ ├── 00000000000011_add_suspended_to_player_migration.rb
│ │ │ │ ├── 00000000000012_add_avatar_columns_to_user.rb
│ │ │ │ ├── 00000000000013_add_roles_to_user.rb
│ │ │ │ ├── 00000000000014_add_color_to_team_migration.rb
│ │ │ │ ├── 20101223222233_create_rel_tests.rb
│ │ │ │ ├── 20110103205808_create_comments.rb
│ │ │ │ ├── 20110123042530_rename_histories_to_rails_admin_histories.rb
│ │ │ │ ├── 20110224184303_create_field_tests.rb
│ │ │ │ ├── 20110328193014_create_cms_basic_pages.rb
│ │ │ │ ├── 20110329183136_remove_league_id_from_teams.rb
│ │ │ │ ├── 20110607152842_add_format_to_field_test.rb
│ │ │ │ ├── 20110714095433_create_balls.rb
│ │ │ │ ├── 20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb
│ │ │ │ ├── 20110901131551_change_division_primary_key.rb
│ │ │ │ ├── 20110901142530_rename_league_id_foreign_key_on_divisions.rb
│ │ │ │ ├── 20110901150912_set_primary_key_not_null_for_divisions.rb
│ │ │ │ ├── 20110901154834_change_length_for_rails_admin_histories.rb
│ │ │ │ ├── 20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb
│ │ │ │ ├── 20111115041025_add_type_to_balls.rb
│ │ │ │ ├── 20111123092549_create_nested_field_tests.rb
│ │ │ │ ├── 20111130075338_add_dragonfly_asset_name_to_field_tests.rb
│ │ │ │ ├── 20111215083258_create_foo_bars.rb
│ │ │ │ ├── 20120117151733_add_custom_field_to_teams.rb
│ │ │ │ ├── 20120118122004_add_categories.rb
│ │ │ │ ├── 20120319041705_drop_rel_tests.rb
│ │ │ │ ├── 20120720075608_create_another_field_tests.rb
│ │ │ │ ├── 20120928075608_create_images.rb
│ │ │ │ ├── 20140412075608_create_deeply_nested_field_tests.rb
│ │ │ │ ├── 20140826093220_create_paper_trail_tests.rb
│ │ │ │ ├── 20140826093552_create_versions.rb
│ │ │ │ ├── 20150815102450_add_refile_to_field_tests.rb
│ │ │ │ ├── 20151027181550_change_field_test_id_to_nested_field_tests.rb
│ │ │ │ ├── 20160728152942_add_main_sponsor_to_teams.rb
│ │ │ │ ├── 20160728153058_add_formation_to_players.rb
│ │ │ │ ├── 20171229220713_add_enum_fields_to_field_tests.rb
│ │ │ │ ├── 20180701084251_create_active_storage_tables.active_storage.rb
│ │ │ │ ├── 20180707101855_add_carrierwave_assets_to_field_tests.rb
│ │ │ │ ├── 20181029101829_add_shrine_data_to_field_tests.rb
│ │ │ │ ├── 20190531065324_create_action_text_tables.action_text.rb
│ │ │ │ ├── 20201127111952_update_active_storage_tables.rb
│ │ │ │ ├── 20210811121027_create_two_level_namespaced_polymorphic_association_tests.rb
│ │ │ │ ├── 20210812115908_create_custom_versions.rb
│ │ │ │ ├── 20211011235734_add_bool_field_open.rb
│ │ │ │ ├── 20220416102741_create_composite_key_tables.rb
│ │ │ │ └── 20240921171953_add_non_nullable_boolean_field.rb
│ │ │ ├── schema.rb
│ │ │ └── seeds.rb
│ │ ├── doc/
│ │ │ └── README_FOR_APP
│ │ ├── fly.toml
│ │ ├── lib/
│ │ │ ├── assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── does_not_load_autoload_paths_not_in_eager_load.rb
│ │ │ └── tasks/
│ │ │ └── .gitkeep
│ │ ├── package.json
│ │ ├── postcss.config.js
│ │ ├── public/
│ │ │ ├── 404.html
│ │ │ ├── 422.html
│ │ │ ├── 500.html
│ │ │ ├── robots.txt
│ │ │ └── system/
│ │ │ └── dragonfly/
│ │ │ └── development/
│ │ │ └── 2011/
│ │ │ └── 11/
│ │ │ ├── 24/
│ │ │ │ └── 10_36_27_888_Pensive_Parakeet.jpg.meta
│ │ │ └── 30/
│ │ │ └── 08_54_39_906_Costa_Rican_Frog.jpg.meta
│ │ ├── vendor/
│ │ │ └── javascript/
│ │ │ └── .keep
│ │ ├── vite.config.ts
│ │ └── webpack.config.js
│ ├── factories.rb
│ ├── fixtures/
│ │ └── test.txt
│ ├── helpers/
│ │ └── rails_admin/
│ │ ├── application_helper_spec.rb
│ │ ├── form_builder_spec.rb
│ │ └── main_helper_spec.rb
│ ├── integration/
│ │ ├── actions/
│ │ │ ├── base_spec.rb
│ │ │ ├── bulk_delete_spec.rb
│ │ │ ├── dashboard_spec.rb
│ │ │ ├── delete_spec.rb
│ │ │ ├── edit_spec.rb
│ │ │ ├── export_spec.rb
│ │ │ ├── history_index_spec.rb
│ │ │ ├── history_show_spec.rb
│ │ │ ├── index_spec.rb
│ │ │ ├── new_spec.rb
│ │ │ ├── show_in_app_spec.rb
│ │ │ └── show_spec.rb
│ │ ├── auditing/
│ │ │ └── paper_trail_spec.rb
│ │ ├── authentication/
│ │ │ └── devise_spec.rb
│ │ ├── authorization/
│ │ │ ├── cancancan_spec.rb
│ │ │ └── pundit_spec.rb
│ │ ├── fields/
│ │ │ ├── action_text_spec.rb
│ │ │ ├── active_record_enum_spec.rb
│ │ │ ├── active_storage_spec.rb
│ │ │ ├── base_spec.rb
│ │ │ ├── belongs_to_association_spec.rb
│ │ │ ├── boolean_spec.rb
│ │ │ ├── carrierwave_spec.rb
│ │ │ ├── ck_editor_spec.rb
│ │ │ ├── code_mirror_spec.rb
│ │ │ ├── color_spec.rb
│ │ │ ├── date_spec.rb
│ │ │ ├── datetime_spec.rb
│ │ │ ├── enum_spec.rb
│ │ │ ├── file_upload_spec.rb
│ │ │ ├── floara_spec.rb
│ │ │ ├── has_and_belongs_to_many_association_spec.rb
│ │ │ ├── has_many_association_spec.rb
│ │ │ ├── has_one_association_spec.rb
│ │ │ ├── hidden_spec.rb
│ │ │ ├── multiple_active_storage_spec.rb
│ │ │ ├── multiple_carrierwave_spec.rb
│ │ │ ├── multiple_file_upload_spec.rb
│ │ │ ├── paperclip_spec.rb
│ │ │ ├── polymorphic_assosiation_spec.rb
│ │ │ ├── serialized_spec.rb
│ │ │ ├── shrine_spec.rb
│ │ │ ├── simple_mde_spec.rb
│ │ │ ├── time_spec.rb
│ │ │ └── wysihtml5_spec.rb
│ │ ├── rails_admin_spec.rb
│ │ └── widgets/
│ │ ├── datetimepicker_spec.rb
│ │ ├── filter_box_spec.rb
│ │ ├── filtering_multi_select_spec.rb
│ │ ├── filtering_select_spec.rb
│ │ ├── nested_many_spec.rb
│ │ ├── nested_one_spec.rb
│ │ └── remote_form_spec.rb
│ ├── orm/
│ │ ├── active_record.rb
│ │ └── mongoid.rb
│ ├── policies.rb
│ ├── rails_admin/
│ │ ├── abstract_model_spec.rb
│ │ ├── active_record_extension_spec.rb
│ │ ├── adapters/
│ │ │ ├── active_record/
│ │ │ │ ├── association_spec.rb
│ │ │ │ ├── object_extension_spec.rb
│ │ │ │ └── property_spec.rb
│ │ │ ├── active_record_spec.rb
│ │ │ ├── mongoid/
│ │ │ │ ├── association_spec.rb
│ │ │ │ ├── object_extension_spec.rb
│ │ │ │ └── property_spec.rb
│ │ │ └── mongoid_spec.rb
│ │ ├── config/
│ │ │ ├── actions/
│ │ │ │ └── base_spec.rb
│ │ │ ├── actions_spec.rb
│ │ │ ├── configurable_spec.rb
│ │ │ ├── const_load_suppressor_spec.rb
│ │ │ ├── fields/
│ │ │ │ ├── association_spec.rb
│ │ │ │ ├── base_spec.rb
│ │ │ │ └── types/
│ │ │ │ ├── action_text_spec.rb
│ │ │ │ ├── active_record_enum_spec.rb
│ │ │ │ ├── active_storage_spec.rb
│ │ │ │ ├── belongs_to_association_spec.rb
│ │ │ │ ├── boolean_spec.rb
│ │ │ │ ├── bson_object_id_spec.rb
│ │ │ │ ├── carrierwave_spec.rb
│ │ │ │ ├── citext_spec.rb
│ │ │ │ ├── ck_editor_spec.rb
│ │ │ │ ├── code_mirror_spec.rb
│ │ │ │ ├── color_spec.rb
│ │ │ │ ├── date_spec.rb
│ │ │ │ ├── datetime_spec.rb
│ │ │ │ ├── decimal_spec.rb
│ │ │ │ ├── drangonfly_spec.rb
│ │ │ │ ├── enum_spec.rb
│ │ │ │ ├── file_upload_spec.rb
│ │ │ │ ├── float_spec.rb
│ │ │ │ ├── froala_spec.rb
│ │ │ │ ├── has_and_belongs_to_many_association_spec.rb
│ │ │ │ ├── has_many_association_spec.rb
│ │ │ │ ├── has_one_association_spec.rb
│ │ │ │ ├── hidden_spec.rb
│ │ │ │ ├── inet_spec.rb
│ │ │ │ ├── integer_spec.rb
│ │ │ │ ├── json_spec.rb
│ │ │ │ ├── multiple_active_storage_spec.rb
│ │ │ │ ├── multiple_carrierwave_spec.rb
│ │ │ │ ├── multiple_file_upload_spec.rb
│ │ │ │ ├── numeric_spec.rb
│ │ │ │ ├── paperclip_spec.rb
│ │ │ │ ├── password_spec.rb
│ │ │ │ ├── serialized_spec.rb
│ │ │ │ ├── shrine_spec.rb
│ │ │ │ ├── simple_mde_spec.rb
│ │ │ │ ├── string_like_spec.rb
│ │ │ │ ├── string_spec.rb
│ │ │ │ ├── text_spec.rb
│ │ │ │ ├── time_spec.rb
│ │ │ │ ├── timestamp_spec.rb
│ │ │ │ ├── uuid_spec.rb
│ │ │ │ └── wysihtml5_spec.rb
│ │ │ ├── fields_spec.rb
│ │ │ ├── has_description_spec.rb
│ │ │ ├── has_fields_spec.rb
│ │ │ ├── lazy_model_spec.rb
│ │ │ ├── model_spec.rb
│ │ │ ├── proxyable_spec.rb
│ │ │ ├── sections/
│ │ │ │ └── list_spec.rb
│ │ │ └── sections_spec.rb
│ │ ├── config_spec.rb
│ │ ├── engine_spec.rb
│ │ ├── extentions/
│ │ │ ├── cancancan/
│ │ │ │ └── authorization_adapter_spec.rb
│ │ │ └── paper_trail/
│ │ │ ├── auditing_adapter_spec.rb
│ │ │ └── version_proxy_spec.rb
│ │ ├── install_generator_spec.rb
│ │ ├── support/
│ │ │ ├── csv_converter_spec.rb
│ │ │ ├── datetime_spec.rb
│ │ │ └── hash_helper_spec.rb
│ │ └── version_spec.rb
│ ├── shared_examples/
│ │ └── shared_examples_for_field_types.rb
│ ├── spec_helper.rb
│ └── support/
│ ├── cuprite_logger.rb
│ ├── fakeio.rb
│ ├── fixtures.rb
│ └── jquery.simulate.drag-sortable.js
├── src/
│ └── rails_admin/
│ ├── abstract-select.js
│ ├── base.js
│ ├── filter-box.js
│ ├── filtering-multiselect.js
│ ├── filtering-select.js
│ ├── i18n.js
│ ├── jquery.js
│ ├── nested-form-hooks.js
│ ├── remote-form.js
│ ├── sidescroll.js
│ ├── styles/
│ │ ├── base/
│ │ │ ├── README.txt
│ │ │ ├── mixins.scss
│ │ │ ├── theming.scss
│ │ │ └── variables.scss
│ │ ├── base.scss
│ │ ├── filtering-multiselect.scss
│ │ ├── filtering-select.scss
│ │ └── widgets.scss
│ ├── ui.js
│ ├── vendor/
│ │ └── jquery_nested_form.js
│ └── widgets.js
└── vendor/
└── assets/
├── javascripts/
│ └── rails_admin/
│ ├── bootstrap.js
│ ├── flatpickr-with-locales.js
│ ├── jquery-ui/
│ │ ├── data.js
│ │ ├── effect.js
│ │ ├── ie.js
│ │ ├── keycode.js
│ │ ├── position.js
│ │ ├── safe-active-element.js
│ │ ├── scroll-parent.js
│ │ ├── unique-id.js
│ │ ├── version.js
│ │ ├── widget.js
│ │ └── widgets/
│ │ ├── autocomplete.js
│ │ ├── menu.js
│ │ ├── mouse.js
│ │ └── sortable.js
│ ├── jquery3.js
│ └── popper.js
└── stylesheets/
└── rails_admin/
├── bootstrap/
│ ├── _accordion.scss
│ ├── _alert.scss
│ ├── _badge.scss
│ ├── _breadcrumb.scss
│ ├── _button-group.scss
│ ├── _buttons.scss
│ ├── _card.scss
│ ├── _carousel.scss
│ ├── _close.scss
│ ├── _containers.scss
│ ├── _dropdown.scss
│ ├── _forms.scss
│ ├── _functions.scss
│ ├── _grid.scss
│ ├── _helpers.scss
│ ├── _images.scss
│ ├── _list-group.scss
│ ├── _mixins.scss
│ ├── _modal.scss
│ ├── _nav.scss
│ ├── _navbar.scss
│ ├── _offcanvas.scss
│ ├── _pagination.scss
│ ├── _placeholders.scss
│ ├── _popover.scss
│ ├── _progress.scss
│ ├── _reboot.scss
│ ├── _root.scss
│ ├── _spinners.scss
│ ├── _tables.scss
│ ├── _toasts.scss
│ ├── _tooltip.scss
│ ├── _transitions.scss
│ ├── _type.scss
│ ├── _utilities.scss
│ ├── _variables.scss
│ ├── bootstrap.scss
│ ├── forms/
│ │ ├── _floating-labels.scss
│ │ ├── _form-check.scss
│ │ ├── _form-control.scss
│ │ ├── _form-range.scss
│ │ ├── _form-select.scss
│ │ ├── _form-text.scss
│ │ ├── _input-group.scss
│ │ ├── _labels.scss
│ │ └── _validation.scss
│ ├── helpers/
│ │ ├── _clearfix.scss
│ │ ├── _colored-links.scss
│ │ ├── _position.scss
│ │ ├── _ratio.scss
│ │ ├── _stacks.scss
│ │ ├── _stretched-link.scss
│ │ ├── _text-truncation.scss
│ │ ├── _visually-hidden.scss
│ │ └── _vr.scss
│ ├── mixins/
│ │ ├── _alert.scss
│ │ ├── _backdrop.scss
│ │ ├── _border-radius.scss
│ │ ├── _box-shadow.scss
│ │ ├── _breakpoints.scss
│ │ ├── _buttons.scss
│ │ ├── _caret.scss
│ │ ├── _clearfix.scss
│ │ ├── _color-scheme.scss
│ │ ├── _container.scss
│ │ ├── _deprecate.scss
│ │ ├── _forms.scss
│ │ ├── _gradients.scss
│ │ ├── _grid.scss
│ │ ├── _image.scss
│ │ ├── _list-group.scss
│ │ ├── _lists.scss
│ │ ├── _pagination.scss
│ │ ├── _reset-text.scss
│ │ ├── _resize.scss
│ │ ├── _table-variants.scss
│ │ ├── _text-truncate.scss
│ │ ├── _transition.scss
│ │ ├── _utilities.scss
│ │ └── _visually-hidden.scss
│ ├── utilities/
│ │ └── _api.scss
│ └── vendor/
│ └── _rfs.scss
├── flatpickr.css
└── font-awesome.scss
SYMBOL INDEX (1859 symbols across 299 files)
FILE: app/controllers/rails_admin/application_controller.rb
type RailsAdmin (line 5) | module RailsAdmin
class ModelNotFound (line 6) | class ModelNotFound < ::StandardError
class ObjectNotFound (line 9) | class ObjectNotFound < ::StandardError
class ActionNotAllowed (line 12) | class ActionNotAllowed < ::StandardError
class ApplicationController (line 15) | class ApplicationController < Config.parent_controller.constantize
method get_model (line 28) | def get_model
method get_object (line 36) | def get_object
method to_model_name (line 40) | def to_model_name(param)
method _current_user (line 44) | def _current_user
method _get_plugin_name (line 50) | def _get_plugin_name
method _authenticate! (line 54) | def _authenticate!
method _authorize! (line 58) | def _authorize!
method _audit! (line 62) | def _audit!
method rails_admin_controller? (line 66) | def rails_admin_controller?
FILE: app/controllers/rails_admin/main_controller.rb
type RailsAdmin (line 3) | module RailsAdmin
class MainController (line 4) | class MainController < RailsAdmin::ApplicationController
method bulk_action (line 11) | def bulk_action
method list_entries (line 16) | def list_entries(model_config = @model_config, auth_scope_key = :ind...
method action_missing (line 26) | def action_missing(name, *_args)
method method_missing (line 41) | def method_missing(name, *args, &block)
method respond_to_missing? (line 50) | def respond_to_missing?(sym, include_private)
method back_or_index (line 58) | def back_or_index
method allowed_return_to? (line 62) | def allowed_return_to?(url)
method get_sort_hash (line 66) | def get_sort_hash(model_config)
method redirect_to_on_success (line 82) | def redirect_to_on_success
method visible_fields (line 93) | def visible_fields(action, model_config = @model_config)
method sanitize_params_for! (line 97) | def sanitize_params_for!(action, model_config = @model_config, targe...
method handle_save_error (line 113) | def handle_save_error(whereto = :new)
method check_for_cancel (line 123) | def check_for_cancel
method get_collection (line 129) | def get_collection(model_config, scope, pagination)
method get_association_scope_from_params (line 142) | def get_association_scope_from_params
FILE: app/helpers/rails_admin/application_helper.rb
type RailsAdmin (line 3) | module RailsAdmin
type ApplicationHelper (line 4) | module ApplicationHelper
function authorized? (line 5) | def authorized?(action_name, abstract_model = nil, object = nil)
function current_action (line 10) | def current_action
function current_action? (line 14) | def current_action?(action, abstract_model = @abstract_model, object...
function action (line 20) | def action(key, abstract_model = nil, object = nil)
function actions (line 24) | def actions(scope = :all, abstract_model = nil, object = nil)
function edit_user_link (line 28) | def edit_user_link
function logout_path (line 50) | def logout_path
function logout_method (line 63) | def logout_method
function wording_for (line 69) | def wording_for(label, action = @action, abstract_model = @abstract_...
function main_navigation (line 82) | def main_navigation
function root_navigation (line 97) | def root_navigation
function static_navigation (line 112) | def static_navigation
function navigation (line 121) | def navigation(parent_groups, nodes, level = 0)
function breadcrumb (line 138) | def breadcrumb(action = @action, _acc = [])
function menu_for (line 164) | def menu_for(parent, abstract_model = nil, object = nil, only_icon =...
function bulk_menu (line 187) | def bulk_menu(abstract_model = @abstract_model)
function flash_alert_class (line 203) | def flash_alert_class(flash_key)
function handle_asset_dependency_error (line 212) | def handle_asset_dependency_error
function image_tag (line 225) | def image_tag(source, options = {})
function edit_user_link_label (line 235) | def edit_user_link_label
function gravatar_url (line 244) | def gravatar_url(email)
function collapsible_stack (line 248) | def collapsible_stack(label, class_prefix, li_stack)
FILE: app/helpers/rails_admin/form_builder.rb
type RailsAdmin (line 5) | module RailsAdmin
class FormBuilder (line 6) | class FormBuilder < ::ActionView::Helpers::FormBuilder
method generate (line 10) | def generate(options = {})
method fieldset_for (line 26) | def fieldset_for(fieldset, nested_in)
method field_wrapper_for (line 44) | def field_wrapper_for(field, nested_in)
method input_for (line 58) | def input_for(field)
method errors_for (line 68) | def errors_for(field)
method help_for (line 72) | def help_for(field)
method field_for (line 76) | def field_for(field)
method object_infos (line 80) | def object_infos
method jquery_namespace (line 93) | def jquery_namespace(field)
method dom_id (line 97) | def dom_id(field)
method dom_name (line 106) | def dom_name(field)
method hidden_field (line 110) | def hidden_field(method, options = {})
method generator_action (line 120) | def generator_action(action, nested)
method visible_groups (line 130) | def visible_groups(model_config, action)
method without_field_error_proc_added_div (line 139) | def without_field_error_proc_added_div
method nested_field_association? (line 151) | def nested_field_association?(field, nested_in)
FILE: app/helpers/rails_admin/main_helper.rb
type RailsAdmin (line 3) | module RailsAdmin
type MainHelper (line 4) | module MainHelper
function rails_admin_form_for (line 5) | def rails_admin_form_for(*args, &block)
function get_indicator (line 12) | def get_indicator(percent)
function filterable_fields (line 21) | def filterable_fields
function ordered_filters (line 25) | def ordered_filters
function ordered_filter_options (line 42) | def ordered_filter_options
FILE: config/initializers/active_record_extensions.rb
type ActiveRecord (line 4) | module ActiveRecord
class Base (line 5) | class Base
method rails_admin (line 6) | def self.rails_admin(&block)
method rails_admin_default_object_label_method (line 10) | def rails_admin_default_object_label_method
method safe_send (line 14) | def safe_send(value)
FILE: lib/generators/rails_admin/importmap_formatter.rb
type RailsAdmin (line 5) | module RailsAdmin
class ImportmapFormatter (line 6) | class ImportmapFormatter
method initialize (line 9) | def initialize(path = 'config/importmap.rails_admin.rb')
method format (line 13) | def format
FILE: lib/generators/rails_admin/install_generator.rb
type RailsAdmin (line 7) | module RailsAdmin
class InstallGenerator (line 8) | class InstallGenerator < Rails::Generators::Base
method install (line 16) | def install
method asset (line 47) | def asset
method configure_for_sprockets (line 63) | def configure_for_sprockets
method configure_for_webpacker5 (line 67) | def configure_for_webpacker5
method configure_for_vite (line 75) | def configure_for_vite
method configure_for_webpack (line 83) | def configure_for_webpack
method configure_for_importmap (line 96) | def configure_for_importmap
method setup_css (line 104) | def setup_css(additional_script_entries = {})
method add_package_json_field (line 122) | def add_package_json_field(name, entries, instruction = nil)
FILE: lib/generators/rails_admin/utils.rb
type RailsAdmin (line 3) | module RailsAdmin
type Generators (line 4) | module Generators
type Utils (line 5) | module Utils
type InstanceMethods (line 6) | module InstanceMethods
function display (line 7) | def display(output, color = :green)
function ask_for (line 11) | def ask_for(wording, default_value = nil, override_if_present_va...
FILE: lib/rails_admin.rb
type RailsAdmin (line 15) | module RailsAdmin
function config (line 31) | def self.config(entity = nil, &block)
function yaml_load (line 46) | def self.yaml_load(yaml)
function yaml_load (line 51) | def self.yaml_load(yaml)
function yaml_dump (line 59) | def self.yaml_dump(object)
FILE: lib/rails_admin/abstract_model.rb
type RailsAdmin (line 5) | module RailsAdmin
class AbstractModel (line 6) | class AbstractModel
method reset (line 11) | def reset
method all (line 15) | def all(adapter = nil)
method new (line 21) | def new(m)
method polymorphic_parents (line 31) | def polymorphic_parents(adapter, model_name, name)
method reset_polymorphic_parents (line 43) | def reset_polymorphic_parents
method initialize (line 48) | def initialize(model_or_model_name)
method model (line 59) | def model
method quoted_table_name (line 63) | def quoted_table_name
method quote_column_name (line 67) | def quote_column_name(name)
method to_s (line 71) | def to_s
method config (line 75) | def config
method to_param (line 79) | def to_param
method param_key (line 83) | def param_key
method pretty_name (line 87) | def pretty_name
method where (line 91) | def where(conditions)
method each_associated_children (line 95) | def each_associated_children(object)
method format_id (line 108) | def format_id(id)
method parse_id (line 112) | def parse_id(id)
method initialize_active_record (line 118) | def initialize_active_record
method initialize_mongoid (line 124) | def initialize_mongoid
method parse_field_value (line 130) | def parse_field_value(field, value)
class StatementBuilder (line 134) | class StatementBuilder
method initialize (line 135) | def initialize(column, type, value, operator)
method to_statement (line 142) | def to_statement
method get_filtering_duration (line 151) | def get_filtering_duration
method build_statement_for_type_generic (line 155) | def build_statement_for_type_generic
method build_statement_for_type (line 166) | def build_statement_for_type
method build_statement_for_integer_decimal_or_float (line 170) | def build_statement_for_integer_decimal_or_float
method build_statement_for_date (line 191) | def build_statement_for_date
method build_statement_for_datetime_or_timestamp (line 210) | def build_statement_for_datetime_or_timestamp
method unary_operators (line 217) | def unary_operators
method range_filter (line 221) | def range_filter(_min, _max)
class FilteringDuration (line 225) | class FilteringDuration
method initialize (line 226) | def initialize(operator, value)
method get_duration (line 231) | def get_duration
method today (line 242) | def today
method yesterday (line 246) | def yesterday
method this_week (line 250) | def this_week
method last_week (line 254) | def last_week
method between (line 259) | def between
method default (line 263) | def default
method default_date (line 269) | def default_date
FILE: lib/rails_admin/adapters/active_record.rb
type RailsAdmin (line 8) | module RailsAdmin
type Adapters (line 9) | module Adapters
type ActiveRecord (line 10) | module ActiveRecord
function new (line 13) | def new(params = {})
function get (line 17) | def get(id, scope = scoped)
function scoped (line 24) | def scoped
function first (line 28) | def first(options = {}, scope = nil)
function all (line 32) | def all(options = {}, scope = nil)
function count (line 44) | def count(options = {}, scope = nil)
function destroy (line 48) | def destroy(objects)
function associations (line 52) | def associations
function properties (line 58) | def properties
function base_class (line 69) | def base_class
function quoted_table_name (line 75) | def quoted_table_name
function quote_column_name (line 79) | def quote_column_name(name)
function encoding (line 83) | def encoding
function embedded? (line 106) | def embedded?
function cyclic? (line 110) | def cyclic?
function adapter_supports_joins? (line 114) | def adapter_supports_joins?
function format_id (line 118) | def format_id(id)
function parse_id (line 126) | def parse_id(id)
function primary_key_scope (line 140) | def primary_key_scope(scope, id)
function bulk_scope (line 148) | def bulk_scope(scope, options)
function sort_scope (line 156) | def sort_scope(scope, options)
class WhereBuilder (line 171) | class WhereBuilder
method initialize (line 172) | def initialize(scope)
method add (line 179) | def add(field, value, operator)
method build (line 190) | def build
function query_scope (line 197) | def query_scope(scope, query, fields = config.list.fields.select(&...
function filter_scope (line 213) | def filter_scope(scope, filters, fields = config.list.fields.selec...
function build_statement (line 228) | def build_statement(column, type, value, operator)
class StatementBuilder (line 232) | class StatementBuilder < RailsAdmin::AbstractModel::StatementBuilder
method initialize (line 233) | def initialize(column, type, value, operator, adapter_name)
method unary_operators (line 240) | def unary_operators
method generic_unary_operators (line 255) | def generic_unary_operators
method boolean_unary_operators (line 266) | def boolean_unary_operators
method range_filter (line 277) | def range_filter(min, max)
method build_statement_for_type (line 289) | def build_statement_for_type
method build_statement_for_boolean (line 300) | def build_statement_for_boolean
method column_for_value (line 309) | def column_for_value(value)
method build_statement_for_belongs_to_association (line 313) | def build_statement_for_belongs_to_association
method build_statement_for_string_or_text (line 319) | def build_statement_for_string_or_text
method build_statement_for_enum (line 351) | def build_statement_for_enum
method build_statement_for_uuid (line 357) | def build_statement_for_uuid
method ar_adapter (line 361) | def ar_adapter
FILE: lib/rails_admin/adapters/active_record/association.rb
type RailsAdmin (line 3) | module RailsAdmin
type Adapters (line 4) | module Adapters
type ActiveRecord (line 5) | module ActiveRecord
class Association (line 6) | class Association
method initialize (line 9) | def initialize(association, model)
method name (line 14) | def name
method pretty_name (line 18) | def pretty_name
method type (line 22) | def type
method field_type (line 26) | def field_type
method klass (line 34) | def klass
method primary_key (line 42) | def primary_key
method foreign_key (line 60) | def foreign_key
method foreign_key_nullable? (line 70) | def foreign_key_nullable?
method foreign_type (line 76) | def foreign_type
method foreign_inverse_of (line 80) | def foreign_inverse_of
method key_accessor (line 84) | def key_accessor
method as (line 99) | def as
method polymorphic? (line 103) | def polymorphic?
method inverse_of (line 107) | def inverse_of
method read_only? (line 111) | def read_only?
method nested_options (line 117) | def nested_options
method association? (line 121) | def association?
FILE: lib/rails_admin/adapters/active_record/object_extension.rb
type RailsAdmin (line 3) | module RailsAdmin
type Adapters (line 4) | module Adapters
type ActiveRecord (line 5) | module ActiveRecord
type ObjectExtension (line 6) | module ObjectExtension
function assign_attributes (line 7) | def assign_attributes(attributes)
FILE: lib/rails_admin/adapters/active_record/property.rb
type RailsAdmin (line 3) | module RailsAdmin
type Adapters (line 4) | module Adapters
type ActiveRecord (line 5) | module ActiveRecord
class Property (line 6) | class Property
method initialize (line 9) | def initialize(property, model)
method name (line 14) | def name
method pretty_name (line 18) | def pretty_name
method type (line 22) | def type
method length (line 30) | def length
method nullable? (line 34) | def nullable?
method serial? (line 38) | def serial?
method association? (line 42) | def association?
method read_only? (line 46) | def read_only?
method serialized? (line 52) | def serialized?
FILE: lib/rails_admin/adapters/mongoid.rb
type RailsAdmin (line 10) | module RailsAdmin
type Adapters (line 11) | module Adapters
type Mongoid (line 12) | module Mongoid
function parse_object_id (line 15) | def parse_object_id(value)
function new (line 19) | def new(params = {})
function get (line 23) | def get(id, scope = scoped)
function scoped (line 38) | def scoped
function first (line 42) | def first(options = {}, scope = nil)
function all (line 46) | def all(options = {}, scope = nil)
function count (line 66) | def count(options = {}, scope = nil)
function destroy (line 70) | def destroy(objects)
function primary_key (line 74) | def primary_key
function associations (line 78) | def associations
function properties (line 84) | def properties
function base_class (line 89) | def base_class
function table_name (line 95) | def table_name
function encoding (line 99) | def encoding
function embedded? (line 103) | def embedded?
function cyclic? (line 107) | def cyclic?
function adapter_supports_joins? (line 111) | def adapter_supports_joins?
function build_statement (line 117) | def build_statement(column, type, value, operator)
function make_field_conditions (line 121) | def make_field_conditions(field, value, operator)
function query_scope (line 134) | def query_scope(scope, query, fields = config.list.fields.select(&...
function filter_scope (line 152) | def filter_scope(scope, filters, fields = config.list.fields.selec...
function parse_collection_name (line 174) | def parse_collection_name(column)
function make_condition_for_current_collection (line 183) | def make_condition_for_current_collection(target_field, conditions...
function perform_search_on_associated_collection (line 197) | def perform_search_on_associated_collection(field_name, conditions)
function sort_by (line 210) | def sort_by(options, scope)
class StatementBuilder (line 227) | class StatementBuilder < RailsAdmin::AbstractModel::StatementBuilder
method unary_operators (line 230) | def unary_operators
method build_statement_for_type (line 243) | def build_statement_for_type
method build_statement_for_boolean (line 253) | def build_statement_for_boolean
method column_for_value (line 262) | def column_for_value(value)
method build_statement_for_string_or_text (line 266) | def build_statement_for_string_or_text
method build_statement_for_enum (line 288) | def build_statement_for_enum
method build_statement_for_belongs_to_association_or_bson_object_id (line 294) | def build_statement_for_belongs_to_association_or_bson_object_id
method range_filter (line 298) | def range_filter(min, max)
FILE: lib/rails_admin/adapters/mongoid/association.rb
type RailsAdmin (line 3) | module RailsAdmin
type Adapters (line 4) | module Adapters
type Mongoid (line 5) | module Mongoid
class Association (line 6) | class Association
method initialize (line 11) | def initialize(association, model)
method name (line 16) | def name
method pretty_name (line 20) | def pretty_name
method type (line 24) | def type
method field_type (line 39) | def field_type
method klass (line 47) | def klass
method primary_key (line 55) | def primary_key
method foreign_key (line 64) | def foreign_key
method foreign_key_nullable? (line 74) | def foreign_key_nullable?
method foreign_type (line 80) | def foreign_type
method foreign_inverse_of (line 86) | def foreign_inverse_of
method key_accessor (line 92) | def key_accessor
method as (line 105) | def as
method polymorphic? (line 109) | def polymorphic?
method inverse_of (line 113) | def inverse_of
method read_only? (line 117) | def read_only?
method nested_options (line 121) | def nested_options
method association? (line 134) | def association?
method macro (line 138) | def macro
method embeds? (line 142) | def embeds?
method inverse_of_field (line 148) | def inverse_of_field
method cyclic? (line 152) | def cyclic?
FILE: lib/rails_admin/adapters/mongoid/bson.rb
type RailsAdmin (line 5) | module RailsAdmin
type Adapters (line 6) | module Adapters
type Mongoid (line 7) | module Mongoid
class Bson (line 8) | class Bson
method parse_object_id (line 17) | def parse_object_id(value)
FILE: lib/rails_admin/adapters/mongoid/extension.rb
type RailsAdmin (line 3) | module RailsAdmin
type Adapters (line 4) | module Adapters
type Mongoid (line 5) | module Mongoid
type Extension (line 6) | module Extension
function rails_admin (line 13) | def rails_admin(&block)
function rails_admin_default_object_label_method (line 22) | def rails_admin_default_object_label_method
function safe_send (line 26) | def safe_send(value)
type ClassMethods (line 34) | module ClassMethods
function accepts_nested_attributes_for_with_rails_admin (line 37) | def accepts_nested_attributes_for_with_rails_admin(*args)
FILE: lib/rails_admin/adapters/mongoid/object_extension.rb
type RailsAdmin (line 3) | module RailsAdmin
type Adapters (line 4) | module Adapters
type Mongoid (line 5) | module Mongoid
type ObjectExtension (line 6) | module ObjectExtension
function extended (line 7) | def self.extended(object)
FILE: lib/rails_admin/adapters/mongoid/property.rb
type RailsAdmin (line 3) | module RailsAdmin
type Adapters (line 4) | module Adapters
type Mongoid (line 5) | module Mongoid
class Property (line 6) | class Property
method initialize (line 10) | def initialize(property, model)
method name (line 15) | def name
method pretty_name (line 19) | def pretty_name
method type (line 23) | def type
method length (line 52) | def length
method nullable? (line 56) | def nullable?
method serial? (line 60) | def serial?
method association? (line 64) | def association?
method read_only? (line 68) | def read_only?
method object_field_type (line 74) | def object_field_type
method string_field_type (line 83) | def string_field_type
method length_validation_lookup (line 91) | def length_validation_lookup
FILE: lib/rails_admin/config.rb
type RailsAdmin (line 8) | module RailsAdmin
type Config (line 9) | module Config
function authenticate_with (line 114) | def authenticate_with(&blk)
function audit_with (line 120) | def audit_with(*args, &block)
function authorize_with (line 157) | def authorize_with(*args, &block)
function configure_with (line 183) | def configure_with(extension)
function current_user_method (line 201) | def current_user_method(&block)
function default_search_operator= (line 206) | def default_search_operator=(operator)
function models_pool (line 215) | def models_pool
function model (line 231) | def model(entity, &block)
function asset_source (line 249) | def asset_source
function default_hidden_fields= (line 263) | def default_hidden_fields=(fields)
function parent_controller= (line 273) | def parent_controller=(name)
function total_columns_width= (line 286) | def total_columns_width=(_)
function sidescroll= (line 290) | def sidescroll=(_)
function actions (line 295) | def actions(&block)
function models (line 305) | def models
function reset (line 312) | def reset
function reset_model (line 346) | def reset_model(model)
function reload! (line 352) | def reload!
function visible_models (line 360) | def visible_models(bindings)
function viable_models (line 372) | def viable_models
function visible_models_with_bindings (line 391) | def visible_models_with_bindings(bindings)
FILE: lib/rails_admin/config/actions.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
function all (line 7) | def all(scope = nil, bindings = {})
function find (line 32) | def find(custom_key, bindings = {})
function collection (line 38) | def collection(key, parent_class = :base, &block)
function member (line 42) | def member(key, parent_class = :base, &block)
function root (line 46) | def root(key, parent_class = :base, &block)
function add_action (line 50) | def add_action(key, parent_class, parent, &block)
function reset (line 61) | def reset
function register (line 65) | def register(name, klass = nil)
function init_actions! (line 81) | def init_actions!
function add_action_custom_key (line 97) | def add_action_custom_key(action, &block)
FILE: lib/rails_admin/config/actions/base.rb
type RailsAdmin (line 7) | module RailsAdmin
type Config (line 8) | module Config
type Actions (line 9) | module Actions
class Base (line 10) | class Base
method key (line 152) | def key
method key (line 156) | def self.key
FILE: lib/rails_admin/config/actions/bulk_delete.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
class BulkDelete (line 6) | class BulkDelete < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/actions/dashboard.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
class Dashboard (line 6) | class Dashboard < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/actions/delete.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
class Delete (line 6) | class Delete < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/actions/edit.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
class Edit (line 6) | class Edit < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/actions/export.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
class Export (line 6) | class Export < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/actions/history_index.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
class HistoryIndex (line 6) | class HistoryIndex < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/actions/history_show.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
class HistoryShow (line 6) | class HistoryShow < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/actions/index.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Actions (line 7) | module Actions
class Index (line 8) | class Index < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/actions/new.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
class New (line 6) | class New < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/actions/show.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
class Show (line 6) | class Show < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/actions/show_in_app.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Actions (line 5) | module Actions
class ShowInApp (line 6) | class ShowInApp < RailsAdmin::Config::Actions::Base
FILE: lib/rails_admin/config/configurable.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Configurable (line 7) | module Configurable
function included (line 8) | def self.included(base)
function has_option? (line 12) | def has_option?(name) # rubocop:disable Naming/PredicatePrefix?
function register_instance_option (line 18) | def register_instance_option(option_name, &default)
function register_deprecated_instance_option (line 23) | def register_deprecated_instance_option(option_name, replacement_o...
function with_recurring (line 30) | def with_recurring(option_name, value_proc, default_proc)
type ClassMethods (line 47) | module ClassMethods
function register_instance_option (line 51) | def register_instance_option(option_name, scope = self, &default)
function register_deprecated_instance_option (line 84) | def register_deprecated_instance_option(option_name, replacement...
function register_class_option (line 100) | def register_class_option(option_name, &default)
FILE: lib/rails_admin/config/const_load_suppressor.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type ConstLoadSuppressor (line 5) | module ConstLoadSuppressor
function suppressing (line 9) | def suppressing
function allowing (line 22) | def allowing
function intercept_const_missing (line 37) | def intercept_const_missing
class ConstProxy (line 44) | class ConstProxy < BasicObject
method initialize (line 47) | def initialize(name)
method klass (line 51) | def klass
method method_missing (line 68) | def method_missing(method_name, *args, &block)
method respond_to_missing? (line 72) | def respond_to_missing?(method_name, include_private = false)
FILE: lib/rails_admin/config/fields.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Fields (line 5) | module Fields
function factory (line 48) | def self.factory(parent)
function register_factory (line 75) | def self.register_factory(&block)
FILE: lib/rails_admin/config/fields/association.rb
type RailsAdmin (line 6) | module RailsAdmin
type Config (line 7) | module Config
type Fields (line 8) | module Fields
class Association (line 9) | class Association < RailsAdmin::Config::Fields::Base
method association (line 11) | def association
method method_name (line 15) | def method_name
method dynamic_scope_relationships (line 69) | def dynamic_scope_relationships
method associated_model_config (line 103) | def associated_model_config
method associated_object_label_method (line 108) | def associated_object_label_method
method associated_primary_key (line 113) | def associated_primary_key
method associated_prepopulate_params (line 118) | def associated_prepopulate_params
method polymorphic? (line 123) | def polymorphic?
method value (line 133) | def value
method collection (line 138) | def collection(scope = nil)
method multiple? (line 144) | def multiple?
method virtual? (line 148) | def virtual?
method associated_model_limit (line 152) | def associated_model_limit
method format_key (line 158) | def format_key(key)
FILE: lib/rails_admin/config/fields/base.rb
type RailsAdmin (line 9) | module RailsAdmin
type Config (line 10) | module Config
type Fields (line 11) | module Fields
class Base (line 12) | class Base # rubocop:disable Metrics/ClassLength
method initialize (line 27) | def initialize(parent, name, properties)
method type_css_class (line 43) | def type_css_class
method virtual? (line 47) | def virtual?
method sort_column (line 63) | def sort_column
method filter_options (line 101) | def filter_options
method eager_load_values (line 269) | def eager_load_values
method editable? (line 284) | def editable?
method association? (line 289) | def association?
method errors (line 294) | def errors
method optional? (line 303) | def optional?
method optional (line 310) | def optional(state = nil, &block)
method optional= (line 321) | def optional=(state)
method type (line 326) | def type
method value (line 331) | def value
method generic_help (line 354) | def generic_help
method generic_field_help (line 358) | def generic_field_help
method parse_value (line 365) | def parse_value(value)
method parse_input (line 369) | def parse_input(_params)
method inverse_of (line 373) | def inverse_of
method method_name (line 377) | def method_name
method form_default_value (line 381) | def form_default_value
method form_value (line 385) | def form_value
FILE: lib/rails_admin/config/fields/collection_association.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
class CollectionAssociation (line 8) | class CollectionAssociation < Association
method collection (line 18) | def collection(scope = nil)
method associated_prepopulate_params (line 30) | def associated_prepopulate_params
method multiple? (line 34) | def multiple?
method selected_ids (line 38) | def selected_ids
method parse_input (line 42) | def parse_input(params)
method form_default_value (line 59) | def form_default_value
method form_value (line 63) | def form_value
method widget_options (line 67) | def widget_options
FILE: lib/rails_admin/config/fields/group.rb
type RailsAdmin (line 8) | module RailsAdmin
type Config (line 9) | module Config
type Fields (line 10) | module Fields
class Group (line 12) | class Group
method initialize (line 20) | def initialize(parent, name)
method field (line 33) | def field(name, type = nil, &block)
method fields (line 42) | def fields
method fields_of_type (line 49) | def fields_of_type(type, &block)
method visible_fields (line 56) | def visible_fields
FILE: lib/rails_admin/config/fields/singular_association.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
class SingularAssociation (line 8) | class SingularAssociation < Association
method collection (line 21) | def collection(scope = nil)
method multiple? (line 29) | def multiple?
method selected_id (line 33) | def selected_id
method parse_input (line 37) | def parse_input(params)
method form_value (line 45) | def form_value
method widget_options (line 49) | def widget_options
FILE: lib/rails_admin/config/fields/types.rb
type RailsAdmin (line 7) | module RailsAdmin
type Config (line 8) | module Config
type Fields (line 9) | module Fields
type Types (line 10) | module Types
function load (line 13) | def self.load(type)
function register (line 17) | def self.register(type, klass = nil)
FILE: lib/rails_admin/config/fields/types/action_text.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class ActionText (line 9) | class ActionText < Text
FILE: lib/rails_admin/config/fields/types/active_record_enum.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class ActiveRecordEnum (line 9) | class ActiveRecordEnum < Enum
method type (line 12) | def type
method parse_value (line 32) | def parse_value(value)
method parse_input (line 38) | def parse_input(params)
method form_value (line 45) | def form_value
method parse_input_value (line 51) | def parse_input_value(value)
method type_cast_value (line 55) | def type_cast_value(value)
FILE: lib/rails_admin/config/fields/types/active_storage.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class ActiveStorage (line 9) | class ActiveStorage < RailsAdmin::Config::Fields::Types::FileUpload
method resource_url (line 48) | def resource_url(thumb = false)
method value (line 62) | def value
FILE: lib/rails_admin/config/fields/types/belongs_to_association.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class BelongsToAssociation (line 9) | class BelongsToAssociation < RailsAdmin::Config::Fields::Singula...
method selected_id (line 28) | def selected_id
method parse_input (line 36) | def parse_input(params)
FILE: lib/rails_admin/config/fields/types/boolean.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Fields (line 5) | module Fields
type Types (line 6) | module Types
class Boolean (line 7) | class Boolean < RailsAdmin::Config::Fields::Base
method form_value (line 51) | def form_value
method generic_help (line 59) | def generic_help
method parse_input (line 63) | def parse_input(params)
FILE: lib/rails_admin/config/fields/types/bson_object_id.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class BsonObjectId (line 9) | class BsonObjectId < RailsAdmin::Config::Fields::Types::String
method generic_help (line 19) | def generic_help
method parse_value (line 31) | def parse_value(value)
method parse_input (line 35) | def parse_input(params)
FILE: lib/rails_admin/config/fields/types/carrierwave.rb
type RailsAdmin (line 6) | module RailsAdmin
type Config (line 7) | module Config
type Fields (line 8) | module Fields
type Types (line 9) | module Types
class Carrierwave (line 10) | class Carrierwave < RailsAdmin::Config::Fields::Types::FileUpload
method resource_url (line 25) | def resource_url(thumb = false)
FILE: lib/rails_admin/config/fields/types/citext.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Citext (line 9) | class Citext < Text
FILE: lib/rails_admin/config/fields/types/ck_editor.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class CKEditor (line 9) | class CKEditor < Text
FILE: lib/rails_admin/config/fields/types/code_mirror.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class CodeMirror (line 9) | class CodeMirror < Text
FILE: lib/rails_admin/config/fields/types/color.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Color (line 9) | class Color < StringLike
FILE: lib/rails_admin/config/fields/types/date.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Date (line 9) | class Date < RailsAdmin::Config::Fields::Types::Datetime
method parse_value (line 12) | def parse_value(value)
FILE: lib/rails_admin/config/fields/types/datetime.rb
type RailsAdmin (line 6) | module RailsAdmin
type Config (line 7) | module Config
type Fields (line 8) | module Fields
type Types (line 9) | module Types
class Datetime (line 10) | class Datetime < RailsAdmin::Config::Fields::Base
method parse_value (line 13) | def parse_value(value)
method parse_input (line 17) | def parse_input(params)
method filter_options (line 25) | def filter_options
method form_value (line 89) | def form_value
FILE: lib/rails_admin/config/fields/types/decimal.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Decimal (line 9) | class Decimal < RailsAdmin::Config::Fields::Types::Numeric
FILE: lib/rails_admin/config/fields/types/dragonfly.rb
type RailsAdmin (line 6) | module RailsAdmin
type Config (line 7) | module Config
type Fields (line 8) | module Fields
type Types (line 9) | module Types
class Dragonfly (line 11) | class Dragonfly < RailsAdmin::Config::Fields::Types::FileUpload
method resource_url (line 35) | def resource_url(thumb = false)
FILE: lib/rails_admin/config/fields/types/enum.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Enum (line 9) | class Enum < RailsAdmin::Config::Fields::Base
FILE: lib/rails_admin/config/fields/types/file_upload.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class FileUpload (line 9) | class FileUpload < RailsAdmin::Config::Fields::Base
method extension (line 69) | def extension
method resource_url (line 76) | def resource_url
method virtual? (line 80) | def virtual?
FILE: lib/rails_admin/config/fields/types/float.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Float (line 9) | class Float < RailsAdmin::Config::Fields::Types::Numeric
FILE: lib/rails_admin/config/fields/types/froala.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Froala (line 9) | class Froala < Text
FILE: lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class HasAndBelongsToManyAssociation (line 9) | class HasAndBelongsToManyAssociation < RailsAdmin::Config::Field...
FILE: lib/rails_admin/config/fields/types/has_many_association.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class HasManyAssociation (line 9) | class HasManyAssociation < RailsAdmin::Config::Fields::Collectio...
FILE: lib/rails_admin/config/fields/types/has_one_association.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class HasOneAssociation (line 9) | class HasOneAssociation < RailsAdmin::Config::Fields::SingularAs...
method associated_prepopulate_params (line 17) | def associated_prepopulate_params
method parse_input (line 21) | def parse_input(params)
method selected_id (line 28) | def selected_id
FILE: lib/rails_admin/config/fields/types/hidden.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Hidden (line 9) | class Hidden < StringLike
method generic_help (line 24) | def generic_help
FILE: lib/rails_admin/config/fields/types/inet.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Inet (line 9) | class Inet < RailsAdmin::Config::Fields::Base
FILE: lib/rails_admin/config/fields/types/integer.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Integer (line 9) | class Integer < RailsAdmin::Config::Fields::Types::Numeric
FILE: lib/rails_admin/config/fields/types/json.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Json (line 9) | class Json < RailsAdmin::Config::Fields::Types::Text
method parse_value (line 26) | def parse_value(value)
method parse_input (line 30) | def parse_input(params)
FILE: lib/rails_admin/config/fields/types/multiple_active_storage.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class MultipleActiveStorage (line 9) | class MultipleActiveStorage < RailsAdmin::Config::Fields::Types:...
class ActiveStorageAttachment (line 12) | class ActiveStorageAttachment < RailsAdmin::Config::Fields::Ty...
method resource_url (line 29) | def resource_url(thumb = false)
FILE: lib/rails_admin/config/fields/types/multiple_carrierwave.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class MultipleCarrierwave (line 9) | class MultipleCarrierwave < RailsAdmin::Config::Fields::Types::M...
class CarrierwaveAttachment (line 12) | class CarrierwaveAttachment < RailsAdmin::Config::Fields::Type...
method resource_url (line 25) | def resource_url(thumb = false)
method value (line 52) | def value
FILE: lib/rails_admin/config/fields/types/multiple_file_upload.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Fields (line 5) | module Fields
type Types (line 6) | module Types
class MultipleFileUpload (line 7) | class MultipleFileUpload < RailsAdmin::Config::Fields::Base
class AbstractAttachment (line 10) | class AbstractAttachment
method initialize (line 16) | def initialize(value)
method resource_url (line 54) | def resource_url(_thumb = false)
method extension (line 58) | def extension
method initialize (line 65) | def initialize(*args)
method attachment (line 112) | def attachment(&block)
method attachments (line 116) | def attachments
method virtual? (line 127) | def virtual?
FILE: lib/rails_admin/config/fields/types/numeric.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Numeric (line 9) | class Numeric < RailsAdmin::Config::Fields::Base
FILE: lib/rails_admin/config/fields/types/paperclip.rb
type RailsAdmin (line 6) | module RailsAdmin
type Config (line 7) | module Config
type Fields (line 8) | module Fields
type Types (line 9) | module Types
class Paperclip (line 11) | class Paperclip < RailsAdmin::Config::Fields::Types::FileUpload
method resource_url (line 23) | def resource_url(thumb = false)
FILE: lib/rails_admin/config/fields/types/password.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Password (line 9) | class Password < RailsAdmin::Config::Fields::Types::String
method parse_input (line 17) | def parse_input(params)
method value (line 30) | def value
FILE: lib/rails_admin/config/fields/types/polymorphic_association.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class PolymorphicAssociation (line 9) | class PolymorphicAssociation < RailsAdmin::Config::Fields::Types...
method associated_model_config (line 54) | def associated_model_config
method collection (line 58) | def collection(_scope = nil)
method type_column (line 66) | def type_column
method type_collection (line 70) | def type_collection
method type_urls (line 76) | def type_urls
method value (line 84) | def value
method widget_options_for_types (line 88) | def widget_options_for_types
method widget_options (line 100) | def widget_options
method selected_type (line 104) | def selected_type
method parse_input (line 108) | def parse_input(params)
FILE: lib/rails_admin/config/fields/types/serialized.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Serialized (line 9) | class Serialized < RailsAdmin::Config::Fields::Types::Text
method parse_value (line 17) | def parse_value(value)
method parse_input (line 21) | def parse_input(params)
FILE: lib/rails_admin/config/fields/types/shrine.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Shrine (line 9) | class Shrine < RailsAdmin::Config::Fields::Types::FileUpload
method resource_url (line 47) | def resource_url(thumb = nil)
FILE: lib/rails_admin/config/fields/types/simple_mde.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class SimpleMDE (line 9) | class SimpleMDE < Text
FILE: lib/rails_admin/config/fields/types/string.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class String (line 9) | class String < StringLike
method input_size (line 12) | def input_size
method generic_help (line 24) | def generic_help
FILE: lib/rails_admin/config/fields/types/string_like.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class StringLike (line 9) | class StringLike < RailsAdmin::Config::Fields::Base
method parse_input (line 18) | def parse_input(params)
FILE: lib/rails_admin/config/fields/types/text.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Text (line 9) | class Text < StringLike
FILE: lib/rails_admin/config/fields/types/time.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Time (line 9) | class Time < RailsAdmin::Config::Fields::Types::Datetime
method parse_value (line 12) | def parse_value(value)
FILE: lib/rails_admin/config/fields/types/timestamp.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Timestamp (line 9) | class Timestamp < RailsAdmin::Config::Fields::Types::Datetime
FILE: lib/rails_admin/config/fields/types/uuid.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Uuid (line 9) | class Uuid < RailsAdmin::Config::Fields::Types::String
FILE: lib/rails_admin/config/fields/types/wysihtml5.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Fields (line 7) | module Fields
type Types (line 8) | module Types
class Wysihtml5 (line 9) | class Wysihtml5 < Text
FILE: lib/rails_admin/config/groupable.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Groupable (line 7) | module Groupable
function group (line 14) | def group(name = nil)
FILE: lib/rails_admin/config/has_description.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type HasDescription (line 6) | module HasDescription
function desc (line 9) | def desc(description, &_block)
FILE: lib/rails_admin/config/has_fields.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type HasFields (line 6) | module HasFields
function field (line 8) | def field(name, type = nil, add_to_section = true, &block)
function configure (line 43) | def configure(name, type = nil, &block)
function include_fields (line 49) | def include_fields(*field_names, &block)
function exclude_fields (line 63) | def exclude_fields(*field_names, &block)
function include_all_fields (line 73) | def include_all_fields
function fields (line 83) | def fields(*field_names, &block)
function fields_of_type (line 103) | def fields_of_type(type, &block)
function all_fields (line 108) | def all_fields
function visible_fields (line 116) | def visible_fields
function possible_fields (line 121) | def possible_fields
function _fields (line 130) | def _fields(readonly = false)
FILE: lib/rails_admin/config/has_groups.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type HasGroups (line 7) | module HasGroups
function group (line 12) | def group(name, &block)
function visible_groups (line 20) | def visible_groups
FILE: lib/rails_admin/config/hideable.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Hideable (line 6) | module Hideable
function included (line 8) | def self.included(klass)
function hidden? (line 15) | def hidden?
function hide (line 20) | def hide(&block)
function show (line 25) | def show(&block)
FILE: lib/rails_admin/config/inspectable.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Inspectable (line 5) | module Inspectable
function inspect (line 6) | def inspect
function instance_variable_name (line 21) | def instance_variable_name(variable)
function set_named_instance_variables (line 34) | def set_named_instance_variables
FILE: lib/rails_admin/config/lazy_model.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
class LazyModel (line 7) | class LazyModel < BasicObject
method initialize (line 8) | def initialize(entity, &block)
method add_deferred_block (line 14) | def add_deferred_block(&block)
method target (line 22) | def target
method method_missing (line 65) | def method_missing(method_name, *args, &block)
method respond_to_missing? (line 69) | def respond_to_missing?(method_name, include_private = false)
FILE: lib/rails_admin/config/model.rb
type RailsAdmin (line 16) | module RailsAdmin
type Config (line 17) | module Config
class Model (line 19) | class Model
method initialize (line 31) | def initialize(entity)
method excluded? (line 50) | def excluded?
method object_label (line 56) | def object_label
method pluralize (line 77) | def pluralize(count)
method method_missing (line 115) | def method_missing(method_name, *args, &block)
FILE: lib/rails_admin/config/proxyable.rb
type RailsAdmin (line 4) | module RailsAdmin
type Config (line 5) | module Config
type Proxyable (line 6) | module Proxyable
function bindings (line 7) | def bindings
function bindings= (line 12) | def bindings=(new_bindings)
function with (line 21) | def with(bindings = {})
FILE: lib/rails_admin/config/proxyable/proxy.rb
type RailsAdmin (line 3) | module RailsAdmin
type Config (line 4) | module Config
type Proxyable (line 5) | module Proxyable
class Proxy (line 6) | class Proxy < BasicObject
method initialize (line 7) | def initialize(object, bindings = {})
method bind (line 13) | def bind(key, value = nil)
method method_missing (line 22) | def method_missing(method_name, *args, &block)
FILE: lib/rails_admin/config/sections.rb
type RailsAdmin (line 14) | module RailsAdmin
type Config (line 15) | module Config
type Sections (line 23) | module Sections
function included (line 24) | def self.included(klass)
FILE: lib/rails_admin/config/sections/base.rb
type RailsAdmin (line 10) | module RailsAdmin
type Config (line 11) | module Config
type Sections (line 12) | module Sections
class Base (line 14) | class Base
method initialize (line 27) | def initialize(parent)
FILE: lib/rails_admin/config/sections/create.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Sections (line 7) | module Sections
class Create (line 9) | class Create < RailsAdmin::Config::Sections::Edit
FILE: lib/rails_admin/config/sections/edit.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Sections (line 7) | module Sections
class Edit (line 9) | class Edit < RailsAdmin::Config::Sections::Base
FILE: lib/rails_admin/config/sections/export.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Sections (line 7) | module Sections
class Export (line 9) | class Export < RailsAdmin::Config::Sections::Base
FILE: lib/rails_admin/config/sections/list.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Sections (line 7) | module Sections
class List (line 9) | class List < RailsAdmin::Config::Sections::Base
method fields_for_table (line 53) | def fields_for_table
FILE: lib/rails_admin/config/sections/modal.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Sections (line 7) | module Sections
class Modal (line 8) | class Modal < RailsAdmin::Config::Sections::Edit
FILE: lib/rails_admin/config/sections/nested.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Sections (line 7) | module Sections
class Nested (line 8) | class Nested < RailsAdmin::Config::Sections::Edit
FILE: lib/rails_admin/config/sections/show.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Sections (line 7) | module Sections
class Show (line 8) | class Show < RailsAdmin::Config::Sections::Base
FILE: lib/rails_admin/config/sections/update.rb
type RailsAdmin (line 5) | module RailsAdmin
type Config (line 6) | module Config
type Sections (line 7) | module Sections
class Update (line 8) | class Update < RailsAdmin::Config::Sections::Edit
FILE: lib/rails_admin/engine.rb
type RailsAdmin (line 11) | module RailsAdmin
class Engine (line 12) | class Engine < Rails::Engine
FILE: lib/rails_admin/extension.rb
type RailsAdmin (line 5) | module RailsAdmin
function add_extension (line 15) | def self.add_extension(extension_key, extension_definition, options = {})
function setup_all_extensions (line 28) | def self.setup_all_extensions
FILE: lib/rails_admin/extensions/cancancan/authorization_adapter.rb
type RailsAdmin (line 3) | module RailsAdmin
type Extensions (line 4) | module Extensions
type CanCanCan (line 5) | module CanCanCan
class AuthorizationAdapter (line 7) | class AuthorizationAdapter
type ControllerExtension (line 8) | module ControllerExtension
function current_ability (line 9) | def current_ability
method setup (line 18) | def self.setup
method initialize (line 23) | def initialize(controller, ability = nil, &block)
method authorize (line 44) | def authorize(action, abstract_model = nil, model_object = nil)
method authorized? (line 55) | def authorized?(action, abstract_model = nil, model_object = nil)
method query (line 65) | def query(action, abstract_model)
method attributes_for (line 72) | def attributes_for(action, abstract_model)
method resolve_action_and_subject (line 78) | def resolve_action_and_subject(action, abstract_model, model_obj...
FILE: lib/rails_admin/extensions/controller_extension.rb
type RailsAdmin (line 3) | module RailsAdmin
type Extensions (line 4) | module Extensions
type ControllerExtension (line 5) | module ControllerExtension
FILE: lib/rails_admin/extensions/paper_trail/auditing_adapter.rb
type RailsAdmin (line 5) | module RailsAdmin
type Extensions (line 6) | module Extensions
type PaperTrail (line 7) | module PaperTrail
class VersionProxy (line 8) | class VersionProxy
method initialize (line 9) | def initialize(version, user_class = User)
method message (line 14) | def message
method created_at (line 19) | def created_at
method table (line 23) | def table
method username (line 27) | def username
method item (line 35) | def item
type ControllerExtension (line 40) | module ControllerExtension
function user_for_paper_trail (line 41) | def user_for_paper_trail
class AuditingAdapter (line 46) | class AuditingAdapter
method setup (line 75) | def self.setup
method initialize (line 81) | def initialize(controller, user_class_name = nil, version_class_...
method latest (line 107) | def latest(count = 100)
method delete_object (line 113) | def delete_object(_object, _model, _user)
method update_object (line 117) | def update_object(_object, _model, _user, _changes)
method create_object (line 121) | def create_object(_object, _abstract_model, _user)
method listing_for_model (line 125) | def listing_for_model(model, query, sort, sort_reverse, all, pag...
method listing_for_object (line 129) | def listing_for_object(model, object, query, sort, sort_reverse,...
method listing_for_model_or_object (line 136) | def listing_for_model_or_object(model, object, query, sort, sort...
method versions_for_model (line 161) | def versions_for_model(model)
method version_class_for (line 181) | def version_class_for(model)
FILE: lib/rails_admin/extensions/pundit/authorization_adapter.rb
type RailsAdmin (line 3) | module RailsAdmin
type Extensions (line 4) | module Extensions
type Pundit (line 5) | module Pundit
class AuthorizationAdapter (line 9) | class AuthorizationAdapter
method setup (line 11) | def self.setup
method initialize (line 16) | def initialize(controller)
method authorize (line 25) | def authorize(action, abstract_model = nil, model_object = nil)
method authorized? (line 36) | def authorized?(action, abstract_model = nil, model_object = nil)
method query (line 44) | def query(_action, abstract_model)
method attributes_for (line 53) | def attributes_for(action, abstract_model)
method policy (line 60) | def policy(record)
method action_for_pundit (line 66) | def action_for_pundit(action)
FILE: lib/rails_admin/extensions/url_for_extension.rb
type RailsAdmin (line 3) | module RailsAdmin
type Extensions (line 4) | module Extensions
type UrlForExtension (line 5) | module UrlForExtension
function url_for (line 6) | def url_for(options, *args)
FILE: lib/rails_admin/support/composite_keys_serializer.rb
type RailsAdmin (line 3) | module RailsAdmin
type Support (line 4) | module Support
type CompositeKeysSerializer (line 5) | module CompositeKeysSerializer
function serialize (line 6) | def self.serialize(keys)
function deserialize (line 10) | def self.deserialize(string)
FILE: lib/rails_admin/support/csv_converter.rb
type RailsAdmin (line 5) | module RailsAdmin
class CSVConverter (line 6) | class CSVConverter
method initialize (line 7) | def initialize(objects = [], schema = nil)
method to_csv (line 41) | def to_csv(options = {})
method export_field_for (line 67) | def export_field_for(method, model_config = @model_config)
method generate_csv_string (line 71) | def generate_csv_string(options)
method generate_csv_header (line 84) | def generate_csv_header
method generate_csv_row (line 95) | def generate_csv_row(object)
FILE: lib/rails_admin/support/datetime.rb
type RailsAdmin (line 3) | module RailsAdmin
type Support (line 4) | module Support
class Datetime (line 5) | class Datetime
method to_flatpickr_format (line 47) | def to_flatpickr_format(strftime_format)
FILE: lib/rails_admin/support/es_module_processor.rb
type RailsAdmin (line 3) | module RailsAdmin
type Support (line 4) | module Support
class ESModuleProcessor (line 5) | class ESModuleProcessor
method instance (line 6) | def self.instance
method call (line 10) | def self.call(input)
method initialize (line 14) | def initialize; end
method call (line 16) | def call(input)
FILE: lib/rails_admin/support/hash_helper.rb
type RailsAdmin (line 3) | module RailsAdmin
class HashHelper (line 4) | class HashHelper
method symbolize (line 5) | def self.symbolize(obj)
FILE: lib/rails_admin/version.rb
type RailsAdmin (line 3) | module RailsAdmin
class Version (line 4) | class Version
method to_s (line 12) | def to_s
method js (line 16) | def js
method actual_js_version (line 20) | def actual_js_version
method warn_with_js_version (line 29) | def warn_with_js_version
method js_version_from_node_modules (line 47) | def js_version_from_node_modules
FILE: spec/controllers/rails_admin/main_controller_spec.rb
function get (line 8) | def get(action, params)
FILE: spec/dummy_app/app/active_record/abstract.rb
class Abstract (line 3) | class Abstract < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/another_field_test.rb
class AnotherFieldTest (line 3) | class AnotherFieldTest < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/ball.rb
class Ball (line 3) | class Ball < ActiveRecord::Base
method to_param (line 8) | def to_param
FILE: spec/dummy_app/app/active_record/carrierwave_uploader.rb
class CarrierwaveUploader (line 4) | class CarrierwaveUploader < CarrierWave::Uploader::Base
method store_dir (line 16) | def store_dir
FILE: spec/dummy_app/app/active_record/category.rb
class Category (line 3) | class Category < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/cms.rb
type Cms (line 3) | module Cms
function table_name_prefix (line 4) | def self.table_name_prefix
FILE: spec/dummy_app/app/active_record/cms/basic_page.rb
type Cms (line 3) | module Cms
class BasicPage (line 4) | class BasicPage < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/comment.rb
class Comment (line 3) | class Comment < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/comment/confirmed.rb
class Comment (line 3) | class Comment
class Confirmed (line 4) | class Confirmed < Comment
FILE: spec/dummy_app/app/active_record/concerns/taggable.rb
type Taggable (line 3) | module Taggable
FILE: spec/dummy_app/app/active_record/deeply_nested_field_test.rb
class DeeplyNestedFieldTest (line 3) | class DeeplyNestedFieldTest < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/division.rb
class Division (line 3) | class Division < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/draft.rb
class Draft (line 3) | class Draft < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/fan.rb
class Fan (line 3) | class Fan < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/fanship.rb
class Fanship (line 4) | class Fanship < ActiveRecord::Base
class Fanship (line 21) | class Fanship; end
FILE: spec/dummy_app/app/active_record/favorite_player.rb
class FavoritePlayer (line 4) | class FavoritePlayer < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/field_test.rb
class FieldTest (line 3) | class FieldTest < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/hardball.rb
class Hardball (line 3) | class Hardball < Ball
FILE: spec/dummy_app/app/active_record/image.rb
class Image (line 3) | class Image < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/league.rb
class League (line 3) | class League < ActiveRecord::Base
method custom_name (line 11) | def custom_name
FILE: spec/dummy_app/app/active_record/managed_team.rb
class ManagedTeam (line 3) | class ManagedTeam < Team
FILE: spec/dummy_app/app/active_record/managing_user.rb
class ManagingUser (line 3) | class ManagingUser < User
FILE: spec/dummy_app/app/active_record/nested_fan.rb
class NestedFan (line 4) | class NestedFan < Fan
FILE: spec/dummy_app/app/active_record/nested_favorite_player.rb
class NestedFavoritePlayer (line 4) | class NestedFavoritePlayer < FavoritePlayer
FILE: spec/dummy_app/app/active_record/nested_field_test.rb
class NestedFieldTest (line 3) | class NestedFieldTest < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/paper_trail_test.rb
class PaperTrailTest (line 3) | class PaperTrailTest < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/paper_trail_test/subclass_in_namespace.rb
class PaperTrailTest (line 3) | class PaperTrailTest < ActiveRecord::Base
class SubclassInNamespace (line 4) | class SubclassInNamespace < self
FILE: spec/dummy_app/app/active_record/paper_trail_test_subclass.rb
class PaperTrailTestSubclass (line 3) | class PaperTrailTestSubclass < PaperTrailTest
FILE: spec/dummy_app/app/active_record/paper_trail_test_with_custom_association.rb
class PaperTrailTestWithCustomAssociation (line 3) | class PaperTrailTestWithCustomAssociation < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/player.rb
class Player (line 3) | class Player < ActiveRecord::Base
method destroy_hook (line 25) | def destroy_hook; end
FILE: spec/dummy_app/app/active_record/read_only_comment.rb
class ReadOnlyComment (line 3) | class ReadOnlyComment < Comment
method readonly? (line 4) | def readonly?
FILE: spec/dummy_app/app/active_record/restricted_team.rb
class RestrictedTeam (line 3) | class RestrictedTeam < Team
FILE: spec/dummy_app/app/active_record/shrine_uploader.rb
class ShrineUploader (line 3) | class ShrineUploader < Shrine
FILE: spec/dummy_app/app/active_record/shrine_versioning_uploader.rb
class ShrineVersioningUploader (line 3) | class ShrineVersioningUploader < Shrine
FILE: spec/dummy_app/app/active_record/team.rb
class Team (line 3) | class Team < ActiveRecord::Base
method player_names_truncated (line 23) | def player_names_truncated
method color_enum (line 27) | def color_enum
FILE: spec/dummy_app/app/active_record/trail.rb
class Trail (line 3) | class Trail < PaperTrail::Version
FILE: spec/dummy_app/app/active_record/two_level/namespaced.rb
type TwoLevel (line 3) | module TwoLevel
type Namespaced (line 4) | module Namespaced
function table_name_prefix (line 5) | def self.table_name_prefix
FILE: spec/dummy_app/app/active_record/two_level/namespaced/polymorphic_association_test.rb
type TwoLevel (line 3) | module TwoLevel
type Namespaced (line 4) | module Namespaced
class PolymorphicAssociationTest (line 5) | class PolymorphicAssociationTest < ActiveRecord::Base
FILE: spec/dummy_app/app/active_record/user.rb
class User (line 3) | class User < ActiveRecord::Base
method attr_accessible_role (line 21) | def attr_accessible_role
method roles_enum (line 25) | def roles_enum
FILE: spec/dummy_app/app/active_record/user/confirmed.rb
class User (line 3) | class User
class Confirmed (line 4) | class Confirmed < User
FILE: spec/dummy_app/app/active_record/without_table.rb
class WithoutTable (line 3) | class WithoutTable < ActiveRecord::Base
FILE: spec/dummy_app/app/controllers/application_controller.rb
class ApplicationController (line 3) | class ApplicationController < ActionController::Base
FILE: spec/dummy_app/app/controllers/players_controller.rb
class PlayersController (line 3) | class PlayersController < ApplicationController
method show (line 4) | def show
FILE: spec/dummy_app/app/eager_loaded/basketball.rb
class Basketball (line 3) | class Basketball < Ball
FILE: spec/dummy_app/app/jobs/application_job.rb
class ApplicationJob (line 3) | class ApplicationJob < ActiveJob::Base
FILE: spec/dummy_app/app/jobs/null_job.rb
class NullJob (line 3) | class NullJob < ApplicationJob
method perform (line 6) | def perform(*args)
FILE: spec/dummy_app/app/mongoid/another_field_test.rb
class AnotherFieldTest (line 3) | class AnotherFieldTest
FILE: spec/dummy_app/app/mongoid/ball.rb
class Ball (line 3) | class Ball
method to_param (line 13) | def to_param
FILE: spec/dummy_app/app/mongoid/carrierwave_uploader.rb
class CarrierwaveUploader (line 4) | class CarrierwaveUploader < CarrierWave::Uploader::Base
method store_dir (line 16) | def store_dir
FILE: spec/dummy_app/app/mongoid/category.rb
class Category (line 3) | class Category
FILE: spec/dummy_app/app/mongoid/cms.rb
type Cms (line 3) | module Cms
function table_name_prefix (line 4) | def self.table_name_prefix
FILE: spec/dummy_app/app/mongoid/cms/basic_page.rb
type Cms (line 3) | module Cms
class BasicPage (line 4) | class BasicPage
FILE: spec/dummy_app/app/mongoid/comment.rb
class Comment (line 3) | class Comment
FILE: spec/dummy_app/app/mongoid/comment/confirmed.rb
class Comment (line 3) | class Comment
class Confirmed (line 4) | class Confirmed < Comment
FILE: spec/dummy_app/app/mongoid/concerns/taggable.rb
type Taggable (line 3) | module Taggable
FILE: spec/dummy_app/app/mongoid/deeply_nested_field_test.rb
class DeeplyNestedFieldTest (line 3) | class DeeplyNestedFieldTest
FILE: spec/dummy_app/app/mongoid/division.rb
class Division (line 3) | class Division
FILE: spec/dummy_app/app/mongoid/draft.rb
class Draft (line 3) | class Draft
FILE: spec/dummy_app/app/mongoid/embed.rb
class Embed (line 3) | class Embed
FILE: spec/dummy_app/app/mongoid/fan.rb
class Fan (line 3) | class Fan
FILE: spec/dummy_app/app/mongoid/field_test.rb
class FieldTest (line 5) | class FieldTest
FILE: spec/dummy_app/app/mongoid/hardball.rb
class Hardball (line 3) | class Hardball < Ball
FILE: spec/dummy_app/app/mongoid/image.rb
class Image (line 3) | class Image
FILE: spec/dummy_app/app/mongoid/league.rb
class League (line 3) | class League
method custom_name (line 13) | def custom_name
FILE: spec/dummy_app/app/mongoid/managed_team.rb
class ManagedTeam (line 3) | class ManagedTeam < Team
FILE: spec/dummy_app/app/mongoid/managing_user.rb
class ManagingUser (line 3) | class ManagingUser < User
FILE: spec/dummy_app/app/mongoid/nested_field_test.rb
class NestedFieldTest (line 3) | class NestedFieldTest
FILE: spec/dummy_app/app/mongoid/player.rb
class Player (line 3) | class Player
method destroy_hook (line 35) | def destroy_hook; end
FILE: spec/dummy_app/app/mongoid/read_only_comment.rb
class ReadOnlyComment (line 3) | class ReadOnlyComment < Comment
method readonly? (line 4) | def readonly?
FILE: spec/dummy_app/app/mongoid/restricted_team.rb
class RestrictedTeam (line 3) | class RestrictedTeam < Team
FILE: spec/dummy_app/app/mongoid/shrine_uploader.rb
class ShrineUploader (line 3) | class ShrineUploader < Shrine
FILE: spec/dummy_app/app/mongoid/shrine_versioning_uploader.rb
class ShrineVersioningUploader (line 3) | class ShrineVersioningUploader < Shrine
FILE: spec/dummy_app/app/mongoid/team.rb
class Team (line 3) | class Team
method player_names_truncated (line 39) | def player_names_truncated
method color_enum (line 43) | def color_enum
FILE: spec/dummy_app/app/mongoid/two_level/namespaced/polymorphic_association_test.rb
type TwoLevel (line 3) | module TwoLevel
type Namespaced (line 4) | module Namespaced
class PolymorphicAssociationTest (line 5) | class PolymorphicAssociationTest
FILE: spec/dummy_app/app/mongoid/user.rb
class User (line 3) | class User
method attr_accessible_role (line 56) | def attr_accessible_role
FILE: spec/dummy_app/app/mongoid/user/confirmed.rb
class User (line 3) | class User
class Confirmed (line 4) | class Confirmed < User
FILE: spec/dummy_app/config/application.rb
type DummyApp (line 34) | module DummyApp
class Application (line 35) | class Application < Rails::Application
FILE: spec/dummy_app/config/initializers/session_patch.rb
function stale_session_check! (line 12) | def stale_session_check!
FILE: spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb
class CreateDivisionsMigration (line 3) | class CreateDivisionsMigration < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 12) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb
class CreateDraftsMigration (line 3) | class CreateDraftsMigration < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 18) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb
class CreateLeaguesMigration (line 3) | class CreateLeaguesMigration < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 11) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb
class CreatePlayersMigration (line 3) | class CreatePlayersMigration < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 19) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb
class CreateTeamsMigration (line 3) | class CreateTeamsMigration < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 21) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb
class DeviseCreateUsers (line 3) | class DeviseCreateUsers < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 48) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb
class CreateHistoriesTable (line 3) | class CreateHistoriesTable < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 15) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb
class CreateFansMigration (line 3) | class CreateFansMigration < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 11) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb
class CreateFansTeamsMigration (line 3) | class CreateFansTeamsMigration < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 10) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb
class AddRevenueToTeamMigration (line 3) | class AddRevenueToTeamMigration < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 8) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb
class AddSuspendedToPlayerMigration (line 3) | class AddSuspendedToPlayerMigration < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 8) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb
class AddAvatarColumnsToUser (line 3) | class AddAvatarColumnsToUser < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 11) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000013_add_roles_to_user.rb
class AddRolesToUser (line 3) | class AddRolesToUser < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 8) | def self.down
FILE: spec/dummy_app/db/migrate/00000000000014_add_color_to_team_migration.rb
class AddColorToTeamMigration (line 3) | class AddColorToTeamMigration < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 8) | def self.down
FILE: spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb
class CreateRelTests (line 3) | class CreateRelTests < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 14) | def self.down
FILE: spec/dummy_app/db/migrate/20110103205808_create_comments.rb
class CreateComments (line 3) | class CreateComments < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 14) | def self.down
FILE: spec/dummy_app/db/migrate/20110123042530_rename_histories_to_rails_admin_histories.rb
class RenameHistoriesToRailsAdminHistories (line 3) | class RenameHistoriesToRailsAdminHistories < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 8) | def self.down
FILE: spec/dummy_app/db/migrate/20110224184303_create_field_tests.rb
class CreateFieldTests (line 3) | class CreateFieldTests < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 21) | def self.down
FILE: spec/dummy_app/db/migrate/20110328193014_create_cms_basic_pages.rb
class CreateCmsBasicPages (line 3) | class CreateCmsBasicPages < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 13) | def self.down
FILE: spec/dummy_app/db/migrate/20110329183136_remove_league_id_from_teams.rb
class RemoveLeagueIdFromTeams (line 3) | class RemoveLeagueIdFromTeams < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 8) | def self.down
FILE: spec/dummy_app/db/migrate/20110607152842_add_format_to_field_test.rb
class AddFormatToFieldTest (line 3) | class AddFormatToFieldTest < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 8) | def self.down
FILE: spec/dummy_app/db/migrate/20110714095433_create_balls.rb
class CreateBalls (line 3) | class CreateBalls < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 11) | def self.down
FILE: spec/dummy_app/db/migrate/20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb
class AddProtectedFieldAndRestrictedFieldToFieldTests (line 3) | class AddProtectedFieldAndRestrictedFieldToFieldTests < ActiveRecord::Mi...
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb
class ChangeDivisionPrimaryKey (line 3) | class ChangeDivisionPrimaryKey < ActiveRecord::Migration[5.0]
method up (line 4) | def up
method down (line 13) | def down
FILE: spec/dummy_app/db/migrate/20110901142530_rename_league_id_foreign_key_on_divisions.rb
class RenameLeagueIdForeignKeyOnDivisions (line 3) | class RenameLeagueIdForeignKeyOnDivisions < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb
class SetPrimaryKeyNotNullForDivisions (line 3) | class SetPrimaryKeyNotNullForDivisions < ActiveRecord::Migration[5.0]
method up (line 4) | def up
method down (line 14) | def down
FILE: spec/dummy_app/db/migrate/20110901154834_change_length_for_rails_admin_histories.rb
class ChangeLengthForRailsAdminHistories (line 3) | class ChangeLengthForRailsAdminHistories < ActiveRecord::Migration[5.0]
method up (line 4) | def up
method down (line 8) | def down
FILE: spec/dummy_app/db/migrate/20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb
class AddDragonflyAndCarrierwaveToFieldTests (line 3) | class AddDragonflyAndCarrierwaveToFieldTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20111115041025_add_type_to_balls.rb
class AddTypeToBalls (line 3) | class AddTypeToBalls < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20111123092549_create_nested_field_tests.rb
class CreateNestedFieldTests (line 3) | class CreateNestedFieldTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20111130075338_add_dragonfly_asset_name_to_field_tests.rb
class AddDragonflyAssetNameToFieldTests (line 3) | class AddDragonflyAssetNameToFieldTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20111215083258_create_foo_bars.rb
class CreateFooBars (line 3) | class CreateFooBars < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20120117151733_add_custom_field_to_teams.rb
class AddCustomFieldToTeams (line 3) | class AddCustomFieldToTeams < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20120118122004_add_categories.rb
class AddCategories (line 3) | class AddCategories < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20120319041705_drop_rel_tests.rb
class DropRelTests (line 3) | class DropRelTests < ActiveRecord::Migration[5.0]
method up (line 4) | def self.up
method down (line 8) | def self.down
FILE: spec/dummy_app/db/migrate/20120720075608_create_another_field_tests.rb
class CreateAnotherFieldTests (line 3) | class CreateAnotherFieldTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20120928075608_create_images.rb
class CreateImages (line 3) | class CreateImages < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20140412075608_create_deeply_nested_field_tests.rb
class CreateDeeplyNestedFieldTests (line 3) | class CreateDeeplyNestedFieldTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20140826093220_create_paper_trail_tests.rb
class CreatePaperTrailTests (line 3) | class CreatePaperTrailTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20140826093552_create_versions.rb
class CreateVersions (line 3) | class CreateVersions < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20150815102450_add_refile_to_field_tests.rb
class AddRefileToFieldTests (line 3) | class AddRefileToFieldTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20151027181550_change_field_test_id_to_nested_field_tests.rb
class ChangeFieldTestIdToNestedFieldTests (line 3) | class ChangeFieldTestIdToNestedFieldTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20160728152942_add_main_sponsor_to_teams.rb
class AddMainSponsorToTeams (line 3) | class AddMainSponsorToTeams < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20160728153058_add_formation_to_players.rb
class AddFormationToPlayers (line 3) | class AddFormationToPlayers < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20171229220713_add_enum_fields_to_field_tests.rb
class AddEnumFieldsToFieldTests (line 3) | class AddEnumFieldsToFieldTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20180701084251_create_active_storage_tables.active_storage.rb
class CreateActiveStorageTables (line 4) | class CreateActiveStorageTables < ActiveRecord::Migration[5.0]
method change (line 5) | def change
FILE: spec/dummy_app/db/migrate/20180707101855_add_carrierwave_assets_to_field_tests.rb
class AddCarrierwaveAssetsToFieldTests (line 3) | class AddCarrierwaveAssetsToFieldTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20181029101829_add_shrine_data_to_field_tests.rb
class AddShrineDataToFieldTests (line 3) | class AddShrineDataToFieldTests < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20190531065324_create_action_text_tables.action_text.rb
class CreateActionTextTables (line 3) | class CreateActionTextTables < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20201127111952_update_active_storage_tables.rb
class UpdateActiveStorageTables (line 3) | class UpdateActiveStorageTables < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20210811121027_create_two_level_namespaced_polymorphic_association_tests.rb
class CreateTwoLevelNamespacedPolymorphicAssociationTests (line 3) | class CreateTwoLevelNamespacedPolymorphicAssociationTests < ActiveRecord...
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20210812115908_create_custom_versions.rb
class CreateCustomVersions (line 3) | class CreateCustomVersions < ActiveRecord::Migration[5.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20211011235734_add_bool_field_open.rb
class AddBoolFieldOpen (line 3) | class AddBoolFieldOpen < ActiveRecord::Migration[6.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20220416102741_create_composite_key_tables.rb
class CreateCompositeKeyTables (line 3) | class CreateCompositeKeyTables < ActiveRecord::Migration[6.0]
method change (line 4) | def change
FILE: spec/dummy_app/db/migrate/20240921171953_add_non_nullable_boolean_field.rb
class AddNonNullableBooleanField (line 3) | class AddNonNullableBooleanField < ActiveRecord::Migration[6.0]
method change (line 4) | def change
FILE: spec/dummy_app/lib/does_not_load_autoload_paths_not_in_eager_load.rb
type DoesNotLoadAutoloadPathsNotInEagerLoad (line 3) | module DoesNotLoadAutoloadPathsNotInEagerLoad
FILE: spec/integration/actions/edit_spec.rb
class HelpTest (line 107) | class HelpTest < Tableless
function serialize (line 895) | def self.serialize(keys)
function deserialize (line 899) | def self.deserialize(string)
FILE: spec/integration/actions/index_spec.rb
function visit_page (line 726) | def visit_page(page)
function serialize (line 1264) | def self.serialize(keys)
function deserialize (line 1268) | def self.deserialize(string)
FILE: spec/integration/authorization/cancancan_spec.rb
class Ability (line 6) | class Ability
method initialize (line 8) | def initialize(user)
class AdminAbility (line 30) | class AdminAbility
method initialize (line 32) | def initialize(user)
FILE: spec/integration/fields/file_upload_spec.rb
function resource_url (line 12) | def resource_url(_thumb = false)
FILE: spec/integration/fields/multiple_file_upload_spec.rb
function resource_url (line 13) | def resource_url(_thumb = false)
function value (line 19) | def value
FILE: spec/integration/widgets/filtering_multi_select_spec.rb
function value (line 141) | def value
function parse_input (line 145) | def parse_input(params)
FILE: spec/orm/active_record.rb
function silence_stream (line 9) | def silence_stream(stream)
class Tableless (line 30) | class Tableless < ActiveRecord::Base
method load_schema (line 32) | def load_schema
method columns (line 36) | def columns
method column (line 40) | def column(name, sql_type = nil, default = nil, null = true)
method columns_hash (line 58) | def columns_hash
method column_names (line 62) | def column_names
method column_defaults (line 66) | def column_defaults
method attribute_types (line 73) | def attribute_types
method table_exists? (line 78) | def table_exists?
method primary_key (line 82) | def primary_key
method lookup_attribute_type (line 88) | def lookup_attribute_type(type)
method save (line 94) | def save(validate = true)
function lookup_cast_type (line 106) | def lookup_cast_type(sql_type)
FILE: spec/orm/mongoid.rb
class Tableless (line 7) | class Tableless
method column (line 11) | def column(name, sql_type = 'string', default = nil, _null = true)
FILE: spec/policies.rb
class ApplicationPolicy (line 3) | class ApplicationPolicy
method initialize (line 6) | def initialize(user, record)
method show? (line 11) | def show?
method destroy? (line 15) | def destroy?
method history? (line 19) | def history?
method show_in_app? (line 23) | def show_in_app?
method dashboard? (line 27) | def dashboard?
method index? (line 31) | def index?
method new? (line 35) | def new?
method edit? (line 40) | def edit?
method export? (line 45) | def export?
method rails_admin_index? (line 49) | def rails_admin_index?
class PlayerPolicy (line 54) | class PlayerPolicy < ApplicationPolicy
method new? (line 55) | def new?
method edit? (line 61) | def edit?
method destroy? (line 67) | def destroy?
method index? (line 71) | def index?
FILE: spec/rails_admin/adapters/active_record/association_spec.rb
class ARBlog (line 10) | class ARBlog < Tableless
class ARPost (line 16) | class ARPost < Tableless
class ARCategory (line 22) | class ARCategory < Tableless
class ARUser (line 28) | class ARUser < Tableless
class ARProfile (line 33) | class ARProfile < Tableless
class ARComment (line 38) | class ARComment < Tableless
class FieldTestWithSymbolForeignKey (line 149) | class FieldTestWithSymbolForeignKey < FieldTest
class ARReview (line 221) | class ARReview < ARComment; end
FILE: spec/rails_admin/adapters/active_record/property_spec.rb
class HasReadOnlyColumn (line 32) | class HasReadOnlyColumn < Tableless
FILE: spec/rails_admin/adapters/active_record_spec.rb
function predicates_for (line 29) | def predicates_for(scope)
class PlayerWithDefaultScope (line 110) | class PlayerWithDefaultScope < Player
function parse_value (line 216) | def parse_value(value)
function parse_value (line 262) | def parse_value(value)
function build_statement (line 298) | def build_statement(type, value, operator)
FILE: spec/rails_admin/adapters/mongoid/association_spec.rb
class MongoBlog (line 9) | class MongoBlog
class MongoPost (line 17) | class MongoPost
class MongoCategory (line 26) | class MongoCategory
class MongoUser (line 32) | class MongoUser
class MongoProfile (line 46) | class MongoProfile
class MongoComment (line 52) | class MongoComment
class MongoNote (line 57) | class MongoNote
class MongoReview (line 174) | class MongoReview < MongoComment; end
class MongoEmbedsOne (line 253) | class MongoEmbedsOne
class MongoEmbedsMany (line 258) | class MongoEmbedsMany
class MongoEmbedded (line 263) | class MongoEmbedded
class MongoRecursivelyEmbedsOne (line 269) | class MongoRecursivelyEmbedsOne
class MongoRecursivelyEmbedsMany (line 274) | class MongoRecursivelyEmbedsMany
class MongoEmbedsParent (line 286) | class MongoEmbedsParent
class MongoEmbedded (line 292) | class MongoEmbedded
class MongoEmbedsChild (line 297) | class MongoEmbedsChild < MongoEmbedsParent; end
FILE: spec/rails_admin/adapters/mongoid/object_extension_spec.rb
class TeamWithAutoSave (line 9) | class TeamWithAutoSave < Team
class PlayerWithAutoSave (line 65) | class PlayerWithAutoSave < Player
FILE: spec/rails_admin/adapters/mongoid/property_spec.rb
class LengthValiated (line 211) | class LengthValiated
class MyCustomValidator (line 220) | class MyCustomValidator < ActiveModel::Validator
method validate (line 221) | def validate(_r); end
class CustomValiated (line 224) | class CustomValiated
class HasReadOnlyColumn (line 235) | class HasReadOnlyColumn
FILE: spec/rails_admin/adapters/mongoid_spec.rb
function parse_value (line 223) | def parse_value(value)
function parse_value (line 254) | def parse_value(value)
FILE: spec/rails_admin/config/configurable_spec.rb
class ConfigurableTest (line 6) | class ConfigurableTest
FILE: spec/rails_admin/config/fields/association_spec.rb
class TeamWithHasManyThrough (line 140) | class TeamWithHasManyThrough < Team
class System (line 155) | class System < Tableless; end
class BelongsToSystem (line 157) | class BelongsToSystem < Tableless
FILE: spec/rails_admin/config/fields/base_spec.rb
class ConditionalValidationTest (line 63) | class ConditionalValidationTest < Tableless
class RelTest (line 85) | class RelTest < Tableless
class CommentReversed (line 142) | class CommentReversed < Tableless
class FieldVisibilityTest (line 525) | class FieldVisibilityTest < Tableless
FILE: spec/rails_admin/config/fields/types/active_record_enum_spec.rb
class FormatAsEnum (line 11) | class FormatAsEnum < FieldTest
FILE: spec/rails_admin/config/fields/types/drangonfly_spec.rb
class NonDragonflyTest (line 33) | class NonDragonflyTest < Tableless
FILE: spec/rails_admin/config/fields/types/enum_spec.rb
function color_enum (line 31) | def color_enum
function color_list (line 51) | def color_list
function color_list (line 75) | def color_list
function color_list (line 99) | def color_list
class TeamWithSerializedEnum (line 127) | class TeamWithSerializedEnum < Team
method color_enum (line 134) | def color_enum
FILE: spec/rails_admin/config/fields/types/file_upload_spec.rb
function resource_url (line 65) | def resource_url
function resource_url (line 100) | def resource_url
FILE: spec/rails_admin/config/fields/types/multiple_file_upload_spec.rb
function resource_url (line 54) | def resource_url(thumb = false)
function resource_url (line 104) | def resource_url(_thumb = false)
function value (line 109) | def value
function resource_url (line 164) | def resource_url
FILE: spec/rails_admin/config/fields/types/paperclip_spec.rb
class PaperclipTest (line 10) | class PaperclipTest < Tableless
FILE: spec/rails_admin/config/fields_spec.rb
class MongoTree (line 8) | class MongoTree
FILE: spec/rails_admin/config/lazy_model_spec.rb
function weight (line 46) | def weight
FILE: spec/rails_admin/config/proxyable_spec.rb
class ProxyableTest (line 6) | class ProxyableTest
method boo (line 9) | def boo
method qux (line 14) | def qux
function qux (line 36) | def qux
FILE: spec/rails_admin/config_spec.rb
class ControllerMock (line 132) | class ControllerMock
method set_paper_trail_whodunnit (line 133) | def set_paper_trail_whodunnit; end
type PaperTrail (line 136) | module PaperTrail; end
class Version (line 138) | class Version; end
class RecursivelyEmbedsOne (line 243) | class RecursivelyEmbedsOne
class RecursivelyEmbedsMany (line 248) | class RecursivelyEmbedsMany
class TestController (line 279) | class TestController < ActionController::Base; end
type ExampleModule (line 410) | module ExampleModule
class AuthorizationAdapter (line 411) | class AuthorizationAdapter; end
class ConfigurationAdapter (line 413) | class ConfigurationAdapter; end
class AuditingAdapter (line 415) | class AuditingAdapter; end
FILE: spec/rails_admin/extentions/cancancan/authorization_adapter_spec.rb
class MyAbility (line 9) | class MyAbility
method initialize (line 11) | def initialize(_user)
FILE: spec/support/cuprite_logger.rb
class ConsoleLogger (line 3) | class ConsoleLogger
method puts (line 4) | def self.puts(message)
FILE: spec/support/fakeio.rb
class FakeIO (line 6) | class FakeIO
method initialize (line 9) | def initialize(content, filename: nil, content_type: nil)
FILE: spec/support/fixtures.rb
function file_path (line 3) | def file_path(*paths)
FILE: spec/support/jquery.simulate.drag-sortable.js
function slideUpTo (line 151) | function slideUpTo(x, y, targetOffset, goPastBy) {
function createEvent (line 171) | function createEvent(type, target, options) {
function dispatchEvent (line 211) | function dispatchEvent(el, type, evt) {
function findCenter (line 220) | function findCenter(el) {
FILE: src/rails_admin/i18n.js
method init (line 4) | init(locale, translations) {
method t (line 11) | t(key) {
FILE: src/rails_admin/ui.js
function triggerDomReady (line 82) | function triggerDomReady() {
FILE: vendor/assets/javascripts/rails_admin/bootstrap.js
function _interopNamespace (line 12) | function _interopNamespace(e) {
function getUidEvent (line 373) | function getUidEvent(element, uid) {
function getEvent (line 377) | function getEvent(element) {
function bootstrapHandler (line 384) | function bootstrapHandler(element, fn) {
function bootstrapDelegationHandler (line 396) | function bootstrapDelegationHandler(element, selector, fn) {
function findHandler (line 421) | function findHandler(events, handler, delegationSelector = null) {
function normalizeParams (line 435) | function normalizeParams(originalTypeEvent, handler, delegationFn) {
function addHandler (line 448) | function addHandler(element, originalTypeEvent, handler, delegationFn, o...
function removeHandler (line 496) | function removeHandler(element, events, typeEvent, handler, delegationSe...
function removeNamespacedHandlers (line 507) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
function getTypeEvent (line 517) | function getTypeEvent(event) {
method on (line 524) | on(element, event, handler, delegationFn) {
method one (line 528) | one(element, event, handler, delegationFn) {
method off (line 532) | off(element, originalTypeEvent, handler, delegationFn) {
method trigger (line 569) | trigger(element, event, args) {
method set (line 645) | set(element, key, instance) {
method get (line 662) | get(element, key) {
method remove (line 670) | remove(element, key) {
class BaseComponent (line 699) | class BaseComponent {
method constructor (line 700) | constructor(element) {
method dispose (line 711) | dispose() {
method _queueCallback (line 719) | _queueCallback(callback, element, isAnimated = true) {
method getInstance (line 725) | static getInstance(element) {
method getOrCreateInstance (line 729) | static getOrCreateInstance(element, config = {}) {
method VERSION (line 733) | static get VERSION() {
method NAME (line 737) | static get NAME() {
method DATA_KEY (line 741) | static get DATA_KEY() {
method EVENT_KEY (line 745) | static get EVENT_KEY() {
class Alert (line 802) | class Alert extends BaseComponent {
method NAME (line 804) | static get NAME() {
method close (line 809) | close() {
method _destroyElement (line 824) | _destroyElement() {
method jQueryInterface (line 832) | static jQueryInterface(config) {
class Button (line 891) | class Button extends BaseComponent {
method NAME (line 893) | static get NAME() {
method toggle (line 898) | toggle() {
method jQueryInterface (line 904) | static jQueryInterface(config) {
function normalizeData (line 943) | function normalizeData(val) {
function normalizeDataKey (line 963) | function normalizeDataKey(key) {
method setDataAttribute (line 968) | setDataAttribute(element, key, value) {
method removeDataAttribute (line 972) | removeDataAttribute(element, key) {
method getDataAttributes (line 976) | getDataAttributes(element) {
method getDataAttribute (line 990) | getDataAttribute(element, key) {
method offset (line 994) | offset(element) {
method position (line 1002) | position(element) {
method find (line 1019) | find(selector, element = document.documentElement) {
method findOne (line 1023) | findOne(selector, element = document.documentElement) {
method children (line 1027) | children(element, selector) {
method parents (line 1031) | parents(element, selector) {
method prev (line 1046) | prev(element, selector) {
method next (line 1060) | next(element, selector) {
method focusableChildren (line 1074) | focusableChildren(element) {
class Carousel (line 1164) | class Carousel extends BaseComponent {
method constructor (line 1165) | constructor(element, config) {
method Default (line 1184) | static get Default() {
method NAME (line 1188) | static get NAME() {
method next (line 1193) | next() {
method nextWhenVisible (line 1197) | nextWhenVisible() {
method prev (line 1205) | prev() {
method pause (line 1209) | pause(event) {
method cycle (line 1223) | cycle(event) {
method to (line 1240) | to(index) {
method _getConfig (line 1266) | _getConfig(config) {
method _handleSwipe (line 1275) | _handleSwipe() {
method _addEventListeners (line 1292) | _addEventListeners() {
method _addTouchEventListeners (line 1307) | _addTouchEventListeners() {
method _keydown (line 1366) | _keydown(event) {
method _getItemIndex (line 1380) | _getItemIndex(element) {
method _getItemByOrder (line 1385) | _getItemByOrder(order, activeElement) {
method _triggerSlideEvent (line 1390) | _triggerSlideEvent(relatedTarget, eventDirectionName) {
method _setActiveIndicatorElement (line 1403) | _setActiveIndicatorElement(element) {
method _updateInterval (line 1420) | _updateInterval() {
method _slide (line 1437) | _slide(directionOrOrder, element) {
method _directionToOrder (line 1521) | _directionToOrder(direction) {
method _orderToDirection (line 1533) | _orderToDirection(order) {
method carouselInterface (line 1546) | static carouselInterface(element, config) {
method jQueryInterface (line 1574) | static jQueryInterface(config) {
method dataApiClickHandler (line 1580) | static dataApiClickHandler(event) {
class Collapse (line 1675) | class Collapse extends BaseComponent {
method constructor (line 1676) | constructor(element, config) {
method Default (line 1707) | static get Default() {
method NAME (line 1711) | static get NAME() {
method toggle (line 1716) | toggle() {
method show (line 1724) | show() {
method hide (line 1797) | hide() {
method _isShown (line 1845) | _isShown(element = this._element) {
method _getConfig (line 1850) | _getConfig(config) {
method _getDimension (line 1862) | _getDimension() {
method _initializeChildren (line 1866) | _initializeChildren() {
method _addAriaAndCollapsedClass (line 1881) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
method jQueryInterface (line 1898) | static jQueryInterface(config) {
class Dropdown (line 2017) | class Dropdown extends BaseComponent {
method constructor (line 2018) | constructor(element, config) {
method Default (line 2027) | static get Default() {
method DefaultType (line 2031) | static get DefaultType() {
method NAME (line 2035) | static get NAME() {
method toggle (line 2040) | toggle() {
method show (line 2044) | show() {
method hide (line 2085) | hide() {
method dispose (line 2097) | dispose() {
method update (line 2105) | update() {
method _completeHide (line 2114) | _completeHide(relatedTarget) {
method _getConfig (line 2141) | _getConfig(config) {
method _createPopper (line 2156) | _createPopper(parent) {
method _isShown (line 2181) | _isShown(element = this._element) {
method _getMenuElement (line 2185) | _getMenuElement() {
method _getPlacement (line 2189) | _getPlacement() {
method _detectNavbar (line 2210) | _detectNavbar() {
method _getOffset (line 2214) | _getOffset() {
method _getPopperConfig (line 2230) | _getPopperConfig() {
method _selectMenuItem (line 2258) | _selectMenuItem({
method jQueryInterface (line 2274) | static jQueryInterface(config) {
method clearMenus (line 2290) | static clearMenus(event) {
method getParentFromElement (line 2334) | static getParentFromElement(element) {
method dataApiKeydownHandler (line 2338) | static dataApiKeydownHandler(event) {
class ScrollBarHelper (line 2420) | class ScrollBarHelper {
method constructor (line 2421) | constructor() {
method getWidth (line 2425) | getWidth() {
method hide (line 2431) | hide() {
method _disableOverFlow (line 2445) | _disableOverFlow() {
method _setElementAttributes (line 2451) | _setElementAttributes(selector, styleProp, callback) {
method reset (line 2468) | reset() {
method _saveInitialAttribute (line 2478) | _saveInitialAttribute(element, styleProp) {
method _resetElementAttributes (line 2486) | _resetElementAttributes(selector, styleProp) {
method _applyManipulationCallback (line 2501) | _applyManipulationCallback(selector, callBack) {
method isOverflowing (line 2509) | isOverflowing() {
class Backdrop (line 2542) | class Backdrop {
method constructor (line 2543) | constructor(config) {
method show (line 2549) | show(callback) {
method hide (line 2568) | hide(callback) {
method _getElement (line 2583) | _getElement() {
method _getConfig (line 2598) | _getConfig(config) {
method _append (line 2608) | _append() {
method dispose (line 2621) | dispose() {
method _emulateAnimation (line 2633) | _emulateAnimation(callback) {
class FocusTrap (line 2663) | class FocusTrap {
method constructor (line 2664) | constructor(config) {
method activate (line 2670) | activate() {
method deactivate (line 2691) | deactivate() {
method _handleFocusin (line 2701) | _handleFocusin(event) {
method _handleKeydown (line 2724) | _handleKeydown(event) {
method _getConfig (line 2732) | _getConfig(config) {
class Modal (line 2794) | class Modal extends BaseComponent {
method constructor (line 2795) | constructor(element, config) {
method Default (line 2808) | static get Default() {
method NAME (line 2812) | static get NAME() {
method toggle (line 2817) | toggle(relatedTarget) {
method show (line 2821) | show(relatedTarget) {
method hide (line 2861) | hide() {
method dispose (line 2894) | dispose() {
method handleUpdate (line 2904) | handleUpdate() {
method _initializeBackDrop (line 2909) | _initializeBackDrop() {
method _initializeFocusTrap (line 2917) | _initializeFocusTrap() {
method _getConfig (line 2923) | _getConfig(config) {
method _showElement (line 2932) | _showElement(relatedTarget) {
method _setEscapeEvent (line 2976) | _setEscapeEvent() {
method _setResizeEvent (line 2991) | _setResizeEvent() {
method _hideModal (line 2999) | _hideModal() {
method _showBackdrop (line 3021) | _showBackdrop(callback) {
method _isAnimated (line 3042) | _isAnimated() {
method _triggerBackdropTransition (line 3046) | _triggerBackdropTransition() {
method _adjustDialog (line 3086) | _adjustDialog() {
method _resetAdjustments (line 3102) | _resetAdjustments() {
method jQueryInterface (line 3108) | static jQueryInterface(config, relatedTarget) {
class Offcanvas (line 3215) | class Offcanvas extends BaseComponent {
method constructor (line 3216) | constructor(element, config) {
method NAME (line 3227) | static get NAME() {
method Default (line 3231) | static get Default() {
method toggle (line 3236) | toggle(relatedTarget) {
method show (line 3240) | show(relatedTarget) {
method hide (line 3283) | hide() {
method dispose (line 3323) | dispose() {
method _getConfig (line 3332) | _getConfig(config) {
method _initializeBackDrop (line 3341) | _initializeBackDrop() {
method _initializeFocusTrap (line 3351) | _initializeFocusTrap() {
method _addEventListeners (line 3357) | _addEventListeners() {
method jQueryInterface (line 3366) | static jQueryInterface(config) {
function sanitizeHtml (line 3505) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
class Tooltip (line 3631) | class Tooltip extends BaseComponent {
method constructor (line 3632) | constructor(element, config) {
method Default (line 3652) | static get Default() {
method NAME (line 3656) | static get NAME() {
method Event (line 3660) | static get Event() {
method DefaultType (line 3664) | static get DefaultType() {
method enable (line 3669) | enable() {
method disable (line 3673) | disable() {
method toggleEnabled (line 3677) | toggleEnabled() {
method toggle (line 3681) | toggle(event) {
method dispose (line 3707) | dispose() {
method show (line 3720) | show() {
method hide (line 3811) | hide() {
method update (line 3859) | update() {
method isWithContent (line 3866) | isWithContent() {
method getTipElement (line 3870) | getTipElement() {
method setContent (line 3884) | setContent(tip) {
method _sanitizeAndSetContent (line 3888) | _sanitizeAndSetContent(template, content, selector) {
method setElementContent (line 3900) | setElementContent(element, content) {
method getTitle (line 3931) | getTitle() {
method updateAttachment (line 3937) | updateAttachment(attachment) {
method _initializeOnDelegatedTarget (line 3950) | _initializeOnDelegatedTarget(event, context) {
method _getOffset (line 3954) | _getOffset() {
method _resolvePossibleFunction (line 3970) | _resolvePossibleFunction(content) {
method _getPopperConfig (line 3974) | _getPopperConfig(attachment) {
method _addAttachmentClass (line 4014) | _addAttachmentClass(attachment) {
method _getAttachment (line 4018) | _getAttachment(placement) {
method _setListeners (line 4022) | _setListeners() {
method _fixTitle (line 4054) | _fixTitle() {
method _enter (line 4070) | _enter(event, context) {
method _leave (line 4097) | _leave(event, context) {
method _isWithActiveTrigger (line 4123) | _isWithActiveTrigger() {
method _getConfig (line 4133) | _getConfig(config) {
method _getDelegateConfig (line 4170) | _getDelegateConfig() {
method _cleanTipClass (line 4185) | _cleanTipClass() {
method _getBasicClassPrefix (line 4195) | _getBasicClassPrefix() {
method _handlePopperPlacementChange (line 4199) | _handlePopperPlacementChange(popperData) {
method _disposePopper (line 4215) | _disposePopper() {
method jQueryInterface (line 4224) | static jQueryInterface(config) {
class Popover (line 4295) | class Popover extends Tooltip {
method Default (line 4297) | static get Default() {
method NAME (line 4301) | static get NAME() {
method Event (line 4305) | static get Event() {
method DefaultType (line 4309) | static get DefaultType() {
method isWithContent (line 4314) | isWithContent() {
method setContent (line 4318) | setContent(tip) {
method _getContent (line 4325) | _getContent() {
method _getBasicClassPrefix (line 4329) | _getBasicClassPrefix() {
method jQueryInterface (line 4334) | static jQueryInterface(config) {
class ScrollSpy (line 4406) | class ScrollSpy extends BaseComponent {
method constructor (line 4407) | constructor(element, config) {
method Default (line 4422) | static get Default() {
method NAME (line 4426) | static get NAME() {
method refresh (line 4431) | refresh() {
method dispose (line 4459) | dispose() {
method _getConfig (line 4465) | _getConfig(config) {
method _getScrollTop (line 4475) | _getScrollTop() {
method _getScrollHeight (line 4479) | _getScrollHeight() {
method _getOffsetHeight (line 4483) | _getOffsetHeight() {
method _process (line 4487) | _process() {
method _activate (line 4525) | _activate(target) {
method _clear (line 4553) | _clear() {
method jQueryInterface (line 4558) | static jQueryInterface(config) {
class Tab (line 4632) | class Tab extends BaseComponent {
method NAME (line 4634) | static get NAME() {
method show (line 4639) | show() {
method _activate (line 4685) | _activate(element, container, callback) {
method _transitionComplete (line 4701) | _transitionComplete(element, active, callback) {
method jQueryInterface (line 4749) | static jQueryInterface(config) {
class Toast (line 4836) | class Toast extends BaseComponent {
method constructor (line 4837) | constructor(element, config) {
method DefaultType (line 4848) | static get DefaultType() {
method Default (line 4852) | static get Default() {
method NAME (line 4856) | static get NAME() {
method show (line 4861) | show() {
method hide (line 4894) | hide() {
method dispose (line 4921) | dispose() {
method _getConfig (line 4932) | _getConfig(config) {
method _maybeScheduleHide (line 4941) | _maybeScheduleHide() {
method _onInteraction (line 4955) | _onInteraction(event, isInteracting) {
method _setListeners (line 4983) | _setListeners() {
method _clearTimeout (line 4990) | _clearTimeout() {
method jQueryInterface (line 4996) | static jQueryInterface(config) {
FILE: vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js
function __spreadArrays (line 34) | function __spreadArrays() {
function debounce (line 207) | function debounce(fn, wait) {
function toggleClass (line 220) | function toggleClass(elem, className, bool) {
function createElement (line 225) | function createElement(tag, className, content) {
function clearNode (line 234) | function clearNode(node) {
function findParent (line 238) | function findParent(node, condition) {
function createNumberInput (line 245) | function createNumberInput(inputClassName, opts) {
function getEventTarget (line 262) | function getEventTarget(event) {
function compareDates (line 524) | function compareDates(date1, date2, timeless) {
function getDefaultHours (line 545) | function getDefaultHours(config) {
function FlatpickrInstance (line 597) | function FlatpickrInstance(element, instanceConfig) {
function _flatpickr (line 2636) | function _flatpickr(nodeList, config) {
FILE: vendor/assets/javascripts/rails_admin/jquery-ui/effect.js
function clamp (line 196) | function clamp( value, prop, allowEmpty ) {
function stringParse (line 223) | function stringParse( string ) {
function hue2rgb (line 477) | function hue2rgb( p, q, h ) {
function getElementStyles (line 751) | function getElementStyles( elem ) {
function styleDifference (line 779) | function styleDifference( oldStyle, newStyle ) {
function _normalizeArguments (line 1272) | function _normalizeArguments( effect, options, speed, callback ) {
function standardAnimationOption (line 1324) | function standardAnimationOption( option ) {
function run (line 1401) | function run( next ) {
function parseClip (line 1549) | function parseClip( str, element ) {
FILE: vendor/assets/javascripts/rails_admin/jquery-ui/position.js
function getOffsets (line 42) | function getOffsets( offsets, width, height ) {
function parseCss (line 49) | function parseCss( element, property ) {
function getDimensions (line 53) | function getDimensions( elem ) {
FILE: vendor/assets/javascripts/rails_admin/jquery-ui/widget.js
function _super (line 118) | function _super() {
function _superApply (line 122) | function _superApply( args ) {
function processClassString (line 502) | function processClassString( classes, checkOption ) {
function handlerProxy (line 585) | function handlerProxy() {
function handlerProxy (line 629) | function handlerProxy() {
FILE: vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js
function addItems (line 748) | function addItems() {
function delayEvent (line 1482) | function delayEvent( type, instance, container ) {
FILE: vendor/assets/javascripts/rails_admin/jquery3.js
function DOMEval (line 107) | function DOMEval( code, node, doc ) {
function toType (line 137) | function toType( obj ) {
function isArrayLike (line 507) | function isArrayLike( obj ) {
function Sizzle (line 759) | function Sizzle( selector, context, results, seed ) {
function createCache (line 907) | function createCache() {
function markFunction (line 927) | function markFunction( fn ) {
function assert (line 936) | function assert( fn ) {
function addHandle (line 960) | function addHandle( attrs, handler ) {
function siblingCheck (line 975) | function siblingCheck( a, b ) {
function createInputPseudo (line 1001) | function createInputPseudo( type ) {
function createButtonPseudo (line 1012) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 1023) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1079) | function createPositionalPseudo( fn ) {
function testContext (line 1102) | function testContext( context ) {
function setFilters (line 2313) | function setFilters() {}
function toSelector (line 2387) | function toSelector( tokens ) {
function addCombinator (line 2397) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2464) | function elementMatcher( matchers ) {
function multipleContexts (line 2478) | function multipleContexts( selector, contexts, results ) {
function condense (line 2487) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2508) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2608) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2671) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 3029) | function nodeName( elem, name ) {
function winnow (line 3039) | function winnow( elements, qualifier, not ) {
function sibling (line 3334) | function sibling( cur, dir ) {
function createOptions (line 3427) | function createOptions( options ) {
function Identity (line 3652) | function Identity( v ) {
function Thrower (line 3655) | function Thrower( ex ) {
function adoptValue (line 3659) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3752) | function resolve( depth, deferred, handler, special ) {
function completed (line 4117) | function completed() {
function fcamelCase (line 4212) | function fcamelCase( _all, letter ) {
function camelCase (line 4219) | function camelCase( string ) {
function Data (line 4236) | function Data() {
function getData (line 4405) | function getData( data ) {
function dataAttr (line 4430) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4742) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4810) | function getDefaultDisplay( elem ) {
function showHide (line 4833) | function showHide( elements, show ) {
function getAll (line 4965) | function getAll( context, tag ) {
function setGlobalEval (line 4990) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 5006) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 5098) | function returnTrue() {
function returnFalse (line 5102) | function returnFalse() {
function expectSync (line 5112) | function expectSync( elem, type ) {
function safeActiveElement (line 5119) | function safeActiveElement() {
function on (line 5125) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5613) | function leverageNative( el, type, expectSync ) {
function manipulationTarget (line 5962) | function manipulationTarget( elem, content ) {
function disableScript (line 5973) | function disableScript( elem ) {
function restoreScript (line 5977) | function restoreScript( elem ) {
function cloneCopyEvent (line 5987) | function cloneCopyEvent( src, dest ) {
function fixInput (line 6020) | function fixInput( src, dest ) {
function domManip (line 6033) | function domManip( collection, args, callback, ignored ) {
function remove (line 6125) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6439) | function computeStyleTests() {
function roundPixelMeasures (line 6483) | function roundPixelMeasures( measure ) {
function curCSS (line 6576) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6629) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6654) | function vendorPropName( name ) {
function finalPropName (line 6669) | function finalPropName( name ) {
function setPositiveNumber (line 6695) | function setPositiveNumber( _elem, value, subtract ) {
function boxModelAdjustment (line 6707) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6775) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 7151) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 7274) | function schedule() {
function createFxNow (line 7287) | function createFxNow() {
function genFx (line 7295) | function genFx( type, includeWidth ) {
function createTween (line 7315) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7329) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7501) | function propFilter( props, specialEasing ) {
function Animation (line 7538) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 8254) | function stripAndCollapse( value ) {
function getClass (line 8260) | function getClass( elem ) {
function classesToArray (line 8264) | function classesToArray( value ) {
function buildParams (line 8894) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 9047) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 9081) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 9110) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 9130) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 9188) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9704) | function done( status, nativeStatusText, responses, headers ) {
FILE: vendor/assets/javascripts/rails_admin/popper.js
function getWindow (line 11) | function getWindow(node) {
function isElement (line 24) | function isElement(node) {
function isHTMLElement (line 29) | function isHTMLElement(node) {
function isShadowRoot (line 34) | function isShadowRoot(node) {
function getBoundingClientRect (line 48) | function getBoundingClientRect(element, includeScale) {
function getWindowScroll (line 83) | function getWindowScroll(node) {
function getHTMLElementScroll (line 93) | function getHTMLElementScroll(element) {
function getNodeScroll (line 100) | function getNodeScroll(node) {
function getNodeName (line 108) | function getNodeName(element) {
function getDocumentElement (line 112) | function getDocumentElement(element) {
function getWindowScrollBarX (line 118) | function getWindowScrollBarX(element) {
function getComputedStyle (line 129) | function getComputedStyle(element) {
function isScrollParent (line 133) | function isScrollParent(element) {
function isElementScaled (line 143) | function isElementScaled(element) {
function getCompositeRect (line 152) | function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
function getLayoutRect (line 195) | function getLayoutRect(element) {
function getParentNode (line 218) | function getParentNode(element) {
function getScrollParent (line 235) | function getScrollParent(node) {
function listScrollParents (line 255) | function listScrollParents(element, list) {
function isTableElement (line 271) | function isTableElement(element) {
function getTrueOffsetParent (line 275) | function getTrueOffsetParent(element) {
function getContainingBlock (line 286) | function getContainingBlock(element) {
function getOffsetParent (line 318) | function getOffsetParent(element) {
function order (line 365) | function order(modifiers) {
function orderModifiers (line 397) | function orderModifiers(modifiers) {
function debounce (line 408) | function debounce(fn) {
function format (line 424) | function format(str) {
function validateModifiers (line 437) | function validateModifiers(modifiers) {
function uniqueBy (line 514) | function uniqueBy(arr, fn) {
function getBasePlacement (line 526) | function getBasePlacement(placement) {
function mergeByName (line 530) | function mergeByName(modifiers) {
function getViewportRect (line 545) | function getViewportRect(element) {
function getDocumentRect (line 585) | function getDocumentRect(element) {
function contains (line 608) | function contains(parent, child) {
function rectToClientRect (line 631) | function rectToClientRect(rect) {
function getInnerBoundingClientRect (line 640) | function getInnerBoundingClientRect(element) {
function getClientRectFromMixedType (line 653) | function getClientRectFromMixedType(element, clippingParent) {
function getClippingParents (line 660) | function getClippingParents(element) {
function getClippingRect (line 677) | function getClippingRect(element, boundary, rootBoundary) {
function getVariation (line 696) | function getVariation(placement) {
function getMainAxisFromPlacement (line 700) | function getMainAxisFromPlacement(placement) {
function computeOffsets (line 704) | function computeOffsets(_ref) {
function getFreshSideObject (line 769) | function getFreshSideObject() {
function mergePaddingObject (line 778) | function mergePaddingObject(paddingObject) {
function expandToHashMap (line 782) | function expandToHashMap(value, keys) {
function detectOverflow (line 789) | function detectOverflow(state, options) {
function areValidElements (line 851) | function areValidElements() {
function popperGenerator (line 861) | function popperGenerator(generatorOptions) {
function effect$2 (line 1090) | function effect$2(_ref) {
function popperOffsets (line 1134) | function popperOffsets(_ref) {
function roundOffsetsByDPR (line 1167) | function roundOffsetsByDPR(_ref) {
function mapToStyles (line 1178) | function mapToStyles(_ref2) {
function computeStyles (line 1251) | function computeStyles(_ref4) {
function applyStyles (line 1314) | function applyStyles(_ref) {
function effect$1 (line 1341) | function effect$1(_ref2) {
function distanceAndSkiddingToXY (line 1395) | function distanceAndSkiddingToXY(placement, rects, offset) {
function offset (line 1416) | function offset(_ref2) {
function getOppositePlacement (line 1453) | function getOppositePlacement(placement) {
function getOppositeVariationPlacement (line 1463) | function getOppositeVariationPlacement(placement) {
function computeAutoPlacement (line 1469) | function computeAutoPlacement(state, options) {
function getExpandedFallbackPlacements (line 1513) | function getExpandedFallbackPlacements(placement) {
function flip (line 1522) | function flip(_ref) {
function getAltAxis (line 1653) | function getAltAxis(axis) {
function within (line 1657) | function within(min$1, value, max$1) {
function withinMaxClamp (line 1660) | function withinMaxClamp(min, value, max) {
function preventOverflow (line 1665) | function preventOverflow(_ref) {
function arrow (line 1803) | function arrow(_ref) {
function effect (line 1840) | function effect(_ref2) {
function getSideOffsets (line 1887) | function getSideOffsets(overflow, rect, preventedOffsets) {
function isAnySideFullyClipped (line 1903) | function isAnySideFullyClipped(overflow) {
function hide (line 1909) | function hide(_ref) {
Condensed preview — 722 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,868K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 520,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: \"\"\nlabels: \"\"\nassignees: \"\"\n---\n\n**Describe the bu"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 463,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: \"\"\nlabels: enhancement\nassignees: \"\"\n---\n\n**Is "
},
{
"path": ".github/workflows/code-ql.yml",
"chars": 771,
"preview": "name: \"CodeQL\"\n\non:\n push:\n branches: [master]\n pull_request:\n # The branches below must be a subset of the bran"
},
{
"path": ".github/workflows/test.yml",
"chars": 6677,
"preview": "name: Test\n\non: [push, pull_request]\n\njobs:\n rspec:\n name: RSpec\n strategy:\n fail-fast: false\n matrix:\n"
},
{
"path": ".gitignore",
"chars": 435,
"preview": "*.gem\n*.log\n*.rbc\n*.swp\n.bundle\n.idea/\n.vscode/\n.rvmrc\n.sass-cache\n.yardoc\n/.emacs.desktop\n/gemfiles/*.lock\n/node_module"
},
{
"path": ".prettierignore",
"chars": 173,
"preview": "coverage\nlib/generators/rails_admin/templates\nspec/dummy_app/app/assets/builds\nspec/dummy_app/public\nspec/dummy_app/tmp\n"
},
{
"path": ".rspec",
"chars": 101,
"preview": "--color\n--order=random\n--profile\n--exclude-pattern 'dummy_app/node_modules/rails_admin/**/*_spec.rb'\n"
},
{
"path": ".rubocop.yml",
"chars": 3640,
"preview": "inherit_from: .rubocop_todo.yml\n\nrequire:\n - rubocop-performance\n\nAllCops:\n Exclude:\n - \"gemfiles/*\"\n - \"node_mo"
},
{
"path": ".rubocop_todo.yml",
"chars": 4572,
"preview": "# This configuration was generated by\n# `rubocop --auto-gen-config`\n# on 2021-11-20 13:57:54 UTC using RuboCop version 1"
},
{
"path": ".teatro.yml",
"chars": 444,
"preview": "project:\n platform: rails\n\nstage:\n before:\n - export CI_DB_ADAPTER=postgresql\n - export CI_ORM=active_record\n "
},
{
"path": ".yardopts",
"chars": 56,
"preview": "--no-private\n--protected\n--markup markdown\n-\nLICENSE.md\n"
},
{
"path": "Appraisals",
"chars": 4763,
"preview": "# frozen_string_literal: true\n\nappraise 'rails-6.0' do\n gem 'rails', '~> 6.0.0'\n gem 'concurrent-ruby', '1.3.4' # Work"
},
{
"path": "CHANGELOG.md",
"chars": 72640,
"preview": "# RailsAdmin Changelog\n\n## [Unreleased](https://github.com/railsadminteam/rails_admin/tree/HEAD)\n\n[Full Changelog](https"
},
{
"path": "CONTRIBUTING.md",
"chars": 3901,
"preview": "## Contributing\n\nIn the spirit of [free software][free-sw], **everyone** is encouraged to help\nimprove this project.\n\n[f"
},
{
"path": "Gemfile",
"chars": 1441,
"preview": "# frozen_string_literal: true\n\nsource 'https://rubygems.org'\n\ngem 'appraisal', '>= 2.0'\ngem 'devise', '~> 4.7'\ngem 'net-"
},
{
"path": "LICENSE.md",
"chars": 1067,
"preview": "Copyright (c) 2010-2016 Erik Michaels-Ober\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy"
},
{
"path": "Procfile.teatro",
"chars": 51,
"preview": "web: cd spec/dummy_app && bundle exec rails server\n"
},
{
"path": "README.md",
"chars": 3912,
"preview": "# RailsAdmin\n\n[][gem]\n[\n o"
},
{
"path": "app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb",
"chars": 124,
"preview": "<li class=\"page-item disabled\">\n <a href=\"#\" class=\"page-link\">\n <%= raw(t 'admin.pagination.truncate') %>\n </a>\n</"
},
{
"path": "app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb",
"chars": 284,
"preview": "<% if current_page.last? %>\n <li class=\"page-item next disabled\">\n <%= link_to raw(t 'admin.pagination.next'), '#', "
},
{
"path": "app/views/kaminari/ra-twitter-bootstrap/_page.html.erb",
"chars": 215,
"preview": "<% if page.current? %>\n <li class=\"page-item active\">\n <%= link_to page, url, class: 'page-link' %>\n </li>\n<% else "
},
{
"path": "app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb",
"chars": 416,
"preview": "<%= paginator.render do %>\n <nav aria-label=\"Page navigation\">\n <ul class=\"pagination\">\n <%= prev_page_tag %>\n "
},
{
"path": "app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb",
"chars": 293,
"preview": "<% if current_page.first? %>\n <li class=\"page-item prev disabled\">\n <%= link_to raw(t 'admin.pagination.previous'), "
},
{
"path": "app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb",
"chars": 284,
"preview": "<% if current_page.last? %>\n <li class=\"page-item next disabled\">\n <%= link_to raw(t 'admin.pagination.next'), '#', "
},
{
"path": "app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb",
"chars": 199,
"preview": "<%= paginator.render do %>\n <nav aria-label=\"Page navigation\">\n <ul class=\"pagination\">\n <%= prev_page_tag if !"
},
{
"path": "app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb",
"chars": 293,
"preview": "<% if current_page.first? %>\n <li class=\"page-item prev disabled\">\n <%= link_to raw(t 'admin.pagination.previous'), "
},
{
"path": "app/views/layouts/rails_admin/_head.html.erb",
"chars": 1971,
"preview": "<meta content=\"IE=edge\" http-equiv=\"X-UA-Compatible\">\n<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\""
},
{
"path": "app/views/layouts/rails_admin/_navigation.html.erb",
"chars": 609,
"preview": "<div class=\"container-fluid\">\n <a class=\"navbar-brand\" href=\"<%= dashboard_path %>\">\n <%= _get_plugin_name[0] || 'Ra"
},
{
"path": "app/views/layouts/rails_admin/_secondary_navigation.html.erb",
"chars": 1049,
"preview": "<ul class=\"navbar-nav ms-auto root_links\">\n <% actions(:root).select(&:show_in_navigation).each do |action| %>\n <li "
},
{
"path": "app/views/layouts/rails_admin/_sidebar_navigation.html.erb",
"chars": 174,
"preview": "<ul class=\"sidebar col-sm-3 col-md-2 nav btn-toggle-nav flex-column flex-nowrap bg-light\">\n <%= main_navigation %>\n <%"
},
{
"path": "app/views/layouts/rails_admin/application.html.erb",
"chars": 1011,
"preview": "<!DOCTYPE html>\n<html lang=\"<%= I18n.locale %>\">\n <head>\n <%= render \"layouts/rails_admin/head\" %>\n </head>\n <body"
},
{
"path": "app/views/layouts/rails_admin/content.html.erb",
"chars": 805,
"preview": "<title>\n <%= \"#{@abstract_model.try(:pretty_name) || @page_name} | #{[_get_plugin_name[0] || 'Rails', _get_plugin_name["
},
{
"path": "app/views/layouts/rails_admin/modal.js.erb",
"chars": 258,
"preview": "<% flash && flash.each do |key, value| %>\n <div class=\"<%= flash_alert_class(key) %> alert alert-dismissible\">\n <%= "
},
{
"path": "app/views/rails_admin/main/_dashboard_history.html.erb",
"chars": 1353,
"preview": "<table class=\"table table-condensed table-striped table-hover\">\n <thead>\n <tr>\n <th class=\"shrink user\">\n "
},
{
"path": "app/views/rails_admin/main/_delete_notice.html.erb",
"chars": 1548,
"preview": "<% object = delete_notice %>\n<li style=\"display:block; margin-top:10px\">\n <span class=\"label label-default\">\n <%= @a"
},
{
"path": "app/views/rails_admin/main/_form_action_text.html.erb",
"chars": 253,
"preview": "<%\n js_data = {\n csspath: field.css_location,\n jspath: field.js_location,\n warn_dynamic_load: field.warn_dynam"
},
{
"path": "app/views/rails_admin/main/_form_boolean.html.erb",
"chars": 875,
"preview": "<% if field.nullable? %>\n <div class=\"btn-group\" role=\"group\">\n <% {'1': [true, 'btn-outline-success'], '0': [false,"
},
{
"path": "app/views/rails_admin/main/_form_ck_editor.html.erb",
"chars": 436,
"preview": "<%\n js_data = {\n jspath: field.location ? field.location : field.base_location + \"ckeditor.js\",\n base_location: f"
},
{
"path": "app/views/rails_admin/main/_form_code_mirror.html.erb",
"chars": 323,
"preview": "<%\n js_data = {\n csspath: field.css_location,\n jspath: field.js_location,\n options: field.config,\n location"
},
{
"path": "app/views/rails_admin/main/_form_colorpicker.html.erb",
"chars": 204,
"preview": "<div class=\"row\">\n <div class=\"col-sm-2\">\n <%= form.send field.view_helper, field.method_name, field.html_attributes"
},
{
"path": "app/views/rails_admin/main/_form_datetime.html.erb",
"chars": 462,
"preview": "<div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"input-group\">\n <%= form.text_field field.method_name, fi"
},
{
"path": "app/views/rails_admin/main/_form_enumeration.html.erb",
"chars": 970,
"preview": "<% unless field.multiple? %>\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <%= form.select field.method_name, fie"
},
{
"path": "app/views/rails_admin/main/_form_field.html.erb",
"chars": 168,
"preview": "<%= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({ value: field.form_value, class"
},
{
"path": "app/views/rails_admin/main/_form_file_upload.html.erb",
"chars": 807,
"preview": "<% file = field.value %>\n<% if field.cache_method %>\n <%= form.hidden_field(field.cache_method, value: field.cache_valu"
},
{
"path": "app/views/rails_admin/main/_form_filtering_multiselect.html.erb",
"chars": 918,
"preview": "<%\n config = field.associated_model_config\n%>\n\n<div class=\"row\">\n <div class=\"col-auto\">\n <input name=\"<%= form.dom"
},
{
"path": "app/views/rails_admin/main/_form_filtering_select.html.erb",
"chars": 1242,
"preview": "<%\n config = field.associated_model_config\n%>\n\n<div class=\"row\">\n <div class=\"col-sm-4\">\n <%=\n form.select fie"
},
{
"path": "app/views/rails_admin/main/_form_froala.html.erb",
"chars": 321,
"preview": "<%\n js_data = {\n csspath: field.css_location,\n jspath: field.js_location,\n config_options: field.config_option"
},
{
"path": "app/views/rails_admin/main/_form_multiple_file_upload.html.erb",
"chars": 1041,
"preview": "<% field.attachments.each_with_index do |attachment, i| %>\n <div class=\"<%= field.reorderable? ? 'sortables' : '' %> to"
},
{
"path": "app/views/rails_admin/main/_form_nested_many.html.erb",
"chars": 1105,
"preview": "<div class=\"controls col-sm-10\" data-nestedmany=\"true\">\n <div class=\"btn-group\">\n <a class=\"<%= (field.active? ? 'ac"
},
{
"path": "app/views/rails_admin/main/_form_nested_one.html.erb",
"chars": 1178,
"preview": "<div class=\"controls col-sm-10\" data-nestedone=\"true\">\n <ul class=\"nav collapse\"></ul>\n <div class=\"btn-group\">\n <a"
},
{
"path": "app/views/rails_admin/main/_form_polymorphic_association.html.erb",
"chars": 930,
"preview": "<%\n column_type_dom_id = form.dom_id(field).sub(field.method_name.to_s, field.type_column)\n%>\n\n<div class=\"row\">\n <div"
},
{
"path": "app/views/rails_admin/main/_form_simple_mde.html.erb",
"chars": 320,
"preview": "<%\n js_data = {\n js_location: field.js_location,\n css_location: field.css_location,\n instance_config: field.in"
},
{
"path": "app/views/rails_admin/main/_form_text.html.erb",
"chars": 217,
"preview": "<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: false, options: {}.to_json }"
},
{
"path": "app/views/rails_admin/main/_form_wysihtml5.html.erb",
"chars": 326,
"preview": "<%\n js_data = {\n csspath: field.css_location,\n jspath: field.js_location,\n config_options: field.config_option"
},
{
"path": "app/views/rails_admin/main/_submit_buttons.html.erb",
"chars": 1349,
"preview": "<div class=\"form-actions row justify-content-end my-3\">\n <div class=\"col-sm-10\">\n <input name=\"return_to\" type=\"<%= "
},
{
"path": "app/views/rails_admin/main/bulk_delete.html.erb",
"chars": 801,
"preview": "<h4>\n <%= I18n.t('admin.form.bulk_delete') %>\n</h4>\n<ul>\n <%= render partial: \"delete_notice\", collection: @objects %>"
},
{
"path": "app/views/rails_admin/main/dashboard.html.erb",
"chars": 2673,
"preview": "<% if @abstract_models %>\n <table class=\"table table-condensed table-striped table-hover\">\n <thead>\n <tr>\n "
},
{
"path": "app/views/rails_admin/main/delete.html.erb",
"chars": 1033,
"preview": "<h4>\n <%= t(\"admin.form.are_you_sure_you_want_to_delete_the_object\", model_name: @abstract_model.pretty_name.downcase) "
},
{
"path": "app/views/rails_admin/main/edit.html.erb",
"chars": 257,
"preview": "<%= rails_admin_form_for @object, url: edit_path(@abstract_model, @object.id), as: @abstract_model.param_key, html: { me"
},
{
"path": "app/views/rails_admin/main/export.html.erb",
"chars": 7225,
"preview": "<% params = request.params.except(:action, :controller, :utf8, :page, :per_page, :format, :authenticity_token) %>\n<% vis"
},
{
"path": "app/views/rails_admin/main/history.html.erb",
"chars": 3752,
"preview": "<% params = request.params.except(:action, :controller, :model_name) %>\n<% query = params[:query] %>\n<% filter = params["
},
{
"path": "app/views/rails_admin/main/index.html.erb",
"chars": 8138,
"preview": "<%\n query = params[:query]\n params = request.params.except(:authenticity_token, :action, :controller, :utf8, :bulk_exp"
},
{
"path": "app/views/rails_admin/main/new.html.erb",
"chars": 250,
"preview": "<%= rails_admin_form_for @object, url: new_path(model_name: @abstract_model.to_param), as: @abstract_model.param_key, ht"
},
{
"path": "app/views/rails_admin/main/show.html.erb",
"chars": 1153,
"preview": "<% @model_config.show.with(object: @object, view: self, controller: self.controller).visible_groups.each do |fieldset| %"
},
{
"path": "config/initializers/active_record_extensions.rb",
"chars": 490,
"preview": "# frozen_string_literal: true\n\nActiveSupport.on_load(:active_record) do\n module ActiveRecord\n class Base\n def s"
},
{
"path": "config/initializers/mongoid_extensions.rb",
"chars": 188,
"preview": "# frozen_string_literal: true\n\nif defined?(::Mongoid::Document)\n require 'rails_admin/adapters/mongoid/extension'\n Mon"
},
{
"path": "config/locales/rails_admin.en.yml",
"chars": 5367,
"preview": "en:\n admin:\n js:\n true: \"True\"\n false: \"False\"\n is_present: Is present\n is_blank: Is blank\n "
},
{
"path": "config/routes.rb",
"chars": 764,
"preview": "# frozen_string_literal: true\n\nRailsAdmin::Engine.routes.draw do\n controller 'main' do\n RailsAdmin::Config::Actions."
},
{
"path": "gemfiles/composite_primary_keys.gemfile",
"chars": 1474,
"preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
},
{
"path": "gemfiles/rails_6.0.gemfile",
"chars": 2014,
"preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
},
{
"path": "gemfiles/rails_6.1.gemfile",
"chars": 1958,
"preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
},
{
"path": "gemfiles/rails_7.0.gemfile",
"chars": 2051,
"preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
},
{
"path": "gemfiles/rails_7.1.gemfile",
"chars": 1963,
"preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
},
{
"path": "gemfiles/rails_7.2.gemfile",
"chars": 1773,
"preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
},
{
"path": "gemfiles/rails_8.0.gemfile",
"chars": 1773,
"preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
},
{
"path": "lib/generators/rails_admin/importmap_formatter.rb",
"chars": 1092,
"preview": "# frozen_string_literal: true\n\nrequire 'importmap/packager'\n\nmodule RailsAdmin\n class ImportmapFormatter\n attr_reade"
},
{
"path": "lib/generators/rails_admin/install_generator.rb",
"chars": 6042,
"preview": "# frozen_string_literal: true\n\nrequire 'rails/generators'\nrequire 'rails_admin/version'\nrequire File.expand_path('utils'"
},
{
"path": "lib/generators/rails_admin/templates/initializer.erb",
"chars": 973,
"preview": "RailsAdmin.config do |config|\n config.asset_source = :<%= asset %>\n\n ### Popular gems integration\n\n ## == Devise ==\n "
},
{
"path": "lib/generators/rails_admin/templates/rails_admin.js",
"chars": 43,
"preview": "import \"rails_admin/src/rails_admin/base\";\n"
},
{
"path": "lib/generators/rails_admin/templates/rails_admin.scss.erb",
"chars": 118,
"preview": "<%= @fa_font_path ? %{$fa-font-path: \"#{@fa_font_path}\";\\n} : '' %>@import \"rails_admin/src/rails_admin/styles/base\";\n"
},
{
"path": "lib/generators/rails_admin/templates/rails_admin.vite.js",
"chars": 84,
"preview": "import \"~/stylesheets/rails_admin.scss\";\nimport \"rails_admin/src/rails_admin/base\";\n"
},
{
"path": "lib/generators/rails_admin/templates/rails_admin.webpacker.js",
"chars": 85,
"preview": "import \"rails_admin/src/rails_admin/base\";\nimport \"../stylesheets/rails_admin.scss\";\n"
},
{
"path": "lib/generators/rails_admin/utils.rb",
"chars": 653,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Generators\n module Utils\n module InstanceMethods\n "
},
{
"path": "lib/rails_admin/abstract_model.rb",
"chars": 7092,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/support/datetime'\n\nmodule RailsAdmin\n class AbstractModel\n cattr"
},
{
"path": "lib/rails_admin/adapters/active_record/association.rb",
"chars": 3059,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Adapters\n module ActiveRecord\n class Association\n "
},
{
"path": "lib/rails_admin/adapters/active_record/object_extension.rb",
"chars": 232,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Adapters\n module ActiveRecord\n module ObjectExtension\n"
},
{
"path": "lib/rails_admin/adapters/active_record/property.rb",
"chars": 1069,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Adapters\n module ActiveRecord\n class Property\n "
},
{
"path": "lib/rails_admin/adapters/active_record.rb",
"chars": 11616,
"preview": "# frozen_string_literal: true\n\nrequire 'active_record'\nrequire 'rails_admin/adapters/active_record/association'\nrequire "
},
{
"path": "lib/rails_admin/adapters/mongoid/association.rb",
"chars": 4083,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Adapters\n module Mongoid\n class Association\n at"
},
{
"path": "lib/rails_admin/adapters/mongoid/bson.rb",
"chars": 710,
"preview": "# frozen_string_literal: true\n\nrequire 'mongoid'\n\nmodule RailsAdmin\n module Adapters\n module Mongoid\n class Bso"
},
{
"path": "lib/rails_admin/adapters/mongoid/extension.rb",
"chars": 1613,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Adapters\n module Mongoid\n module Extension\n ext"
},
{
"path": "lib/rails_admin/adapters/mongoid/object_extension.rb",
"chars": 783,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Adapters\n module Mongoid\n module ObjectExtension\n "
},
{
"path": "lib/rails_admin/adapters/mongoid/property.rb",
"chars": 2600,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Adapters\n module Mongoid\n class Property\n STRIN"
},
{
"path": "lib/rails_admin/adapters/mongoid.rb",
"chars": 10303,
"preview": "# frozen_string_literal: true\n\nrequire 'mongoid'\nrequire 'rails_admin/config/sections/list'\nrequire 'rails_admin/adapter"
},
{
"path": "lib/rails_admin/config/actions/base.rb",
"chars": 4598,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/proxyable'\nrequire 'rails_admin/config/configurable'\nrequire "
},
{
"path": "lib/rails_admin/config/actions/bulk_delete.rb",
"chars": 2333,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class BulkDelete < RailsAdmin:"
},
{
"path": "lib/rails_admin/config/actions/dashboard.rb",
"chars": 1787,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class Dashboard < RailsAdmin::"
},
{
"path": "lib/rails_admin/config/actions/delete.rb",
"chars": 1510,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class Delete < RailsAdmin::Con"
},
{
"path": "lib/rails_admin/config/actions/edit.rb",
"chars": 1725,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class Edit < RailsAdmin::Confi"
},
{
"path": "lib/rails_admin/config/actions/export.rb",
"chars": 1142,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class Export < RailsAdmin::Con"
},
{
"path": "lib/rails_admin/config/actions/history_index.rb",
"chars": 989,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class HistoryIndex < RailsAdmi"
},
{
"path": "lib/rails_admin/config/actions/history_show.rb",
"chars": 995,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class HistoryShow < RailsAdmin"
},
{
"path": "lib/rails_admin/config/actions/index.rb",
"chars": 3275,
"preview": "# frozen_string_literal: true\n\nrequire 'activemodel-serializers-xml'\n\nmodule RailsAdmin\n module Config\n module Actio"
},
{
"path": "lib/rails_admin/config/actions/new.rb",
"chars": 2322,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class New < RailsAdmin::Config"
},
{
"path": "lib/rails_admin/config/actions/show.rb",
"chars": 825,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class Show < RailsAdmin::Confi"
},
{
"path": "lib/rails_admin/config/actions/show_in_app.rb",
"chars": 815,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class ShowInApp < RailsAdmin::"
},
{
"path": "lib/rails_admin/config/actions.rb",
"chars": 3574,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Actions\n class << self\n def all("
},
{
"path": "lib/rails_admin/config/configurable.rb",
"chars": 4324,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n # A module for all configurables.\n\n module Confi"
},
{
"path": "lib/rails_admin/config/const_load_suppressor.rb",
"chars": 2122,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module ConstLoadSuppressor\n class << self\n "
},
{
"path": "lib/rails_admin/config/fields/association.rb",
"chars": 6199,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config'\nrequire 'rails_admin/config/fields/base'\n\nmodule RailsAdmin\n"
},
{
"path": "lib/rails_admin/config/fields/base.rb",
"chars": 12587,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/proxyable'\nrequire 'rails_admin/config/configurable'\nrequire "
},
{
"path": "lib/rails_admin/config/fields/collection_association.rb",
"chars": 3456,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/association'\n\nmodule RailsAdmin\n module Config\n mo"
},
{
"path": "lib/rails_admin/config/fields/factories/action_text.rb",
"chars": 509,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\n\nRailsAdmin"
},
{
"path": "lib/rails_admin/config/fields/factories/active_storage.rb",
"chars": 1392,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
},
{
"path": "lib/rails_admin/config/fields/factories/association.rb",
"chars": 1385,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
},
{
"path": "lib/rails_admin/config/fields/factories/carrierwave.rb",
"chars": 1441,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
},
{
"path": "lib/rails_admin/config/fields/factories/devise.rb",
"chars": 1006,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
},
{
"path": "lib/rails_admin/config/fields/factories/dragonfly.rb",
"chars": 1292,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
},
{
"path": "lib/rails_admin/config/fields/factories/enum.rb",
"chars": 876,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types/enum'\nrequir"
},
{
"path": "lib/rails_admin/config/fields/factories/paperclip.rb",
"chars": 1294,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
},
{
"path": "lib/rails_admin/config/fields/factories/password.rb",
"chars": 660,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types/password'\n\n#"
},
{
"path": "lib/rails_admin/config/fields/factories/shrine.rb",
"chars": 1228,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
},
{
"path": "lib/rails_admin/config/fields/group.rb",
"chars": 2457,
"preview": "# frozen_string_literal: true\n\nrequire 'active_support/core_ext/string/inflections'\nrequire 'rails_admin/config/proxyabl"
},
{
"path": "lib/rails_admin/config/fields/singular_association.rb",
"chars": 1889,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/association'\n\nmodule RailsAdmin\n module Config\n mo"
},
{
"path": "lib/rails_admin/config/fields/types/action_text.rb",
"chars": 884,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n module Config\n mod"
},
{
"path": "lib/rails_admin/config/fields/types/active_record_enum.rb",
"chars": 1439,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/enum'\n\nmodule RailsAdmin\n module Config\n mod"
},
{
"path": "lib/rails_admin/config/fields/types/active_storage.rb",
"chars": 2078,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/file_upload'\n\nmodule RailsAdmin\n module Config\n"
},
{
"path": "lib/rails_admin/config/fields/types/all.rb",
"chars": 2236,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/action_text'\nrequire 'rails_admin/config/fields/"
},
{
"path": "lib/rails_admin/config/fields/types/belongs_to_association.rb",
"chars": 1935,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/singular_association'\n\nmodule RailsAdmin\n module Conf"
},
{
"path": "lib/rails_admin/config/fields/types/boolean.rb",
"chars": 1848,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Fields\n module Types\n class Bool"
},
{
"path": "lib/rails_admin/config/fields/types/bson_object_id.rb",
"chars": 1091,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string'\n\nmodule RailsAdmin\n module Config\n m"
},
{
"path": "lib/rails_admin/config/fields/types/carrierwave.rb",
"chars": 1014,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\nrequire 'rails_admin/config/fields/types/file_up"
},
{
"path": "lib/rails_admin/config/fields/types/citext.rb",
"chars": 286,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n module Config\n mod"
},
{
"path": "lib/rails_admin/config/fields/types/ck_editor.rb",
"chars": 1120,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n module Config\n mod"
},
{
"path": "lib/rails_admin/config/fields/types/code_mirror.rb",
"chars": 1390,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n module Config\n mod"
},
{
"path": "lib/rails_admin/config/fields/types/color.rb",
"chars": 1019,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string_like'\n\nmodule RailsAdmin\n module Config\n"
},
{
"path": "lib/rails_admin/config/fields/types/date.rb",
"chars": 927,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/datetime'\n\nmodule RailsAdmin\n module Config\n "
},
{
"path": "lib/rails_admin/config/fields/types/datetime.rb",
"chars": 2672,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\nrequire 'rails_admin/support/datetime'\n\nmodule R"
},
{
"path": "lib/rails_admin/config/fields/types/decimal.rb",
"chars": 531,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/numeric'\n\nmodule RailsAdmin\n module Config\n "
},
{
"path": "lib/rails_admin/config/fields/types/dragonfly.rb",
"chars": 1247,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\nrequire 'rails_admin/config/fields/types/file_up"
},
{
"path": "lib/rails_admin/config/fields/types/enum.rb",
"chars": 1787,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string'\n\nmodule RailsAdmin\n module Config\n m"
},
{
"path": "lib/rails_admin/config/fields/types/file_upload.rb",
"chars": 2315,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string'\n\nmodule RailsAdmin\n module Config\n m"
},
{
"path": "lib/rails_admin/config/fields/types/float.rb",
"chars": 529,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/numeric'\n\nmodule RailsAdmin\n module Config\n "
},
{
"path": "lib/rails_admin/config/fields/types/froala.rb",
"chars": 989,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n module Config\n mod"
},
{
"path": "lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb",
"chars": 410,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/collection_association'\n\nmodule RailsAdmin\n module Co"
},
{
"path": "lib/rails_admin/config/fields/types/has_many_association.rb",
"chars": 398,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/collection_association'\n\nmodule RailsAdmin\n module Co"
},
{
"path": "lib/rails_admin/config/fields/types/has_one_association.rb",
"chars": 998,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/singular_association'\n\nmodule RailsAdmin\n module Conf"
},
{
"path": "lib/rails_admin/config/fields/types/hidden.rb",
"chars": 597,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string_like'\n\nmodule RailsAdmin\n module Config\n"
},
{
"path": "lib/rails_admin/config/fields/types/inet.rb",
"chars": 297,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\n\nmodule RailsAdmin\n module Config\n module Fi"
},
{
"path": "lib/rails_admin/config/fields/types/integer.rb",
"chars": 459,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/numeric'\n\nmodule RailsAdmin\n module Config\n "
},
{
"path": "lib/rails_admin/config/fields/types/json.rb",
"chars": 1026,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n module Config\n mod"
},
{
"path": "lib/rails_admin/config/fields/types/multiple_active_storage.rb",
"chars": 2602,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/multiple_file_upload'\n\nmodule RailsAdmin\n modul"
},
{
"path": "lib/rails_admin/config/fields/types/multiple_carrierwave.rb",
"chars": 1785,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/multiple_file_upload'\n\nmodule RailsAdmin\n modul"
},
{
"path": "lib/rails_admin/config/fields/types/multiple_file_upload.rb",
"chars": 3719,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Fields\n module Types\n class Mult"
},
{
"path": "lib/rails_admin/config/fields/types/numeric.rb",
"chars": 599,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\n\nmodule RailsAdmin\n module Config\n module Fi"
},
{
"path": "lib/rails_admin/config/fields/types/paperclip.rb",
"chars": 964,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\nrequire 'rails_admin/config/fields/types/file_up"
},
{
"path": "lib/rails_admin/config/fields/types/password.rb",
"chars": 1075,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string'\n\nmodule RailsAdmin\n module Config\n m"
},
{
"path": "lib/rails_admin/config/fields/types/polymorphic_association.rb",
"chars": 3722,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/belongs_to_association'\n\nmodule RailsAdmin\n mod"
},
{
"path": "lib/rails_admin/config/fields/types/serialized.rb",
"chars": 750,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n module Config\n mod"
},
{
"path": "lib/rails_admin/config/fields/types/shrine.rb",
"chars": 1619,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/file_upload'\n\nmodule RailsAdmin\n module Config\n"
},
{
"path": "lib/rails_admin/config/fields/types/simple_mde.rb",
"chars": 1117,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n module Config\n mod"
},
{
"path": "lib/rails_admin/config/fields/types/string.rb",
"chars": 1555,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string_like'\n\nmodule RailsAdmin\n module Config\n"
},
{
"path": "lib/rails_admin/config/fields/types/string_like.rb",
"chars": 685,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\n\nmodule RailsAdmin\n module Config\n module Fi"
},
{
"path": "lib/rails_admin/config/fields/types/text.rb",
"chars": 609,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string_like'\n\nmodule RailsAdmin\n module Config\n"
},
{
"path": "lib/rails_admin/config/fields/types/time.rb",
"chars": 969,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/datetime'\n\nmodule RailsAdmin\n module Config\n "
},
{
"path": "lib/rails_admin/config/fields/types/timestamp.rb",
"chars": 375,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/datetime'\n\nmodule RailsAdmin\n module Config\n "
},
{
"path": "lib/rails_admin/config/fields/types/uuid.rb",
"chars": 314,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string'\n\nmodule RailsAdmin\n module Config\n m"
},
{
"path": "lib/rails_admin/config/fields/types/wysihtml5.rb",
"chars": 1241,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n module Config\n mod"
},
{
"path": "lib/rails_admin/config/fields/types.rb",
"chars": 717,
"preview": "# frozen_string_literal: true\n\nrequire 'active_support/core_ext/string/inflections'\nrequire 'rails_admin/config/fields'\n"
},
{
"path": "lib/rails_admin/config/fields.rb",
"chars": 4076,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Fields\n # Default field factory loads f"
},
{
"path": "lib/rails_admin/config/groupable.rb",
"chars": 617,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/group'\n\nmodule RailsAdmin\n module Config\n module G"
},
{
"path": "lib/rails_admin/config/has_description.rb",
"chars": 293,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n # Provides accessor and autoregistering of model's "
},
{
"path": "lib/rails_admin/config/has_fields.rb",
"chars": 5454,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n # Provides accessors and autoregistering of model's"
},
{
"path": "lib/rails_admin/config/has_groups.rb",
"chars": 891,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/group'\n\nmodule RailsAdmin\n module Config\n module H"
},
{
"path": "lib/rails_admin/config/hideable.rb",
"chars": 635,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n # Defines a visibility configuration\n module Hid"
},
{
"path": "lib/rails_admin/config/inspectable.rb",
"chars": 1078,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Inspectable\n def inspect\n set_na"
},
{
"path": "lib/rails_admin/config/lazy_model.rb",
"chars": 2601,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/model'\n\nmodule RailsAdmin\n module Config\n class LazyModel"
},
{
"path": "lib/rails_admin/config/model.rb",
"chars": 4112,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config'\nrequire 'rails_admin/config/proxyable'\nrequire 'rails_admin/"
},
{
"path": "lib/rails_admin/config/proxyable/proxy.rb",
"chars": 965,
"preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n module Config\n module Proxyable\n class Proxy < BasicObject\n "
},
{
"path": "lib/rails_admin/config/proxyable.rb",
"chars": 671,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/proxyable/proxy'\nmodule RailsAdmin\n module Config\n module"
},
{
"path": "lib/rails_admin/config/sections/base.rb",
"chars": 1001,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/proxyable'\nrequire 'rails_admin/config/configurable'\nrequire "
},
{
"path": "lib/rails_admin/config/sections/create.rb",
"chars": 269,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/edit'\n\nmodule RailsAdmin\n module Config\n module "
},
{
"path": "lib/rails_admin/config/sections/edit.rb",
"chars": 273,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/base'\n\nmodule RailsAdmin\n module Config\n module "
},
{
"path": "lib/rails_admin/config/sections/export.rb",
"chars": 258,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/base'\n\nmodule RailsAdmin\n module Config\n module "
},
{
"path": "lib/rails_admin/config/sections/list.rb",
"chars": 1633,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/base'\n\nmodule RailsAdmin\n module Config\n module "
},
{
"path": "lib/rails_admin/config/sections/modal.rb",
"chars": 212,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/edit'\n\nmodule RailsAdmin\n module Config\n module "
},
{
"path": "lib/rails_admin/config/sections/nested.rb",
"chars": 213,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/edit'\n\nmodule RailsAdmin\n module Config\n module "
},
{
"path": "lib/rails_admin/config/sections/show.rb",
"chars": 211,
"preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/base'\n\nmodule RailsAdmin\n module Config\n module "
}
]
// ... and 522 more files (download for full content)
About this extraction
This page contains the full source code of the railsadminteam/rails_admin GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 722 files (2.5 MB), approximately 703.6k tokens, and a symbol index with 1859 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.