rails_admin_jcrop 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +52 -14
- data/app/controllers/rails_admin/jcrop_controller.rb +38 -2
- data/app/views/rails_admin/jcrop/edit.html.haml +2 -2
- data/app/views/rails_admin/main/_form_jcrop.html.haml +1 -1
- data/lib/rails_admin_jcrop.rb +3 -9
- data/lib/rails_admin_jcrop/asset_engine.rb +2 -0
- data/lib/rails_admin_jcrop/asset_engine/carrier_wave.rb +67 -0
- data/lib/rails_admin_jcrop/asset_engine/paperclip.rb +86 -0
- data/lib/rails_admin_jcrop/orm.rb +41 -0
- data/lib/rails_admin_jcrop/orm/active_record.rb +0 -42
- data/lib/rails_admin_jcrop/orm/mongoid.rb +0 -0
- data/lib/rails_admin_jcrop/{extensions/rails_admin.rb → rails_admin.rb} +4 -15
- data/lib/rails_admin_jcrop/version.rb +1 -1
- metadata +10 -6
- data/lib/rails_admin_jcrop/extensions/carrierwave.rb +0 -9
data/README.markdown
CHANGED
@@ -16,13 +16,12 @@
|
|
16
16
|
# Below is optional
|
17
17
|
edit do
|
18
18
|
field :avatar do
|
19
|
-
# use jcrop_options to pass any options you like to .Jcrop call in javascript
|
20
19
|
jcrop_options aspectRatio: 500.0/320.0
|
21
20
|
end
|
22
21
|
end
|
23
22
|
end
|
24
23
|
|
25
|
-
3.
|
24
|
+
3. If you use Paperclip, you need to do nothing here, rails_admin_jcrop will append RailsAdminJcropper processor to your attachment automatically. If CarrierWave is used, please invoke :rails_admin_crop in your uploader:
|
26
25
|
|
27
26
|
class AvatarUploader < CarrierWave::Uploader::Base
|
28
27
|
|
@@ -34,7 +33,37 @@
|
|
34
33
|
end
|
35
34
|
|
36
35
|
4. Done! Click the image on your RailsAdmin model edit page and enjoy cropping!
|
37
|
-

|
37
|
+
|
38
|
+
## Field Options ##
|
39
|
+
|
40
|
+
### jcrop_options ###
|
41
|
+
|
42
|
+
You can pass any Jcrop plugin allowed options here, for example, use `aspectRatio` to fix the ratio of selection box:
|
43
|
+
|
44
|
+
field :avatar do
|
45
|
+
jcrop_options aspectRatio: 500.0/320.0
|
46
|
+
end
|
47
|
+
|
48
|
+
Please check [Jcrop document](http://deepliquid.com/content/Jcrop_Manual.html#Setting_Options) for more available options.
|
49
|
+
|
50
|
+
### fit_image ###
|
51
|
+
|
52
|
+
By default, image is scaled properly to make cropping more easy, but sometimes the image is still too large to fit in the modal window, you may need to scroll image up/down to crop. If you set `fit_image` to true, image will always be resized to fit in modal window.
|
53
|
+
|
54
|
+
field :avatar do
|
55
|
+
fit_image true
|
56
|
+
end
|
57
|
+
|
58
|
+
Check screenshots below to see the difference:
|
59
|
+
|
60
|
+
When `fit_image` is false (default)
|
61
|
+
|
62
|
+

|
63
|
+
|
64
|
+
When `fit_image` is true
|
65
|
+
|
66
|
+

|
38
67
|
|
39
68
|
## Localization ##
|
40
69
|
|
@@ -51,31 +80,40 @@ Localize the crop form by adding these entries:
|
|
51
80
|
|
52
81
|
* MRI 1.9.3 (All above 1.8.6 should work, I only tested on 1.9.3)
|
53
82
|
* Rails 3.x
|
54
|
-
*
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
*
|
59
|
-
|
83
|
+
* MiniMagick
|
84
|
+
|
85
|
+
## Supported ORM ##
|
86
|
+
|
87
|
+
* ActiveRecord
|
88
|
+
* Mongoid
|
89
|
+
|
90
|
+
## Supported Asset Plugin ##
|
91
|
+
|
92
|
+
* CarrierWave
|
93
|
+
* Paperclip
|
60
94
|
|
61
95
|
## TODO ##
|
62
96
|
|
63
|
-
*
|
64
|
-
|
65
|
-
* RMagick support
|
97
|
+
* automate :rails_admin_crop for CarrierWave uploader
|
98
|
+
|
66
99
|
|
67
100
|
## Contributing ##
|
68
101
|
|
69
102
|
Any help is encouraged. Here are some ways you can contribute:
|
70
103
|
|
71
104
|
* by using it
|
72
|
-
* by telling people
|
105
|
+
* by telling people
|
73
106
|
* by reporting bugs or suggesting new features on github issue tracker
|
74
107
|
* by fixing bugs or implementing features
|
75
|
-
* by giving author a hug (especially if you're girl)
|
76
108
|
|
77
109
|
## Thanks ##
|
78
110
|
|
111
|
+
### Contributors ###
|
112
|
+
|
113
|
+
* [Alan Rosin Sikora](https://github.com/alansikora) ([alansikora](https://github.com/alansikora))
|
114
|
+
|
115
|
+
### And ... ###
|
116
|
+
|
79
117
|
Life is easier with you.
|
80
118
|
|
81
119
|
* [RailsAdmin](https://github.com/sferik/rails_admin/)
|
@@ -1,12 +1,33 @@
|
|
1
|
+
require 'mini_magick'
|
2
|
+
|
1
3
|
module RailsAdmin
|
2
4
|
|
3
5
|
class JcropController < RailsAdmin::ApplicationController
|
4
6
|
skip_before_filter :get_model
|
5
|
-
before_filter :get_model, :get_object, :get_field
|
7
|
+
before_filter :get_model, :get_object, :get_field, :get_fit_image
|
6
8
|
|
7
9
|
helper_method :abstract_model, :geometry
|
8
10
|
|
9
11
|
def edit
|
12
|
+
@form_options = {}
|
13
|
+
@form_options[:method] = :put
|
14
|
+
@form_options[:'data-title'] = "#{I18n.t("admin.actions.crop.menu").capitalize} #{abstract_model.model.human_attribute_name @field}"
|
15
|
+
|
16
|
+
@image_tag_options = {}
|
17
|
+
@image_tag_options[:class] = "jcrop-subject"
|
18
|
+
@image_tag_options[:'data-geometry'] = geometry(@object.send(@field).path).join(",")
|
19
|
+
|
20
|
+
if @fit_image
|
21
|
+
fit_image_geometry = fit_image_geometry(@object.send(@field).path)
|
22
|
+
|
23
|
+
@form_options[:'style'] = "margin-left: #{375 - (fit_image_geometry[0]/2) - 15}px;"
|
24
|
+
|
25
|
+
@image_tag_options[:style] = ""
|
26
|
+
@image_tag_options[:style] << "width: #{fit_image_geometry[0]}px !important;"
|
27
|
+
@image_tag_options[:style] << "height: #{fit_image_geometry[1]}px !important;"
|
28
|
+
@image_tag_options[:style] << "border: 1px solid #AAA !important;"
|
29
|
+
end
|
30
|
+
|
10
31
|
respond_to do |format|
|
11
32
|
format.html
|
12
33
|
format.js { render :edit, :layout => false }
|
@@ -21,7 +42,7 @@ module RailsAdmin
|
|
21
42
|
format.js do
|
22
43
|
asset = @object.send @field
|
23
44
|
urls = {:original => asset.url}
|
24
|
-
|
45
|
+
thumbnail_names.each {|name| urls[name] = asset.url(name)}
|
25
46
|
|
26
47
|
render :json => {
|
27
48
|
:id => @object.id,
|
@@ -35,6 +56,14 @@ module RailsAdmin
|
|
35
56
|
|
36
57
|
private
|
37
58
|
|
59
|
+
def thumbnail_names
|
60
|
+
RailsAdminJcrop::AssetEngine.thumbnail_names(@object, @field)
|
61
|
+
end
|
62
|
+
|
63
|
+
def get_fit_image
|
64
|
+
@fit_image = params[:fit_image] == "true" ? true : false
|
65
|
+
end
|
66
|
+
|
38
67
|
def get_field
|
39
68
|
@field = params[:field]
|
40
69
|
end
|
@@ -44,6 +73,13 @@ module RailsAdmin
|
|
44
73
|
[image[:width], image[:height]]
|
45
74
|
end
|
46
75
|
|
76
|
+
def fit_image_geometry(image_path)
|
77
|
+
image = MiniMagick::Image.open(image_path)
|
78
|
+
# Magic number origin: https://github.com/janx/rails_admin_jcrop/pull/2
|
79
|
+
image.resize "720x400"
|
80
|
+
[image[:width], image[:height]]
|
81
|
+
end
|
82
|
+
|
47
83
|
def cropping?
|
48
84
|
[:crop_x, :crop_y, :crop_w, :crop_h].all? {|c| params[c].present?}
|
49
85
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
= form_tag nil,
|
2
|
-
= image_tag @object.send(@field).url,
|
1
|
+
= form_tag nil, @form_options do
|
2
|
+
= image_tag @object.send(@field).url, @image_tag_options
|
3
3
|
= hidden_field_tag :crop_x
|
4
4
|
= hidden_field_tag :crop_y
|
5
5
|
= hidden_field_tag :crop_w
|
@@ -11,7 +11,7 @@
|
|
11
11
|
- if value = field.pretty_value
|
12
12
|
= value
|
13
13
|
= form.file_field(field.name, field.html_attributes.reverse_merge({ :data => { :fileupload => true } }))
|
14
|
-
= link_to 'Edit Image', '#', :data => {:link => jcrop_path(:model_name => form.object.class.to_param, :modal => true, :id => form.object.id, :field => field.name), :thumb => field.thumb_method}, :style => 'display:none', :class => "jcrop_handle"
|
14
|
+
= link_to 'Edit Image', '#', :data => {:link => jcrop_path(:model_name => form.object.class.to_param, :modal => true, :id => form.object.id, :field => field.name, :fit_image => field.fit_image), :thumb => field.thumb_method}, :style => 'display:none', :class => "jcrop_handle"
|
15
15
|
- if field.optional? && field.errors.blank? && file && field.delete_method
|
16
16
|
%a.btn.btn-info{:href => '#', :'data-toggle' => 'button', :onclick => "$(this).siblings('[type=checkbox]').click(); $(this).siblings('.toggle').toggle('slow'); jQuery(this).toggleClass('btn-danger btn-info'); return false"}
|
17
17
|
%i.icon-white.icon-trash
|
data/lib/rails_admin_jcrop.rb
CHANGED
@@ -1,10 +1,4 @@
|
|
1
1
|
require "rails_admin_jcrop/engine"
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
autoload :ActiveRecord, 'rails_admin_jcrop/orm/active_record'
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'rails_admin_jcrop/extensions/carrierwave'
|
10
|
-
require 'rails_admin_jcrop/extensions/rails_admin'
|
2
|
+
require 'rails_admin_jcrop/orm'
|
3
|
+
require 'rails_admin_jcrop/asset_engine'
|
4
|
+
require 'rails_admin_jcrop/rails_admin'
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module RailsAdminJcrop
|
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 rails_admin_crop
|
15
|
+
return unless model.rails_admin_cropping?
|
16
|
+
manipulate! do |img|
|
17
|
+
geometry = "#{model.crop_w}x#{model.crop_h}+#{model.crop_x}+#{model.crop_y}"
|
18
|
+
img.crop geometry
|
19
|
+
img
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
module CarrierWave
|
27
|
+
module Mount
|
28
|
+
module Extension
|
29
|
+
def self.included(base)
|
30
|
+
base.uploaders.each do |name, klass|
|
31
|
+
klass.send :include, RailsAdminJcrop::AssetEngine::CarrierWave
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
module RailsAdmin
|
39
|
+
module Config
|
40
|
+
module Fields
|
41
|
+
module Types
|
42
|
+
module UploaderMethods
|
43
|
+
|
44
|
+
def self.included(base)
|
45
|
+
base.register_instance_option(:cache_method) do
|
46
|
+
"#{name}_cache"
|
47
|
+
end
|
48
|
+
|
49
|
+
base.register_instance_option(:thumb_method) do
|
50
|
+
@thumb_method ||= ((versions = bindings[:object].send(name).versions.keys).find{|k| k.in?([:thumb, :thumbnail, 'thumb', 'thumbnail'])} || versions.first.to_s)
|
51
|
+
end
|
52
|
+
|
53
|
+
base.register_instance_option(:delete_method) do
|
54
|
+
"remove_#{name}"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def resource_url(thumb = false)
|
59
|
+
return nil unless (uploader = bindings[:object].send(name)).present?
|
60
|
+
thumb.present? ? uploader.send(thumb).url : uploader.url
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module RailsAdminJcrop
|
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] << :rails_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 RailsAdminJcropper < Thumbnail
|
36
|
+
def transformation_command
|
37
|
+
if @attachment.instance.rails_admin_cropping?
|
38
|
+
ary = super
|
39
|
+
if i = ary.index('-crop')
|
40
|
+
ary.delete_at i
|
41
|
+
ary.delete_at i+1
|
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 RailsAdmin
|
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
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module RailsAdminJcrop
|
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
|
+
base.after_update :rails_admin_crop_callback, :if => :rails_admin_cropping?
|
10
|
+
end
|
11
|
+
|
12
|
+
def rails_admin_crop_callback
|
13
|
+
::RailsAdminJcrop::AssetEngine.crop!(self, self.crop_field)
|
14
|
+
end
|
15
|
+
|
16
|
+
def rails_admin_cropping?
|
17
|
+
CropFields.all? {|f| send(f).present?}
|
18
|
+
end
|
19
|
+
|
20
|
+
def rails_admin_crop!(params)
|
21
|
+
CropFields.each {|f| self.send "#{f}=", params[f] }
|
22
|
+
save!
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
if defined?(::ActiveRecord)
|
30
|
+
::ActiveRecord::Base.send(:include, ::RailsAdminJcrop::Orm::Extension)
|
31
|
+
end
|
32
|
+
|
33
|
+
if defined?(::Mongoid)
|
34
|
+
module Mongoid
|
35
|
+
module Document
|
36
|
+
def self.included(base)
|
37
|
+
base.send(:include, ::RailsAdminJcrop::Orm::Extension)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module RailsAdminJcrop
|
2
|
-
module Orm
|
3
|
-
module ActiveRecord
|
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
|
-
base.after_update :rails_admin_crop_callback, :if => :rails_admin_cropping?
|
10
|
-
|
11
|
-
base.uploaders.each do |name, klass|
|
12
|
-
klass.send :include, CarrierWaveUploaderMixin
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def rails_admin_crop_callback
|
17
|
-
self.send(self.crop_field).recreate_versions!
|
18
|
-
end
|
19
|
-
|
20
|
-
def rails_admin_cropping?
|
21
|
-
CropFields.all? {|f| send(f).present?}
|
22
|
-
end
|
23
|
-
|
24
|
-
def rails_admin_crop!(params)
|
25
|
-
CropFields.each {|f| self.send "#{f}=", params[f] }
|
26
|
-
save!
|
27
|
-
end
|
28
|
-
|
29
|
-
module CarrierWaveUploaderMixin
|
30
|
-
def rails_admin_crop
|
31
|
-
return unless model.rails_admin_cropping?
|
32
|
-
manipulate! do |img|
|
33
|
-
geometry = "#{model.crop_w}x#{model.crop_h}+#{model.crop_x}+#{model.crop_y}"
|
34
|
-
img.crop geometry
|
35
|
-
img
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
File without changes
|
@@ -14,26 +14,15 @@ module RailsAdmin
|
|
14
14
|
:form_jcrop
|
15
15
|
end
|
16
16
|
|
17
|
-
register_instance_option(:thumb_method) do
|
18
|
-
@thumb_method ||= ((versions = bindings[:object].send(name).versions.keys).find{|k| k.in?([:thumb, :thumbnail, 'thumb', 'thumbnail'])} || versions.first.to_s)
|
19
|
-
end
|
20
|
-
|
21
|
-
register_instance_option(:delete_method) do
|
22
|
-
"remove_#{name}"
|
23
|
-
end
|
24
|
-
|
25
|
-
register_instance_option(:cache_method) do
|
26
|
-
"#{name}_cache"
|
27
|
-
end
|
28
|
-
|
29
17
|
register_instance_option(:jcrop_options) do
|
30
18
|
{}
|
31
19
|
end
|
32
20
|
|
33
|
-
|
34
|
-
|
35
|
-
thumb.present? ? uploader.send(thumb).url : uploader.url
|
21
|
+
register_instance_option(:fit_image) do
|
22
|
+
@fit_image ||= false
|
36
23
|
end
|
24
|
+
|
25
|
+
include ::RailsAdmin::Config::Fields::Types::UploaderMethods
|
37
26
|
end
|
38
27
|
end
|
39
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_admin_jcrop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: mini_magick
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
51
|
- - ! '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
|
-
type: :
|
54
|
+
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
@@ -73,10 +73,14 @@ files:
|
|
73
73
|
- config/locales/en.yml
|
74
74
|
- config/routes.rb
|
75
75
|
- lib/rails_admin_jcrop/version.rb
|
76
|
+
- lib/rails_admin_jcrop/asset_engine.rb
|
77
|
+
- lib/rails_admin_jcrop/asset_engine/paperclip.rb
|
78
|
+
- lib/rails_admin_jcrop/asset_engine/carrier_wave.rb
|
76
79
|
- lib/rails_admin_jcrop/engine.rb
|
80
|
+
- lib/rails_admin_jcrop/rails_admin.rb
|
81
|
+
- lib/rails_admin_jcrop/orm.rb
|
77
82
|
- lib/rails_admin_jcrop/orm/active_record.rb
|
78
|
-
- lib/rails_admin_jcrop/
|
79
|
-
- lib/rails_admin_jcrop/extensions/rails_admin.rb
|
83
|
+
- lib/rails_admin_jcrop/orm/mongoid.rb
|
80
84
|
- lib/rails_admin_jcrop.rb
|
81
85
|
- vendor/assets/images/rails_admin/Jcrop.gif
|
82
86
|
- vendor/assets/javascripts/rails_admin/jquery.Jcrop.js
|