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,23 @@
|
|
|
1
|
+
require 'rails_admin/config/fields/group'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module HasGroups
|
|
6
|
+
# Accessor for a group
|
|
7
|
+
#
|
|
8
|
+
# If group with given name does not yet exist it will be created. If a
|
|
9
|
+
# block is passed it will be evaluated in the context of the group
|
|
10
|
+
def group(name, &block)
|
|
11
|
+
group = parent.groups.find {|g| name == g.name }
|
|
12
|
+
group ||= (parent.groups << RailsAdmin::Config::Fields::Group.new(self, name)).last
|
|
13
|
+
group.tap{|g| g.section = self}.instance_eval &block if block
|
|
14
|
+
group
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Reader for groups that are marked as visible
|
|
18
|
+
def visible_groups
|
|
19
|
+
parent.groups.map {|f| f.section = self; f.with(bindings) }.select(&:visible?).select{|g| g.visible_fields.present?}
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module RailsAdmin
|
|
2
|
+
module Config
|
|
3
|
+
# Defines a visibility configuration
|
|
4
|
+
module Hideable
|
|
5
|
+
# Visibility defaults to true.
|
|
6
|
+
def self.included(klass)
|
|
7
|
+
klass.register_instance_option(:visible?) do
|
|
8
|
+
!root.try :excluded?
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Reader whether object is hidden.
|
|
13
|
+
def hidden?
|
|
14
|
+
not visible
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Writer to hide object.
|
|
18
|
+
def hide(&block)
|
|
19
|
+
visible block ? proc { false == (instance_eval &block) } : false
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Writer to show field.
|
|
23
|
+
def show(&block)
|
|
24
|
+
visible block || true
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
require 'rails_admin/config'
|
|
2
|
+
require 'rails_admin/config/proxyable'
|
|
3
|
+
require 'rails_admin/config/configurable'
|
|
4
|
+
require 'rails_admin/config/hideable'
|
|
5
|
+
require 'rails_admin/config/has_groups'
|
|
6
|
+
require 'rails_admin/config/fields/group'
|
|
7
|
+
require 'rails_admin/config/fields'
|
|
8
|
+
require 'rails_admin/config/has_fields'
|
|
9
|
+
require 'rails_admin/config/sections'
|
|
10
|
+
require 'rails_admin/config/actions'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module RailsAdmin
|
|
14
|
+
module Config
|
|
15
|
+
# Model specific configuration object.
|
|
16
|
+
class Model
|
|
17
|
+
include RailsAdmin::Config::Proxyable
|
|
18
|
+
include RailsAdmin::Config::Configurable
|
|
19
|
+
include RailsAdmin::Config::Hideable
|
|
20
|
+
include RailsAdmin::Config::Sections
|
|
21
|
+
|
|
22
|
+
attr_reader :abstract_model
|
|
23
|
+
attr_accessor :groups
|
|
24
|
+
attr_reader :parent, :root
|
|
25
|
+
|
|
26
|
+
def initialize(entity)
|
|
27
|
+
@parent = nil
|
|
28
|
+
@root = self
|
|
29
|
+
|
|
30
|
+
@abstract_model = begin
|
|
31
|
+
if entity.kind_of?(RailsAdmin::AbstractModel)
|
|
32
|
+
entity
|
|
33
|
+
elsif entity.kind_of?(Class) || entity.kind_of?(String) || entity.kind_of?(Symbol)
|
|
34
|
+
RailsAdmin::AbstractModel.new(entity)
|
|
35
|
+
else
|
|
36
|
+
RailsAdmin::AbstractModel.new(entity.class)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
@groups = [ RailsAdmin::Config::Fields::Group.new(self, :default).tap {|g| g.label{I18n.translate("admin.form.basic_info")} } ]
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def excluded?
|
|
43
|
+
@excluded ||= !RailsAdmin::AbstractModel.all.map(&:model_name).include?(abstract_model.try(:model_name))
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def object_label
|
|
47
|
+
bindings[:object].send object_label_method
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# The display for a model instance (i.e. a single database record).
|
|
51
|
+
# Unless configured in a model config block, it'll try to use :name followed by :title methods, then
|
|
52
|
+
# any methods that may have been added to the label_methods array via Configuration.
|
|
53
|
+
# Failing all of these, it'll return the class name followed by the model's id.
|
|
54
|
+
register_instance_option :object_label_method do
|
|
55
|
+
@object_label_method ||= Config.label_methods.find { |method| (@dummy_object ||= abstract_model.model.new).respond_to? method } || :rails_admin_default_object_label_method
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
register_instance_option :label do
|
|
59
|
+
(@label ||= {})[::I18n.locale] ||= abstract_model.model.model_name.human(:default => abstract_model.model.model_name.demodulize.underscore.humanize)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
register_instance_option :label_plural do
|
|
63
|
+
(@label_plural ||= {})[::I18n.locale] ||= abstract_model.model.model_name.human(:count => 2, :default => label.pluralize)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
register_instance_option :weight do
|
|
67
|
+
0
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# parent node in navigation/breadcrumb
|
|
71
|
+
register_instance_option :parent do
|
|
72
|
+
@parent_model ||= begin
|
|
73
|
+
(klass = abstract_model.model.superclass).to_s.in?(['Object', 'BasicObject', 'ActiveRecord::Base']) ? nil : klass
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
register_instance_option :navigation_label do
|
|
78
|
+
@navigation_label ||= (parent_module = abstract_model.model.parent) != Object ? parent_module.to_s : nil
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Act as a proxy for the base section configuration that actually
|
|
82
|
+
# store the configurations.
|
|
83
|
+
def method_missing(m, *args, &block)
|
|
84
|
+
self.send(:base).send(m, *args, &block)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module RailsAdmin
|
|
2
|
+
module Config
|
|
3
|
+
module Proxyable
|
|
4
|
+
|
|
5
|
+
class Proxy
|
|
6
|
+
|
|
7
|
+
instance_methods.each {|m| undef_method m unless m =~ /^(__|instance_eval|object_id)/ }
|
|
8
|
+
|
|
9
|
+
attr_reader :bindings
|
|
10
|
+
|
|
11
|
+
def initialize(object, bindings = {})
|
|
12
|
+
@object = object
|
|
13
|
+
@bindings = bindings
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Bind variables to be used by the configuration options
|
|
17
|
+
def bind(key, value = nil)
|
|
18
|
+
if key.kind_of?(Hash)
|
|
19
|
+
@bindings = key
|
|
20
|
+
else
|
|
21
|
+
@bindings[key] = value
|
|
22
|
+
end
|
|
23
|
+
self
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def method_missing(name, *args, &block)
|
|
27
|
+
if @object.respond_to?(name)
|
|
28
|
+
reset = @object.instance_variable_get("@bindings")
|
|
29
|
+
begin
|
|
30
|
+
@object.instance_variable_set("@bindings", @bindings)
|
|
31
|
+
response = @object.__send__(name, *args, &block)
|
|
32
|
+
ensure
|
|
33
|
+
@object.instance_variable_set("@bindings", @reset)
|
|
34
|
+
end
|
|
35
|
+
response
|
|
36
|
+
else
|
|
37
|
+
super(name, *args, &block)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
|
2
|
+
require 'rails_admin/config/sections/base'
|
|
3
|
+
require 'rails_admin/config/sections/edit'
|
|
4
|
+
require 'rails_admin/config/sections/update'
|
|
5
|
+
require 'rails_admin/config/sections/create'
|
|
6
|
+
require 'rails_admin/config/sections/nested'
|
|
7
|
+
require 'rails_admin/config/sections/list'
|
|
8
|
+
require 'rails_admin/config/sections/export'
|
|
9
|
+
require 'rails_admin/config/sections/show'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
module RailsAdmin
|
|
13
|
+
module Config
|
|
14
|
+
# Sections describe different views in the RailsAdmin engine. Configurable sections are
|
|
15
|
+
# list and navigation.
|
|
16
|
+
#
|
|
17
|
+
# Each section's class object can store generic configuration about that section (such as the
|
|
18
|
+
# number of visible tabs in the main navigation), while the instances (accessed via model
|
|
19
|
+
# configuration objects) store model specific configuration (such as the visibility of the
|
|
20
|
+
# model).
|
|
21
|
+
module Sections
|
|
22
|
+
def self.included(klass)
|
|
23
|
+
# Register accessors for all the sections in this namespace
|
|
24
|
+
constants.each do |name|
|
|
25
|
+
section = "RailsAdmin::Config::Sections::#{name}".constantize
|
|
26
|
+
name = name.to_s.underscore.to_sym
|
|
27
|
+
klass.send(:define_method, name) do |&block|
|
|
28
|
+
@sections = {} unless @sections
|
|
29
|
+
@sections[name] = section.new(self) unless @sections[name]
|
|
30
|
+
@sections[name].instance_eval &block if block
|
|
31
|
+
@sections[name]
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'rails_admin/config/proxyable'
|
|
2
|
+
require 'rails_admin/config/configurable'
|
|
3
|
+
require 'rails_admin/config/has_fields'
|
|
4
|
+
require 'rails_admin/config/has_groups'
|
|
5
|
+
|
|
6
|
+
module RailsAdmin
|
|
7
|
+
module Config
|
|
8
|
+
module Sections
|
|
9
|
+
# Configuration of the show view for a new object
|
|
10
|
+
class Base
|
|
11
|
+
include RailsAdmin::Config::Proxyable
|
|
12
|
+
include RailsAdmin::Config::Configurable
|
|
13
|
+
|
|
14
|
+
include RailsAdmin::Config::HasFields
|
|
15
|
+
include RailsAdmin::Config::HasGroups
|
|
16
|
+
|
|
17
|
+
attr_reader :abstract_model
|
|
18
|
+
attr_reader :parent, :root
|
|
19
|
+
|
|
20
|
+
def initialize(parent)
|
|
21
|
+
@parent = parent
|
|
22
|
+
@root = parent.root
|
|
23
|
+
|
|
24
|
+
@abstract_model = root.abstract_model
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'rails_admin/config/sections/base'
|
|
2
|
+
|
|
3
|
+
module RailsAdmin
|
|
4
|
+
module Config
|
|
5
|
+
module Sections
|
|
6
|
+
# Configuration of the list view
|
|
7
|
+
class List < RailsAdmin::Config::Sections::Base
|
|
8
|
+
register_instance_option :filters do
|
|
9
|
+
[]
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Number of items listed per page
|
|
13
|
+
register_instance_option :items_per_page do
|
|
14
|
+
RailsAdmin::Config.default_items_per_page
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
register_instance_option :sort_by do
|
|
18
|
+
parent.abstract_model.model.primary_key
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
register_instance_option :sort_reverse? do
|
|
22
|
+
true # By default show latest first
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'rails'
|
|
2
|
+
require 'jquery-rails'
|
|
3
|
+
require 'remotipart'
|
|
4
|
+
require 'bootstrap-sass'
|
|
5
|
+
require 'kaminari'
|
|
6
|
+
require 'rack-pjax'
|
|
7
|
+
require 'jquery-ui-rails'
|
|
8
|
+
require 'nested_form'
|
|
9
|
+
require 'rails_admin'
|
|
10
|
+
|
|
11
|
+
module RailsAdmin
|
|
12
|
+
class Engine < Rails::Engine
|
|
13
|
+
isolate_namespace RailsAdmin
|
|
14
|
+
initializer "RailsAdmin precompile hook" do |app|
|
|
15
|
+
app.config.assets.precompile += ['rails_admin/rails_admin.js', 'rails_admin/rails_admin.css', 'rails_admin/jquery.colorpicker.js', 'rails_admin/jquery.colorpicker.css']
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
initializer "RailsAdmin pjax hook" do |app|
|
|
19
|
+
app.config.middleware.use Rack::Pjax
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
|
|
2
|
+
module RailsAdmin
|
|
3
|
+
EXTENSIONS = []
|
|
4
|
+
AUTHORIZATION_ADAPTERS = {}
|
|
5
|
+
AUDITING_ADAPTERS = {}
|
|
6
|
+
CONFIGURATION_ADAPTERS = {}
|
|
7
|
+
|
|
8
|
+
# Extend RailsAdmin
|
|
9
|
+
#
|
|
10
|
+
# The extension may define various adapters (e.g., for authorization) and
|
|
11
|
+
# register those via the options hash.
|
|
12
|
+
def self.add_extension(extension_key, extension_definition, options = {})
|
|
13
|
+
options.assert_valid_keys(:authorization, :configuration, :auditing)
|
|
14
|
+
|
|
15
|
+
EXTENSIONS << extension_key
|
|
16
|
+
|
|
17
|
+
if(authorization = options[:authorization])
|
|
18
|
+
AUTHORIZATION_ADAPTERS[extension_key] = extension_definition::AuthorizationAdapter
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
if(configuration = options[:configuration])
|
|
22
|
+
CONFIGURATION_ADAPTERS[extension_key] = extension_definition::ConfigurationAdapter
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
if(configuration = options[:auditing])
|
|
26
|
+
AUDITING_ADAPTERS[extension_key] = extension_definition::AuditingAdapter
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module RailsAdmin
|
|
2
|
+
module Extensions
|
|
3
|
+
module CanCan
|
|
4
|
+
# This adapter is for the CanCan[https://github.com/ryanb/cancan] authorization library.
|
|
5
|
+
# You can create another adapter for different authorization behavior, just be certain it
|
|
6
|
+
# responds to each of the public methods here.
|
|
7
|
+
class AuthorizationAdapter
|
|
8
|
+
# See the +authorize_with+ config method for where the initialization happens.
|
|
9
|
+
def initialize(controller, ability = ::Ability)
|
|
10
|
+
@controller = controller
|
|
11
|
+
@controller.instance_variable_set '@ability', ability
|
|
12
|
+
@controller.extend ControllerExtension
|
|
13
|
+
@controller.current_ability.authorize! :access, :rails_admin
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# This method is called in every controller action and should raise an exception
|
|
17
|
+
# when the authorization fails. The first argument is the name of the controller
|
|
18
|
+
# action as a symbol (:create, :bulk_delete, etc.). The second argument is the
|
|
19
|
+
# AbstractModel instance that applies. The third argument is the actual model
|
|
20
|
+
# instance if it is available.
|
|
21
|
+
def authorize(action, abstract_model = nil, model_object = nil)
|
|
22
|
+
@controller.current_ability.authorize!(action, model_object || abstract_model && abstract_model.model) if action
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# This method is called primarily from the view to determine whether the given user
|
|
26
|
+
# has access to perform the action on a given model. It should return true when authorized.
|
|
27
|
+
# This takes the same arguments as +authorize+. The difference is that this will
|
|
28
|
+
# return a boolean whereas +authorize+ will raise an exception when not authorized.
|
|
29
|
+
def authorized?(action, abstract_model = nil, model_object = nil)
|
|
30
|
+
@controller.current_ability.can?(action, model_object || abstract_model && abstract_model.model) if action
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# This is called when needing to scope a database query. It is called within the list
|
|
34
|
+
# and bulk_delete/destroy actions and should return a scope which limits the records
|
|
35
|
+
# to those which the user can perform the given action on.
|
|
36
|
+
def query(action, abstract_model)
|
|
37
|
+
abstract_model.model.accessible_by(@controller.current_ability, action)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# This is called in the new/create actions to determine the initial attributes for new
|
|
41
|
+
# records. It should return a hash of attributes which match what the user
|
|
42
|
+
# is authorized to create.
|
|
43
|
+
def attributes_for(action, abstract_model)
|
|
44
|
+
@controller.current_ability.attributes_for(action, abstract_model && abstract_model.model)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
module ControllerExtension
|
|
50
|
+
def current_ability
|
|
51
|
+
# use _current_user instead of default current_user so it works with
|
|
52
|
+
# whatever current user method is defined with RailsAdmin
|
|
53
|
+
@current_ability ||= @ability.new(_current_user)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|