active_admin_jcrop 0.0.2.alpha
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +32 -0
- data/app/assets/javascripts/active_admin_jcrop/crop_modal.js.coffee +50 -0
- data/app/assets/stylesheets/active_admin_jcrop/crop_modal.css +11 -0
- data/app/views/active_admin_jcrop/_jcrop_modal.html.erb +13 -0
- data/lib/active_admin_jcrop.rb +8 -0
- data/lib/active_admin_jcrop/version.rb +3 -0
- data/lib/asset_engine.rb +5 -0
- data/lib/asset_engine/carrier_wave.rb +66 -0
- data/lib/asset_engine/paperclip.rb +86 -0
- data/lib/dsl.rb +16 -0
- data/lib/engine.rb +8 -0
- data/lib/formtastic/inputs/jcrop_input.rb +26 -0
- data/lib/image_helper.rb +21 -0
- data/lib/orm.rb +43 -0
- data/lib/railtie.rb +20 -0
- data/test/active_admin_jcrop_test.rb +7 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/admin/admin_user.rb +28 -0
- data/test/dummy/app/admin/dashboard.rb +33 -0
- data/test/dummy/app/admin/post.rb +12 -0
- data/test/dummy/app/assets/javascripts/active_admin.js.coffee +1 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/active_admin.css.scss +17 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/admin_user.rb +6 -0
- data/test/dummy/app/models/post.rb +3 -0
- data/test/dummy/app/uploaders/image_uploader.rb +53 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +18 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +83 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/active_admin.rb +243 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/devise.rb +256 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/devise.en.yml +59 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/db/migrate/20140609195344_create_posts.rb +10 -0
- data/test/dummy/db/migrate/20140609200814_create_active_admin_comments.rb +19 -0
- data/test/dummy/db/migrate/20140609202215_devise_create_admin_users.rb +48 -0
- data/test/dummy/db/schema.rb +56 -0
- data/test/dummy/log/development.log +34910 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/uploads/post/image/1/caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/post/image/1/thumb_caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402854070-53359-7950/caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402854070-53359-7950/thumb_caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402854510-53557-6949/caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402854510-53557-6949/thumb_caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402854728-53655-1717/caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402854728-53655-1717/thumb_caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402855138-53797-0268/caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402855138-53797-0268/thumb_caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402856174-54150-2897/caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402856174-54150-2897/thumb_caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402856561-54391-5701/caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402856561-54391-5701/thumb_caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402884860-59723-5663/caminhao.jpeg +0 -0
- data/test/dummy/public/uploads/tmp/1402884860-59723-5663/thumb_caminhao.jpeg +0 -0
- data/test/dummy/test/fixtures/admin_users.yml +11 -0
- data/test/dummy/test/fixtures/posts.yml +9 -0
- data/test/dummy/test/models/admin_user_test.rb +7 -0
- data/test/dummy/test/models/post_test.rb +7 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/01cc28ef6cf61e838f8df3854de4e76b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/04815176b18d23ced953077cdab6c799 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/05329eaf5e8ad8c55f7356cd6f1a208d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/09b3ba6de4c7b276240b56d755d22193 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/0c410be62a5a11fa5bd31553203370c9 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/11666820d5c80bd008d64048ad423cf2 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/153271d97599450d4419ff64c0096e7a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/198ca7c8448aa0272e8b33c7c8f7f85b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/1c328d420a3818d37452e98c6001b467 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/1ce4a7570f4520b8014c358d0e417201 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/1d7d77c0ef36a03c1a532428dc56fb43 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/1e7ffade48952c7cdfc8672bad4eb410 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2469f5828ec5a821a8e3a1fa52f62ecc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/280b1fab7672e0fd9bb4f1578ca14a9c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2894eb75de440448b3c40d69d7c3daf1 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2de35a92daa792d65be049f319e98640 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2e6efe9c42b17ddcbc206cb7029a6435 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/37ac2b1140ba52b9c49281dfaaeb0a5c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/39d5b668acdaf4ac39dfbec7998c6088 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/3dbddfc04cc1ce845cea75a5d053eb78 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/3f8d2b3750a2c4a35e2fc80119be599b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4168e815a6e3b7f527bae1357a3b4a88 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/42599e7e19d0844f558bf6755147af8a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/43f5bd66cd4b99ca8a25a3a3585dc10f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4806b0909dd0f9ef46c0f8529c16d0cb +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/49366e6a8a305846f3b6e35412b622be +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4abf4453141fa8280d3e92b9d6f95893 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4e10e25ed23161425328c0e86fd2d964 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4f3ac0b41fcb58bba41dd8990f521960 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/50868216b236752b04eac5d3ee00f04c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/517db557c9ab037fe61fcc4135e67a97 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/51a626ab0064c74348ca0076f2464081 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/5248fc2c7af1008d55cc8c390c5aadfd +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/52ec38bf0b8162c3a0b60334179fd9d8 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/542ba2c861120c117755b256e75fc931 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/58242bae329210944c12eef4b21e74fc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/586f47ea7b97a5a0c2864cafc7fa681a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/59f28a7fdd955b2eb441b3ede79d6634 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/5e5c38446431a684f7d95b931dd29845 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/5e978a23006b9bf0e8cb8e01af6b830e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/63f0e112cc9f52fcc19a660011424d4d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/63f701be894a406a83f338a15dbbff5b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/66ecbfb3aaaec21a5dd4da1c53b09474 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6e600d6b6e57393c380d4f34b7e462c1 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7058e63d0f91885601240f901d028889 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7863b5114d0b7761ee50ab47927118ee +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/79a9f34b9b567a41a3c023f6c31b6251 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7aa6ca65af176c54e4e7c93c8eee5a7f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7f8b2599f8306c1dc7d1e3e5b9deded8 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/81dd6767e418fdc1ab0263c94cd79d8b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8247e64103aa55a761ab0f354ff45c16 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/82a4b11f94b10449d88fc04cf6df3a18 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/82a8bc708c97f88caaf13018bf6b279d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/83054e22209abf270f4394486dd2629b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/833571bbb8aac2c2d7ead0bb6c360747 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8546b8d3c7ef5ea3e50ac4a872f661cb +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/857ecd2092cee11f740b3cf2e373ad2a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8636ac646366920af1a3b008b51ceed1 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/86a0e6da188e8b595d42390ae7c686d9 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/870b072c21a14943e77df52a2cda1b73 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8811d2e446647a23d3edf4b867ad0c02 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/88197c7050fe981f868afc887b2ce0ba +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/887d9abab3188ec82c44b8c157617ca7 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/88887cda2e4b689f7b1af350c003d0d2 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/88b9d244297285b4704261b08355377c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8a7d09231ebe79adabff0fbb009fea25 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8a88e7d4780f75cec7a24872a705b76b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8bd0b3620014ec125304f9605c337077 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8d39cc657ceec60e0d5ea1fa37e5e1a0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8f2e727a35967938c7f3368ad0e1fd17 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9181c05dfda585ad6bf9ddb219eb15a1 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/921e258c04378d5f0ecf0f3ee547195e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/95682c5bcf707ffdac00772b90de8e9d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/963d3f2d23c24941fe0b9c0231b8849d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/99f0365331f36952dca860bcc6e8fd4a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9b9cde87d5e9f732acdc4fb18077c71d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9ba436ceb3644f8f052f05eeff94a880 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9f495611485125fd9772059d732fd3ec +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a60a6f908e1d257971c558b8c6db7ae5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a6b936ad9b28fb786d3135a007e5d5b8 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a6eedf5e824ca04685c9da227f406b8f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a759d4068225951d142110473dd6c8b3 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/aae43c2efd29f832dccb299bfa566e44 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/abafd28d094dec608d1a73ec02e75c34 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ae3ffb8f5a8c49bb8253a13ef5d1d2a4 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/af888b78046ad78708407984ecb3c8a6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/b09cd2d5bea8a15151b6022c038dda5c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/b461b3c64042d0c6dbaf73e92275300e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/b4948b52a9f8e7cdd8a77902409545c0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c1de6e9cb5f12e4481b52b1cf8d38d31 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c6698cd7d2263b8d2095648c2ac0fe79 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c72957ff133a3fd942c3ab9960d1d423 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c8c8162f2a41f8578ba98c9a1f37e46b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c962852af3d1e3dc670690c90a7b070e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ca13fe06919030ff6b989ec199d70a44 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cb1fc3f2ce1b7f41695e590c097b311b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cc6dcaa815625d7d4b57e3972e144bda +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ccbc9b9b1eb80fbb7865bc756ce55b87 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ce5e8cfd00d9fb6c6fde000c5e03662d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cfc55116cc6269b60cf1be77557f0fa0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d295569fa361346a1980638387ef138b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d46eab415cde36a1cf5eace3991cf63a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d7e88e6d648deff48df25b735ddc1826 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/db631d9298c9a2f7e02011d47fd3ccca +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e1f04589fe51a214b3d97f4b9d693db2 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e41a3d9a4ba0bd341c8da19fb9e53cca +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e574af4ac554c85b5795e56916e5264e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e641d229c53e2926a5ed4ab6ce79eada +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e73b7841ac8e835c29aeb4fc4bf27e40 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e88a13629d2c3498c801d061a01f6bf1 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ed9f0de1b65ae8d7ef89087c83728461 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f0f4cedded536278ec7f580408e6e60f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f156de297b7d2034db1844f92f4f92ba +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f2f4ef8251bfbaced240dfbd93538a90 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f655e2d083e4e5fc8b2c6a8064178998 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f6667183705babbc5a9efea96e26953b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f669eeb6c0059dbcab647979cad28c4b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f985e5d99fd0dcf330b2a243b63c71f8 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/fa4cfa52c2f50e31e33e69d54e6694dc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/fb8b186d5bf0307f86f65fc787d2adeb +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/fd2f0ae1c70d86cc45823b51d707e220 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ff328cfd9b51b215b0db24b8bb3c63f4 +0 -0
- data/test/test_helper.rb +15 -0
- metadata +543 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1b507737de7d3ae760a816e3e0778e075514966b
|
4
|
+
data.tar.gz: 073e037afd29c16b7c68289bcaa1730a24c5e43e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2e48052bdca036eab391e30e89a7d10fe9156549af27b0bea381d2698a016623f4d499e896d1263b50f2bf5a805e6b289d81cf7346c60b232f62832b84180f39
|
7
|
+
data.tar.gz: 83d3e2432b49608279955da2e901140f886f82fe18f423d41840138c30a9e9489845c0d3b6befbb719b654e02c5468bdeb2ddfd747ba35a63a20a48e80a568b4
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2014 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'ActiveAdminJcrop'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
Bundler::GemHelper.install_tasks
|
21
|
+
|
22
|
+
require 'rake/testtask'
|
23
|
+
|
24
|
+
Rake::TestTask.new(:test) do |t|
|
25
|
+
t.libs << 'lib'
|
26
|
+
t.libs << 'test'
|
27
|
+
t.pattern = 'test/**/*_test.rb'
|
28
|
+
t.verbose = false
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
task default: :test
|
@@ -0,0 +1,50 @@
|
|
1
|
+
window.active_admin_jcrop =
|
2
|
+
start: ->
|
3
|
+
if $('.crop_modal_open').length
|
4
|
+
$('.crop_modal_open').click ->
|
5
|
+
content = $(this).parent().find('.crop_modal_content').clone()
|
6
|
+
image = content.find('img.cropping_image')
|
7
|
+
active_admin_jcrop.cropper =
|
8
|
+
object_class: image.data('objectClass')
|
9
|
+
object_id: image.data('objectId')
|
10
|
+
crop_field: image.data('cropField')
|
11
|
+
jcropper_url: image.data('jcropperUrl')
|
12
|
+
|
13
|
+
$(content).appendTo('body').dialog
|
14
|
+
width: content.width()
|
15
|
+
height: content.height() + 100
|
16
|
+
modal: true
|
17
|
+
position: {
|
18
|
+
my: "center",
|
19
|
+
at: "center",
|
20
|
+
of: window
|
21
|
+
}
|
22
|
+
buttons:
|
23
|
+
'Crop Image': ->
|
24
|
+
|
25
|
+
cropper = active_admin_jcrop.cropper
|
26
|
+
$.ajax
|
27
|
+
type: 'PUT'
|
28
|
+
url: cropper.jcropper_url
|
29
|
+
data:
|
30
|
+
image_data: cropper
|
31
|
+
success: ->
|
32
|
+
console.log('nois')
|
33
|
+
error: ->
|
34
|
+
alert('There was an error while cropping the image')
|
35
|
+
$(@).dialog('close')
|
36
|
+
Cancel: ->
|
37
|
+
$(@).dialog('close').remove()
|
38
|
+
|
39
|
+
image.Jcrop
|
40
|
+
onSelect: update_cropper
|
41
|
+
onChange: update_cropper
|
42
|
+
|
43
|
+
update_cropper = (coords) ->
|
44
|
+
active_admin_jcrop.cropper.crop_x = coords.x
|
45
|
+
active_admin_jcrop.cropper.crop_y = coords.y
|
46
|
+
active_admin_jcrop.cropper.crop_w = coords.w
|
47
|
+
active_admin_jcrop.cropper.crop_h = coords.h
|
48
|
+
|
49
|
+
$ ->
|
50
|
+
active_admin_jcrop.start()
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= link_to "Crop Image", "#" , class: "button crop_modal_open" %>
|
2
|
+
|
3
|
+
<%= content_tag :div, class: "crop_modal_content" do %>
|
4
|
+
<center>
|
5
|
+
<%= image_tag object.send(field).url, class: 'cropping_image', data: {
|
6
|
+
object_class: object.class.to_s.downcase,
|
7
|
+
object_id: object.id,
|
8
|
+
crop_field: field,
|
9
|
+
jcropper_url: send("jcropper_admin_#{object.class.to_s.downcase}_path")
|
10
|
+
}
|
11
|
+
%>
|
12
|
+
</center>
|
13
|
+
<% end %>
|
data/lib/asset_engine.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
module ActiveAdminJcrop
|
2
|
+
module AssetEngine
|
3
|
+
class <<self
|
4
|
+
def thumbnail_names(obj, field)
|
5
|
+
obj.class.uploaders[field.to_sym].versions.keys
|
6
|
+
end
|
7
|
+
|
8
|
+
def crop!(obj, field)
|
9
|
+
obj.send(field).recreate_versions!
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module CarrierWave
|
14
|
+
def active_admin_crop
|
15
|
+
return unless model.active_admin_cropping?
|
16
|
+
manipulate! do |img|
|
17
|
+
::ActiveAdminJcrop::ImageHelper.crop(img, model.crop_w, model.crop_h, model.crop_x, model.crop_y)
|
18
|
+
img
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module CarrierWave
|
26
|
+
module Mount
|
27
|
+
module Extension
|
28
|
+
def self.included(base)
|
29
|
+
base.uploaders.each do |name, klass|
|
30
|
+
klass.send :include, ActiveAdminJcrop::AssetEngine::CarrierWave
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
module ActiveAdmin
|
38
|
+
module Config
|
39
|
+
module Fields
|
40
|
+
module Types
|
41
|
+
module UploaderMethods
|
42
|
+
|
43
|
+
def self.included(base)
|
44
|
+
base.register_instance_option(:cache_method) do
|
45
|
+
"#{name}_cache"
|
46
|
+
end
|
47
|
+
|
48
|
+
base.register_instance_option(:thumb_method) do
|
49
|
+
@thumb_method ||= ((versions = bindings[:object].send(name).versions.keys).find{|k| k.in?([:thumb, :thumbnail, 'thumb', 'thumbnail'])} || versions.first.to_s)
|
50
|
+
end
|
51
|
+
|
52
|
+
base.register_instance_option(:delete_method) do
|
53
|
+
"remove_#{name}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def resource_url(thumb = false)
|
58
|
+
return nil unless (uploader = bindings[:object].send(name)).present?
|
59
|
+
thumb.present? ? uploader.send(thumb).url : uploader.url
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module ActiveAdminJcrop
|
2
|
+
module AssetEngine
|
3
|
+
class <<self
|
4
|
+
def thumbnail_names(obj, field)
|
5
|
+
obj.send(field).styles.keys
|
6
|
+
end
|
7
|
+
|
8
|
+
def crop!(obj, field)
|
9
|
+
obj.send(field).reprocess!
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module Paperclip
|
16
|
+
|
17
|
+
module NewClassMethods
|
18
|
+
def has_attached_file(*args)
|
19
|
+
super
|
20
|
+
|
21
|
+
self.attachment_definitions.each do |name, options|
|
22
|
+
options[:processors] ||= []
|
23
|
+
options[:processors] << :active_admin_jcropper
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
module ClassMethods
|
29
|
+
def self.extended(base)
|
30
|
+
super
|
31
|
+
base.send :extend, ::Paperclip::NewClassMethods
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class ActiveAdminJcropper < Thumbnail
|
36
|
+
def transformation_command
|
37
|
+
if @attachment.instance.active_admin_cropping?
|
38
|
+
ary = super
|
39
|
+
if i = ary.index('-crop')
|
40
|
+
ary.delete_at i+1
|
41
|
+
ary.delete_at i
|
42
|
+
end
|
43
|
+
['-crop', crop_params] + ary
|
44
|
+
else
|
45
|
+
super
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def crop_params
|
50
|
+
target = @attachment.instance
|
51
|
+
"'#{target.crop_w.to_i}x#{target.crop_h.to_i}+#{target.crop_x.to_i}+#{target.crop_y.to_i}'"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
module ActiveAdmin
|
58
|
+
module Config
|
59
|
+
module Fields
|
60
|
+
module Types
|
61
|
+
module UploaderMethods
|
62
|
+
|
63
|
+
def self.included(base)
|
64
|
+
base.register_instance_option(:cache_method) do
|
65
|
+
nil
|
66
|
+
end
|
67
|
+
|
68
|
+
base.register_instance_option(:thumb_method) do
|
69
|
+
@thumb_method ||= ((styles = bindings[:object].send(name).styles.keys).find{|k| k.in?([:thumb, :thumbnail, 'thumb', 'thumbnail'])} || styles.first.to_s)
|
70
|
+
end
|
71
|
+
|
72
|
+
base.register_instance_option(:delete_method) do
|
73
|
+
nil
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def resource_url(thumb = false)
|
78
|
+
return nil unless (attachment = bindings[:object].send(name)).present?
|
79
|
+
thumb.present? ? attachment.url(thumb) : attachment.url
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
data/lib/dsl.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module ActiveAdminJcrop
|
2
|
+
module DSL
|
3
|
+
|
4
|
+
def jcropable
|
5
|
+
member_action :jcropper, method: :put do
|
6
|
+
resource.active_admin_crop! params[:image_data]
|
7
|
+
|
8
|
+
respond_to do |format|
|
9
|
+
format.js { render json: true }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
data/lib/engine.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
module ActiveAdminJcrop
|
2
|
+
class Engine < ::Rails::Engine
|
3
|
+
|
4
|
+
initializer "ActiveAdmin precompile hook" do |app|
|
5
|
+
app.config.assets.precompile += ['active_admin_jcrop/crop_modal.js', 'active_admin_jcrop/crop_modal.css', "active_admin_jcrop/jquery.color.js", "active_admin_jcrop/jquery.Jcrop.min.js", 'active_admin_jcrop/jquery.Jcrop.min.css']
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Formtastic
|
2
|
+
module Inputs
|
3
|
+
class JcropInput < ::Formtastic::Inputs::FileInput
|
4
|
+
include Base
|
5
|
+
|
6
|
+
def to_html
|
7
|
+
input_wrapping do
|
8
|
+
label_html <<
|
9
|
+
builder.file_field(method, input_html_options) <<
|
10
|
+
jcrop_feature
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def jcrop_feature
|
17
|
+
if @object.send(method).present?
|
18
|
+
template.render(partial: "active_admin_jcrop/jcrop_modal", locals: {field: method, object: @object})
|
19
|
+
else
|
20
|
+
''
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/image_helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module ActiveAdminJcrop
|
2
|
+
module ImageHelper
|
3
|
+
|
4
|
+
class <<self
|
5
|
+
def crop(img, w, h, x, y)
|
6
|
+
processor = img.class.name =~ /^MiniMagick/ ? 'minimagick' : 'rmagick'
|
7
|
+
send("#{processor}_crop", img, w, h, x, y)
|
8
|
+
end
|
9
|
+
|
10
|
+
def minimagick_crop(img, w, h, x, y)
|
11
|
+
geometry = "#{w}x#{h}+#{x}+#{y}"
|
12
|
+
img.crop geometry
|
13
|
+
end
|
14
|
+
|
15
|
+
def rmagick_crop(img, w, h, x, y)
|
16
|
+
img.crop! x.to_i, y.to_i, w.to_i, h.to_i
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
data/lib/orm.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
module ActiveAdminJcrop
|
2
|
+
module Orm
|
3
|
+
module Extension
|
4
|
+
|
5
|
+
CropFields = [:crop_x, :crop_y, :crop_w, :crop_h, :crop_field]
|
6
|
+
|
7
|
+
def self.included(base)
|
8
|
+
base.send :attr_accessor, *CropFields
|
9
|
+
end
|
10
|
+
|
11
|
+
def active_admin_cropping?
|
12
|
+
CropFields.all? {|f| send(f).present?}
|
13
|
+
end
|
14
|
+
|
15
|
+
def active_admin_crop!(params)
|
16
|
+
if defined?(::CarrierWave)
|
17
|
+
require 'asset_engine/carrier_wave'
|
18
|
+
elsif defined?(::Paperclip)
|
19
|
+
require 'asset_engine/paperclip'
|
20
|
+
end
|
21
|
+
|
22
|
+
CropFields.each {|f| self.send "#{f}=", params[f] }
|
23
|
+
|
24
|
+
::ActiveAdminJcrop::AssetEngine.crop!(self, self.crop_field) if self.active_admin_cropping?
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
if defined?(::ActiveRecord)
|
32
|
+
::ActiveRecord::Base.send(:include, ::ActiveAdminJcrop::Orm::Extension)
|
33
|
+
end
|
34
|
+
|
35
|
+
if defined?(::Mongoid)
|
36
|
+
module Mongoid
|
37
|
+
module Document
|
38
|
+
def self.included(base)
|
39
|
+
base.send(:include, ::ActiveAdminJcrop::Orm::Extension)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/railtie.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
class ActiveAdminJcropRailtie < Rails::Railtie
|
2
|
+
initializer "active_admin_jcrop_railtie.configure_rails_initialization" do
|
3
|
+
ActiveAdmin::DSL.send(:include, ActiveAdminJcrop::DSL)
|
4
|
+
ActiveAdmin.setup do |config|
|
5
|
+
[ 'active_admin_jcrop/crop_modal',
|
6
|
+
"active_admin_jcrop/jquery.color",
|
7
|
+
"active_admin_jcrop/jquery.Jcrop.min"
|
8
|
+
].each do |js|
|
9
|
+
config.register_javascript js
|
10
|
+
end
|
11
|
+
|
12
|
+
[ "active_admin_jcrop/crop_modal",
|
13
|
+
'active_admin_jcrop/jquery.Jcrop.min'
|
14
|
+
].each do |css|
|
15
|
+
config.register_stylesheet css
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|