drewda_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 +53 -0
- data/LICENSE.md +20 -0
- data/README.md +160 -0
- data/Rakefile +19 -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 +12 -0
- data/app/assets/javascripts/rails_admin/jquery.colorpicker.js +484 -0
- data/app/assets/javascripts/rails_admin/jquery.pjax.js +431 -0
- data/app/assets/javascripts/rails_admin/jquery.ui.timepicker.js +1371 -0
- data/app/assets/javascripts/rails_admin/ra.datetimepicker.js +67 -0
- data/app/assets/javascripts/rails_admin/ra.filter-box.js +129 -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.nested-form-hooks.coffee +40 -0
- data/app/assets/javascripts/rails_admin/ra.remote-form.js +150 -0
- data/app/assets/javascripts/rails_admin/rails_admin.js.erb +25 -0
- data/app/assets/javascripts/rails_admin/themes/default/ui.js +12 -0
- data/app/assets/javascripts/rails_admin/ui.js.coffee +61 -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 +263 -0
- data/app/assets/stylesheets/rails_admin/base/variables.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +12 -0
- data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +13 -0
- data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +15 -0
- data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +76 -0
- data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +180 -0
- data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +69 -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/default/mixins.css.scss +8 -0
- data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +11 -0
- data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +12 -0
- data/app/controllers/rails_admin/application_controller.rb +82 -0
- data/app/controllers/rails_admin/main_controller.rb +151 -0
- data/app/helpers/rails_admin/application_helper.rb +123 -0
- data/app/helpers/rails_admin/form_builder.rb +104 -0
- data/app/helpers/rails_admin/main_helper.rb +36 -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/_secondary_navigation.html.haml +12 -0
- data/app/views/layouts/rails_admin/application.html.haml +39 -0
- data/app/views/rails_admin/main/_dashboard_history.html.haml +10 -0
- data/app/views/rails_admin/main/_delete_notice.html.haml +18 -0
- data/app/views/rails_admin/main/_form_colorpicker.html.haml +24 -0
- data/app/views/rails_admin/main/_form_datetime.html.haml +4 -0
- data/app/views/rails_admin/main/_form_enumeration.html.haml +4 -0
- data/app/views/rails_admin/main/_form_field.html.haml +1 -0
- data/app/views/rails_admin/main/_form_file_upload.html.haml +18 -0
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +59 -0
- data/app/views/rails_admin/main/_form_filtering_select.html.haml +47 -0
- data/app/views/rails_admin/main/_form_nested_many.html.haml +41 -0
- data/app/views/rails_admin/main/_form_nested_one.html.haml +35 -0
- data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +34 -0
- data/app/views/rails_admin/main/_form_text.html.haml +9 -0
- data/app/views/rails_admin/main/_submit_buttons.html.haml +15 -0
- data/app/views/rails_admin/main/bulk_delete.html.haml +11 -0
- data/app/views/rails_admin/main/dashboard.html.haml +31 -0
- data/app/views/rails_admin/main/delete.html.haml +18 -0
- data/app/views/rails_admin/main/edit.html.haml +2 -0
- data/app/views/rails_admin/main/export.html.haml +75 -0
- data/app/views/rails_admin/main/history.html.haml +42 -0
- data/app/views/rails_admin/main/index.html.haml +140 -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 +2 -0
- data/config/initializers/mongoid_extensions.rb +4 -0
- data/config/locales/fr.yml +24 -0
- data/config/locales/rails_admin.en.yml +130 -0
- data/config/routes.rb +12 -0
- data/lib/generators/rails_admin/install_generator.rb +84 -0
- data/lib/generators/rails_admin/templates/drop.rb +18 -0
- data/lib/generators/rails_admin/templates/initializer.erb +101 -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 +34 -0
- data/lib/rails_admin/abstract_model.rb +110 -0
- data/lib/rails_admin/adapters/active_record.rb +247 -0
- data/lib/rails_admin/adapters/active_record/abstract_object.rb +32 -0
- data/lib/rails_admin/adapters/mongoid.rb +333 -0
- data/lib/rails_admin/adapters/mongoid/abstract_object.rb +32 -0
- data/lib/rails_admin/adapters/mongoid/extension.rb +27 -0
- data/lib/rails_admin/config.rb +322 -0
- data/lib/rails_admin/config/actions.rb +121 -0
- data/lib/rails_admin/config/actions/base.rb +117 -0
- data/lib/rails_admin/config/actions/bulk_delete.rb +55 -0
- data/lib/rails_admin/config/actions/dashboard.rb +44 -0
- data/lib/rails_admin/config/actions/delete.rb +53 -0
- data/lib/rails_admin/config/actions/edit.rb +60 -0
- data/lib/rails_admin/config/actions/export.rb +40 -0
- data/lib/rails_admin/config/actions/history_index.rb +38 -0
- data/lib/rails_admin/config/actions/history_show.rb +38 -0
- data/lib/rails_admin/config/actions/index.rb +85 -0
- data/lib/rails_admin/config/actions/new.rb +64 -0
- data/lib/rails_admin/config/actions/show.rb +32 -0
- data/lib/rails_admin/config/actions/show_in_app.rb +28 -0
- data/lib/rails_admin/config/configurable.rb +92 -0
- data/lib/rails_admin/config/fields.rb +88 -0
- data/lib/rails_admin/config/fields/association.rb +108 -0
- data/lib/rails_admin/config/fields/base.rb +281 -0
- data/lib/rails_admin/config/fields/factories/belongs_to_association.rb +29 -0
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +31 -0
- data/lib/rails_admin/config/fields/factories/devise.rb +27 -0
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +27 -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/factories/serialized.rb +17 -0
- data/lib/rails_admin/config/fields/group.rb +78 -0
- data/lib/rails_admin/config/fields/types.rb +27 -0
- data/lib/rails_admin/config/fields/types/all.rb +26 -0
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +41 -0
- data/lib/rails_admin/config/fields/types/boolean.rb +31 -0
- data/lib/rails_admin/config/fields/types/bson_object_id.rb +42 -0
- data/lib/rails_admin/config/fields/types/carrierwave.rb +31 -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 +165 -0
- data/lib/rails_admin/config/fields/types/decimal.rb +14 -0
- data/lib/rails_admin/config/fields/types/dragonfly.rb +41 -0
- data/lib/rails_admin/config/fields/types/enum.rb +35 -0
- data/lib/rails_admin/config/fields/types/file_upload.rb +61 -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 +32 -0
- data/lib/rails_admin/config/fields/types/has_one_association.rb +39 -0
- data/lib/rails_admin/config/fields/types/hidden.rb +21 -0
- data/lib/rails_admin/config/fields/types/integer.rb +22 -0
- data/lib/rails_admin/config/fields/types/mongoid_type.rb +25 -0
- data/lib/rails_admin/config/fields/types/paperclip.rb +28 -0
- data/lib/rails_admin/config/fields/types/password.rb +39 -0
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +76 -0
- data/lib/rails_admin/config/fields/types/serialized.rb +22 -0
- data/lib/rails_admin/config/fields/types/string.rb +41 -0
- data/lib/rails_admin/config/fields/types/text.rb +36 -0
- data/lib/rails_admin/config/fields/types/time.rb +36 -0
- data/lib/rails_admin/config/fields/types/timestamp.rb +18 -0
- data/lib/rails_admin/config/groupable.rb +18 -0
- data/lib/rails_admin/config/has_fields.rb +135 -0
- data/lib/rails_admin/config/has_groups.rb +23 -0
- data/lib/rails_admin/config/hideable.rb +28 -0
- data/lib/rails_admin/config/model.rb +88 -0
- data/lib/rails_admin/config/proxyable.rb +12 -0
- data/lib/rails_admin/config/proxyable/proxy.rb +43 -0
- data/lib/rails_admin/config/sections.rb +38 -0
- data/lib/rails_admin/config/sections/base.rb +29 -0
- data/lib/rails_admin/config/sections/create.rb +11 -0
- data/lib/rails_admin/config/sections/edit.rb +11 -0
- data/lib/rails_admin/config/sections/export.rb +11 -0
- data/lib/rails_admin/config/sections/list.rb +27 -0
- data/lib/rails_admin/config/sections/nested.rb +10 -0
- data/lib/rails_admin/config/sections/show.rb +10 -0
- data/lib/rails_admin/config/sections/update.rb +10 -0
- data/lib/rails_admin/engine.rb +22 -0
- data/lib/rails_admin/extension.rb +29 -0
- data/lib/rails_admin/extensions/cancan.rb +5 -0
- data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +59 -0
- data/lib/rails_admin/extensions/history.rb +5 -0
- data/lib/rails_admin/extensions/history/auditing_adapter.rb +37 -0
- data/lib/rails_admin/extensions/history/history.rb +69 -0
- data/lib/rails_admin/extensions/paper_trail.rb +5 -0
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +92 -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 +180 -0
- data/spec/database_helpers.rb +15 -0
- data/spec/dummy_app/Gemfile +58 -0
- data/spec/dummy_app/Rakefile +7 -0
- data/spec/dummy_app/app/assets/images/rails.png +0 -0
- data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
- data/spec/dummy_app/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy_app/app/controllers/application_controller.rb +3 -0
- data/spec/dummy_app/app/controllers/players_controller.rb +5 -0
- data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_app/app/locales/models.en.yml +16 -0
- data/spec/dummy_app/app/models/abstract.rb +5 -0
- data/spec/dummy_app/app/models/article.rb +9 -0
- data/spec/dummy_app/app/models/author.rb +6 -0
- data/spec/dummy_app/app/models/ball.rb +8 -0
- data/spec/dummy_app/app/models/category.rb +3 -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 +12 -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 +20 -0
- data/spec/dummy_app/app/models/hardball.rb +2 -0
- data/spec/dummy_app/app/models/league.rb +10 -0
- data/spec/dummy_app/app/models/mongoid_field_test.rb +22 -0
- data/spec/dummy_app/app/models/nested_field_test.rb +6 -0
- data/spec/dummy_app/app/models/player.rb +23 -0
- data/spec/dummy_app/app/models/rel_test.rb +6 -0
- data/spec/dummy_app/app/models/tag.rb +7 -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 +14 -0
- data/spec/dummy_app/app/views/players/show.html.haml +1 -0
- data/spec/dummy_app/config.ru +4 -0
- data/spec/dummy_app/config/application.rb +62 -0
- data/spec/dummy_app/config/boot.rb +6 -0
- data/spec/dummy_app/config/database.yml +25 -0
- data/spec/dummy_app/config/environment.rb +5 -0
- data/spec/dummy_app/config/environments/development.rb +37 -0
- data/spec/dummy_app/config/environments/production.rb +67 -0
- data/spec/dummy_app/config/environments/test.rb +37 -0
- data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_app/config/initializers/devise.rb +148 -0
- data/spec/dummy_app/config/initializers/inflections.rb +15 -0
- data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
- data/spec/dummy_app/config/initializers/rails_admin.rb +11 -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/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_app/config/mongoid.yml +17 -0
- data/spec/dummy_app/config/routes.rb +10 -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 +49 -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/migrate/20111115041025_add_type_to_balls.rb +5 -0
- data/spec/dummy_app/db/migrate/20111123092549_create_nested_field_tests.rb +10 -0
- data/spec/dummy_app/db/migrate/20111130075338_add_dragonfly_asset_name_to_field_tests.rb +5 -0
- data/spec/dummy_app/db/migrate/20111215083258_create_foo_bars.rb +8 -0
- data/spec/dummy_app/db/migrate/20120117151733_add_custom_field_to_teams.rb +5 -0
- data/spec/dummy_app/db/migrate/20120118122004_add_categories.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 +26 -0
- data/spec/dummy_app/public/422.html +26 -0
- data/spec/dummy_app/public/500.html +25 -0
- data/spec/dummy_app/public/favicon.ico +0 -0
- data/spec/dummy_app/public/robots.txt +5 -0
- data/spec/dummy_app/public/system/dragonfly/development/2011/11/24/10_36_27_888_Pensive_Parakeet.jpg +0 -0
- data/spec/dummy_app/public/system/dragonfly/development/2011/11/24/10_36_27_888_Pensive_Parakeet.jpg.meta +1 -0
- data/spec/dummy_app/public/system/dragonfly/development/2011/11/30/08_54_39_906_Costa_Rican_Frog.jpg +0 -0
- data/spec/dummy_app/public/system/dragonfly/development/2011/11/30/08_54_39_906_Costa_Rican_Frog.jpg.meta +1 -0
- data/spec/dummy_app/public/system/paperclip_assets/1/original/Boston City Flow.jpg +0 -0
- data/spec/dummy_app/public/system/paperclip_assets/1/thumb/Boston City Flow.jpg +0 -0
- data/spec/dummy_app/public/system/paperclip_assets/3/original/Costa Rican Frog.jpg +0 -0
- data/spec/dummy_app/public/system/paperclip_assets/3/thumb/Costa Rican Frog.jpg +0 -0
- data/spec/dummy_app/public/system/paperclip_assets/6/original/liste-electorale.pdf +0 -0
- data/spec/dummy_app/public/system/paperclip_assets/6/thumb/liste-electorale.pdf +148 -0
- data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/3/Boston_City_Flow.jpg +0 -0
- data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/3/thumb_Boston_City_Flow.jpg +0 -0
- data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/4/Costa_Rican_Frog.jpg +0 -0
- data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/4/thumb_Costa_Rican_Frog.jpg +0 -0
- data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/6/Pensive_Parakeet.jpg +0 -0
- data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/6/thumb_Pensive_Parakeet.jpg +0 -0
- data/spec/dummy_app/script/rails +6 -0
- data/spec/factories.rb +89 -0
- data/spec/helpers/application_helper_spec.rb +277 -0
- data/spec/integration/authorization/cancan_spec.rb +349 -0
- data/spec/integration/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +25 -0
- data/spec/integration/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +44 -0
- data/spec/integration/basic/create/rails_admin_basic_create_spec.rb +154 -0
- data/spec/integration/basic/create/rails_admin_namespaced_model_create_spec.rb +23 -0
- data/spec/integration/basic/delete/rails_admin_basic_delete_spec.rb +27 -0
- data/spec/integration/basic/destroy/rails_admin_basic_destroy_spec.rb +56 -0
- data/spec/integration/basic/edit/rails_admin_basic_edit_spec.rb +109 -0
- data/spec/integration/basic/export/rails_admin_basic_export_spec.rb +87 -0
- data/spec/integration/basic/list/rails_admin_basic_list_spec.rb +392 -0
- data/spec/integration/basic/new/rails_admin_basic_new_spec.rb +74 -0
- data/spec/integration/basic/new/rails_admin_namespaced_model_new_spec.rb +31 -0
- data/spec/integration/basic/show/rails_admin_basic_show_spec.rb +91 -0
- data/spec/integration/basic/update/rails_admin_basic_update_spec.rb +219 -0
- data/spec/integration/config/edit/rails_admin_config_edit_spec.rb +954 -0
- data/spec/integration/config/list/rails_admin_config_list_spec.rb +509 -0
- data/spec/integration/config/show/rails_admin_config_show_spec.rb +302 -0
- data/spec/integration/history/rails_admin_history_spec.rb +66 -0
- data/spec/integration/rails_admin_spec.rb +113 -0
- data/spec/integration/relation_spec.rb +26 -0
- data/spec/spec_helper.rb +86 -0
- data/spec/support/tableless.rb +27 -0
- data/spec/unit/adapters/active_record/abstract_object_spec.rb +131 -0
- data/spec/unit/adapters/active_record_spec.rb +373 -0
- data/spec/unit/adapters/mongoid/abstract_object_spec.rb +30 -0
- data/spec/unit/adapters/mongoid_spec.rb +581 -0
- data/spec/unit/config/actions_spec.rb +181 -0
- data/spec/unit/config/fields/base_spec.rb +300 -0
- data/spec/unit/config/model_spec.rb +75 -0
- data/spec/unit/config/sections_spec.rb +123 -0
- data/spec/unit/config_spec.rb +273 -0
- metadata +823 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/base'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Fields
|
|
6
|
+
module Types
|
|
7
|
+
class Hidden < RailsAdmin::Config::Fields::Base
|
|
8
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
9
|
+
|
|
10
|
+
register_instance_option :view_helper do
|
|
11
|
+
:hidden_field
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
register_instance_option(:partial) do
|
|
15
|
+
:form_field
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/base'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Fields
|
|
6
|
+
module Types
|
|
7
|
+
class Integer < RailsAdmin::Config::Fields::Base
|
|
8
|
+
# Register field type for the type loader
|
|
9
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
10
|
+
|
|
11
|
+
register_instance_option :view_helper do
|
|
12
|
+
:number_field
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
register_instance_option(:sort_reverse?) do
|
|
16
|
+
serial?
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/types/string'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Fields
|
|
6
|
+
module Types
|
|
7
|
+
class MongoidType < RailsAdmin::Config::Fields::Types::String
|
|
8
|
+
# Register field type for the type loader
|
|
9
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
10
|
+
|
|
11
|
+
register_instance_option(:label) do
|
|
12
|
+
"Type"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
register_instance_option(:visible) do
|
|
16
|
+
false
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/base'
|
|
2
|
+
require 'rails_admin/config/fields/types/file_upload'
|
|
3
|
+
|
|
4
|
+
module RailsAdmin
|
|
5
|
+
module Config
|
|
6
|
+
module Fields
|
|
7
|
+
module Types
|
|
8
|
+
# Field type that supports Paperclip file uploads
|
|
9
|
+
class Paperclip < RailsAdmin::Config::Fields::Types::FileUpload
|
|
10
|
+
RailsAdmin::Config::Fields::Types.register(self)
|
|
11
|
+
|
|
12
|
+
register_instance_option(:delete_method) do
|
|
13
|
+
"delete_#{name}" if bindings[:object].respond_to?("delete_#{name}")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
register_instance_option(:thumb_method) do
|
|
17
|
+
@styles ||= bindings[:object].send(name).styles.map(&:first)
|
|
18
|
+
@thumb_method ||= @styles.find{|s| [:thumb, 'thumb', :thumbnail, 'thumbnail'].include?(s)} || @styles.first || :original
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def resource_url(thumb = false)
|
|
22
|
+
value.try(:url, (thumb || :original))
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/types/string'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Fields
|
|
6
|
+
module Types
|
|
7
|
+
class Password < RailsAdmin::Config::Fields::Types::String
|
|
8
|
+
# Register field type for the type loader
|
|
9
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
10
|
+
|
|
11
|
+
register_instance_option :view_helper do
|
|
12
|
+
:password_field
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def parse_input(params)
|
|
16
|
+
params[name] = params[name].presence
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
register_instance_option :formatted_value do
|
|
20
|
+
"".html_safe
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Password field's value does not need to be read
|
|
24
|
+
def value
|
|
25
|
+
""
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
register_instance_option :visible do
|
|
29
|
+
self.section.is_a?(RailsAdmin::Config::Sections::Edit)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
register_instance_option :pretty_value do
|
|
33
|
+
'*****'
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/types/belongs_to_association'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Fields
|
|
6
|
+
module Types
|
|
7
|
+
class PolymorphicAssociation < RailsAdmin::Config::Fields::Types::BelongsToAssociation
|
|
8
|
+
# Register field type for the type loader
|
|
9
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
10
|
+
|
|
11
|
+
register_instance_option(:partial) do
|
|
12
|
+
:form_polymorphic_association
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Accessor whether association is visible or not. By default
|
|
16
|
+
# association checks that any of the child models are included in
|
|
17
|
+
# configuration.
|
|
18
|
+
register_instance_option(:visible?) do
|
|
19
|
+
associated_model_config.length > 0
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
register_instance_option(:sortable) do
|
|
23
|
+
false
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
register_instance_option(:searchable) do
|
|
27
|
+
false
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# TODO not supported yet
|
|
31
|
+
register_instance_option :associated_collection_cache_all do
|
|
32
|
+
false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# TODO not supported yet
|
|
36
|
+
register_instance_option :associated_collection_scope do
|
|
37
|
+
nil
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def associated_collection(type)
|
|
41
|
+
return [] if type.blank?
|
|
42
|
+
config = RailsAdmin.config(type)
|
|
43
|
+
config.abstract_model.all.map do |object|
|
|
44
|
+
[object.send(config.object_label_method), object.id]
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def associated_model_config
|
|
49
|
+
@associated_model_config ||= association[:model_proc].call.map{|type| RailsAdmin.config(type) }.select{|config| !config.excluded? }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def polymorphic_type_collection
|
|
53
|
+
associated_model_config.map do |config|
|
|
54
|
+
[config.label, config.abstract_model.model.name]
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def polymorphic_type_urls
|
|
59
|
+
types = associated_model_config.map do |config|
|
|
60
|
+
[config.abstract_model.model.name, config.abstract_model.to_param]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
::Hash[*types.collect { |v|
|
|
64
|
+
[v[0], bindings[:view].index_path(v[1])]
|
|
65
|
+
}.flatten]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Reader for field's value
|
|
69
|
+
def value
|
|
70
|
+
bindings[:object].send(association[:name])
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/types/text'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Fields
|
|
6
|
+
module Types
|
|
7
|
+
class Serialized < RailsAdmin::Config::Fields::Types::Text
|
|
8
|
+
# Register field type for the type loader
|
|
9
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
10
|
+
|
|
11
|
+
register_instance_option :formatted_value do
|
|
12
|
+
YAML.dump value
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def parse_input(params)
|
|
16
|
+
params[name] = (params[name].blank? ? nil : YAML.load(params[name])) if params[name].is_a?(::String)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/base'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Fields
|
|
6
|
+
module Types
|
|
7
|
+
class String < RailsAdmin::Config::Fields::Base
|
|
8
|
+
|
|
9
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
10
|
+
|
|
11
|
+
register_instance_option(:html_attributes) do
|
|
12
|
+
{
|
|
13
|
+
:maxlength => length,
|
|
14
|
+
:size => [50, length.to_i].min
|
|
15
|
+
}
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
register_instance_option(:help) do
|
|
19
|
+
text = (required? ? I18n.translate("admin.form.required") : I18n.translate("admin.form.optional")) + '. '
|
|
20
|
+
if valid_length.present? && valid_length[:is].present?
|
|
21
|
+
text += "#{I18n.translate("admin.form.char_length_of").capitalize} #{valid_length[:is]}."
|
|
22
|
+
else
|
|
23
|
+
max_length = [length, valid_length[:maximum] || nil].compact.min
|
|
24
|
+
min_length = [0, valid_length[:minimum] || nil].compact.max
|
|
25
|
+
if min_length == 0
|
|
26
|
+
text += "#{I18n.translate("admin.form.char_length_up_to").capitalize} #{max_length}."
|
|
27
|
+
else
|
|
28
|
+
text += "#{I18n.translate("admin.form.char_length_of").capitalize} #{min_length}-#{max_length}."
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
text
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
register_instance_option(:partial) do
|
|
35
|
+
:form_field
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/base'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Fields
|
|
6
|
+
module Types
|
|
7
|
+
class Text < RailsAdmin::Config::Fields::Base
|
|
8
|
+
# Register field type for the type loader
|
|
9
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
10
|
+
|
|
11
|
+
# CKEditor is disabled by default
|
|
12
|
+
register_instance_option(:ckeditor) do
|
|
13
|
+
false
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# If you want to have a different toolbar configuration for CKEditor
|
|
17
|
+
# create your own custom config.js and override this configuration
|
|
18
|
+
register_instance_option(:ckeditor_config_js) do
|
|
19
|
+
"/assets/ckeditor/config.js"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
register_instance_option(:html_attributes) do
|
|
23
|
+
{
|
|
24
|
+
:cols => "48",
|
|
25
|
+
:rows => "3"
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
register_instance_option(:partial) do
|
|
30
|
+
:form_text
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/types/datetime'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Fields
|
|
6
|
+
module Types
|
|
7
|
+
class Time < RailsAdmin::Config::Fields::Types::Datetime
|
|
8
|
+
# Register field type for the type loader
|
|
9
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
10
|
+
|
|
11
|
+
@format = :short
|
|
12
|
+
@i18n_scope = [:time, :formats]
|
|
13
|
+
@js_plugin_options = {
|
|
14
|
+
"showDate" => false,
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
# Register field type for the type loader
|
|
18
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
19
|
+
|
|
20
|
+
def parse_input(params)
|
|
21
|
+
params[name] = self.class.normalize(params[name], localized_time_format) if params[name].present?
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Parse normalized date (time) strings using UTC
|
|
25
|
+
def self.parse_date_string(date_string)
|
|
26
|
+
::DateTime.parse(date_string)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
register_instance_option(:strftime_format) do
|
|
30
|
+
(localized_format.include? "%p") ? "%I:%M %p" : "%H:%M"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/types/datetime'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Fields
|
|
6
|
+
module Types
|
|
7
|
+
class Timestamp < RailsAdmin::Config::Fields::Types::Datetime
|
|
8
|
+
# Register field type for the type loader
|
|
9
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
|
10
|
+
|
|
11
|
+
@format = :long
|
|
12
|
+
@i18n_scope = [:time, :formats]
|
|
13
|
+
@js_plugin_options = {}
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/group'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Groupable
|
|
6
|
+
# Register a group instance variable and accessor methods for objects
|
|
7
|
+
# extending the has groups mixin. The extended objects must implement
|
|
8
|
+
# reader for a parent object which includes this module.
|
|
9
|
+
#
|
|
10
|
+
# @see RailsAdmin::Config::HasGroups.group
|
|
11
|
+
# @see RailsAdmin::Config::Fields::Group
|
|
12
|
+
def group(name = nil)
|
|
13
|
+
@group = parent.group(name) unless name.nil? # setter
|
|
14
|
+
@group ||= parent.group(:default) # getter
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
module RailsAdmin
|
|
2
|
+
module Config
|
|
3
|
+
# Provides accessors and autoregistering of model's fields.
|
|
4
|
+
module HasFields
|
|
5
|
+
# Defines a configuration for a field.
|
|
6
|
+
def field(name, type = nil, add_to_section = true, &block)
|
|
7
|
+
field = _fields.find {|f| name == f.name }
|
|
8
|
+
|
|
9
|
+
# some fields are hidden by default (belongs_to keys, has_many associations in list views.)
|
|
10
|
+
# unhide them if config specifically defines them
|
|
11
|
+
field.show if field.try(:hidden?)
|
|
12
|
+
|
|
13
|
+
# Specify field as virtual if type is not specifically set and field was not
|
|
14
|
+
# found in default stack
|
|
15
|
+
if field.nil? && type.nil?
|
|
16
|
+
field = (_fields << RailsAdmin::Config::Fields::Types.load(:string).new(self, name, {})).last
|
|
17
|
+
|
|
18
|
+
# Register a custom field type if one is provided and it is different from
|
|
19
|
+
# one found in default stack
|
|
20
|
+
elsif !type.nil? && type != (field.nil? ? nil : field.type)
|
|
21
|
+
_fields.delete(field) unless field.nil?
|
|
22
|
+
properties = abstract_model.properties.find {|p| name == p[:name] }
|
|
23
|
+
field = (_fields << RailsAdmin::Config::Fields::Types.load(type).new(self, name, properties)).last
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# If field has not been yet defined add some default properties
|
|
27
|
+
if add_to_section && !field.defined
|
|
28
|
+
field.defined = true
|
|
29
|
+
field.order = _fields.select(&:defined).length
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# If a block has been given evaluate it and sort fields after that
|
|
33
|
+
if block
|
|
34
|
+
field.instance_eval &block
|
|
35
|
+
end
|
|
36
|
+
field
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# configure a field without adding it.
|
|
40
|
+
def configure(name, type = nil, &block)
|
|
41
|
+
field(name, type, false, &block)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# include fields by name and apply an optionnal block to each (through a call to fields),
|
|
45
|
+
# or include fields by conditions if no field names
|
|
46
|
+
def include_fields(*field_names, &block)
|
|
47
|
+
if field_names.empty?
|
|
48
|
+
_fields.select {|f| f.instance_eval &block }.each do |f|
|
|
49
|
+
unless f.defined
|
|
50
|
+
f.defined = true
|
|
51
|
+
f.order = _fields.select(&:defined).length
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
else
|
|
55
|
+
fields(*field_names, &block)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# exclude fields by name or by condition (block)
|
|
60
|
+
def exclude_fields(*field_names, &block)
|
|
61
|
+
block ||= lambda { |f| field_names.include?(f.name) }
|
|
62
|
+
_fields.each {|f| f.defined = true } if _fields.select(&:defined).empty?
|
|
63
|
+
_fields.select {|f| f.instance_eval &block }.each {|f| f.defined = false }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# API candy
|
|
67
|
+
alias :exclude_fields_if :exclude_fields
|
|
68
|
+
alias :include_fields_if :include_fields
|
|
69
|
+
|
|
70
|
+
def include_all_fields
|
|
71
|
+
include_fields_if() { true }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
# Returns all field configurations for the model configuration instance. If no fields
|
|
76
|
+
# have been defined returns all fields. Defined fields are sorted to match their
|
|
77
|
+
# order property. If order was not specified it will match the order in which fields
|
|
78
|
+
# were defined.
|
|
79
|
+
#
|
|
80
|
+
# If a block is passed it will be evaluated in the context of each field
|
|
81
|
+
def fields(*field_names,&block)
|
|
82
|
+
return all_fields if field_names.empty? && !block
|
|
83
|
+
|
|
84
|
+
if field_names.empty?
|
|
85
|
+
defined = _fields.select {|f| f.defined }
|
|
86
|
+
defined = _fields if defined.empty?
|
|
87
|
+
else
|
|
88
|
+
defined = field_names.map{|field_name| _fields.find {|f| f.name == field_name } }
|
|
89
|
+
end
|
|
90
|
+
defined.map do |f|
|
|
91
|
+
unless f.defined
|
|
92
|
+
f.defined = true
|
|
93
|
+
f.order = _fields.select(&:defined).length
|
|
94
|
+
end
|
|
95
|
+
f.instance_eval(&block) if block
|
|
96
|
+
f
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Defines configuration for fields by their type.
|
|
101
|
+
def fields_of_type(type, &block)
|
|
102
|
+
_fields.select {|f| type == f.type }.map! {|f| f.instance_eval &block } if block
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Accessor for all fields
|
|
106
|
+
def all_fields
|
|
107
|
+
((ro_fields = _fields(true)).select(&:defined).presence || ro_fields).map{|f| f.section = self; f }
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Get all fields defined as visible, in the correct order.
|
|
111
|
+
def visible_fields
|
|
112
|
+
i = 0
|
|
113
|
+
all_fields.map {|f| f.with(bindings) }.select(&:visible?).sort_by{|f| [f.order, i += 1] } # stable sort, damn
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
protected
|
|
117
|
+
|
|
118
|
+
# Raw fields.
|
|
119
|
+
# Recursively returns parent section's raw fields
|
|
120
|
+
# Duping it if accessed for modification.
|
|
121
|
+
def _fields(readonly = false)
|
|
122
|
+
return @_fields if @_fields
|
|
123
|
+
return @_ro_fields if readonly && @_ro_fields
|
|
124
|
+
|
|
125
|
+
unless self.class == RailsAdmin::Config::Sections::Base
|
|
126
|
+
# parent is RailsAdmin::Config::Model, recursion is on Section's classes
|
|
127
|
+
@_ro_fields ||= parent.send(self.class.superclass.to_s.underscore.split('/').last)._fields(true).freeze
|
|
128
|
+
else # recursion tail
|
|
129
|
+
@_ro_fields = @_fields = RailsAdmin::Config::Fields.factory(self)
|
|
130
|
+
end
|
|
131
|
+
readonly ? @_ro_fields : (@_fields ||= @_ro_fields.map(&:clone))
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|