elucid-rails_admin 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +54 -0
- data/LICENSE.md +20 -0
- data/README.md +1334 -0
- data/Rakefile +14 -0
- data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
- data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/images/rails_admin/bullet_black.png +0 -0
- data/app/assets/images/rails_admin/bullet_white.png +0 -0
- data/app/assets/images/rails_admin/calendar.png +0 -0
- data/app/assets/images/rails_admin/clock.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/select.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/select2.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/slider.png +0 -0
- data/app/assets/images/rails_admin/logo.png +0 -0
- data/app/assets/images/rails_admin/magnifier.png +0 -0
- data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
- data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
- data/app/assets/javascripts/rails_admin/jquery-ui-1.8.16.custom.js +5019 -0
- data/app/assets/javascripts/rails_admin/jquery.colorpicker.js +484 -0
- data/app/assets/javascripts/rails_admin/jquery.ui.timepicker.js +1219 -0
- data/app/assets/javascripts/rails_admin/ra.datetimepicker.js +67 -0
- data/app/assets/javascripts/rails_admin/ra.filter-box.js +119 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +280 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +181 -0
- data/app/assets/javascripts/rails_admin/ra.remote-form.js +147 -0
- data/app/assets/javascripts/rails_admin/rails_admin.js.erb +17 -0
- data/app/assets/javascripts/rails_admin/themes/default/ui.js +1 -0
- data/app/assets/javascripts/rails_admin/ui.js.coffee +30 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.css.scss +733 -0
- data/app/assets/stylesheets/rails_admin/base/README +2 -0
- data/app/assets/stylesheets/rails_admin/base/mixins.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/base/theming.css.scss +102 -0
- data/app/assets/stylesheets/rails_admin/base/variables.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/custom/README +3 -0
- data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +9 -0
- data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +11 -0
- data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +11 -0
- data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +51 -0
- data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +180 -0
- data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +53 -0
- data/app/assets/stylesheets/rails_admin/ra.calendar-additions.css.scss +25 -0
- data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.css.scss +85 -0
- data/app/assets/stylesheets/rails_admin/rails_admin.css +4 -0
- data/app/assets/stylesheets/rails_admin/themes/README +11 -0
- data/app/assets/stylesheets/rails_admin/themes/default/mixins.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +1 -0
- data/app/controllers/rails_admin/application_controller.rb +62 -0
- data/app/controllers/rails_admin/history_controller.rb +26 -0
- data/app/controllers/rails_admin/main_controller.rb +371 -0
- data/app/helpers/rails_admin/application_helper.rb +65 -0
- data/app/helpers/rails_admin/form_builder.rb +52 -0
- data/app/helpers/rails_admin/main_helper.rb +100 -0
- data/app/models/rails_admin/history.rb +64 -0
- data/app/views/kaminari/twitter-bootstrap/_gap.html.haml +2 -0
- data/app/views/kaminari/twitter-bootstrap/_next_page.html.haml +4 -0
- data/app/views/kaminari/twitter-bootstrap/_page.html.haml +4 -0
- data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +10 -0
- data/app/views/kaminari/twitter-bootstrap/_prev_page.html.haml +4 -0
- data/app/views/layouts/rails_admin/_navigation.html.haml +19 -0
- data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +9 -0
- data/app/views/layouts/rails_admin/application.html.haml +41 -0
- data/app/views/rails_admin/history/_dashboard.html.haml +10 -0
- data/app/views/rails_admin/history/show.html.haml +42 -0
- data/app/views/rails_admin/main/_delete_notice.html.haml +19 -0
- data/app/views/rails_admin/main/_form_colorpicker.html.haml +26 -0
- data/app/views/rails_admin/main/_form_datetime.html.haml +7 -0
- data/app/views/rails_admin/main/_form_enumeration.html.haml +5 -0
- data/app/views/rails_admin/main/_form_field.html.haml +1 -0
- data/app/views/rails_admin/main/_form_file_upload.html.haml +19 -0
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +57 -0
- data/app/views/rails_admin/main/_form_filtering_select.html.haml +47 -0
- data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +36 -0
- data/app/views/rails_admin/main/_form_text.html.haml +13 -0
- data/app/views/rails_admin/main/_models_links.html.haml +31 -0
- data/app/views/rails_admin/main/_object_links.html.haml +23 -0
- data/app/views/rails_admin/main/_submit_buttons.html.haml +12 -0
- data/app/views/rails_admin/main/bulk_delete.html.haml +6 -0
- data/app/views/rails_admin/main/dashboard.html.haml +31 -0
- data/app/views/rails_admin/main/delete.html.haml +13 -0
- data/app/views/rails_admin/main/edit.html.haml +2 -0
- data/app/views/rails_admin/main/export.html.haml +70 -0
- data/app/views/rails_admin/main/index.html.haml +98 -0
- data/app/views/rails_admin/main/new.html.haml +2 -0
- data/app/views/rails_admin/main/show.html.haml +14 -0
- data/config/initializers/active_record_extensions.rb +19 -0
- data/config/initializers/devise_patch.rb +9 -0
- data/config/initializers/haml.rb +3 -0
- data/config/locales/devise.bg.yml +42 -0
- data/config/locales/devise.de.yml +39 -0
- data/config/locales/devise.en.yml +39 -0
- data/config/locales/devise.es.yml +39 -0
- data/config/locales/devise.fi.yml +39 -0
- data/config/locales/devise.fr.yml +78 -0
- data/config/locales/devise.hr.yml +49 -0
- data/config/locales/devise.it.yml +39 -0
- data/config/locales/devise.lt.yml +39 -0
- data/config/locales/devise.mn.yml +39 -0
- data/config/locales/devise.nb.yml +43 -0
- data/config/locales/devise.pt-BR.yml +39 -0
- data/config/locales/devise.pt-PT.yml +39 -0
- data/config/locales/devise.ro.yml +46 -0
- data/config/locales/devise.ru.yml +39 -0
- data/config/locales/devise.sv.yml +39 -0
- data/config/locales/devise.tr.yml +39 -0
- data/config/locales/devise.uk.yml +39 -0
- data/config/locales/devise.zh-CN.yml +39 -0
- data/config/locales/devise.zh_cn.yml +39 -0
- data/config/locales/rails_admin.bg.yml +104 -0
- data/config/locales/rails_admin.da.yml +99 -0
- data/config/locales/rails_admin.de.yml +110 -0
- data/config/locales/rails_admin.en.yml +114 -0
- data/config/locales/rails_admin.es.yml +112 -0
- data/config/locales/rails_admin.fi.yml +107 -0
- data/config/locales/rails_admin.fr.yml +110 -0
- data/config/locales/rails_admin.hr.yml +81 -0
- data/config/locales/rails_admin.it.yml +109 -0
- data/config/locales/rails_admin.ja.yml +110 -0
- data/config/locales/rails_admin.lt.yml +102 -0
- data/config/locales/rails_admin.lv.yml +100 -0
- data/config/locales/rails_admin.mn.yml +103 -0
- data/config/locales/rails_admin.nb.yml +110 -0
- data/config/locales/rails_admin.nl.yml +135 -0
- data/config/locales/rails_admin.pl.yml +111 -0
- data/config/locales/rails_admin.pt-BR.yml +109 -0
- data/config/locales/rails_admin.pt-PT.yml +109 -0
- data/config/locales/rails_admin.ro.yml +113 -0
- data/config/locales/rails_admin.ru.yml +109 -0
- data/config/locales/rails_admin.sv.yml +103 -0
- data/config/locales/rails_admin.tr.yml +103 -0
- data/config/locales/rails_admin.uk.yml +100 -0
- data/config/locales/rails_admin.zh-CN.yml +114 -0
- data/config/locales/rails_admin.zh_cn.yml +107 -0
- data/config/routes.rb +28 -0
- data/lib/generators/rails_admin/install_generator.rb +83 -0
- data/lib/generators/rails_admin/templates/drop.rb +18 -0
- data/lib/generators/rails_admin/templates/initializer.erb +150 -0
- data/lib/generators/rails_admin/templates/migration.rb +18 -0
- data/lib/generators/rails_admin/uninstall_generator.rb +22 -0
- data/lib/generators/rails_admin/utils.rb +30 -0
- data/lib/rails_admin.rb +57 -0
- data/lib/rails_admin/abstract_model.rb +73 -0
- data/lib/rails_admin/abstract_object.rb +28 -0
- data/lib/rails_admin/adapters/active_record.rb +359 -0
- data/lib/rails_admin/config.rb +287 -0
- data/lib/rails_admin/config/base.rb +111 -0
- data/lib/rails_admin/config/fields.rb +99 -0
- data/lib/rails_admin/config/fields/association.rb +101 -0
- data/lib/rails_admin/config/fields/base.rb +273 -0
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +16 -0
- data/lib/rails_admin/config/fields/factories/devise.rb +31 -0
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +20 -0
- data/lib/rails_admin/config/fields/factories/enum.rb +11 -0
- data/lib/rails_admin/config/fields/factories/paperclip.rb +26 -0
- data/lib/rails_admin/config/fields/factories/password.rb +17 -0
- data/lib/rails_admin/config/fields/group.rb +63 -0
- data/lib/rails_admin/config/fields/groupable.rb +25 -0
- data/lib/rails_admin/config/fields/types.rb +26 -0
- data/lib/rails_admin/config/fields/types/all.rb +22 -0
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +51 -0
- data/lib/rails_admin/config/fields/types/boolean.rb +29 -0
- data/lib/rails_admin/config/fields/types/carrierwave.rb +32 -0
- data/lib/rails_admin/config/fields/types/color.rb +37 -0
- data/lib/rails_admin/config/fields/types/date.rb +24 -0
- data/lib/rails_admin/config/fields/types/datetime.rb +160 -0
- data/lib/rails_admin/config/fields/types/decimal.rb +14 -0
- data/lib/rails_admin/config/fields/types/dragonfly.rb +51 -0
- data/lib/rails_admin/config/fields/types/enum.rb +35 -0
- data/lib/rails_admin/config/fields/types/file_upload.rb +54 -0
- data/lib/rails_admin/config/fields/types/float.rb +14 -0
- data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +14 -0
- data/lib/rails_admin/config/fields/types/has_many_association.rb +42 -0
- data/lib/rails_admin/config/fields/types/has_one_association.rb +31 -0
- data/lib/rails_admin/config/fields/types/integer.rb +24 -0
- data/lib/rails_admin/config/fields/types/paperclip.rb +38 -0
- data/lib/rails_admin/config/fields/types/password.rb +41 -0
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +78 -0
- data/lib/rails_admin/config/fields/types/string.rb +34 -0
- data/lib/rails_admin/config/fields/types/text.rb +39 -0
- data/lib/rails_admin/config/fields/types/time.rb +31 -0
- data/lib/rails_admin/config/fields/types/timestamp.rb +18 -0
- data/lib/rails_admin/config/has_fields.rb +112 -0
- data/lib/rails_admin/config/has_groups.rb +39 -0
- data/lib/rails_admin/config/hideable.rb +28 -0
- data/lib/rails_admin/config/model.rb +89 -0
- data/lib/rails_admin/config/proxy.rb +40 -0
- data/lib/rails_admin/config/sections.rb +51 -0
- data/lib/rails_admin/config/sections/create.rb +11 -0
- data/lib/rails_admin/config/sections/export.rb +18 -0
- data/lib/rails_admin/config/sections/list.rb +55 -0
- data/lib/rails_admin/config/sections/navigation.rb +21 -0
- data/lib/rails_admin/config/sections/show.rb +50 -0
- data/lib/rails_admin/config/sections/update.rb +11 -0
- data/lib/rails_admin/engine.rb +15 -0
- data/lib/rails_admin/extension.rb +23 -0
- data/lib/rails_admin/extensions/cancan.rb +5 -0
- data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +71 -0
- data/lib/rails_admin/generic_support.rb +15 -0
- data/lib/rails_admin/i18n_support.rb +43 -0
- data/lib/rails_admin/support/core_extensions.rb +44 -0
- data/lib/rails_admin/support/csv_converter.rb +109 -0
- data/lib/rails_admin/version.rb +6 -0
- data/lib/tasks/prepare_ci_env.rake +27 -0
- data/lib/tasks/rails_admin.rake +18 -0
- data/spec/ci.sh +2 -0
- data/spec/controllers/application_controller_spec.rb +30 -0
- data/spec/controllers/main_controller_spec.rb +86 -0
- data/spec/database_helpers.rb +15 -0
- data/spec/dummy_app/Gemfile +52 -0
- data/spec/dummy_app/README +256 -0
- data/spec/dummy_app/Rakefile +7 -0
- data/spec/dummy_app/app/controllers/application_controller.rb +3 -0
- data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_app/app/locales/models.en.yml +8 -0
- data/spec/dummy_app/app/models/abstract.rb +5 -0
- data/spec/dummy_app/app/models/ball.rb +8 -0
- data/spec/dummy_app/app/models/cms.rb +5 -0
- data/spec/dummy_app/app/models/cms/basic_page.rb +7 -0
- data/spec/dummy_app/app/models/cms/unscoped_page.rb +3 -0
- data/spec/dummy_app/app/models/comment.rb +3 -0
- data/spec/dummy_app/app/models/division.rb +8 -0
- data/spec/dummy_app/app/models/draft.rb +11 -0
- data/spec/dummy_app/app/models/fan.rb +5 -0
- data/spec/dummy_app/app/models/field_test.rb +13 -0
- data/spec/dummy_app/app/models/league.rb +10 -0
- data/spec/dummy_app/app/models/player.rb +15 -0
- data/spec/dummy_app/app/models/rel_test.rb +6 -0
- data/spec/dummy_app/app/models/team.rb +25 -0
- data/spec/dummy_app/app/models/user.rb +21 -0
- data/spec/dummy_app/app/uploaders/carrierwave_uploader.rb +53 -0
- data/spec/dummy_app/app/views/layouts/application.html.erb +13 -0
- data/spec/dummy_app/config.ru +4 -0
- data/spec/dummy_app/config/application.rb +47 -0
- data/spec/dummy_app/config/boot.rb +6 -0
- data/spec/dummy_app/config/database.yml +22 -0
- data/spec/dummy_app/config/environment.rb +5 -0
- data/spec/dummy_app/config/environments/development.rb +27 -0
- data/spec/dummy_app/config/environments/production.rb +51 -0
- data/spec/dummy_app/config/environments/test.rb +39 -0
- data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_app/config/initializers/devise.rb +142 -0
- data/spec/dummy_app/config/initializers/inflections.rb +10 -0
- data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
- data/spec/dummy_app/config/initializers/quiet_assets.rb +10 -0
- data/spec/dummy_app/config/initializers/rails_admin.rb +10 -0
- data/spec/dummy_app/config/initializers/secret_token.rb +7 -0
- data/spec/dummy_app/config/initializers/session_store.rb +8 -0
- data/spec/dummy_app/config/routes.rb +8 -0
- data/spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb +13 -0
- data/spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb +19 -0
- data/spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb +12 -0
- data/spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb +20 -0
- data/spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb +22 -0
- data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +19 -0
- data/spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb +16 -0
- data/spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb +12 -0
- data/spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb +11 -0
- data/spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb +9 -0
- data/spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb +9 -0
- data/spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb +16 -0
- data/spec/dummy_app/db/migrate/00000000000013_add_roles_to_user.rb +9 -0
- data/spec/dummy_app/db/migrate/00000000000014_add_color_to_team_migration.rb +9 -0
- data/spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb +15 -0
- data/spec/dummy_app/db/migrate/20110103205808_create_comments.rb +15 -0
- data/spec/dummy_app/db/migrate/20110123042530_rename_histories_to_rails_admin_histories.rb +9 -0
- data/spec/dummy_app/db/migrate/20110224184303_create_field_tests.rb +22 -0
- data/spec/dummy_app/db/migrate/20110328193014_create_cms_basic_pages.rb +14 -0
- data/spec/dummy_app/db/migrate/20110329183136_remove_league_id_from_teams.rb +9 -0
- data/spec/dummy_app/db/migrate/20110607152842_add_format_to_field_test.rb +9 -0
- data/spec/dummy_app/db/migrate/20110714095433_create_balls.rb +12 -0
- data/spec/dummy_app/db/migrate/20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb +6 -0
- data/spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb +19 -0
- data/spec/dummy_app/db/migrate/20110901142530_rename_league_id_foreign_key_on_divisions.rb +5 -0
- data/spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb +21 -0
- data/spec/dummy_app/db/migrate/20110901154834_change_length_for_rails_admin_histories.rb +9 -0
- data/spec/dummy_app/db/migrate/20111103174459_create_unscoped_pages.rb +9 -0
- data/spec/dummy_app/db/migrate/20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb +7 -0
- data/spec/dummy_app/db/seeds.rb +18 -0
- data/spec/dummy_app/doc/README_FOR_APP +2 -0
- data/spec/dummy_app/public/404.html +0 -0
- data/spec/dummy_app/public/favicon.ico +0 -0
- data/spec/dummy_app/script/rails +6 -0
- data/spec/factories.rb +62 -0
- data/spec/generator_helpers.rb +30 -0
- data/spec/generators/install_generator_spec.rb +85 -0
- data/spec/generators/uninstall_generator_spec.rb +35 -0
- data/spec/lib/abstract_object_spec.rb +119 -0
- data/spec/lib/rails_admin_spec.rb +153 -0
- data/spec/requests/authorization/cancan_spec.rb +260 -0
- data/spec/requests/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +25 -0
- data/spec/requests/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +55 -0
- data/spec/requests/basic/create/rails_admin_basic_create_spec.rb +143 -0
- data/spec/requests/basic/create/rails_admin_namespaced_model_create_spec.rb +24 -0
- data/spec/requests/basic/delete/rails_admin_basic_delete_spec.rb +35 -0
- data/spec/requests/basic/destroy/rails_admin_basic_destroy_spec.rb +56 -0
- data/spec/requests/basic/edit/rails_admin_basic_edit_spec.rb +98 -0
- data/spec/requests/basic/export/rails_admin_basic_export_spec.rb +84 -0
- data/spec/requests/basic/list/rails_admin_basic_list_spec.rb +401 -0
- data/spec/requests/basic/new/rails_admin_basic_new_spec.rb +74 -0
- data/spec/requests/basic/new/rails_admin_namespaced_model_new_spec.rb +31 -0
- data/spec/requests/basic/show/rails_admin_basic_show_spec.rb +83 -0
- data/spec/requests/basic/update/rails_admin_basic_update_spec.rb +169 -0
- data/spec/requests/config/edit/rails_admin_config_edit_spec.rb +744 -0
- data/spec/requests/config/list/rails_admin_config_list_spec.rb +549 -0
- data/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb +107 -0
- data/spec/requests/config/rails_admin_config_spec.rb +180 -0
- data/spec/requests/config/show/rails_admin_config_show_spec.rb +275 -0
- data/spec/requests/history/rails_admin_history_spec.rb +57 -0
- data/spec/requests/rails_admin_spec.rb +103 -0
- data/spec/requests/relation_spec.rb +26 -0
- data/spec/spec_helper.rb +88 -0
- metadata +717 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
require 'rails_admin/config/model'
|
|
2
|
+
require 'rails_admin/config/sections/list'
|
|
3
|
+
require 'rails_admin/config/sections/navigation'
|
|
4
|
+
require 'active_support/core_ext/class/attribute_accessors'
|
|
5
|
+
|
|
6
|
+
module RailsAdmin
|
|
7
|
+
module Config
|
|
8
|
+
# RailsAdmin is setup to try and authenticate with warden
|
|
9
|
+
# If warden is found, then it will try to authenticate
|
|
10
|
+
#
|
|
11
|
+
# This is valid for custom warden setups, and also devise
|
|
12
|
+
# If you're using the admin setup for devise, you should set RailsAdmin to use the admin
|
|
13
|
+
#
|
|
14
|
+
# By default, this will raise in any of the following environments
|
|
15
|
+
# * production
|
|
16
|
+
# * beta
|
|
17
|
+
# * uat
|
|
18
|
+
# * staging
|
|
19
|
+
#
|
|
20
|
+
# @see RailsAdmin::Config.authenticate_with
|
|
21
|
+
# @see RailsAdmin::Config.authorize_with
|
|
22
|
+
DEFAULT_AUTHENTICATION = Proc.new do
|
|
23
|
+
request.env['warden'].try(:authenticate!)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
DEFAULT_ATTR_ACCESSIBLE_ROLE = Proc.new { :default }
|
|
27
|
+
|
|
28
|
+
DEFAULT_AUTHORIZE = Proc.new {}
|
|
29
|
+
|
|
30
|
+
DEFAULT_CURRENT_USER = Proc.new do
|
|
31
|
+
request.env["warden"].try(:user) || respond_to?(:current_user) && current_user
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class << self
|
|
36
|
+
# Application title, can be an array of two elements
|
|
37
|
+
attr_accessor :main_app_name
|
|
38
|
+
|
|
39
|
+
# Configuration option to specify which models you want to exclude.
|
|
40
|
+
attr_accessor :excluded_models
|
|
41
|
+
|
|
42
|
+
# Configuration option to specify a whitelist of models you want to RailsAdmin to work with.
|
|
43
|
+
# The excluded_models list applies against the whitelist as well and further reduces the models
|
|
44
|
+
# RailsAdmin will use.
|
|
45
|
+
# If included_models is left empty ([]), then RailsAdmin will automatically use all the models
|
|
46
|
+
# in your application (less any excluded_models you may have specified).
|
|
47
|
+
attr_accessor :included_models
|
|
48
|
+
|
|
49
|
+
# Fields to be hidden in show, create and update views
|
|
50
|
+
attr_accessor :default_hidden_fields
|
|
51
|
+
|
|
52
|
+
# Default items per page value used if a model level option has not
|
|
53
|
+
# been configured
|
|
54
|
+
attr_accessor :default_items_per_page
|
|
55
|
+
|
|
56
|
+
attr_reader :default_search_operator
|
|
57
|
+
|
|
58
|
+
# Configuration option to specify which method names will be searched for
|
|
59
|
+
# to be used as a label for object records. This defaults to [:name, :title]
|
|
60
|
+
attr_accessor :label_methods
|
|
61
|
+
|
|
62
|
+
# hide blank fields in show view if true
|
|
63
|
+
attr_accessor :compact_show_view
|
|
64
|
+
|
|
65
|
+
# Set the max width of columns in list view before a new set is created
|
|
66
|
+
attr_accessor :total_columns_width
|
|
67
|
+
|
|
68
|
+
# Stores model configuration objects in a hash identified by model's class
|
|
69
|
+
# name.
|
|
70
|
+
#
|
|
71
|
+
# @see RailsAdmin::Config.model
|
|
72
|
+
attr_reader :registry
|
|
73
|
+
|
|
74
|
+
# Setup authentication to be run as a before filter
|
|
75
|
+
# This is run inside the controller instance so you can setup any authentication you need to
|
|
76
|
+
#
|
|
77
|
+
# By default, the authentication will run via warden if available
|
|
78
|
+
# and will run the default.
|
|
79
|
+
#
|
|
80
|
+
# If you use devise, this will authenticate the same as _authenticate_user!_
|
|
81
|
+
#
|
|
82
|
+
# @example Devise admin
|
|
83
|
+
# RailsAdmin.config do |config|
|
|
84
|
+
# config.authenticate_with do
|
|
85
|
+
# authenticate_admin!
|
|
86
|
+
# end
|
|
87
|
+
# end
|
|
88
|
+
#
|
|
89
|
+
# @example Custom Warden
|
|
90
|
+
# RailsAdmin.config do |config|
|
|
91
|
+
# config.authenticate_with do
|
|
92
|
+
# warden.authenticate! :scope => :paranoid
|
|
93
|
+
# end
|
|
94
|
+
# end
|
|
95
|
+
#
|
|
96
|
+
# @see RailsAdmin::Config::DEFAULT_AUTHENTICATION
|
|
97
|
+
def authenticate_with(&blk)
|
|
98
|
+
@authenticate = blk if blk
|
|
99
|
+
@authenticate || DEFAULT_AUTHENTICATION
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def attr_accessible_role(&blk)
|
|
104
|
+
@attr_accessible_role = blk if blk
|
|
105
|
+
@attr_accessible_role || DEFAULT_ATTR_ACCESSIBLE_ROLE
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Setup authorization to be run as a before filter
|
|
109
|
+
# This is run inside the controller instance so you can setup any authorization you need to.
|
|
110
|
+
#
|
|
111
|
+
# By default, there is no authorization.
|
|
112
|
+
#
|
|
113
|
+
# @example Custom
|
|
114
|
+
# RailsAdmin.config do |config|
|
|
115
|
+
# config.authorize_with do
|
|
116
|
+
# redirect_to root_path unless warden.user.is_admin?
|
|
117
|
+
# end
|
|
118
|
+
# end
|
|
119
|
+
#
|
|
120
|
+
# To use an authorization adapter, pass the name of the adapter. For example,
|
|
121
|
+
# to use with CanCan[https://github.com/ryanb/cancan], pass it like this.
|
|
122
|
+
#
|
|
123
|
+
# @example CanCan
|
|
124
|
+
# RailsAdmin.config do |config|
|
|
125
|
+
# config.authorize_with :cancan
|
|
126
|
+
# end
|
|
127
|
+
#
|
|
128
|
+
# See the wiki[https://github.com/sferik/rails_admin/wiki] for more on authorization.
|
|
129
|
+
#
|
|
130
|
+
# @see RailsAdmin::Config::DEFAULT_AUTHORIZE
|
|
131
|
+
def authorize_with(*args, &block)
|
|
132
|
+
extension = args.shift
|
|
133
|
+
if(extension)
|
|
134
|
+
@authorize = Proc.new {
|
|
135
|
+
@authorization_adapter = RailsAdmin::AUTHORIZATION_ADAPTERS[extension].new(*([self] + args).compact)
|
|
136
|
+
}
|
|
137
|
+
else
|
|
138
|
+
@authorize = block if block
|
|
139
|
+
end
|
|
140
|
+
@authorize || DEFAULT_AUTHORIZE
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Setup configuration using an extension-provided ConfigurationAdapter
|
|
144
|
+
#
|
|
145
|
+
# @example Custom configuration for role-based setup.
|
|
146
|
+
# RailsAdmin.config do |config|
|
|
147
|
+
# config.configure_with(:custom) do |config|
|
|
148
|
+
# config.models = ['User', 'Comment']
|
|
149
|
+
# config.roles = {
|
|
150
|
+
# 'Admin' => :all,
|
|
151
|
+
# 'User' => ['User']
|
|
152
|
+
# }
|
|
153
|
+
# end
|
|
154
|
+
# end
|
|
155
|
+
def configure_with(extension)
|
|
156
|
+
configuration = RailsAdmin::CONFIGURATION_ADAPTERS[extension].new
|
|
157
|
+
yield(configuration) if block_given?
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# Setup a different method to determine the current user or admin logged in.
|
|
161
|
+
# This is run inside the controller instance and made available as a helper.
|
|
162
|
+
#
|
|
163
|
+
# By default, _request.env["warden"].user_ or _current_user_ will be used.
|
|
164
|
+
#
|
|
165
|
+
# @example Custom
|
|
166
|
+
# RailsAdmin.config do |config|
|
|
167
|
+
# config.current_user_method do
|
|
168
|
+
# current_admin
|
|
169
|
+
# end
|
|
170
|
+
# end
|
|
171
|
+
#
|
|
172
|
+
# @see RailsAdmin::Config::DEFAULT_CURRENT_USER
|
|
173
|
+
def current_user_method(&block)
|
|
174
|
+
@current_user = block if block
|
|
175
|
+
@current_user || DEFAULT_CURRENT_USER
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def default_search_operator=(operator)
|
|
179
|
+
if %w{ default like starts_with ends_with is = }.include? operator
|
|
180
|
+
@default_search_operator = operator
|
|
181
|
+
else
|
|
182
|
+
raise ArgumentError, "Search operator '#{operator}' not supported"
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def reload_between_requests=(thingy)
|
|
187
|
+
ActiveSupport::Deprecation.warn("'#{self.name}.reload_between_requests=' is not in use any longer, please remove it from initialization files", caller)
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# Shortcut to access the list section's class configuration
|
|
191
|
+
# within a config DSL block
|
|
192
|
+
#
|
|
193
|
+
# @see RailsAdmin::Config::Sections::List
|
|
194
|
+
def list
|
|
195
|
+
ActiveSupport::Deprecation.warn("RailsAdmin::Config.list is deprecated", caller)
|
|
196
|
+
RailsAdmin::Config::Sections::List
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Loads a model configuration instance from the registry or registers
|
|
200
|
+
# a new one if one is yet to be added.
|
|
201
|
+
#
|
|
202
|
+
# First argument can be an instance of requested model, its class object,
|
|
203
|
+
# its class name as a string or symbol or a RailsAdmin::AbstractModel
|
|
204
|
+
# instance.
|
|
205
|
+
#
|
|
206
|
+
# If a block is given it is evaluated in the context of configuration instance.
|
|
207
|
+
#
|
|
208
|
+
# Returns given model's configuration
|
|
209
|
+
#
|
|
210
|
+
# @see RailsAdmin::Config.registry
|
|
211
|
+
def model(entity, &block)
|
|
212
|
+
key = begin
|
|
213
|
+
if entity.kind_of?(RailsAdmin::AbstractModel)
|
|
214
|
+
entity.model.name.to_sym
|
|
215
|
+
elsif entity.kind_of?(Class)
|
|
216
|
+
entity.name.to_sym
|
|
217
|
+
elsif entity.kind_of?(String) || entity.kind_of?(Symbol)
|
|
218
|
+
entity.to_sym
|
|
219
|
+
else
|
|
220
|
+
entity.class.name.to_sym
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
config = @registry[key] ||= RailsAdmin::Config::Model.new(entity)
|
|
224
|
+
config.instance_eval(&block) if block
|
|
225
|
+
config
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
# Returns all model configurations
|
|
229
|
+
#
|
|
230
|
+
# If a block is given it is evaluated in the context of configuration
|
|
231
|
+
# instances.
|
|
232
|
+
#
|
|
233
|
+
# @see RailsAdmin::Config.registry
|
|
234
|
+
def models(&block)
|
|
235
|
+
RailsAdmin::AbstractModel.all.map{|m| model(m, &block)}
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
# Shortcut to access the navigation section's class configuration
|
|
239
|
+
# within a config DSL block
|
|
240
|
+
#
|
|
241
|
+
# @see RailsAdmin::Config::Sections::Navigation
|
|
242
|
+
def navigation
|
|
243
|
+
ActiveSupport::Deprecation.warn("RailsAdmin::Config.navigation is deprecated", caller)
|
|
244
|
+
RailsAdmin::Config::Sections::Navigation
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
# Reset all configurations to defaults.
|
|
248
|
+
#
|
|
249
|
+
# @see RailsAdmin::Config.registry
|
|
250
|
+
def reset
|
|
251
|
+
@compact_show_view = true
|
|
252
|
+
@authenticate = nil
|
|
253
|
+
@authorize = nil
|
|
254
|
+
@current_user = nil
|
|
255
|
+
@default_hidden_fields = [:id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
|
|
256
|
+
@default_items_per_page = 20
|
|
257
|
+
@default_search_operator = 'default'
|
|
258
|
+
@excluded_models = []
|
|
259
|
+
@included_models = []
|
|
260
|
+
@total_columns_width = 697
|
|
261
|
+
@label_methods = [:name, :title]
|
|
262
|
+
@main_app_name = Proc.new { [Rails.application.engine_name.titleize.chomp(' Application'), 'Admin'] }
|
|
263
|
+
@registry = {}
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
# Reset a provided model's configuration.
|
|
267
|
+
#
|
|
268
|
+
# @see RailsAdmin::Config.registry
|
|
269
|
+
def reset_model(model)
|
|
270
|
+
key = model.kind_of?(Class) ? model.name.to_sym : model.to_sym
|
|
271
|
+
@registry.delete(key)
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
# Get all models that are configured as visible sorted by their weight and label.
|
|
275
|
+
#
|
|
276
|
+
# @see RailsAdmin::Config::Hideable
|
|
277
|
+
def visible_models
|
|
278
|
+
self.models.select {|m| m.visible? }.sort do |a, b|
|
|
279
|
+
(weight_order = a.weight <=> b.weight) == 0 ? a.label.downcase <=> b.label.downcase : weight_order
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
# Set default values for configuration options on load
|
|
285
|
+
self.reset
|
|
286
|
+
end
|
|
287
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
require 'rails_admin/config/proxy'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
# A base class for all configurables.
|
|
6
|
+
#
|
|
7
|
+
# Each configurable has a parent object. This parent object must provide
|
|
8
|
+
# the configurable with abstract_model and bindings.
|
|
9
|
+
#
|
|
10
|
+
# Bindings is a hash of variables bound by the querying context. For
|
|
11
|
+
# example the list view's template will bind an object to key
|
|
12
|
+
# :object for each row it outputs. This object is the actual row object
|
|
13
|
+
# which is then used as the receiver of queries for property values.
|
|
14
|
+
#
|
|
15
|
+
# @see RailsAdmin::AbstractModel
|
|
16
|
+
# @see RailsAdmin::Config::Model#abstract_model
|
|
17
|
+
class Base
|
|
18
|
+
attr_reader :abstract_model, :bindings, :parent, :root
|
|
19
|
+
|
|
20
|
+
def initialize(parent)
|
|
21
|
+
@abstract_model = parent.abstract_model
|
|
22
|
+
@bindings = {}
|
|
23
|
+
@parent = parent
|
|
24
|
+
@root = parent.root
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def has_option?(name)
|
|
28
|
+
options = self.class.instance_variable_get("@config_options")
|
|
29
|
+
options && options.has_key?(name)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Register an instance option for this object only
|
|
33
|
+
def register_instance_option(option_name, &default)
|
|
34
|
+
scope = class << self; self; end;
|
|
35
|
+
self.class.register_instance_option(option_name, scope, &default)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def register_deprecated_instance_option(option_name, replacement_option_name)
|
|
39
|
+
scope = class << self; self; end;
|
|
40
|
+
self.class.register_deprecated_instance_option(option_name, replacement_option_name, scope)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def with(bindings = {})
|
|
44
|
+
RailsAdmin::Config::Proxy.new(self, bindings)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Register an instance option. Instance option is a configuration
|
|
48
|
+
# option that stores its value within an instance variable and is
|
|
49
|
+
# accessed by an instance method. Both go by the name of the option.
|
|
50
|
+
def self.register_instance_option(option_name, scope = self, &default)
|
|
51
|
+
unless options = scope.instance_variable_get("@config_options")
|
|
52
|
+
options = scope.instance_variable_set("@config_options", {})
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
option_name = option_name.to_s
|
|
56
|
+
|
|
57
|
+
options[option_name] = nil
|
|
58
|
+
|
|
59
|
+
# If it's a boolean create an alias for it and remove question mark
|
|
60
|
+
if "?" == option_name[-1, 1]
|
|
61
|
+
scope.send(:define_method, "#{option_name.chop!}?") do
|
|
62
|
+
send(option_name)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Define getter/setter by the option name
|
|
67
|
+
scope.send(:define_method, option_name) do |*args, &block|
|
|
68
|
+
if !args[0].nil? || block
|
|
69
|
+
# Invocation with args --> This is the declaration of the option, i.e. setter
|
|
70
|
+
instance_variable_set("@#{option_name}_registered", args[0].nil? ? block : args[0])
|
|
71
|
+
else
|
|
72
|
+
# Invocation without args nor block --> It's the use of the option, i.e. getter
|
|
73
|
+
value = instance_variable_get("@#{option_name}_registered")
|
|
74
|
+
case value
|
|
75
|
+
when Proc
|
|
76
|
+
# Track recursive invocation with an instance variable. This prevents run-away recursion
|
|
77
|
+
# and allows configurations such as
|
|
78
|
+
# label { "#{label}".upcase }
|
|
79
|
+
# This will use the default definition when called recursively.
|
|
80
|
+
if instance_variable_get("@#{option_name}_recurring")
|
|
81
|
+
value = instance_eval &default
|
|
82
|
+
else
|
|
83
|
+
instance_variable_set("@#{option_name}_recurring", true)
|
|
84
|
+
value = instance_eval &value
|
|
85
|
+
instance_variable_set("@#{option_name}_recurring", false)
|
|
86
|
+
end
|
|
87
|
+
when nil
|
|
88
|
+
value = instance_eval &default
|
|
89
|
+
end
|
|
90
|
+
value
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def self.register_deprecated_instance_option(option_name, replacement_option_name, scope = self)
|
|
96
|
+
scope.send(:define_method, option_name) do |*args, &block|
|
|
97
|
+
ActiveSupport::Deprecation.warn("The #{option_name} configuration option is deprecated, please use #{replacement_option_name}.")
|
|
98
|
+
send(replacement_option_name, *args, &block)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Register a class option. Class option is a configuration
|
|
103
|
+
# option that stores it's value within a class object's instance variable
|
|
104
|
+
# and is accessed by a class method. Both go by the name of the option.
|
|
105
|
+
def self.register_class_option(option_name, &default)
|
|
106
|
+
scope = class << self; self; end;
|
|
107
|
+
self.register_instance_option(option_name, scope, &default)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
module RailsAdmin
|
|
2
|
+
module Config
|
|
3
|
+
module Fields
|
|
4
|
+
# Default field factory loads fields based on their property type or
|
|
5
|
+
# association type.
|
|
6
|
+
#
|
|
7
|
+
# @see RailsAdmin::Config::Fields.registry
|
|
8
|
+
mattr_reader :default_factory
|
|
9
|
+
@@default_factory = lambda do |parent, properties, fields|
|
|
10
|
+
# If it's an association
|
|
11
|
+
if properties.has_key?(:parent_model)
|
|
12
|
+
association = parent.abstract_model.associations.find {|a| a[:name].to_s == properties[:name].to_s}
|
|
13
|
+
field = RailsAdmin::Config::Fields::Types.load("#{association[:polymorphic] ? :polymorphic : properties[:type]}_association").new(parent, properties[:name], association)
|
|
14
|
+
|
|
15
|
+
field.read_only(true) if association[:read_only]
|
|
16
|
+
fields << field
|
|
17
|
+
|
|
18
|
+
# If it's a column
|
|
19
|
+
elsif !properties.has_key?(:parent_model)
|
|
20
|
+
fields << (field = RailsAdmin::Config::Fields::Types.load(properties[:type]).new(parent, properties[:name], properties))
|
|
21
|
+
# hide _type columns (handled as associations)
|
|
22
|
+
if parent.abstract_model.belongs_to_associations.find {|a| a[:foreign_type] == properties[:name] }
|
|
23
|
+
field.hide
|
|
24
|
+
end
|
|
25
|
+
# hide _id column
|
|
26
|
+
if parent.abstract_model.belongs_to_associations.find {|a| a[:child_key] == properties[:name] }
|
|
27
|
+
field.hide
|
|
28
|
+
field.filterable(false) # filtering is handled on the association itself
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Registry of field factories.
|
|
34
|
+
#
|
|
35
|
+
# Field factory is an anonymous function that recieves the parent object,
|
|
36
|
+
# an array of field properties and an array of fields already instantiated.
|
|
37
|
+
#
|
|
38
|
+
# If the factory returns true then that property will not be run through
|
|
39
|
+
# the rest of the registered factories. If it returns false then the
|
|
40
|
+
# arguments will be passed to the next factory.
|
|
41
|
+
#
|
|
42
|
+
# By default a basic factory is registered which loads fields by their
|
|
43
|
+
# database column type. Also a password factory is registered which
|
|
44
|
+
# loads fields if their name is password. Third default factory is a
|
|
45
|
+
# devise specific factory which loads fields for devise user models.
|
|
46
|
+
#
|
|
47
|
+
# @see RailsAdmin::Config::Fields.register_factory
|
|
48
|
+
# @see rails_admin/config/fields/factories/password.rb
|
|
49
|
+
# @see rails_admin/config/fields/factories/devise.rb
|
|
50
|
+
@@registry = [@@default_factory]
|
|
51
|
+
|
|
52
|
+
# Build an array of fields by the provided parent object's abstract_model's
|
|
53
|
+
# property and association information. Each property and association is
|
|
54
|
+
# passed to the registered field factories which will populate the fields
|
|
55
|
+
# array that will be returned.
|
|
56
|
+
#
|
|
57
|
+
# @see RailsAdmin::Config::Fields.registry
|
|
58
|
+
def self.factory(parent)
|
|
59
|
+
fields = []
|
|
60
|
+
return fields unless parent.abstract_model.model_store_exists?
|
|
61
|
+
# Load fields for all properties (columns)
|
|
62
|
+
|
|
63
|
+
parent.abstract_model.properties.each do |properties|
|
|
64
|
+
# Unless a previous factory has already loaded current field as well
|
|
65
|
+
unless fields.find {|f| f.name == properties[:name] }
|
|
66
|
+
# Loop through factories until one returns true
|
|
67
|
+
@@registry.find {|factory| factory.call(parent, properties, fields) }
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
# Load fields for all associations (relations)
|
|
71
|
+
parent.abstract_model.associations.each do |association|
|
|
72
|
+
# Unless a previous factory has already loaded current field as well
|
|
73
|
+
unless fields.find {|f| f.name == association[:name] }
|
|
74
|
+
# Loop through factories until one returns true
|
|
75
|
+
@@registry.find {|factory| factory.call(parent, association, fields) }
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
fields
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Register a field factory to be included in the factory stack.
|
|
82
|
+
#
|
|
83
|
+
# Factories are invoked lifo (last in first out).
|
|
84
|
+
#
|
|
85
|
+
# @see RailsAdmin::Config::Fields.registry
|
|
86
|
+
def self.register_factory(&block)
|
|
87
|
+
@@registry.unshift(block)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
require 'rails_admin/config/fields/types'
|
|
94
|
+
require 'rails_admin/config/fields/factories/password'
|
|
95
|
+
require 'rails_admin/config/fields/factories/enum'
|
|
96
|
+
require 'rails_admin/config/fields/factories/devise'
|
|
97
|
+
require 'rails_admin/config/fields/factories/paperclip'
|
|
98
|
+
require 'rails_admin/config/fields/factories/dragonfly'
|
|
99
|
+
require 'rails_admin/config/fields/factories/carrierwave'
|