elucid-rails_admin 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +54 -0
- data/LICENSE.md +20 -0
- data/README.md +1334 -0
- data/Rakefile +14 -0
- data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
- data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/images/rails_admin/bullet_black.png +0 -0
- data/app/assets/images/rails_admin/bullet_white.png +0 -0
- data/app/assets/images/rails_admin/calendar.png +0 -0
- data/app/assets/images/rails_admin/clock.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/select.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/select2.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/slider.png +0 -0
- data/app/assets/images/rails_admin/logo.png +0 -0
- data/app/assets/images/rails_admin/magnifier.png +0 -0
- data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
- data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
- data/app/assets/javascripts/rails_admin/jquery-ui-1.8.16.custom.js +5019 -0
- data/app/assets/javascripts/rails_admin/jquery.colorpicker.js +484 -0
- data/app/assets/javascripts/rails_admin/jquery.ui.timepicker.js +1219 -0
- data/app/assets/javascripts/rails_admin/ra.datetimepicker.js +67 -0
- data/app/assets/javascripts/rails_admin/ra.filter-box.js +119 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +280 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +181 -0
- data/app/assets/javascripts/rails_admin/ra.remote-form.js +147 -0
- data/app/assets/javascripts/rails_admin/rails_admin.js.erb +17 -0
- data/app/assets/javascripts/rails_admin/themes/default/ui.js +1 -0
- data/app/assets/javascripts/rails_admin/ui.js.coffee +30 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.css.scss +733 -0
- data/app/assets/stylesheets/rails_admin/base/README +2 -0
- data/app/assets/stylesheets/rails_admin/base/mixins.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/base/theming.css.scss +102 -0
- data/app/assets/stylesheets/rails_admin/base/variables.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/custom/README +3 -0
- data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +9 -0
- data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +11 -0
- data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +11 -0
- data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +51 -0
- data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +180 -0
- data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +53 -0
- data/app/assets/stylesheets/rails_admin/ra.calendar-additions.css.scss +25 -0
- data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.css.scss +85 -0
- data/app/assets/stylesheets/rails_admin/rails_admin.css +4 -0
- data/app/assets/stylesheets/rails_admin/themes/README +11 -0
- data/app/assets/stylesheets/rails_admin/themes/default/mixins.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +1 -0
- data/app/controllers/rails_admin/application_controller.rb +62 -0
- data/app/controllers/rails_admin/history_controller.rb +26 -0
- data/app/controllers/rails_admin/main_controller.rb +371 -0
- data/app/helpers/rails_admin/application_helper.rb +65 -0
- data/app/helpers/rails_admin/form_builder.rb +52 -0
- data/app/helpers/rails_admin/main_helper.rb +100 -0
- data/app/models/rails_admin/history.rb +64 -0
- data/app/views/kaminari/twitter-bootstrap/_gap.html.haml +2 -0
- data/app/views/kaminari/twitter-bootstrap/_next_page.html.haml +4 -0
- data/app/views/kaminari/twitter-bootstrap/_page.html.haml +4 -0
- data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +10 -0
- data/app/views/kaminari/twitter-bootstrap/_prev_page.html.haml +4 -0
- data/app/views/layouts/rails_admin/_navigation.html.haml +19 -0
- data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +9 -0
- data/app/views/layouts/rails_admin/application.html.haml +41 -0
- data/app/views/rails_admin/history/_dashboard.html.haml +10 -0
- data/app/views/rails_admin/history/show.html.haml +42 -0
- data/app/views/rails_admin/main/_delete_notice.html.haml +19 -0
- data/app/views/rails_admin/main/_form_colorpicker.html.haml +26 -0
- data/app/views/rails_admin/main/_form_datetime.html.haml +7 -0
- data/app/views/rails_admin/main/_form_enumeration.html.haml +5 -0
- data/app/views/rails_admin/main/_form_field.html.haml +1 -0
- data/app/views/rails_admin/main/_form_file_upload.html.haml +19 -0
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +57 -0
- data/app/views/rails_admin/main/_form_filtering_select.html.haml +47 -0
- data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +36 -0
- data/app/views/rails_admin/main/_form_text.html.haml +13 -0
- data/app/views/rails_admin/main/_models_links.html.haml +31 -0
- data/app/views/rails_admin/main/_object_links.html.haml +23 -0
- data/app/views/rails_admin/main/_submit_buttons.html.haml +12 -0
- data/app/views/rails_admin/main/bulk_delete.html.haml +6 -0
- data/app/views/rails_admin/main/dashboard.html.haml +31 -0
- data/app/views/rails_admin/main/delete.html.haml +13 -0
- data/app/views/rails_admin/main/edit.html.haml +2 -0
- data/app/views/rails_admin/main/export.html.haml +70 -0
- data/app/views/rails_admin/main/index.html.haml +98 -0
- data/app/views/rails_admin/main/new.html.haml +2 -0
- data/app/views/rails_admin/main/show.html.haml +14 -0
- data/config/initializers/active_record_extensions.rb +19 -0
- data/config/initializers/devise_patch.rb +9 -0
- data/config/initializers/haml.rb +3 -0
- data/config/locales/devise.bg.yml +42 -0
- data/config/locales/devise.de.yml +39 -0
- data/config/locales/devise.en.yml +39 -0
- data/config/locales/devise.es.yml +39 -0
- data/config/locales/devise.fi.yml +39 -0
- data/config/locales/devise.fr.yml +78 -0
- data/config/locales/devise.hr.yml +49 -0
- data/config/locales/devise.it.yml +39 -0
- data/config/locales/devise.lt.yml +39 -0
- data/config/locales/devise.mn.yml +39 -0
- data/config/locales/devise.nb.yml +43 -0
- data/config/locales/devise.pt-BR.yml +39 -0
- data/config/locales/devise.pt-PT.yml +39 -0
- data/config/locales/devise.ro.yml +46 -0
- data/config/locales/devise.ru.yml +39 -0
- data/config/locales/devise.sv.yml +39 -0
- data/config/locales/devise.tr.yml +39 -0
- data/config/locales/devise.uk.yml +39 -0
- data/config/locales/devise.zh-CN.yml +39 -0
- data/config/locales/devise.zh_cn.yml +39 -0
- data/config/locales/rails_admin.bg.yml +104 -0
- data/config/locales/rails_admin.da.yml +99 -0
- data/config/locales/rails_admin.de.yml +110 -0
- data/config/locales/rails_admin.en.yml +114 -0
- data/config/locales/rails_admin.es.yml +112 -0
- data/config/locales/rails_admin.fi.yml +107 -0
- data/config/locales/rails_admin.fr.yml +110 -0
- data/config/locales/rails_admin.hr.yml +81 -0
- data/config/locales/rails_admin.it.yml +109 -0
- data/config/locales/rails_admin.ja.yml +110 -0
- data/config/locales/rails_admin.lt.yml +102 -0
- data/config/locales/rails_admin.lv.yml +100 -0
- data/config/locales/rails_admin.mn.yml +103 -0
- data/config/locales/rails_admin.nb.yml +110 -0
- data/config/locales/rails_admin.nl.yml +135 -0
- data/config/locales/rails_admin.pl.yml +111 -0
- data/config/locales/rails_admin.pt-BR.yml +109 -0
- data/config/locales/rails_admin.pt-PT.yml +109 -0
- data/config/locales/rails_admin.ro.yml +113 -0
- data/config/locales/rails_admin.ru.yml +109 -0
- data/config/locales/rails_admin.sv.yml +103 -0
- data/config/locales/rails_admin.tr.yml +103 -0
- data/config/locales/rails_admin.uk.yml +100 -0
- data/config/locales/rails_admin.zh-CN.yml +114 -0
- data/config/locales/rails_admin.zh_cn.yml +107 -0
- data/config/routes.rb +28 -0
- data/lib/generators/rails_admin/install_generator.rb +83 -0
- data/lib/generators/rails_admin/templates/drop.rb +18 -0
- data/lib/generators/rails_admin/templates/initializer.erb +150 -0
- data/lib/generators/rails_admin/templates/migration.rb +18 -0
- data/lib/generators/rails_admin/uninstall_generator.rb +22 -0
- data/lib/generators/rails_admin/utils.rb +30 -0
- data/lib/rails_admin.rb +57 -0
- data/lib/rails_admin/abstract_model.rb +73 -0
- data/lib/rails_admin/abstract_object.rb +28 -0
- data/lib/rails_admin/adapters/active_record.rb +359 -0
- data/lib/rails_admin/config.rb +287 -0
- data/lib/rails_admin/config/base.rb +111 -0
- data/lib/rails_admin/config/fields.rb +99 -0
- data/lib/rails_admin/config/fields/association.rb +101 -0
- data/lib/rails_admin/config/fields/base.rb +273 -0
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +16 -0
- data/lib/rails_admin/config/fields/factories/devise.rb +31 -0
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +20 -0
- data/lib/rails_admin/config/fields/factories/enum.rb +11 -0
- data/lib/rails_admin/config/fields/factories/paperclip.rb +26 -0
- data/lib/rails_admin/config/fields/factories/password.rb +17 -0
- data/lib/rails_admin/config/fields/group.rb +63 -0
- data/lib/rails_admin/config/fields/groupable.rb +25 -0
- data/lib/rails_admin/config/fields/types.rb +26 -0
- data/lib/rails_admin/config/fields/types/all.rb +22 -0
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +51 -0
- data/lib/rails_admin/config/fields/types/boolean.rb +29 -0
- data/lib/rails_admin/config/fields/types/carrierwave.rb +32 -0
- data/lib/rails_admin/config/fields/types/color.rb +37 -0
- data/lib/rails_admin/config/fields/types/date.rb +24 -0
- data/lib/rails_admin/config/fields/types/datetime.rb +160 -0
- data/lib/rails_admin/config/fields/types/decimal.rb +14 -0
- data/lib/rails_admin/config/fields/types/dragonfly.rb +51 -0
- data/lib/rails_admin/config/fields/types/enum.rb +35 -0
- data/lib/rails_admin/config/fields/types/file_upload.rb +54 -0
- data/lib/rails_admin/config/fields/types/float.rb +14 -0
- data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +14 -0
- data/lib/rails_admin/config/fields/types/has_many_association.rb +42 -0
- data/lib/rails_admin/config/fields/types/has_one_association.rb +31 -0
- data/lib/rails_admin/config/fields/types/integer.rb +24 -0
- data/lib/rails_admin/config/fields/types/paperclip.rb +38 -0
- data/lib/rails_admin/config/fields/types/password.rb +41 -0
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +78 -0
- data/lib/rails_admin/config/fields/types/string.rb +34 -0
- data/lib/rails_admin/config/fields/types/text.rb +39 -0
- data/lib/rails_admin/config/fields/types/time.rb +31 -0
- data/lib/rails_admin/config/fields/types/timestamp.rb +18 -0
- data/lib/rails_admin/config/has_fields.rb +112 -0
- data/lib/rails_admin/config/has_groups.rb +39 -0
- data/lib/rails_admin/config/hideable.rb +28 -0
- data/lib/rails_admin/config/model.rb +89 -0
- data/lib/rails_admin/config/proxy.rb +40 -0
- data/lib/rails_admin/config/sections.rb +51 -0
- data/lib/rails_admin/config/sections/create.rb +11 -0
- data/lib/rails_admin/config/sections/export.rb +18 -0
- data/lib/rails_admin/config/sections/list.rb +55 -0
- data/lib/rails_admin/config/sections/navigation.rb +21 -0
- data/lib/rails_admin/config/sections/show.rb +50 -0
- data/lib/rails_admin/config/sections/update.rb +11 -0
- data/lib/rails_admin/engine.rb +15 -0
- data/lib/rails_admin/extension.rb +23 -0
- data/lib/rails_admin/extensions/cancan.rb +5 -0
- data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +71 -0
- data/lib/rails_admin/generic_support.rb +15 -0
- data/lib/rails_admin/i18n_support.rb +43 -0
- data/lib/rails_admin/support/core_extensions.rb +44 -0
- data/lib/rails_admin/support/csv_converter.rb +109 -0
- data/lib/rails_admin/version.rb +6 -0
- data/lib/tasks/prepare_ci_env.rake +27 -0
- data/lib/tasks/rails_admin.rake +18 -0
- data/spec/ci.sh +2 -0
- data/spec/controllers/application_controller_spec.rb +30 -0
- data/spec/controllers/main_controller_spec.rb +86 -0
- data/spec/database_helpers.rb +15 -0
- data/spec/dummy_app/Gemfile +52 -0
- data/spec/dummy_app/README +256 -0
- data/spec/dummy_app/Rakefile +7 -0
- data/spec/dummy_app/app/controllers/application_controller.rb +3 -0
- data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_app/app/locales/models.en.yml +8 -0
- data/spec/dummy_app/app/models/abstract.rb +5 -0
- data/spec/dummy_app/app/models/ball.rb +8 -0
- data/spec/dummy_app/app/models/cms.rb +5 -0
- data/spec/dummy_app/app/models/cms/basic_page.rb +7 -0
- data/spec/dummy_app/app/models/cms/unscoped_page.rb +3 -0
- data/spec/dummy_app/app/models/comment.rb +3 -0
- data/spec/dummy_app/app/models/division.rb +8 -0
- data/spec/dummy_app/app/models/draft.rb +11 -0
- data/spec/dummy_app/app/models/fan.rb +5 -0
- data/spec/dummy_app/app/models/field_test.rb +13 -0
- data/spec/dummy_app/app/models/league.rb +10 -0
- data/spec/dummy_app/app/models/player.rb +15 -0
- data/spec/dummy_app/app/models/rel_test.rb +6 -0
- data/spec/dummy_app/app/models/team.rb +25 -0
- data/spec/dummy_app/app/models/user.rb +21 -0
- data/spec/dummy_app/app/uploaders/carrierwave_uploader.rb +53 -0
- data/spec/dummy_app/app/views/layouts/application.html.erb +13 -0
- data/spec/dummy_app/config.ru +4 -0
- data/spec/dummy_app/config/application.rb +47 -0
- data/spec/dummy_app/config/boot.rb +6 -0
- data/spec/dummy_app/config/database.yml +22 -0
- data/spec/dummy_app/config/environment.rb +5 -0
- data/spec/dummy_app/config/environments/development.rb +27 -0
- data/spec/dummy_app/config/environments/production.rb +51 -0
- data/spec/dummy_app/config/environments/test.rb +39 -0
- data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_app/config/initializers/devise.rb +142 -0
- data/spec/dummy_app/config/initializers/inflections.rb +10 -0
- data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
- data/spec/dummy_app/config/initializers/quiet_assets.rb +10 -0
- data/spec/dummy_app/config/initializers/rails_admin.rb +10 -0
- data/spec/dummy_app/config/initializers/secret_token.rb +7 -0
- data/spec/dummy_app/config/initializers/session_store.rb +8 -0
- data/spec/dummy_app/config/routes.rb +8 -0
- data/spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb +13 -0
- data/spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb +19 -0
- data/spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb +12 -0
- data/spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb +20 -0
- data/spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb +22 -0
- data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +19 -0
- data/spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb +16 -0
- data/spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb +12 -0
- data/spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb +11 -0
- data/spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb +9 -0
- data/spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb +9 -0
- data/spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb +16 -0
- data/spec/dummy_app/db/migrate/00000000000013_add_roles_to_user.rb +9 -0
- data/spec/dummy_app/db/migrate/00000000000014_add_color_to_team_migration.rb +9 -0
- data/spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb +15 -0
- data/spec/dummy_app/db/migrate/20110103205808_create_comments.rb +15 -0
- data/spec/dummy_app/db/migrate/20110123042530_rename_histories_to_rails_admin_histories.rb +9 -0
- data/spec/dummy_app/db/migrate/20110224184303_create_field_tests.rb +22 -0
- data/spec/dummy_app/db/migrate/20110328193014_create_cms_basic_pages.rb +14 -0
- data/spec/dummy_app/db/migrate/20110329183136_remove_league_id_from_teams.rb +9 -0
- data/spec/dummy_app/db/migrate/20110607152842_add_format_to_field_test.rb +9 -0
- data/spec/dummy_app/db/migrate/20110714095433_create_balls.rb +12 -0
- data/spec/dummy_app/db/migrate/20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb +6 -0
- data/spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb +19 -0
- data/spec/dummy_app/db/migrate/20110901142530_rename_league_id_foreign_key_on_divisions.rb +5 -0
- data/spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb +21 -0
- data/spec/dummy_app/db/migrate/20110901154834_change_length_for_rails_admin_histories.rb +9 -0
- data/spec/dummy_app/db/migrate/20111103174459_create_unscoped_pages.rb +9 -0
- data/spec/dummy_app/db/migrate/20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb +7 -0
- data/spec/dummy_app/db/seeds.rb +18 -0
- data/spec/dummy_app/doc/README_FOR_APP +2 -0
- data/spec/dummy_app/public/404.html +0 -0
- data/spec/dummy_app/public/favicon.ico +0 -0
- data/spec/dummy_app/script/rails +6 -0
- data/spec/factories.rb +62 -0
- data/spec/generator_helpers.rb +30 -0
- data/spec/generators/install_generator_spec.rb +85 -0
- data/spec/generators/uninstall_generator_spec.rb +35 -0
- data/spec/lib/abstract_object_spec.rb +119 -0
- data/spec/lib/rails_admin_spec.rb +153 -0
- data/spec/requests/authorization/cancan_spec.rb +260 -0
- data/spec/requests/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +25 -0
- data/spec/requests/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +55 -0
- data/spec/requests/basic/create/rails_admin_basic_create_spec.rb +143 -0
- data/spec/requests/basic/create/rails_admin_namespaced_model_create_spec.rb +24 -0
- data/spec/requests/basic/delete/rails_admin_basic_delete_spec.rb +35 -0
- data/spec/requests/basic/destroy/rails_admin_basic_destroy_spec.rb +56 -0
- data/spec/requests/basic/edit/rails_admin_basic_edit_spec.rb +98 -0
- data/spec/requests/basic/export/rails_admin_basic_export_spec.rb +84 -0
- data/spec/requests/basic/list/rails_admin_basic_list_spec.rb +401 -0
- data/spec/requests/basic/new/rails_admin_basic_new_spec.rb +74 -0
- data/spec/requests/basic/new/rails_admin_namespaced_model_new_spec.rb +31 -0
- data/spec/requests/basic/show/rails_admin_basic_show_spec.rb +83 -0
- data/spec/requests/basic/update/rails_admin_basic_update_spec.rb +169 -0
- data/spec/requests/config/edit/rails_admin_config_edit_spec.rb +744 -0
- data/spec/requests/config/list/rails_admin_config_list_spec.rb +549 -0
- data/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb +107 -0
- data/spec/requests/config/rails_admin_config_spec.rb +180 -0
- data/spec/requests/config/show/rails_admin_config_show_spec.rb +275 -0
- data/spec/requests/history/rails_admin_history_spec.rb +57 -0
- data/spec/requests/rails_admin_spec.rb +103 -0
- data/spec/requests/relation_spec.rb +26 -0
- data/spec/spec_helper.rb +88 -0
- metadata +717 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'rails_admin/i18n_support'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module ApplicationHelper
|
5
|
+
|
6
|
+
include RailsAdmin::I18nSupport
|
7
|
+
|
8
|
+
def authorized?(*args)
|
9
|
+
@authorization_adapter.nil? || @authorization_adapter.authorized?(*args)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Creative whitespace:
|
13
|
+
ViewType = Struct.new(:parent, :type, :authorization, :path_method)
|
14
|
+
VIEW_TYPES = {
|
15
|
+
:delete => ViewType.new(:show, :object, :delete),
|
16
|
+
:for_object => ViewType.new(:show, :object, nil, :history_object),
|
17
|
+
:edit => ViewType.new(:show, :object, :edit),
|
18
|
+
:show => ViewType.new(:index, :object, nil),
|
19
|
+
:export => ViewType.new(:index, :model, :export),
|
20
|
+
:new => ViewType.new(:index, :model, :new),
|
21
|
+
:for_model => ViewType.new(:index, :model, nil, :history_model),
|
22
|
+
:index => ViewType.new(:dashboard, :model, :index),
|
23
|
+
:dashboard => ViewType.new
|
24
|
+
}
|
25
|
+
|
26
|
+
def breadcrumbs_for view, abstract_model, object
|
27
|
+
return unless VIEW_TYPES[view]
|
28
|
+
views = []
|
29
|
+
parent = view
|
30
|
+
begin
|
31
|
+
views << parent
|
32
|
+
end while parent = VIEW_TYPES[parent].parent
|
33
|
+
breadcrumbs = views.reverse.map do |v|
|
34
|
+
breadcrumb_for v, abstract_model, object, (v==view)
|
35
|
+
end
|
36
|
+
content_tag(:ul, :class => "breadcrumb") do
|
37
|
+
breadcrumbs.join('<span class="divider">/</span>').html_safe
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def breadcrumb_for view, abstract_model, object, active
|
44
|
+
vt = VIEW_TYPES[view]
|
45
|
+
if authorized?(view, abstract_model, object)
|
46
|
+
css_classes = []
|
47
|
+
css_classes << "active" if active
|
48
|
+
config = RailsAdmin.config(abstract_model)
|
49
|
+
content_tag(:li, :class => css_classes.join(' ')) do
|
50
|
+
path_method = vt.path_method || view
|
51
|
+
wording = case view
|
52
|
+
when :show
|
53
|
+
object.send(config.object_label_method)
|
54
|
+
when :index
|
55
|
+
config.label_plural
|
56
|
+
else
|
57
|
+
I18n.t("admin.breadcrumbs.#{view}").capitalize
|
58
|
+
end
|
59
|
+
link_to wording, self.send("#{path_method}_path")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
ActionView::Base.field_error_proc = Proc.new { |html_tag, instance| "<span class=\"field_with_errors\">#{html_tag}</span>".html_safe }
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
class FormBuilder < ActionView::Helpers::FormBuilder
|
5
|
+
def render action
|
6
|
+
@template.instance_variable_get(:@model_config).send(action).with(:form => self, :object => @object, :view => @template).visible_groups.map do |fieldset|
|
7
|
+
fieldset_for fieldset
|
8
|
+
end.join.html_safe +
|
9
|
+
@template.render(:partial => 'submit_buttons')
|
10
|
+
end
|
11
|
+
|
12
|
+
def fieldset_for fieldset
|
13
|
+
if (fields = fieldset.fields.map{ |f| f.with(:form => self, :object => @object, :view => @template) }.select(&:visible?)).length > 0
|
14
|
+
@template.content_tag :fieldset do
|
15
|
+
@template.content_tag(:legend, fieldset.label.html_safe + (fieldset.help.present? ? @template.content_tag(:small, fieldset.help) : '')) +
|
16
|
+
fields.map{ |field| field_wrapper_for(field) }.join.html_safe
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def field_wrapper_for field
|
22
|
+
@template.content_tag(:div, :class => "clearfix field #{'error' if field.errors.present?}", :id => field.dom_id + '_field') do
|
23
|
+
label(field.method_name, field.label) +
|
24
|
+
input_for(field)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def input_for field
|
29
|
+
@template.content_tag(:div, :class => 'input') do
|
30
|
+
field_for(field) +
|
31
|
+
errors_for(field) +
|
32
|
+
help_for(field)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def errors_for field
|
37
|
+
field.errors.present? ? @template.content_tag(:span, "#{field.label} #{field.errors.first}", :class => 'help-inline') : ''
|
38
|
+
end
|
39
|
+
|
40
|
+
def help_for field
|
41
|
+
field.help.present? ? @template.content_tag(:span, field.help, :class => 'help-block') : ''
|
42
|
+
end
|
43
|
+
|
44
|
+
def field_for field
|
45
|
+
if field.read_only
|
46
|
+
field.pretty_value.to_s.html_safe
|
47
|
+
else
|
48
|
+
field.render.html_safe
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'builder'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module MainHelper
|
5
|
+
def get_indicator(percent)
|
6
|
+
return "" if percent < 0 # none
|
7
|
+
return "notice" if percent < 34 # < 1/100 of max
|
8
|
+
return "success" if percent < 67 # < 1/10 of max
|
9
|
+
return "warning" if percent < 84 # < 1/3 of max
|
10
|
+
return "important" # > 1/3 of max
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_column_set(properties)
|
14
|
+
sets = calculate_width(properties)
|
15
|
+
current_set ||= params[:set].to_i
|
16
|
+
|
17
|
+
raise NotFound if sets.size <= current_set
|
18
|
+
|
19
|
+
selected_set = sets[current_set][:p]
|
20
|
+
style, other = justify_properties(sets, current_set)
|
21
|
+
|
22
|
+
return style, other, selected_set
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def calculate_width(properties)
|
28
|
+
# local variables
|
29
|
+
total = 0
|
30
|
+
set = []
|
31
|
+
|
32
|
+
# variables used in loop
|
33
|
+
partial_total = 0
|
34
|
+
temp = []
|
35
|
+
|
36
|
+
# loop through properties
|
37
|
+
properties.each do |property|
|
38
|
+
# get width for the current property
|
39
|
+
width = property.column_width || 120
|
40
|
+
|
41
|
+
# if properties that were gathered so far have the width
|
42
|
+
# over 697 make a set for them
|
43
|
+
if partial_total + width >= RailsAdmin::Config.total_columns_width
|
44
|
+
set << {:p => temp, :size => partial_total}
|
45
|
+
partial_total = 0
|
46
|
+
temp = []
|
47
|
+
end
|
48
|
+
|
49
|
+
# continue to add properties to set
|
50
|
+
temp << property
|
51
|
+
partial_total += width
|
52
|
+
total += width
|
53
|
+
end
|
54
|
+
|
55
|
+
# add final set to returned value
|
56
|
+
set << {:p => temp, :size => partial_total}
|
57
|
+
|
58
|
+
return set
|
59
|
+
end
|
60
|
+
|
61
|
+
def justify_properties(sets, current_set)
|
62
|
+
total = 697
|
63
|
+
style = {}
|
64
|
+
|
65
|
+
properties = sets[current_set][:p]
|
66
|
+
# calculate the maximum distance
|
67
|
+
total = sets.size == 1 ? 784 : 744
|
68
|
+
max_sets = sets.size-2
|
69
|
+
total = current_set.between?(1, max_sets) ? 704 : total
|
70
|
+
column_offset = total-sets[current_set][:size]
|
71
|
+
per_property = properties.size != 0 ? column_offset / properties.size : 0
|
72
|
+
offset = column_offset - per_property * properties.size
|
73
|
+
|
74
|
+
properties.each do |property|
|
75
|
+
property_type = property.column_css_class
|
76
|
+
if width = property.column_width
|
77
|
+
style[property_type] ||= {:size => 0, :occ => 0, :width => 0}
|
78
|
+
style[property_type][:size] += per_property
|
79
|
+
style[property_type][:occ] += 1
|
80
|
+
style[property_type][:width] = width + style[property_type][:size] / style[property_type][:occ]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
other = []
|
85
|
+
|
86
|
+
if total == 784
|
87
|
+
other = ["left", "right"]
|
88
|
+
elsif total == 744
|
89
|
+
if current_set == 0
|
90
|
+
other = ["left"]
|
91
|
+
else
|
92
|
+
other = ["right"]
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
return style, other
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
class RailsAdmin::History < ActiveRecord::Base
|
2
|
+
set_table_name :rails_admin_histories
|
3
|
+
|
4
|
+
IGNORED_ATTRS = Set[:id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
|
5
|
+
|
6
|
+
def self.create_update_history(model, object, associations_before, associations_after, modified_associations, old_object, user)
|
7
|
+
messages = []
|
8
|
+
changed_property_list = []
|
9
|
+
properties = model.properties.reject{|p| IGNORED_ATTRS.include?(p[:name])}
|
10
|
+
|
11
|
+
properties.each do |p|
|
12
|
+
property_name = p[:name].to_param
|
13
|
+
changed_property_list << property_name if old_object.safe_send(property_name) != object.safe_send(property_name)
|
14
|
+
end
|
15
|
+
|
16
|
+
model.associations.each do |t|
|
17
|
+
assoc = changed_property_list.index(t[:child_key].to_param)
|
18
|
+
changed_property_list[assoc] = "associated #{t[:pretty_name]}" if assoc
|
19
|
+
end
|
20
|
+
|
21
|
+
associations_after.each do |key, current|
|
22
|
+
removed_ids = (associations_before[key] - current).map{|m| '#' + m.to_s}
|
23
|
+
added_ids = (current - associations_before[key]).map{|m| '#' + m.to_s}
|
24
|
+
messages << "Removed #{key.to_s.capitalize} #{removed_ids.join(', ')} associations" if removed_ids.any?
|
25
|
+
messages << "Added #{key.to_s.capitalize} #{added_ids.join(', ')} associations" if added_ids.any?
|
26
|
+
end
|
27
|
+
|
28
|
+
modified_associations.uniq.each { |t| changed_property_list << "associated #{t}" }
|
29
|
+
|
30
|
+
messages << "Changed #{changed_property_list.join(", ")}" unless changed_property_list.empty?
|
31
|
+
create_history_item(messages, object, model, user) unless messages.empty?
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.create_history_item(message, object, abstract_model, user)
|
35
|
+
create(
|
36
|
+
:message => [message].flatten.join(', '),
|
37
|
+
:item => object.id,
|
38
|
+
:table => abstract_model.pretty_name,
|
39
|
+
:username => user.try(:email)
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.history_for_model(model, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20))
|
44
|
+
history = where(:table => model.pretty_name)
|
45
|
+
history = history.where("message LIKE ? OR username LIKE ?", "%#{query}%", "%#{query}%") if query
|
46
|
+
if sort
|
47
|
+
history = history.order(sort_reverse == "true" ? "#{sort} DESC" : sort)
|
48
|
+
else
|
49
|
+
history = history.order('created_at DESC')
|
50
|
+
end
|
51
|
+
all ? history : history.page(page.presence || "1").per(per_page)
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.history_for_object(model, object, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20))
|
55
|
+
history = where(:table => model.pretty_name, :item => object.id)
|
56
|
+
history = history.where("message LIKE ? OR username LIKE ?", "%#{query}%", "%#{query}%") if query
|
57
|
+
if sort
|
58
|
+
history = history.order(sort_reverse == "true" ? "#{sort} DESC" : sort)
|
59
|
+
else
|
60
|
+
history = history.order('created_at DESC')
|
61
|
+
end
|
62
|
+
all ? history : history.page(page.presence || "1").per(per_page)
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
- models = RailsAdmin::Config.visible_models.select { |model| authorized?(:index, model.abstract_model) }
|
2
|
+
- root_models = models.select { |model| model.parent == :root }
|
3
|
+
|
4
|
+
%ul#nav.navigation
|
5
|
+
%li{:class => ("active" if @page_type == "dashboard")}
|
6
|
+
= link_to(t("admin.dashboard.name"), dashboard_path)
|
7
|
+
- root_models.each do |model|
|
8
|
+
- children = [model] + models.select { |m| m.parent.to_s == model.abstract_model.model.to_s }
|
9
|
+
- tab_titles = children.map { |child| child.abstract_model.pretty_name.downcase }
|
10
|
+
- active = tab_titles.include? @page_type
|
11
|
+
%li{:class => "#{"active" if active} #{"more" unless children.empty?}"}
|
12
|
+
- if children.size == 1
|
13
|
+
= link_to(model.label_plural, index_path(:model_name => model.abstract_model.to_param))
|
14
|
+
- else
|
15
|
+
= model.navigation_label ? t(model.navigation_label, :default => model.navigation_label) : model.label_plural
|
16
|
+
%ul
|
17
|
+
- children.each_with_index do |child, index|
|
18
|
+
%li{:class => ("active" if @page_type == tab_titles[index])}
|
19
|
+
= link_to(child.label_plural, index_path(:model_name => child.abstract_model.to_param))
|
@@ -0,0 +1,9 @@
|
|
1
|
+
%li= link_to t('admin.dashboard.name'), dashboard_path
|
2
|
+
- if main_app_root_path = (main_app.root_path rescue false)
|
3
|
+
%li= link_to t('home.name').capitalize, main_app_root_path
|
4
|
+
- if _current_user
|
5
|
+
- if authorized?(:edit, _current_user.class, _current_user) && _current_user.respond_to?(:email)
|
6
|
+
%li= link_to _current_user.email, edit_path(_current_user.class.name.underscore.pluralize, _current_user)
|
7
|
+
- if defined?(Devise) && (devise_scope = request.env["warden"].config[:default_scope] rescue false) && (logout_path = main_app.send("destroy_#{devise_scope}_session_path") rescue false)
|
8
|
+
%li= link_to content_tag('span', t('admin.credentials.log_out'), :class => 'label important'), logout_path, :method => Devise.sign_out_via
|
9
|
+
%li= image_tag "#{(request.ssl? ? 'https://secure' : 'http://www')}.gravatar.com/avatar/#{Digest::MD5.hexdigest _current_user.email}?s=30", :style => 'padding-top:5px'
|
@@ -0,0 +1,41 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%title= "#{@abstract_model.try(:pretty_name) || @page_name} | #{[_get_plugin_name[0] || 'Rails', _get_plugin_name[1] || 'Admin'].join(' ')}"
|
5
|
+
%meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
|
6
|
+
%meta{:content => "NONE,NOARCHIVE", :name => "robots"}
|
7
|
+
= csrf_meta_tag
|
8
|
+
= stylesheet_link_tag "rails_admin/rails_admin.css"
|
9
|
+
= javascript_include_tag "rails_admin/rails_admin.js"
|
10
|
+
%body.rails_admin{:style => "padding-top: 60px;"}
|
11
|
+
.topbar-wrapper{:style => "z-index: 5;"}
|
12
|
+
.topbar{:'data-dropdown' => 'dropdown'}
|
13
|
+
.topbar-inner
|
14
|
+
.container-fluid
|
15
|
+
%h3
|
16
|
+
= link_to dashboard_path do
|
17
|
+
= _get_plugin_name[0] || 'Rails'
|
18
|
+
%small= _get_plugin_name[1] || 'Admin'
|
19
|
+
%ul.nav.secondary-nav= render :partial => 'layouts/rails_admin/secondary_navigation'
|
20
|
+
.container-fluid
|
21
|
+
.sidebar
|
22
|
+
.well
|
23
|
+
%h3= t "admin.dashboard.navigation"
|
24
|
+
= render :partial => 'layouts/rails_admin/navigation'
|
25
|
+
.content
|
26
|
+
.page-header
|
27
|
+
%h1= @page_name
|
28
|
+
- flash && flash.each do |key, value|
|
29
|
+
.alert-message.fade.in{:class => key}
|
30
|
+
%a.close{:href => '#'}×
|
31
|
+
%p= value
|
32
|
+
= breadcrumbs_for params[:action].to_sym, @abstract_model, @object
|
33
|
+
- if @abstract_model
|
34
|
+
- if @object && !@object.new_record?
|
35
|
+
%ul.tabs= render :partial => 'rails_admin/main/object_links', :locals => { :add_active_class => true, :model_name => params[:model_name], :object => @object }
|
36
|
+
- else
|
37
|
+
%ul.tabs= render :partial => 'rails_admin/main/models_links', :locals => { :abstract_model => @abstract_model }
|
38
|
+
%span.row
|
39
|
+
= yield
|
40
|
+
%footer
|
41
|
+
%p © RailsAdmin 2011
|
@@ -0,0 +1,10 @@
|
|
1
|
+
%table.zebra-striped
|
2
|
+
%thead
|
3
|
+
%tr
|
4
|
+
%th.shrink.user= t("admin.history.user")
|
5
|
+
%th.changes= t("admin.history.changes")
|
6
|
+
%tbody
|
7
|
+
- @history.each do |t|
|
8
|
+
%tr
|
9
|
+
%td= t.try :username
|
10
|
+
%td= "#{m = t.message.downcase} #{m.to_s.rindex("changed") ? "for #{t.table.capitalize} ##{t.item}" : ''}"
|
@@ -0,0 +1,42 @@
|
|
1
|
+
- params = request.params.except(:action, :controller, :model_name)
|
2
|
+
- query = params[:query]
|
3
|
+
- filter = params[:filter]
|
4
|
+
- sort = params[:sort]
|
5
|
+
- sort_reverse = params[:sort_reverse]
|
6
|
+
- path_method = params[:id] ? "history_object_path" : "history_model_path"
|
7
|
+
|
8
|
+
= form_tag("", :method => "get", :class => "search") do
|
9
|
+
.row.clearfix
|
10
|
+
.span3
|
11
|
+
%input{:name => "query", :type => "search", :value => query, :placeholder => "#{t("admin.index.search")}"}
|
12
|
+
.span3
|
13
|
+
%button.btn.primary{:type => "submit", :'data-disable-with' => t("admin.index.search")}= t("admin.index.search")
|
14
|
+
%table#history.zebra-striped
|
15
|
+
%thead
|
16
|
+
%tr
|
17
|
+
- columns = []
|
18
|
+
- columns << { :property_name => "created_at", :css_class => "created_at",:link_text => "DATE/TIME" }
|
19
|
+
- columns << { :property_name => "username", :css_class => "username", :link_text => "USER" }
|
20
|
+
- columns << { :property_name => "item", :css_class => "item", :link_text => "ITEM" } if @general
|
21
|
+
- columns << { :property_name => "message", :css_class => "message", :link_text => "ACTION" }
|
22
|
+
|
23
|
+
- columns.each do |column|
|
24
|
+
- property_name = column[:property_name]
|
25
|
+
- selected = (sort == property_name)
|
26
|
+
- sort_direction = selected ? (sort_reverse ? "headerSortUp" : "headerSortDown") : nil
|
27
|
+
- sort_location = send(path_method, params.except("sort_reverse").merge(:model_name => @abstract_model.to_param, :sort => property_name).merge(selected && sort_reverse != "true" ? {:sort_reverse => "true"} : {}))
|
28
|
+
%th{:class => "header #{column[:css_class]} #{sort_direction if selected}", :'data-link' => sort_location}= column[:link_text]
|
29
|
+
%tbody
|
30
|
+
- @history.each_with_index do |object, index|
|
31
|
+
%tr
|
32
|
+
- unless object.created_at.nil?
|
33
|
+
%td= l(object.created_at, :format => :long, :default => l(object.created_at, :format => :long, :locale => :en))
|
34
|
+
%td= object.username
|
35
|
+
- if @general
|
36
|
+
%td= object.item
|
37
|
+
%td= object.message
|
38
|
+
|
39
|
+
- unless params[:all] || !@history.respond_to?(:current_page)
|
40
|
+
= paginate(@history, :theme => 'twitter-bootstrap')
|
41
|
+
= link_to(t("admin.index.show_all"), send(path_method, params.merge(:all => true)), :class => "show-all btn") unless (tc = @history.total_count) <= @history.size || tc > 100
|
42
|
+
|