rails_admin-lbgraham 0.4.2
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 +51 -0
- data/LICENSE.md +20 -0
- data/README.md +175 -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 +743 -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 +142 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +292 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +190 -0
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +41 -0
- data/app/assets/javascripts/rails_admin/ra.remote-form.js +151 -0
- data/app/assets/javascripts/rails_admin/ra.widgets.coffee +210 -0
- data/app/assets/javascripts/rails_admin/rails_admin.js.erb +28 -0
- data/app/assets/javascripts/rails_admin/themes/cerulean/ui.js +0 -0
- data/app/assets/javascripts/rails_admin/themes/default/ui.js +12 -0
- data/app/assets/javascripts/rails_admin/ui.js.coffee +66 -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.txt +2 -0
- data/app/assets/stylesheets/rails_admin/base/mixins.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/base/theming.css.scss +270 -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 +82 -0
- data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +182 -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 +90 -0
- data/app/assets/stylesheets/rails_admin/ra.widgets.css.scss +8 -0
- data/app/assets/stylesheets/rails_admin/rails_admin.css +4 -0
- data/app/assets/stylesheets/rails_admin/themes/cerulean/mixins.css.scss +0 -0
- data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.css.scss +97 -0
- data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.css.scss +168 -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 +84 -0
- data/app/controllers/rails_admin/main_controller.rb +153 -0
- data/app/helpers/rails_admin/application_helper.rb +147 -0
- data/app/helpers/rails_admin/form_builder.rb +117 -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 +27 -0
- data/app/views/layouts/rails_admin/pjax.html.haml +16 -0
- data/app/views/rails_admin/main/_dashboard_history.html.haml +20 -0
- data/app/views/rails_admin/main/_delete_notice.html.haml +19 -0
- data/app/views/rails_admin/main/_form_colorpicker.html.haml +1 -0
- data/app/views/rails_admin/main/_form_datetime.html.haml +1 -0
- data/app/views/rails_admin/main/_form_enumeration.html.haml +18 -0
- data/app/views/rails_admin/main/_form_field.html.haml +1 -0
- data/app/views/rails_admin/main/_form_file_upload.html.haml +13 -0
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +47 -0
- data/app/views/rails_admin/main/_form_filtering_select.html.haml +37 -0
- data/app/views/rails_admin/main/_form_nested_many.html.haml +14 -0
- data/app/views/rails_admin/main/_form_nested_one.html.haml +10 -0
- data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +10 -0
- data/app/views/rails_admin/main/_form_text.html.haml +31 -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 +35 -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 +49 -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 +16 -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/rails_admin.en.yml +130 -0
- data/config/routes.rb +12 -0
- data/lib/generators/rails_admin/install_generator.rb +85 -0
- data/lib/generators/rails_admin/templates/drop.rb +18 -0
- data/lib/generators/rails_admin/templates/initializer.erb +100 -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 +128 -0
- data/lib/rails_admin/adapters/active_record.rb +296 -0
- data/lib/rails_admin/adapters/active_record/abstract_object.rb +32 -0
- data/lib/rails_admin/adapters/mongoid.rb +430 -0
- data/lib/rails_admin/adapters/mongoid/abstract_object.rb +43 -0
- data/lib/rails_admin/adapters/mongoid/extension.rb +45 -0
- data/lib/rails_admin/config.rb +333 -0
- data/lib/rails_admin/config/actions.rb +121 -0
- data/lib/rails_admin/config/actions/base.rb +132 -0
- data/lib/rails_admin/config/actions/bulk_delete.rb +55 -0
- data/lib/rails_admin/config/actions/dashboard.rb +52 -0
- data/lib/rails_admin/config/actions/delete.rb +56 -0
- data/lib/rails_admin/config/actions/edit.rb +55 -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 +65 -0
- data/lib/rails_admin/config/actions/show.rb +34 -0
- data/lib/rails_admin/config/actions/show_in_app.rb +27 -0
- data/lib/rails_admin/config/configurable.rb +92 -0
- data/lib/rails_admin/config/fields.rb +87 -0
- data/lib/rails_admin/config/fields/association.rb +107 -0
- data/lib/rails_admin/config/fields/base.rb +320 -0
- data/lib/rails_admin/config/fields/factories/association.rb +32 -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/group.rb +78 -0
- data/lib/rails_admin/config/fields/types.rb +27 -0
- data/lib/rails_admin/config/fields/types/all.rb +25 -0
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +41 -0
- data/lib/rails_admin/config/fields/types/boolean.rb +38 -0
- data/lib/rails_admin/config/fields/types/bson_object_id.rb +45 -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 +164 -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 +39 -0
- data/lib/rails_admin/config/fields/types/file_upload.rb +65 -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 +27 -0
- data/lib/rails_admin/config/fields/types/integer.rb +22 -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 +80 -0
- data/lib/rails_admin/config/fields/types/serialized.rb +22 -0
- data/lib/rails_admin/config/fields/types/string.rb +43 -0
- data/lib/rails_admin/config/fields/types/text.rb +97 -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 +136 -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/lazy_model.rb +21 -0
- data/lib/rails_admin/config/model.rb +109 -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 +39 -0
- data/lib/rails_admin/config/sections/base.rb +46 -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/modal.rb +10 -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 +27 -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 +36 -0
- data/lib/rails_admin/extensions/paper_trail.rb +5 -0
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +93 -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 +105 -0
- data/lib/rails_admin/version.rb +18 -0
- data/lib/tasks/rails_admin.rake +48 -0
- data/spec/ci.sh +2 -0
- data/spec/controllers/rails_admin/application_controller_spec.rb +30 -0
- data/spec/controllers/rails_admin/main_controller_spec.rb +337 -0
- data/spec/dummy_app/Gemfile +48 -0
- data/spec/dummy_app/Rakefile +7 -0
- data/spec/dummy_app/app/active_record/abstract.rb +5 -0
- data/spec/dummy_app/app/active_record/another_field_test.rb +4 -0
- data/spec/dummy_app/app/active_record/ball.rb +9 -0
- data/spec/dummy_app/app/active_record/carrierwave_uploader.rb +53 -0
- data/spec/dummy_app/app/active_record/category.rb +5 -0
- data/spec/dummy_app/app/active_record/cms.rb +5 -0
- data/spec/dummy_app/app/active_record/cms/basic_page.rb +9 -0
- data/spec/dummy_app/app/active_record/cms/unscoped_page.rb +3 -0
- data/spec/dummy_app/app/active_record/comment.rb +5 -0
- data/spec/dummy_app/app/active_record/comment/confirmed.rb +3 -0
- data/spec/dummy_app/app/active_record/division.rb +15 -0
- data/spec/dummy_app/app/active_record/draft.rb +13 -0
- data/spec/dummy_app/app/active_record/fan.rb +7 -0
- data/spec/dummy_app/app/active_record/field_test.rb +19 -0
- data/spec/dummy_app/app/active_record/hardball.rb +2 -0
- data/spec/dummy_app/app/active_record/image.rb +6 -0
- data/spec/dummy_app/app/active_record/league.rb +12 -0
- data/spec/dummy_app/app/active_record/nested_field_test.rb +8 -0
- data/spec/dummy_app/app/active_record/player.rb +27 -0
- data/spec/dummy_app/app/active_record/team.rb +28 -0
- data/spec/dummy_app/app/active_record/user.rb +25 -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/locales/models.en.yml +20 -0
- data/spec/dummy_app/app/mongoid/another_field_test.rb +6 -0
- data/spec/dummy_app/app/mongoid/ball.rb +14 -0
- data/spec/dummy_app/app/mongoid/carrierwave_uploader.rb +53 -0
- data/spec/dummy_app/app/mongoid/category.rb +7 -0
- data/spec/dummy_app/app/mongoid/cms.rb +5 -0
- data/spec/dummy_app/app/mongoid/cms/basic_page.rb +12 -0
- data/spec/dummy_app/app/mongoid/cms/unscoped_page.rb +5 -0
- data/spec/dummy_app/app/mongoid/comment.rb +9 -0
- data/spec/dummy_app/app/mongoid/comment/confirmed.rb +3 -0
- data/spec/dummy_app/app/mongoid/division.rb +14 -0
- data/spec/dummy_app/app/mongoid/draft.rb +22 -0
- data/spec/dummy_app/app/mongoid/embed.rb +6 -0
- data/spec/dummy_app/app/mongoid/fan.rb +12 -0
- data/spec/dummy_app/app/mongoid/field_test.rb +57 -0
- data/spec/dummy_app/app/mongoid/hardball.rb +2 -0
- data/spec/dummy_app/app/mongoid/image.rb +9 -0
- data/spec/dummy_app/app/mongoid/league.rb +16 -0
- data/spec/dummy_app/app/mongoid/nested_field_test.rb +13 -0
- data/spec/dummy_app/app/mongoid/player.rb +41 -0
- data/spec/dummy_app/app/mongoid/team.rb +47 -0
- data/spec/dummy_app/app/mongoid/user.rb +61 -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 +69 -0
- data/spec/dummy_app/config/boot.rb +9 -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 +216 -0
- data/spec/dummy_app/config/initializers/dragonfly.rb +11 -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 +8 -0
- data/spec/dummy_app/config/initializers/secret_token.rb +7 -0
- data/spec/dummy_app/config/initializers/session_patch.rb +16 -0
- data/spec/dummy_app/config/initializers/session_store.rb +8 -0
- data/spec/dummy_app/config/initializers/strong_parameters.rb +2 -0
- data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_app/config/locales/fr.yml +24 -0
- data/spec/dummy_app/config/mongoid.yml +22 -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/migrate/20120319041705_drop_rel_tests.rb +15 -0
- data/spec/dummy_app/db/migrate/20120720075608_create_another_field_tests.rb +8 -0
- data/spec/dummy_app/db/migrate/20120928075608_create_images.rb +8 -0
- data/spec/dummy_app/db/seeds.rb +29 -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 +75 -0
- data/spec/helpers/rails_admin/application_helper_spec.rb +353 -0
- data/spec/helpers/rails_admin/form_builder_spec.rb +17 -0
- data/spec/integration/authorization/cancan_spec.rb +366 -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 +53 -0
- data/spec/integration/basic/create/rails_admin_basic_create_spec.rb +140 -0
- data/spec/integration/basic/create/rails_admin_namespaced_model_create_spec.rb +16 -0
- data/spec/integration/basic/delete/rails_admin_basic_delete_spec.rb +64 -0
- data/spec/integration/basic/destroy/rails_admin_basic_destroy_spec.rb +84 -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 +106 -0
- data/spec/integration/basic/list/rails_admin_basic_list_spec.rb +444 -0
- data/spec/integration/basic/new/rails_admin_basic_new_spec.rb +73 -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 +82 -0
- data/spec/integration/basic/update/rails_admin_basic_update_spec.rb +229 -0
- data/spec/integration/config/edit/rails_admin_config_edit_spec.rb +1026 -0
- data/spec/integration/config/list/rails_admin_config_list_spec.rb +441 -0
- data/spec/integration/config/show/rails_admin_config_show_spec.rb +331 -0
- data/spec/integration/history/rails_admin_history_spec.rb +88 -0
- data/spec/integration/rails_admin_spec.rb +150 -0
- data/spec/integration/relation_spec.rb +35 -0
- data/spec/orm/active_record.rb +42 -0
- data/spec/orm/mongoid.rb +21 -0
- data/spec/rails_admin/abstract_model_spec.rb +75 -0
- data/spec/rails_admin/active_record_extension_spec.rb +16 -0
- data/spec/rails_admin/adapters/active_record/abstract_object_spec.rb +132 -0
- data/spec/rails_admin/adapters/active_record_spec.rb +409 -0
- data/spec/rails_admin/adapters/mongoid/abstract_object_spec.rb +31 -0
- data/spec/rails_admin/adapters/mongoid_spec.rb +776 -0
- data/spec/rails_admin/config/actions/base_spec.rb +32 -0
- data/spec/rails_admin/config/actions_spec.rb +180 -0
- data/spec/rails_admin/config/fields/base_spec.rb +421 -0
- data/spec/rails_admin/config/fields/date_spec.rb +74 -0
- data/spec/rails_admin/config/fields/datetime_spec.rb +55 -0
- data/spec/rails_admin/config/fields/file_upload_spec.rb +21 -0
- data/spec/rails_admin/config/fields/time_spec.rb +39 -0
- data/spec/rails_admin/config/fields/timestamp_spec.rb +20 -0
- data/spec/rails_admin/config/fields/types/datetime_spec.rb +18 -0
- data/spec/rails_admin/config/fields_spec.rb +15 -0
- data/spec/rails_admin/config/has_fields_spec.rb +30 -0
- data/spec/rails_admin/config/lazy_model_spec.rb +29 -0
- data/spec/rails_admin/config/model_spec.rb +75 -0
- data/spec/rails_admin/config/sections_spec.rb +123 -0
- data/spec/rails_admin/config_spec.rb +277 -0
- data/spec/rails_admin/support/csv_converter_spec.rb +16 -0
- data/spec/spec_helper.rb +84 -0
- metadata +868 -0
data/config/routes.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
RailsAdmin::Engine.routes.draw do
|
2
|
+
controller "main" do
|
3
|
+
RailsAdmin::Config::Actions.all(:root).each { |action| match "/#{action.route_fragment}", :to => action.action_name, :as => action.action_name, :via => action.http_methods }
|
4
|
+
scope ":model_name" do
|
5
|
+
RailsAdmin::Config::Actions.all(:collection).each { |action| match "/#{action.route_fragment}", :to => action.action_name, :as => action.action_name, :via => action.http_methods }
|
6
|
+
post "/bulk_action", :to => :bulk_action, :as => "bulk_action"
|
7
|
+
scope ":id" do
|
8
|
+
RailsAdmin::Config::Actions.all(:member).each { |action| match "/#{action.route_fragment}", :to => action.action_name, :as => action.action_name, :via => action.http_methods }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require File.expand_path('../utils', __FILE__)
|
3
|
+
|
4
|
+
# http://guides.rubyonrails.org/generators.html
|
5
|
+
# http://rdoc.info/github/wycats/thor/master/Thor/Actions.html
|
6
|
+
# keep generator idempotent, thanks
|
7
|
+
|
8
|
+
module RailsAdmin
|
9
|
+
class InstallGenerator < Rails::Generators::Base
|
10
|
+
source_root File.expand_path("../templates", __FILE__)
|
11
|
+
include Rails::Generators::Migration
|
12
|
+
include Generators::Utils::InstanceMethods
|
13
|
+
extend Generators::Utils::ClassMethods
|
14
|
+
|
15
|
+
argument :_model_name, :type => :string, :required => false, :desc => "Devise user model name"
|
16
|
+
argument :_namespace, :type => :string, :required => false, :desc => "RailsAdmin url namespace"
|
17
|
+
desc "RailsAdmin installation generator"
|
18
|
+
|
19
|
+
def install
|
20
|
+
routes = File.open(Rails.root.join("config/routes.rb")).try :read
|
21
|
+
initializer = (File.open(Rails.root.join("config/initializers/rails_admin.rb")) rescue nil).try :read
|
22
|
+
|
23
|
+
display "Hello, RailsAdmin installer will help you set things up!", :blue
|
24
|
+
display "I need to work with Devise, let's look at a few things first:"
|
25
|
+
display "Checking for a current installation of devise..."
|
26
|
+
unless defined?(Devise)
|
27
|
+
display "Adding devise gem to your Gemfile:"
|
28
|
+
append_file "Gemfile", "\n", :force => true
|
29
|
+
gem 'devise'
|
30
|
+
else
|
31
|
+
display "Found it!"
|
32
|
+
end
|
33
|
+
unless File.exists?(Rails.root.join("config/initializers/devise.rb"))
|
34
|
+
display "Looks like you don't have devise installed! We'll install it for you:"
|
35
|
+
generate "devise:install"
|
36
|
+
else
|
37
|
+
display "Looks like you've already installed it, good!"
|
38
|
+
end
|
39
|
+
|
40
|
+
namespace = ask_for("Where do you want to mount rails_admin?", "admin", _namespace)
|
41
|
+
gsub_file "config/routes.rb", /mount RailsAdmin::Engine => \'\/.+\', :as => \'rails_admin\'/, ''
|
42
|
+
route("mount RailsAdmin::Engine => '/#{namespace}', :as => 'rails_admin'")
|
43
|
+
|
44
|
+
unless routes.index("devise_for")
|
45
|
+
model_name = ask_for("What would you like the user model to be called?", "user", _model_name)
|
46
|
+
display "Now setting up devise with user model name '#{model_name}':"
|
47
|
+
generate "devise", model_name
|
48
|
+
else
|
49
|
+
display "And you already set it up, good! We just need to know about your user model name..."
|
50
|
+
guess = routes.match(/devise_for +:(\w+)/)[1].try(:singularize)
|
51
|
+
display("We found '#{guess}' (should be one of 'user', 'admin', etc.)")
|
52
|
+
model_name = ask_for("Correct Devise model name if needed.", guess, _model_name)
|
53
|
+
unless guess == model_name
|
54
|
+
display "Now setting up devise with user model name '#{model_name}':"
|
55
|
+
generate "devise", model_name
|
56
|
+
else
|
57
|
+
display "Ok, Devise looks already set up with user model name '#{model_name}':"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
display "Now you'll need an initializer..."
|
61
|
+
@model_name = model_name
|
62
|
+
unless initializer
|
63
|
+
template "initializer.erb", "config/initializers/rails_admin.rb"
|
64
|
+
else
|
65
|
+
display "You already have a config file. You're updating, heh? I'm generating a new 'rails_admin.rb.example' that you can review."
|
66
|
+
template "initializer.erb", "config/initializers/rails_admin.rb.example"
|
67
|
+
config_tag = initializer.match(/RailsAdmin\.config.+\|(.+)\|/)[1] rescue nil
|
68
|
+
if config_tag
|
69
|
+
if initializer.index(::Regexp.new("#{config_tag}\.current_user_method.?\{.+?\}"))
|
70
|
+
display "current_user_method found and updated with 'current_#{model_name}'", :green
|
71
|
+
gsub_file Rails.root.join("config/initializers/rails_admin.rb"), ::Regexp.new("#{config_tag}\.current_user_method.?\{.+?\}"), "#{config_tag}.current_user_method { current_#{model_name} }"
|
72
|
+
else
|
73
|
+
display "current_user_method not found. Added one with 'current_#{model_name}'!", :yellow
|
74
|
+
insert_into_file Rails.root.join("config/initializers/rails_admin.rb"), "\n\n #{config_tag}.current_user_method { current_#{model_name} } #auto-generated", :after => /^RailsAdmin\.config.+$/
|
75
|
+
end
|
76
|
+
else
|
77
|
+
display "Couldn't parse your config file: current_user_method couldn't be updated", :red
|
78
|
+
end
|
79
|
+
end
|
80
|
+
display "Adding a migration..."
|
81
|
+
migration_template 'migration.rb', 'db/migrate/create_rails_admin_histories_table.rb' rescue display $!.message
|
82
|
+
display "Job's done: migrate, start your server and visit '/#{namespace}'!", :blue
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class DropRailsAdminHistoriesTable < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
drop_table :rails_admin_histories
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.down
|
7
|
+
create_table :rails_admin_histories do |t|
|
8
|
+
t.text :message # title, name, or object_id
|
9
|
+
t.string :username
|
10
|
+
t.integer :item
|
11
|
+
t.string :table
|
12
|
+
t.integer :month, :limit => 2
|
13
|
+
t.integer :year, :limit => 5
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
add_index(:rails_admin_histories, [:item, :table, :month, :year], :name => 'index_rails_admin_histories' )
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# RailsAdmin config file. Generated on <%= DateTime.now.to_s(:long) %>
|
2
|
+
# See github.com/sferik/rails_admin for more informations
|
3
|
+
|
4
|
+
RailsAdmin.config do |config|
|
5
|
+
|
6
|
+
|
7
|
+
################ Global configuration ################
|
8
|
+
|
9
|
+
# Set the admin name here (optional second array element will appear in red). For example:
|
10
|
+
config.main_app_name = ['<%= Rails.application.engine_name.titleize.chomp(' Application') %>', 'Admin']
|
11
|
+
# or for a more dynamic name:
|
12
|
+
# config.main_app_name = Proc.new { |controller| [Rails.application.engine_name.titleize, controller.params['action'].titleize] }
|
13
|
+
|
14
|
+
# RailsAdmin may need a way to know who the current user is]
|
15
|
+
config.current_user_method { current_<%= @model_name.underscore %> } # auto-generated
|
16
|
+
|
17
|
+
# If you want to track changes on your models:
|
18
|
+
# config.audit_with :history, '<%= @model_name.classify %>'
|
19
|
+
|
20
|
+
# Or with a PaperTrail: (you need to install it first)
|
21
|
+
# config.audit_with :paper_trail, '<%= @model_name.classify %>'
|
22
|
+
|
23
|
+
# Display empty fields in show views:
|
24
|
+
# config.compact_show_view = false
|
25
|
+
|
26
|
+
# Number of default rows per-page:
|
27
|
+
# config.default_items_per_page = 20
|
28
|
+
|
29
|
+
# Exclude specific models (keep the others):
|
30
|
+
# config.excluded_models = [<%= RailsAdmin::AbstractModel.all.map{|am| "'#{am.model}'" }.join(', ') %>]
|
31
|
+
|
32
|
+
# Include specific models (exclude the others):
|
33
|
+
# config.included_models = [<%= RailsAdmin::AbstractModel.all.map{|am| "'#{am.model}'" }.join(', ') %>]
|
34
|
+
|
35
|
+
# Label methods for model instances:
|
36
|
+
# config.label_methods << :description # Default is [:name, :title]
|
37
|
+
|
38
|
+
|
39
|
+
################ Model configuration ################
|
40
|
+
|
41
|
+
# Each model configuration can alternatively:
|
42
|
+
# - stay here in a `config.model 'ModelName' do ... end` block
|
43
|
+
# - go in the model definition file in a `rails_admin do ... end` block
|
44
|
+
|
45
|
+
# This is your choice to make:
|
46
|
+
# - This initializer is loaded once at startup (modifications will show up when restarting the application) but all RailsAdmin configuration would stay in one place.
|
47
|
+
# - Models are reloaded at each request in development mode (when modified), which may smooth your RailsAdmin development workflow.
|
48
|
+
|
49
|
+
|
50
|
+
# Now you probably need to tour the wiki a bit: https://github.com/sferik/rails_admin/wiki
|
51
|
+
# Anyway, here is how RailsAdmin saw your application's models when you ran the initializer:
|
52
|
+
|
53
|
+
<% RailsAdmin::AbstractModel.all.map do |abstract_model| -%>
|
54
|
+
|
55
|
+
|
56
|
+
### <%= abstract_model.model.model_name %> ###
|
57
|
+
|
58
|
+
# config.model '<%= abstract_model.model.model_name %>' do
|
59
|
+
|
60
|
+
# # You can copy this to a 'rails_admin do ... end' block inside your <%= abstract_model.model.model_name.underscore %>.rb model definition
|
61
|
+
|
62
|
+
# # Found associations:
|
63
|
+
|
64
|
+
<%= abstract_model.config.export.fields.select{|f| f.association?}.map do |field|
|
65
|
+
%{ # configure #{field.name.inspect}, #{field.type.inspect}#{" # Hidden" unless field.visible?} }
|
66
|
+
end.join("\n") %>
|
67
|
+
|
68
|
+
# # Found columns:
|
69
|
+
|
70
|
+
<%= abstract_model.config.export.fields.select{|f| !f.association?}.map do |field|
|
71
|
+
%{ # configure #{field.name.inspect}, #{field.type.inspect}#{" # Hidden" unless field.visible?} }
|
72
|
+
end.join("\n") %>
|
73
|
+
|
74
|
+
# # Cross-section configuration:
|
75
|
+
|
76
|
+
# # object_label_method :name # Name of the method called for pretty printing an *instance* of ModelName
|
77
|
+
# # label 'My model' # Name of ModelName (smartly defaults to ActiveRecord's I18n API)
|
78
|
+
# # label_plural 'My models' # Same, plural
|
79
|
+
# # weight 0 # Navigation priority. Bigger is higher.
|
80
|
+
# # parent OtherModel # Set parent model for navigation. MyModel will be nested below. OtherModel will be on first position of the dropdown
|
81
|
+
# # navigation_label # Sets dropdown entry's name in navigation. Only for parents!
|
82
|
+
|
83
|
+
# # Section specific configuration:
|
84
|
+
|
85
|
+
# list do
|
86
|
+
# # filters [:id, :name] # Array of field names which filters should be shown by default in the table header
|
87
|
+
# # items_per_page 100 # Override default_items_per_page
|
88
|
+
# # sort_by :id # Sort column (default is primary key)
|
89
|
+
# # sort_reverse true # Sort direction (default is true for primary key, last created first)
|
90
|
+
# end
|
91
|
+
# show do; end
|
92
|
+
# edit do; end
|
93
|
+
# export do; end
|
94
|
+
# # also see the create, update, modal and nested sections, which override edit in specific cases (resp. when creating, updating, modifying from another model in a popup modal or modifying from another model nested form)
|
95
|
+
# # you can override a cross-section field configuration in any section with the same syntax `configure :field_name do ... end`
|
96
|
+
# # using `field` instead of `configure` will exclude all other fields and force the ordering
|
97
|
+
# end
|
98
|
+
<%- end -%>
|
99
|
+
|
100
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class CreateRailsAdminHistoriesTable < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :rails_admin_histories do |t|
|
4
|
+
t.text :message # title, name, or object_id
|
5
|
+
t.string :username
|
6
|
+
t.integer :item
|
7
|
+
t.string :table
|
8
|
+
t.integer :month, :limit => 2
|
9
|
+
t.integer :year, :limit => 5
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
add_index(:rails_admin_histories, [:item, :table, :month, :year], :name => 'index_rails_admin_histories' )
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.down
|
16
|
+
drop_table :rails_admin_histories
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require File.expand_path('../utils', __FILE__)
|
3
|
+
|
4
|
+
module RailsAdmin
|
5
|
+
class UninstallGenerator < Rails::Generators::Base
|
6
|
+
include Rails::Generators::Migration
|
7
|
+
include Generators::Utils::InstanceMethods
|
8
|
+
extend Generators::Utils::ClassMethods
|
9
|
+
source_root File.expand_path('../templates', __FILE__)
|
10
|
+
|
11
|
+
desc "RailsAdmin uninstall"
|
12
|
+
|
13
|
+
def uninstall
|
14
|
+
display "Why you leaving so soon? :("
|
15
|
+
migration_template 'drop.rb', 'db/migrate/drop_rails_admin_histories_table.rb'
|
16
|
+
remove_file 'config/initializers/rails_admin.rb'
|
17
|
+
remove_file 'config/initializers/rails_admin.rb.example'
|
18
|
+
gsub_file "config/routes.rb", /mount RailsAdmin::Engine => \'\/.+\', :as => \'rails_admin\'/, ''
|
19
|
+
display "Done! Devise has been left untouched."
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module RailsAdmin
|
2
|
+
module Generators
|
3
|
+
module Utils
|
4
|
+
module InstanceMethods
|
5
|
+
def display(output, color = :green)
|
6
|
+
say(" - #{output}", color)
|
7
|
+
end
|
8
|
+
|
9
|
+
def ask_for(wording, default_value = nil, override_if_present_value = nil)
|
10
|
+
override_if_present_value.present? ?
|
11
|
+
display("Using [#{override_if_present_value}] for question '#{wording}'") && override_if_present_value :
|
12
|
+
ask(" ? #{wording} Press <enter> for [#{default_value}] >", :yellow).presence || default_value
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module ClassMethods
|
17
|
+
def next_migration_number(dirname)
|
18
|
+
if ActiveRecord::Base.timestamped_migrations
|
19
|
+
migration_number = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
|
20
|
+
migration_number += 1
|
21
|
+
migration_number.to_s
|
22
|
+
else
|
23
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
data/lib/rails_admin.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rails_admin/engine'
|
2
|
+
require 'rails_admin/abstract_model'
|
3
|
+
require 'rails_admin/config'
|
4
|
+
require 'rails_admin/extension'
|
5
|
+
require 'rails_admin/extensions/cancan'
|
6
|
+
require 'rails_admin/extensions/paper_trail'
|
7
|
+
require 'rails_admin/extensions/history'
|
8
|
+
require 'rails_admin/support/csv_converter'
|
9
|
+
require 'rails_admin/support/core_extensions'
|
10
|
+
|
11
|
+
module RailsAdmin
|
12
|
+
# Setup RailsAdmin
|
13
|
+
#
|
14
|
+
# Given the first argument is a model class, a model class name
|
15
|
+
# or an abstract model object proxies to model configuration method.
|
16
|
+
#
|
17
|
+
# If only a block is passed it is stored to initializer stack to be evaluated
|
18
|
+
# on first request in production mode and on each request in development. If
|
19
|
+
# initialization has already occured (in other words RailsAdmin.setup has
|
20
|
+
# been called) the block will be added to stack and evaluated at once.
|
21
|
+
#
|
22
|
+
# Otherwise returns RailsAdmin::Config class.
|
23
|
+
#
|
24
|
+
# @see RailsAdmin::Config
|
25
|
+
def self.config(entity = nil, &block)
|
26
|
+
if entity
|
27
|
+
RailsAdmin::Config.model(entity, &block)
|
28
|
+
elsif block_given? && ENV['SKIP_RAILS_ADMIN_INITIALIZER'] != "true"
|
29
|
+
block.call(RailsAdmin::Config)
|
30
|
+
else
|
31
|
+
RailsAdmin::Config
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
module RailsAdmin
|
2
|
+
class AbstractModel
|
3
|
+
cattr_accessor :all
|
4
|
+
attr_reader :adapter, :model_name
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def reset
|
8
|
+
@@all = nil
|
9
|
+
end
|
10
|
+
|
11
|
+
def all(adapter = nil)
|
12
|
+
@@all ||= Config.models_pool.map{ |m| new(m) }.compact
|
13
|
+
adapter ? @@all.select{|m| m.adapter == adapter} : @@all
|
14
|
+
end
|
15
|
+
|
16
|
+
alias_method :old_new, :new
|
17
|
+
def new(m)
|
18
|
+
m = m.is_a?(Class) ? m : m.constantize
|
19
|
+
(am = old_new(m)).model && am.adapter ? am : nil
|
20
|
+
rescue LoadError, NameError
|
21
|
+
puts "[RailsAdmin] Could not load model #{m}, assuming model is non existing. (#{$!})" unless Rails.env.test?
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
@@polymorphic_parents = {}
|
26
|
+
|
27
|
+
def polymorphic_parents(adapter, model_name, name)
|
28
|
+
@@polymorphic_parents[adapter.to_sym] ||= {}.tap do |hash|
|
29
|
+
all(adapter).each do |am|
|
30
|
+
am.associations.select{|r| r[:as] }.each do |association|
|
31
|
+
(hash[[association[:model_proc].call.to_s.underscore, association[:as]].join('_').to_sym] ||= []) << am.model
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
@@polymorphic_parents[adapter.to_sym][[model_name.underscore, name].join('_').to_sym]
|
36
|
+
end
|
37
|
+
|
38
|
+
# For testing
|
39
|
+
def reset_polymorphic_parents
|
40
|
+
@@polymorphic_parents = {}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def initialize(model_or_model_name)
|
45
|
+
@model_name = model_or_model_name.to_s
|
46
|
+
if model.ancestors.map(&:to_s).include?('ActiveRecord::Base') && !model.abstract_class?
|
47
|
+
# ActiveRecord
|
48
|
+
@adapter = :active_record
|
49
|
+
require 'rails_admin/adapters/active_record'
|
50
|
+
extend Adapters::ActiveRecord
|
51
|
+
elsif model.ancestors.map(&:to_s).include?('Mongoid::Document')
|
52
|
+
# Mongoid
|
53
|
+
@adapter = :mongoid
|
54
|
+
require 'rails_admin/adapters/mongoid'
|
55
|
+
extend Adapters::Mongoid
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# do not store a reference to the model, does not play well with ActiveReload/Rails3.2
|
60
|
+
def model
|
61
|
+
@model_name.constantize
|
62
|
+
end
|
63
|
+
|
64
|
+
def to_s
|
65
|
+
model.to_s
|
66
|
+
end
|
67
|
+
|
68
|
+
def config
|
69
|
+
Config.model self
|
70
|
+
end
|
71
|
+
|
72
|
+
def to_param
|
73
|
+
@model_name.split("::").map(&:underscore).join("~")
|
74
|
+
end
|
75
|
+
|
76
|
+
def param_key
|
77
|
+
@model_name.split("::").map(&:underscore).join("_")
|
78
|
+
end
|
79
|
+
|
80
|
+
def pretty_name
|
81
|
+
model.model_name.human
|
82
|
+
end
|
83
|
+
|
84
|
+
def where(conditions)
|
85
|
+
model.where(conditions)
|
86
|
+
end
|
87
|
+
|
88
|
+
def each_associated_children(object)
|
89
|
+
associations.each do |association|
|
90
|
+
case association[:type]
|
91
|
+
when :has_one
|
92
|
+
if child = object.send(association[:name])
|
93
|
+
yield(association, child)
|
94
|
+
end
|
95
|
+
when :has_many
|
96
|
+
object.send(association[:name]).each do |child|
|
97
|
+
yield(association, child)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
|
105
|
+
def get_filtering_duration(operator, value)
|
106
|
+
date_format = I18n.t("admin.misc.filter_date_format", :default => I18n.t("admin.misc.filter_date_format", :locale => :en)).gsub('dd', '%d').gsub('mm', '%m').gsub('yy', '%Y')
|
107
|
+
case operator
|
108
|
+
when 'between'
|
109
|
+
start_date = value[1].present? ? (Date.strptime(value[1], date_format) rescue false) : false
|
110
|
+
end_date = value[2].present? ? (Date.strptime(value[2], date_format) rescue false) : false
|
111
|
+
when 'today'
|
112
|
+
start_date = end_date = Date.today
|
113
|
+
when 'yesterday'
|
114
|
+
start_date = end_date = Date.yesterday
|
115
|
+
when 'this_week'
|
116
|
+
start_date = Date.today.beginning_of_week
|
117
|
+
end_date = Date.today.end_of_week
|
118
|
+
when 'last_week'
|
119
|
+
start_date = 1.week.ago.to_date.beginning_of_week
|
120
|
+
end_date = 1.week.ago.to_date.end_of_week
|
121
|
+
else # default
|
122
|
+
start_date = (Date.strptime(Array.wrap(value).first, date_format) rescue false)
|
123
|
+
end_date = (Date.strptime(Array.wrap(value).first, date_format) rescue false)
|
124
|
+
end
|
125
|
+
[start_date, end_date]
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|