rails_admin 0.4.9 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rails_admin might be problematic. Click here for more details.
- data.tar.gz.sig +0 -0
- data/Gemfile +10 -9
- data/README.md +9 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +3 -3
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +1 -1
- data/app/assets/javascripts/rails_admin/ra.remote-form.js +1 -1
- data/app/assets/javascripts/rails_admin/ra.widgets.coffee +28 -26
- data/app/helpers/rails_admin/application_helper.rb +2 -2
- data/app/views/rails_admin/main/_form_ck_editor.html.haml +10 -0
- data/app/views/rails_admin/main/_form_code_mirror.html.haml +9 -0
- data/app/views/rails_admin/main/_form_text.html.haml +1 -31
- data/app/views/rails_admin/main/_form_wysihtml5.html.haml +8 -0
- data/lib/generators/rails_admin/install_generator.rb +40 -31
- data/lib/generators/rails_admin/templates/initializer.erb +2 -2
- data/lib/rails_admin/abstract_model.rb +1 -1
- data/lib/rails_admin/adapters/active_record.rb +21 -17
- data/lib/rails_admin/adapters/active_record/abstract_object.rb +1 -1
- data/lib/rails_admin/adapters/mongoid.rb +1 -0
- data/lib/rails_admin/config.rb +2 -2
- data/lib/rails_admin/config/configurable.rb +13 -5
- data/lib/rails_admin/config/fields/base.rb +1 -25
- data/lib/rails_admin/config/fields/factories/enum.rb +8 -1
- data/lib/rails_admin/config/fields/types/all.rb +4 -1
- data/lib/rails_admin/config/fields/types/ck_editor.rb +45 -0
- data/lib/rails_admin/config/fields/types/code_mirror.rb +55 -0
- data/lib/rails_admin/config/fields/types/serialized.rb +1 -1
- data/lib/rails_admin/config/fields/types/text.rb +12 -66
- data/lib/rails_admin/config/fields/types/wysihtml5.rb +44 -0
- data/lib/rails_admin/config/model.rb +1 -1
- data/lib/rails_admin/extensions/history/history.rb +4 -2
- data/lib/rails_admin/version.rb +2 -2
- data/spec/controllers/rails_admin/main_controller_spec.rb +21 -0
- data/spec/dummy_app/Gemfile +11 -10
- data/spec/dummy_app/app/active_record/another_field_test.rb +0 -1
- data/spec/dummy_app/app/active_record/ball.rb +0 -2
- data/spec/dummy_app/app/active_record/category.rb +0 -2
- data/spec/dummy_app/app/active_record/cms/basic_page.rb +0 -2
- data/spec/dummy_app/app/active_record/comment.rb +0 -2
- data/spec/dummy_app/app/active_record/comment/confirmed.rb +1 -1
- data/spec/dummy_app/app/active_record/division.rb +0 -2
- data/spec/dummy_app/app/active_record/draft.rb +0 -2
- data/spec/dummy_app/app/active_record/fan.rb +0 -2
- data/spec/dummy_app/app/active_record/field_test.rb +0 -5
- data/spec/dummy_app/app/active_record/image.rb +0 -2
- data/spec/dummy_app/app/active_record/league.rb +1 -3
- data/spec/dummy_app/app/active_record/nested_field_test.rb +0 -2
- data/spec/dummy_app/app/active_record/player.rb +0 -3
- data/spec/dummy_app/app/active_record/team.rb +1 -4
- data/spec/dummy_app/app/active_record/user.rb +0 -4
- data/spec/dummy_app/app/mongoid/another_field_test.rb +0 -1
- data/spec/dummy_app/app/mongoid/ball.rb +0 -2
- data/spec/dummy_app/app/mongoid/category.rb +0 -2
- data/spec/dummy_app/app/mongoid/cms/basic_page.rb +0 -2
- data/spec/dummy_app/app/mongoid/comment.rb +0 -2
- data/spec/dummy_app/app/mongoid/division.rb +0 -2
- data/spec/dummy_app/app/mongoid/draft.rb +0 -2
- data/spec/dummy_app/app/mongoid/fan.rb +0 -2
- data/spec/dummy_app/app/mongoid/field_test.rb +1 -5
- data/spec/dummy_app/app/mongoid/image.rb +0 -2
- data/spec/dummy_app/app/mongoid/league.rb +0 -2
- data/spec/dummy_app/app/mongoid/nested_field_test.rb +0 -2
- data/spec/dummy_app/app/mongoid/player.rb +1 -3
- data/spec/dummy_app/app/mongoid/team.rb +0 -2
- data/spec/dummy_app/app/mongoid/user.rb +1 -2
- data/spec/dummy_app/config/application.rb +0 -7
- data/spec/dummy_app/config/environments/development.rb +1 -7
- data/spec/dummy_app/config/environments/test.rb +2 -4
- data/spec/dummy_app/config/initializers/secret_token.rb +1 -0
- data/spec/dummy_app/config/routes.rb +2 -2
- data/spec/dummy_app/db/test.sqlite3 +0 -0
- data/spec/dummy_app/db/test.sqlite3-journal +0 -0
- data/spec/dummy_app/log/test.log +1423 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/0759f2828afb668a39de3ede4887b369780cdb28/jquery-ui-1.8.7.custom.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/1de49575831c79805eaa5ca759c4aae181c38254/mixins.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/1de49575831c79805eaa5ca759c4aae181c38254/theming.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/1de49575831c79805eaa5ca759c4aae181c38254/variables.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/50e4466efc3255401f37f709f5f338668408ef71/mixins.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/50e4466efc3255401f37f709f5f338668408ef71/theming.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/50e4466efc3255401f37f709f5f338668408ef71/variables.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/60ddb7b14935cbd11f83ec188b4bb1d618ec996f/jquery.colorpicker.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/60ddb7b14935cbd11f83ec188b4bb1d618ec996f/jquery.ui.timepicker.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/60ddb7b14935cbd11f83ec188b4bb1d618ec996f/ra.calendar-additions.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/60ddb7b14935cbd11f83ec188b4bb1d618ec996f/ra.filtering-multiselect.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/60ddb7b14935cbd11f83ec188b4bb1d618ec996f/ra.widgets.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/60ddb7b14935cbd11f83ec188b4bb1d618ec996f/rails_admin.scss.erbc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_accordion.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_alerts.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_breadcrumbs.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_button-groups.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_buttons.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_carousel.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_close.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_component-animations.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_dropdowns.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_forms.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_grid.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_hero-unit.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_labels-badges.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_layouts.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_mixins.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_modals.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_navbar.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_navs.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_pager.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_pagination.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_popovers.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_progress-bars.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_reset.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_scaffolding.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_tables.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_thumbnails.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_tooltip.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_type.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_utilities.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_variables.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/6f29b1fe98624195dbac940d9b40236b6dc877d3/_wells.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/7e38bdfe3aa21a76da53ed64003686502baf8110/font-awesome.css.erbc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/e307626ae1f1da10c3b3073e0db008ce0a7bb251/mixins.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/e307626ae1f1da10c3b3073e0db008ce0a7bb251/theming.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/e307626ae1f1da10c3b3073e0db008ce0a7bb251/variables.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/039a5bf66d220fc450725c31951c0003 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/04fc3904edb99236187355cbb911f89e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0602c18d49d9162a4115f24689044530 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/07a77b4186e7385aa93ee9817d30976d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/09b197beb54130b951fd00df7b3e2ebb +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0c53bdcb904e01bc3006dea06a984620 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0cf66ef0545ef4a25158b64a8a63acc0 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0dcf1b67fc7a00043acda5614e28621a +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0ed5cf232eb4a060d90fa60242ec82eb +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/104cf49747acce2cd760bde221916757 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/11336ccd98408f1d60bc4f137dd6d513 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/129ab684736012c224b424a9202c4077 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/13c5851787eee7ea1dbb6771daf38754 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/148bf2b1fa2b1c501e534d8019e35550 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/17805e3468eb563f81855f6ac93ac7de +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/196f8e4aff622708f7a2060b98fa730a +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1a1d73dd5f0ac320b3a8952b0e6669f5 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1a5c2589d7a73ca326745770ec8c3a68 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1b1d3f4fa8e1243fb66271b20233d01b +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1ca1a15643004e8daee77e762149bfe6 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1cb0bbe35ef01a226fef698f0a9277d2 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1d635e9b0475899eec5bce058b6d48b4 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1e097efcd1115a58473612106f20aad2 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/2047e1449cbcbd8331c15e05c33f006a +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/2740e776eb74b1103220f4a3bf76e55d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/281a64929dab11d3635bdd9ff39fe31c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/28549a2080576826cd4de9ce7ed8d69f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/2e1c59996da5739b76e5ed290e16e4b8 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/308e53bfc20ae7fe1c148e8cd4795184 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/30d3cccc8e819bfc42faebbae2132106 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/349b83b5f7fc156a7865362b50c8a747 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/352b668d5a833880cd46e68e87b61f83 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/3a44eeaaf1973955ec1385900f16e9b0 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/3b9145cad8e6cc05febf5b7ebfdc09b5 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/3ba0f5b2e3e94b6513f5136fa20e5a24 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/3bb982191028c492bec814ca36dda349 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/3e529508d6168a92db8f1706328dbd6b +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/3fea6c96d559fd56c796222c89bf4a55 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/410492703e63dffa68a29af838226cc6 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/433362a2fd8b9b7a80331d20cdfd84b6 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/445343e680a88785242a2aa99d907216 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/4499a6f31ad672fb69537267becff285 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/455dc61be5289cb0a50fc650c4a27b01 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/4563ab77d6c769264c70b904c4ca2b37 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/4c501e79458ca87b9b7964a3656cad68 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/4f49294c06a799e1c063a1ccf100860c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/4fd99da81590fb27074904dd2d4b0afe +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/54a5de7c79d8407342c31af3d5eb31f6 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5507d3ba3736f304240090662413733a +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/585bed8595e5e9d8e5e1a680ac20f005 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5c0be9a39a450f2b191275d281ff50d8 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5eab397d2a4b6ca7b0084107e4acc0d9 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5eae694e8713be9376531ee73716b107 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/6012dbf768041ff3d9566cd00e6ad0e6 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/61077cb42651197ce0d00d267f8cb157 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/627a45561b3d1ecbd1a1f4850208503a +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/642ea63365a0f33fb982cde355dbd952 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/67c296751ce247c30402dd43b035c05b +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/689332efdfbf2cfa06d02d26a47d4332 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/694afe79cc6e42a3e5436d282997ea79 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/6c5729b427f229cad24067bfec82441d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/6f0a4a833a1ce47d77ebbd71ae021a4d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/702016a19f9bf693eec6930878077e4e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/724ce3ff0aeb1174d3a8fddfe1335a79 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/726abc48daa7878021ee1c34360918af +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/749c6e08a7826fd22d279405af87aaf1 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/77ad5664cd45382abab39f19d032133d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/785692dac9a319d2706bd96d7fb5999c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/7cfceeccc9c61c03ad54298ce2472f45 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/7e73c94fd43e4f8b82acfa085d8d5476 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/801e4f782d10f5498b68113e6b2ac139 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/822dbfd89b2b1243844e7c3a0ba001a7 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/842ea8c5f8b0fdb4ef7472b189a76174 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/84a6a7978131f4f8c46fe9c480634aab +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/84cb05237234ff279ad6c78ef3e8e823 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/84f51912f02a7a1ff255ae491b3cc711 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/8605a56363a1d23fad98fbc6d9b3b047 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/86120a9bdcdfa970f8dadae131a2e95e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/88c829469780275b9c1714e2166e1ba4 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/89ffe73975976a0200a923aa2e1e42fb +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/8b0a8bf59842e1d4aaa787eff38e207f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/8b78cef60b108a16787f32ea26a792d0 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/8ddbd7ab77689f8ebb25c59de8152b5e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/8f9bc2d4514893616bed6d6bf75dded1 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/91cb85d19bf8e4ebba27ccf6ea318d9f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/922df3fedca77782061a6d4a6029e7f1 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9509bd192a75365a34a00b01e04b5ab4 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/97cd44fc8e2b4f6acb0d912be738c90f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/98a7dfb33d5879f166f1bf20c031e836 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/98d49f7e1c1d73b97ac2937069e8f312 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/99c1629b9f2827a9840fe8d230e2c5df +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9a451dac641c38ce41d5c1b73fb8de2a +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9ba5e11e725ed4a76f73bc3c43070fc9 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9c332bf94ad0e3614abadfaf3aaf60b2 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9cf969e4845d5a4d718d2e8bfd77101d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9f9d40e0ca625e92215807c7d36eeb45 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/a0d2eb8c9feccca7df34d40b8614a939 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/a1657b7bdf73ec95be9f0514ee2254a2 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/a1c38b062b4789cba43cfce569d89a4e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/a2346449005dbaa9093d8ba7ed2a5d47 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/a86a829dee3d408be1e17d970ee388fa +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ab554675ca375fa03f104b42bd948fe5 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/aded07271baf96cd6d24924ad93ec73d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ae325bc4588e222725187e5daf205589 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/af529b87b946c6e64306fcce7453083e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/b4760047e80466e8355e67301426c1d1 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/b845c9c605c0ac49de3fbbb504e230f7 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/b85362aec4168f3dc8d2a98060ee48eb +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/bab7336757583f60e7daf1487188ed18 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/bd0a6ea6e12c15771e7f2523a3aadc63 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/be49600855e45c34cba5d2d6746e2358 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/be9c7f67a4c4bccb12ebfde75deadf78 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/bff19a6530ebd8793f533e767a24e36e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c3be8bc6957ae7e95fb42e95b69a28c4 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c5787e2ae92280dbccc527e55b11635e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c5d9cd7fa2cb7bfe369963b0196f7ff4 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/cfbcfcb1da5d394fb109e81d39e78159 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d07f5793bd18b01f933ddca0fe37250e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d0a719959de8c62c5bd015cce560bc8a +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d4c23978dcf23280699067752b4d380d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d4e3f96df2204b35a7e8350ecc41cdc7 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d5d70fe44f0d681894cd75826cdaea12 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d6a6297cee0fca1e5e0838f582d80ab2 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d9266b8e42d3f777dc223da809274b31 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/db583f90e8ee3ef1d2f254872519e9c6 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/e4cc8214b21af79b430cd379aafeb4ce +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/e4e7c80687aa50a6e2e4b7c79a145a0c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/e53e14c5fb50eb16744db14274a7eda8 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/e600b47ff99e3ad76cb108e6c312c5b5 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/e8f7215dd1531e59847951a7383271c5 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/eb6ed96d57beb3fd8059dc280a7c2cd7 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ed5e8a35a505b86b4bf715b78391a870 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ee5e4d214ffc908f50e0a637eed3b7b1 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ef0431217a4bac4852ecc9987fd2629e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/f28c745f4469bda7feb0e7b30c6a49ae +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/f43162a23f1a30e5baf49f543f72487d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/f62c80206996d477a114b40987636c55 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/f72d29b2f2b71e9f9f690a806f572e21 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/fa8aef4c90e0b7f97618ed51c78eb38a +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/fb7856209a606e83084889ae67f02673 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/fb7a84e10813b0033c09263a0abf0fa3 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/fb94af8a31614a8efe49c2714a8f894e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/fea0b3135fde8d44c3aaf052a21d28f8 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ff4c93f7f26410e737809fc8772ddc5c +0 -0
- data/spec/integration/authorization/cancan_spec.rb +8 -16
- data/spec/integration/basic/export/rails_admin_basic_export_spec.rb +1 -1
- data/spec/integration/config/edit/rails_admin_config_edit_spec.rb +9 -34
- data/spec/integration/config/show/rails_admin_config_show_spec.rb +1 -1
- data/spec/integration/rails_admin_spec.rb +2 -2
- data/spec/rails_admin/abstract_model_spec.rb +1 -1
- data/spec/rails_admin/adapters/active_record/abstract_object_spec.rb +5 -5
- data/spec/rails_admin/adapters/active_record_spec.rb +11 -9
- data/spec/rails_admin/adapters/mongoid_spec.rb +1 -1
- data/spec/rails_admin/config/fields/base_spec.rb +1 -48
- data/spec/rails_admin/config/fields/types/{text_spec.rb → ck_editor_spec.rb} +6 -3
- metadata +418 -46
- metadata.gz.sig +3 -2
- data/spec/dummy_app/app/active_record/cms/unscoped_page.rb +0 -3
- data/spec/dummy_app/app/mongoid/cms/unscoped_page.rb +0 -5
- data/spec/dummy_app/config/initializers/strong_parameters.rb +0 -2
- data/spec/dummy_app/db/migrate/20111103174459_create_unscoped_pages.rb +0 -9
data.tar.gz.sig
CHANGED
Binary file
|
data/Gemfile
CHANGED
@@ -10,15 +10,15 @@ group :active_record do
|
|
10
10
|
gem 'activerecord-jdbcpostgresql-adapter', '>= 1.2'
|
11
11
|
gem 'jdbc-postgres', '>= 9.2'
|
12
12
|
else
|
13
|
-
gem 'activerecord-jdbcsqlite3-adapter', '>= 1.
|
13
|
+
gem 'activerecord-jdbcsqlite3-adapter', '>= 1.3.0.beta1'
|
14
14
|
gem 'jdbc-sqlite3', '>= 3.7'
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
platforms :ruby, :mswin, :mingw do
|
19
19
|
case ENV['CI_DB_ADAPTER']
|
20
|
-
when '
|
21
|
-
gem '
|
20
|
+
when 'mysql2'
|
21
|
+
gem 'mysql2', '~> 0.3.11'
|
22
22
|
when 'postgresql'
|
23
23
|
gem 'pg', '>= 0.14'
|
24
24
|
else
|
@@ -28,9 +28,10 @@ group :active_record do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
group :mongoid do
|
31
|
-
gem 'mongoid',
|
31
|
+
gem 'mongoid', github: 'mongoid/mongoid'
|
32
32
|
gem 'mongoid-paperclip', '>= 0.0.8', :require => 'mongoid_paperclip'
|
33
|
-
gem '
|
33
|
+
gem 'mongoid-grid_fs', github: 'ahoward/mongoid-grid_fs'
|
34
|
+
gem 'carrierwave-mongoid', github: 'jnicklas/carrierwave-mongoid', :require => 'carrierwave/mongoid'
|
34
35
|
end
|
35
36
|
|
36
37
|
group :development do
|
@@ -40,12 +41,13 @@ end
|
|
40
41
|
|
41
42
|
group :test do
|
42
43
|
gem 'cancan', '>= 1.6'
|
43
|
-
gem 'capybara', '~>
|
44
|
+
gem 'capybara', '~> 2.0'
|
44
45
|
gem 'carrierwave', '>= 0.8'
|
45
46
|
gem 'coveralls', :require => false
|
46
|
-
gem 'database_cleaner', '
|
47
|
-
gem 'devise', '
|
47
|
+
gem 'database_cleaner', '~> 1.0'
|
48
|
+
gem 'devise', '~> 3.0.0.rc'
|
48
49
|
gem 'dragonfly', '>= 0.9'
|
50
|
+
gem 'rack-cache', :require => 'rack/cache'
|
49
51
|
gem 'factory_girl', '>= 4.2'
|
50
52
|
gem 'generator_spec', '>= 0.8'
|
51
53
|
gem 'launchy', '>= 2.2'
|
@@ -53,7 +55,6 @@ group :test do
|
|
53
55
|
gem 'paperclip', '>= 3.4'
|
54
56
|
gem 'rspec-rails', '>= 2.11'
|
55
57
|
gem 'simplecov', :require => false
|
56
|
-
gem 'strong_parameters', '>= 0.1.6'
|
57
58
|
gem 'timecop', '>= 0.5'
|
58
59
|
end
|
59
60
|
|
data/README.md
CHANGED
@@ -18,6 +18,15 @@
|
|
18
18
|
RailsAdmin is a Rails engine that provides an easy-to-use interface for managing your data.
|
19
19
|
|
20
20
|
## Announcements
|
21
|
+
### Support for AcitveModel::MassAssignmentSecurity has been dropped
|
22
|
+
|
23
|
+
RailsAdmin no longer controls field visibility regarding attr_accessible status, nor uses role on mass assignment.
|
24
|
+
See discussion [here](https://github.com/sferik/rails_admin/issues/1443#issuecomment-17132073).
|
25
|
+
|
26
|
+
### Richtext editor DSL(for CKEditor, CodeMirror, bootstrap-wysihtml5) has been changed
|
27
|
+
|
28
|
+
They are configured by field type, not through Text field's extra options. For detail, see [CKEditor](https://github.com/sferik/rails_admin/wiki/CKEditor), [CodeMirror](https://github.com/sferik/rails_admin/wiki/CodeMirror), [Wysihtml5](https://github.com/sferik/rails_admin/wiki/Wysihtml5) in Wiki.
|
29
|
+
|
21
30
|
### [Action required] Security issue
|
22
31
|
`RailsAdmin::Config::Fields::Types::Serialized#parse_input` was unsafe, because it was using the infamous `YAML#load`.
|
23
32
|
|
@@ -72,7 +72,7 @@
|
|
72
72
|
// remove invalid value, as it didn't match anything
|
73
73
|
$(this).val(null);
|
74
74
|
select.html($('<option value="" selected="selected"></option>'));
|
75
|
-
input.data("autocomplete").term = "";
|
75
|
+
input.data("ui-autocomplete").term = "";
|
76
76
|
$(self.element.parents('.controls')[0]).find('.update').addClass('disabled');
|
77
77
|
return false;
|
78
78
|
}
|
@@ -91,9 +91,9 @@
|
|
91
91
|
if(select.attr('placeholder'))
|
92
92
|
input.attr('placeholder', select.attr('placeholder'))
|
93
93
|
|
94
|
-
input.data("autocomplete")._renderItem = function(ul, item) {
|
94
|
+
input.data("ui-autocomplete")._renderItem = function(ul, item) {
|
95
95
|
return $("<li></li>")
|
96
|
-
.data("item
|
96
|
+
.data("ui-autocomplete-item", item)
|
97
97
|
.append( $( "<a></a>" ).html( item.label || item.id ) )
|
98
98
|
.appendTo(ul);
|
99
99
|
};
|
@@ -15,7 +15,7 @@ $(document).on 'nested:fieldAdded', 'form', (content) ->
|
|
15
15
|
content = parent_group.children('.tab-content')
|
16
16
|
toggler = controls.find('.toggler')
|
17
17
|
nav.append(new_tab)
|
18
|
-
$(window.document).trigger('rails_admin.dom_ready') # fire dom_ready for new player in town
|
18
|
+
$(window.document).trigger('rails_admin.dom_ready', [field, parent_group]) # fire dom_ready for new player in town
|
19
19
|
new_tab.children('a').tab('show') # activate added tab
|
20
20
|
nav.select(':hidden').show('slow') # show nav if hidden
|
21
21
|
content.select(':hidden').show('slow') # show tabs content if hidden
|
@@ -1,10 +1,12 @@
|
|
1
|
-
$(document).on 'rails_admin.dom_ready', ->
|
1
|
+
$(document).on 'rails_admin.dom_ready', (e, content) ->
|
2
2
|
|
3
|
-
if $('form')
|
3
|
+
content = if content then content else $('form')
|
4
|
+
|
5
|
+
if content.length # don't waste time otherwise
|
4
6
|
|
5
7
|
# colorpicker
|
6
8
|
|
7
|
-
|
9
|
+
content.find('[data-color]').each ->
|
8
10
|
that = this
|
9
11
|
$(this).ColorPicker
|
10
12
|
color: $(that).val()
|
@@ -20,12 +22,12 @@ $(document).on 'rails_admin.dom_ready', ->
|
|
20
22
|
|
21
23
|
# datetime
|
22
24
|
|
23
|
-
|
25
|
+
content.find('[data-datetimepicker]').each ->
|
24
26
|
$(this).datetimepicker $(this).data('options')
|
25
27
|
|
26
28
|
# enumeration
|
27
29
|
|
28
|
-
|
30
|
+
content.find('[data-enumeration]').each ->
|
29
31
|
if $(this).is('[multiple]')
|
30
32
|
$(this).filteringMultiselect $(this).data('options')
|
31
33
|
else
|
@@ -33,14 +35,14 @@ $(document).on 'rails_admin.dom_ready', ->
|
|
33
35
|
|
34
36
|
# fileupload
|
35
37
|
|
36
|
-
|
38
|
+
content.find('[data-fileupload]').each ->
|
37
39
|
input = this
|
38
40
|
$(this).on 'click', ".delete input[type='checkbox']", ->
|
39
41
|
$(input).children('.toggle').toggle('slow')
|
40
42
|
|
41
43
|
# fileupload-preview
|
42
44
|
|
43
|
-
|
45
|
+
content.find('[data-fileupload]').change ->
|
44
46
|
input = this
|
45
47
|
image_container = $("#" + input.id).parent().children(".preview")
|
46
48
|
unless image_container.length
|
@@ -58,7 +60,7 @@ $(document).on 'rails_admin.dom_ready', ->
|
|
58
60
|
|
59
61
|
# filtering-multiselect
|
60
62
|
|
61
|
-
|
63
|
+
content.find('[data-filteringmultiselect]').each ->
|
62
64
|
$(this).filteringMultiselect $(this).data('options')
|
63
65
|
if $(this).parents("#modal").length # hide link if we already are inside a dialog (endless issues on nested dialogs with JS)
|
64
66
|
$(this).parents('.control-group').find('.btn').remove()
|
@@ -67,7 +69,7 @@ $(document).on 'rails_admin.dom_ready', ->
|
|
67
69
|
|
68
70
|
# filtering-select
|
69
71
|
|
70
|
-
|
72
|
+
content.find('[data-filteringselect]').each ->
|
71
73
|
$(this).filteringSelect $(this).data('options')
|
72
74
|
if $(this).parents("#modal").length # hide link if we already are inside a dialog (endless issues on nested dialogs with JS)
|
73
75
|
$(this).parents('.control-group').find('.btn').remove()
|
@@ -76,55 +78,55 @@ $(document).on 'rails_admin.dom_ready', ->
|
|
76
78
|
|
77
79
|
# nested-many
|
78
80
|
|
79
|
-
|
81
|
+
content.find('[data-nestedmany]').each ->
|
80
82
|
field = $(this).parents('.control-group').first()
|
81
83
|
nav = field.find('> .controls > .nav')
|
82
|
-
|
84
|
+
tab_content = field.find('> .tab-content')
|
83
85
|
toggler = field.find('> .controls > .btn-group > .toggler')
|
84
86
|
# add each nested field to a tab-pane and reference it in the nav
|
85
|
-
|
87
|
+
tab_content.children('.fields:not(.tab-pane)').addClass('tab-pane').each ->
|
86
88
|
$(this).attr('id', 'unique-id-' + (new Date().getTime()) + Math.floor(Math.random()*100000)) # some elements are created on the same ms
|
87
89
|
nav.append('<li><a data-toggle="tab" href="#' + this.id + '">' + $(this).children('.object-infos').data('object-label') + '</a></li>')
|
88
90
|
# only if no tab is set to active
|
89
91
|
if nav.find("> li.active").length == 0
|
90
|
-
# init first tab, toggler and
|
92
|
+
# init first tab, toggler and tab_content/tabs visibility
|
91
93
|
nav.find("> li > a[data-toggle='tab']:first").tab('show')
|
92
94
|
if nav.children().length == 0
|
93
95
|
nav.hide()
|
94
|
-
|
96
|
+
tab_content.hide()
|
95
97
|
toggler.addClass('disabled').removeClass('active').children('i').addClass('icon-chevron-right')
|
96
98
|
else
|
97
99
|
if toggler.hasClass('active')
|
98
100
|
nav.show()
|
99
|
-
|
101
|
+
tab_content.show()
|
100
102
|
toggler.children('i').addClass('icon-chevron-down')
|
101
103
|
else
|
102
104
|
nav.hide()
|
103
|
-
|
105
|
+
tab_content.hide()
|
104
106
|
toggler.children('i').addClass('icon-chevron-right')
|
105
107
|
|
106
108
|
# nested-one
|
107
109
|
|
108
|
-
|
110
|
+
content.find('[data-nestedone]').each ->
|
109
111
|
field = $(this).parents('.control-group').first()
|
110
112
|
nav = field.find("> .controls > .nav")
|
111
|
-
|
113
|
+
tab_content = field.find("> .tab-content")
|
112
114
|
toggler = field.find('> .controls > .toggler')
|
113
|
-
|
115
|
+
tab_content.children(".fields:not(.tab-pane)").addClass('tab-pane active').each ->
|
114
116
|
nav.append('<li><a data-toggle="tab" href="#' + this.id + '">' + $(this).children('.object-infos').data('object-label') + '</a></li>')
|
115
117
|
first_tab = nav.find("> li > a[data-toggle='tab']:first")
|
116
118
|
first_tab.tab('show')
|
117
119
|
field.find("> .controls > [data-target]:first").html('<i class="icon-white"></i> ' + first_tab.html())
|
118
120
|
if toggler.hasClass('active')
|
119
121
|
toggler.children('i').addClass('icon-chevron-down')
|
120
|
-
|
122
|
+
tab_content.show()
|
121
123
|
else
|
122
124
|
toggler.children('i').addClass('icon-chevron-right')
|
123
|
-
|
125
|
+
tab_content.hide()
|
124
126
|
|
125
127
|
# polymorphic-association
|
126
128
|
|
127
|
-
|
129
|
+
content.find('[data-polymorphic]').each ->
|
128
130
|
type_select = $(this)
|
129
131
|
field = type_select.parents('.control-group').first()
|
130
132
|
object_select = field.find('select').last()
|
@@ -149,14 +151,14 @@ $(document).on 'rails_admin.dom_ready', ->
|
|
149
151
|
# ckeditor
|
150
152
|
|
151
153
|
goCkeditors = ->
|
152
|
-
|
154
|
+
content.find('[data-richtext=ckeditor]').not('.ckeditored').each (index, domEle) ->
|
153
155
|
try
|
154
156
|
if instance = window.CKEDITOR.instances[this.id]
|
155
157
|
instance.destroy(true)
|
156
158
|
window.CKEDITOR.replace(this, $(this).data('options'))
|
157
159
|
$(this).addClass('ckeditored')
|
158
160
|
|
159
|
-
$editors =
|
161
|
+
$editors = content.find('[data-richtext=ckeditor]').not('.ckeditored')
|
160
162
|
if $editors.length
|
161
163
|
if not window.CKEDITOR
|
162
164
|
options = $editors.first().data('options')
|
@@ -177,7 +179,7 @@ $(document).on 'rails_admin.dom_ready', ->
|
|
177
179
|
CodeMirror.fromTextArea(textarea,{mode:options['options']['mode'],theme:options['options']['theme']})
|
178
180
|
$(textarea).addClass('codemirrored')
|
179
181
|
|
180
|
-
array =
|
182
|
+
array = content.find('[data-richtext=codemirror]').not('.codemirrored')
|
181
183
|
if array.length
|
182
184
|
@array = array
|
183
185
|
if not window.CodeMirror
|
@@ -196,7 +198,7 @@ $(document).on 'rails_admin.dom_ready', ->
|
|
196
198
|
$(@).closest('.controls').addClass('well')
|
197
199
|
$(@).wysihtml5(config_options)
|
198
200
|
|
199
|
-
array =
|
201
|
+
array = content.find('[data-richtext=bootstrap-wysihtml5]').not('.bootstrap-wysihtml5ed')
|
200
202
|
if array.length
|
201
203
|
@array = array
|
202
204
|
options = $(array[0]).data('options')
|
@@ -44,8 +44,8 @@ module RailsAdmin
|
|
44
44
|
action = RailsAdmin::Config::Actions.find(action.to_sym) if (action.is_a?(Symbol) || action.is_a?(String))
|
45
45
|
|
46
46
|
I18n.t("admin.actions.#{action.i18n_key}.#{label}",
|
47
|
-
:model_label => model_config.
|
48
|
-
:model_label_plural => model_config.
|
47
|
+
:model_label => model_config && model_config.label,
|
48
|
+
:model_label_plural => model_config && model_config.label_plural,
|
49
49
|
:object_label => model_config && object.try(model_config.object_label_method)
|
50
50
|
)
|
51
51
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
:ruby
|
2
|
+
js_data = {
|
3
|
+
:jspath => field.location ? field.location : field.base_location + "ckeditor.js",
|
4
|
+
:base_location => field.base_location,
|
5
|
+
:options => {
|
6
|
+
:customConfig => field.config_js ? field.config_js : field.base_location + "config.js"
|
7
|
+
}
|
8
|
+
}
|
9
|
+
|
10
|
+
= form.text_area field.method_name, field.html_attributes.reverse_merge(:data => { :richtext => 'ckeditor', :options => js_data.to_json }).reverse_merge((hdv = field.html_default_value).nil? ? { :value => field.formatted_value } : { :value => hdv })
|
@@ -0,0 +1,9 @@
|
|
1
|
+
:ruby
|
2
|
+
js_data = {
|
3
|
+
:csspath => field.css_location,
|
4
|
+
:jspath => field.js_location,
|
5
|
+
:options => field.config,
|
6
|
+
:locations => field.assets
|
7
|
+
}
|
8
|
+
|
9
|
+
= form.text_area field.method_name, field.html_attributes.reverse_merge(:data => { :richtext => 'codemirror', :options => js_data.to_json }).reverse_merge((hdv = field.html_default_value).nil? ? { :value => field.formatted_value } : { :value => hdv })
|
@@ -1,31 +1 @@
|
|
1
|
-
:
|
2
|
-
if field.ckeditor
|
3
|
-
richtext = 'ckeditor'
|
4
|
-
js_data = {
|
5
|
-
:jspath => field.ckeditor_location ? field.ckeditor_location : field.ckeditor_base_location + "ckeditor.js",
|
6
|
-
:base_location => field.ckeditor_base_location,
|
7
|
-
:options => {
|
8
|
-
:customConfig => field.ckeditor_config_js ? field.ckeditor_config_js : field.ckeditor_base_location + "config.js"
|
9
|
-
}
|
10
|
-
}
|
11
|
-
elsif field.codemirror
|
12
|
-
richtext = 'codemirror'
|
13
|
-
js_data = {
|
14
|
-
:csspath => field.codemirror_css_location,
|
15
|
-
:jspath => field.codemirror_js_location,
|
16
|
-
:options => field.codemirror_config,
|
17
|
-
:locations => field.codemirror_assets
|
18
|
-
}
|
19
|
-
elsif field.bootstrap_wysihtml5
|
20
|
-
richtext = 'bootstrap-wysihtml5'
|
21
|
-
js_data = {
|
22
|
-
:csspath => field.bootstrap_wysihtml5_css_location,
|
23
|
-
:jspath => field.bootstrap_wysihtml5_js_location,
|
24
|
-
:config_options => field.bootstrap_wysihtml5_config_options.to_json
|
25
|
-
}
|
26
|
-
else
|
27
|
-
richtext = false
|
28
|
-
js_data = {}
|
29
|
-
end
|
30
|
-
|
31
|
-
= form.text_area field.method_name, field.html_attributes.reverse_merge(:data => { :richtext => richtext, :options => js_data.to_json }).reverse_merge((hdv = field.html_default_value).nil? ? { :value => field.formatted_value } : { :value => hdv })
|
1
|
+
= form.text_area field.method_name, field.html_attributes.reverse_merge(:data => { :richtext => false, :options => {}.to_json }).reverse_merge((hdv = field.html_default_value).nil? ? { :value => field.formatted_value } : { :value => hdv })
|
@@ -0,0 +1,8 @@
|
|
1
|
+
:ruby
|
2
|
+
js_data = {
|
3
|
+
:csspath => field.css_location,
|
4
|
+
:jspath => field.js_location,
|
5
|
+
:config_options => field.config_options.to_json
|
6
|
+
}
|
7
|
+
|
8
|
+
= form.text_area field.method_name, field.html_attributes.reverse_merge(:data => { :richtext => 'bootstrap-wysihtml5', :options => js_data.to_json }).reverse_merge((hdv = field.html_default_value).nil? ? { :value => field.formatted_value } : { :value => hdv })
|
@@ -12,6 +12,8 @@ module RailsAdmin
|
|
12
12
|
include Generators::Utils::InstanceMethods
|
13
13
|
extend Generators::Utils::ClassMethods
|
14
14
|
|
15
|
+
class_option :skip_devise, :type => :boolean, :aliases => '-D',
|
16
|
+
:desc => "Skip installation and setup of devise gem."
|
15
17
|
argument :_model_name, :type => :string, :required => false, :desc => "Devise user model name"
|
16
18
|
argument :_namespace, :type => :string, :required => false, :desc => "RailsAdmin url namespace"
|
17
19
|
desc "RailsAdmin installation generator"
|
@@ -22,46 +24,53 @@ module RailsAdmin
|
|
22
24
|
|
23
25
|
display "Hello, RailsAdmin installer will help you set things up!", :blue
|
24
26
|
display "I need to work with Devise, let's look at a few things first:"
|
25
|
-
|
26
|
-
|
27
|
-
display "Adding devise gem to your Gemfile:"
|
28
|
-
append_file "Gemfile", "\n", :force => true
|
29
|
-
gem 'devise'
|
30
|
-
Bundler.with_clean_env do
|
31
|
-
run "bundle install"
|
32
|
-
end
|
33
|
-
else
|
34
|
-
display "Found it!"
|
35
|
-
end
|
36
|
-
unless File.exists?(Rails.root.join("config/initializers/devise.rb"))
|
37
|
-
display "Looks like you don't have devise installed! We'll install it for you:"
|
38
|
-
generate "devise:install"
|
27
|
+
if options[:skip_devise]
|
28
|
+
display "Skipping devise installation..."
|
39
29
|
else
|
40
|
-
display "
|
30
|
+
display "Checking for a current installation of devise..."
|
31
|
+
unless defined?(Devise)
|
32
|
+
display "Adding devise gem to your Gemfile:"
|
33
|
+
append_file "Gemfile", "\n", :force => true
|
34
|
+
gem 'devise'
|
35
|
+
Bundler.with_clean_env do
|
36
|
+
run "bundle install"
|
37
|
+
end
|
38
|
+
else
|
39
|
+
display "Found it!"
|
40
|
+
end
|
41
|
+
unless File.exists?(Rails.root.join("config/initializers/devise.rb"))
|
42
|
+
display "Looks like you don't have devise installed! We'll install it for you:"
|
43
|
+
generate "devise:install"
|
44
|
+
else
|
45
|
+
display "Looks like you've already installed it, good!"
|
46
|
+
end
|
41
47
|
end
|
42
48
|
|
43
49
|
namespace = ask_for("Where do you want to mount rails_admin?", "admin", _namespace)
|
44
50
|
gsub_file "config/routes.rb", /mount RailsAdmin::Engine => \'\/.+\', :as => \'rails_admin\'/, ''
|
45
51
|
route("mount RailsAdmin::Engine => '/#{namespace}', :as => 'rails_admin'")
|
46
52
|
|
47
|
-
unless
|
48
|
-
|
49
|
-
|
50
|
-
generate "devise", model_name
|
51
|
-
else
|
52
|
-
display "And you already set it up, good! We just need to know about your user model name..."
|
53
|
-
guess = routes.match(/devise_for +:(\w+)/)[1].try(:singularize)
|
54
|
-
display("We found '#{guess}' (should be one of 'user', 'admin', etc.)")
|
55
|
-
model_name = ask_for("Correct Devise model name if needed.", guess, _model_name)
|
56
|
-
unless guess == model_name
|
53
|
+
unless options[:skip_devise]
|
54
|
+
unless routes.index("devise_for")
|
55
|
+
model_name = ask_for("What would you like the user model to be called?", "user", _model_name)
|
57
56
|
display "Now setting up devise with user model name '#{model_name}':"
|
58
57
|
generate "devise", model_name
|
59
58
|
else
|
60
|
-
display "
|
59
|
+
display "And you already set it up, good! We just need to know about your user model name..."
|
60
|
+
guess = routes.match(/devise_for +:(\w+)/)[1].try(:singularize)
|
61
|
+
display("We found '#{guess}' (should be one of 'user', 'admin', etc.)")
|
62
|
+
model_name = ask_for("Correct Devise model name if needed.", guess, _model_name)
|
63
|
+
unless guess == model_name
|
64
|
+
display "Now setting up devise with user model name '#{model_name}':"
|
65
|
+
generate "devise", model_name
|
66
|
+
else
|
67
|
+
display "Ok, Devise looks already set up with user model name '#{model_name}':"
|
68
|
+
end
|
61
69
|
end
|
62
70
|
end
|
63
71
|
display "Now you'll need an initializer..."
|
64
|
-
@
|
72
|
+
@current_user_method = model_name ? "current_#{model_name.to_s.underscore}" : ""
|
73
|
+
@model_name = model_name || '<your user class>'
|
65
74
|
unless initializer
|
66
75
|
template "initializer.erb", "config/initializers/rails_admin.rb"
|
67
76
|
else
|
@@ -70,11 +79,11 @@ module RailsAdmin
|
|
70
79
|
config_tag = initializer.match(/RailsAdmin\.config.+\|(.+)\|/)[1] rescue nil
|
71
80
|
if config_tag
|
72
81
|
if initializer.index(::Regexp.new("#{config_tag}\.current_user_method.?\{.+?\}"))
|
73
|
-
display "current_user_method found and updated with '
|
74
|
-
gsub_file Rails.root.join("config/initializers/rails_admin.rb"), ::Regexp.new("#{config_tag}\.current_user_method.?\{.+?\}"), "#{config_tag}.current_user_method {
|
82
|
+
display "current_user_method found and updated with '#{@current_user_method}'", :green
|
83
|
+
gsub_file Rails.root.join("config/initializers/rails_admin.rb"), ::Regexp.new("#{config_tag}\.current_user_method.?\{.+?\}"), "#{config_tag}.current_user_method { #{@current_user_method} }"
|
75
84
|
else
|
76
|
-
display "current_user_method not found. Added one with '
|
77
|
-
insert_into_file Rails.root.join("config/initializers/rails_admin.rb"), "\n\n #{config_tag}.current_user_method {
|
85
|
+
display "current_user_method not found. Added one with '#{@current_user_method}'!", :yellow
|
86
|
+
insert_into_file Rails.root.join("config/initializers/rails_admin.rb"), "\n\n #{config_tag}.current_user_method { #{@current_user_method} } #auto-generated", :after => /^RailsAdmin\.config.+$/
|
78
87
|
end
|
79
88
|
else
|
80
89
|
display "Couldn't parse your config file: current_user_method couldn't be updated", :red
|