adminpanel 1.2.5 → 1.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/.travis.yml +0 -1
  2. data/README.md +9 -6
  3. data/Rakefile +1 -1
  4. data/app/helpers/adminpanel/application_helper.rb +2 -2
  5. data/app/helpers/adminpanel/custom_form_builder.rb +45 -9
  6. data/app/helpers/adminpanel/shared_pages_helper.rb +10 -3
  7. data/app/models/adminpanel/gallery.rb +6 -0
  8. data/app/models/adminpanel/image.rb +3 -8
  9. data/app/models/adminpanel/section.rb +16 -6
  10. data/app/uploaders/adminpanel/image_uploader.rb +2 -2
  11. data/app/views/adminpanel/categories/_categories_table.html.erb +1 -1
  12. data/app/views/adminpanel/categories/index.html.erb +9 -8
  13. data/app/views/adminpanel/galleries/edit.html.erb +3 -10
  14. data/app/views/adminpanel/galleries/index.html.erb +2 -2
  15. data/app/views/adminpanel/galleries/new.html.erb +3 -3
  16. data/app/views/adminpanel/sections/edit.html.erb +11 -15
  17. data/app/views/shared/_form_fields.html.erb +16 -9
  18. data/app/views/shared/_image_fields.html.erb +2 -23
  19. data/app/views/shared/_init_editor.html.erb +12 -12
  20. data/app/views/shared/show.html.erb +4 -3
  21. data/config/locales/es.yml +3 -0
  22. data/lib/adminpanel.rb +1 -1
  23. data/lib/adminpanel/active_record/adminpanel_extension.rb +142 -0
  24. data/lib/adminpanel/version.rb +1 -1
  25. data/lib/generators/adminpanel/gallery/gallery_generator.rb +41 -0
  26. data/lib/generators/adminpanel/gallery/templates/gallery_migration.rb +11 -0
  27. data/lib/generators/adminpanel/gallery/templates/gallery_template.rb +8 -0
  28. data/lib/generators/adminpanel/gallery/templates/uploader.rb +86 -0
  29. data/lib/generators/adminpanel/initialize/initialize_generator.rb +22 -12
  30. data/lib/generators/adminpanel/initialize/templates/create_adminpanel_categories_table.rb +1 -1
  31. data/lib/generators/adminpanel/initialize/templates/create_adminpanel_tables.rb +3 -4
  32. data/lib/generators/adminpanel/initialize/templates/section_uploader.rb +86 -0
  33. data/lib/generators/adminpanel/resource/resource_generator.rb +72 -22
  34. data/lib/tasks/adminpanel/adminpanel.rake +1 -1
  35. data/spec/dummy/.gitignore +2 -1
  36. data/spec/dummy/app/controllers/adminpanel/categories_controller.rb +2 -2
  37. data/spec/dummy/app/controllers/adminpanel/products_controller.rb +3 -3
  38. data/spec/dummy/app/models/adminpanel/categorization.rb +17 -17
  39. data/spec/dummy/app/models/adminpanel/photo.rb +8 -0
  40. data/spec/dummy/app/models/adminpanel/product.rb +49 -26
  41. data/spec/dummy/app/uploader/adminpanel/photo_uploader.rb +86 -0
  42. data/spec/dummy/app/uploader/adminpanel/section_uploader.rb +86 -0
  43. data/spec/features/section_pages_spec.rb +4 -4
  44. data/spec/features/shared_pages_spec.rb +15 -15
  45. data/spec/generators/gallery_generator_spec.rb +53 -0
  46. data/spec/generators/initialize_generator_spec.rb +19 -12
  47. data/spec/generators/resource_generator_spec.rb +44 -37
  48. data/spec/support/define_factory_models.rb +3 -5
  49. data/spec/support/test_database.rb +8 -3
  50. data/spec/tasks/adminpanel_rake_spec.rb +5 -5
  51. metadata +18 -7
  52. data/app/helpers/adminpanel/class_definitions_helper.rb +0 -10
  53. data/app/views/adminpanel/sections/_image_fields.html.erb +0 -24
  54. data/lib/adminpanel/active_record_extension.rb +0 -123
@@ -1,4 +1,4 @@
1
- class CreateCategoriesTable < ActiveRecord::Migration
1
+ class CreateAdminpanelCategoriesTable < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :adminpanel_categories do |t|
4
4
 
@@ -17,7 +17,7 @@ class CreateAdminpanelTables < ActiveRecord::Migration
17
17
  end
18
18
  end
19
19
  end
20
-
20
+
21
21
  def change
22
22
  create_table :adminpanel_users do |t|
23
23
  t.string :name
@@ -37,8 +37,7 @@ class CreateAdminpanelTables < ActiveRecord::Migration
37
37
 
38
38
  create_table :adminpanel_images do |t|
39
39
  t.string :file
40
- t.integer :foreign_key
41
- t.string :model
40
+ t.integer :section_id
42
41
  t.timestamps
43
42
  end
44
43
 
@@ -54,4 +53,4 @@ class CreateAdminpanelTables < ActiveRecord::Migration
54
53
 
55
54
  add_index :adminpanel_sections, [:key]
56
55
  end
57
- end
56
+ end
@@ -0,0 +1,86 @@
1
+ module Adminpanel
2
+ class SectionUploader < CarrierWave::Uploader::Base
3
+ include CarrierWave::RMagick
4
+
5
+ storage :file
6
+
7
+ def root
8
+ Rails.root.join 'public/'
9
+ end
10
+
11
+ def store_dir
12
+ "uploads/image/#{mounted_as}/#{model.id}"
13
+ end
14
+
15
+ # Process files as they are uploaded:
16
+ # process :resize_to_fill => [1366, 768]
17
+
18
+ # THE THUMB VERSION IS NECESSARY!!!!
19
+ version :thumb do
20
+ process :resize_to_limit => [220, 220]
21
+ end
22
+
23
+ # however, you can create your own versions:
24
+ # version :awesome do
25
+ # process :reside_and_pad => [120, 900]
26
+ # end
27
+
28
+ # resize_and_pad(width, height, background=:transparent, gravity=::Magick::CenterGravity)
29
+ #
30
+ # Resize the image to fit within the specified dimensions while retaining
31
+ # the original aspect ratio. If necessary, will pad the remaining area with
32
+ # the given color, which defaults to transparent (for gif and png, white for jpeg).
33
+ #
34
+ # width (Integer)
35
+ # the width to scale the image to
36
+ # height (Integer)
37
+ # the height to scale the image to
38
+ # background (String, :transparent)
39
+ # the color of the background as a hexcode, like “ff45de“
40
+ # gravity (Magick::GravityType)
41
+ # how to position the image
42
+
43
+ # resize_to_fill(width, height)
44
+ #
45
+ # From the RMagick documentation: “Resize the image to fit within the
46
+ # specified dimensions while retaining the aspect ratio of the original image.
47
+ # If necessary, crop the image in the larger dimension.“
48
+ #
49
+ # See even www.imagemagick.org/RMagick/doc/image3.html#resize_to_fill
50
+ #
51
+ # width (Integer)
52
+ # the width to scale the image to
53
+ # height (Integer)
54
+ # the height to scale the image to
55
+
56
+ # resize_to_fit(width, height)
57
+ #
58
+ # From the RMagick documentation: “Resize the image to fit within the
59
+ # specified dimensions while retaining the original aspect ratio. The image
60
+ # may be shorter or narrower than specified in the smaller dimension but
61
+ # will not be larger than the specified values.“
62
+ #
63
+ # See even www.imagemagick.org/RMagick/doc/image3.html#resize_to_fit
64
+ #
65
+ # width (Integer)
66
+ # the width to scale the image to
67
+ # height (Integer)
68
+ # the height to scale the image to
69
+
70
+ # resize_to_limit(width, height)
71
+ #
72
+ # Resize the image to fit within the specified dimensions while retaining
73
+ # the original aspect ratio. Will only resize the image if it is larger than
74
+ # the specified dimensions. The resulting image may be shorter or narrower
75
+ # than specified in the smaller dimension but will not be larger than the
76
+ # specified values.
77
+ #
78
+ # width (Integer)
79
+ # the width to scale the image to
80
+ # height (Integer)
81
+ # the height to scale the image to
82
+ def extension_white_list
83
+ %w(jpg jpeg png)
84
+ end
85
+ end
86
+ end
@@ -1,17 +1,12 @@
1
- require "action_view"
2
- include Rails::Generators::Migration
1
+ # require "action_view"
2
+ require 'rails/generators/active_record'
3
3
  module Adminpanel
4
4
  module Generators
5
- class ResourceGenerator < Rails::Generators::Base
6
-
5
+ class ResourceGenerator < ActiveRecord::Generators::Base
7
6
  source_root File.expand_path("../templates", __FILE__)
8
- argument :resource_name, :type => :string, :required => true
9
- argument :fields, :type => :array, :default => "name:string"
10
7
  desc "Generate the resource files necessary to use a model"
11
8
 
12
- def self.next_migration_number(path)
13
- Time.now.utc.strftime("%Y%m%d%H%M%S")
14
- end
9
+ argument :fields, :type => :array, :default => "name:string"
15
10
 
16
11
  def create_model
17
12
  template 'resource.rb', "app/models/adminpanel/#{lower_name}.rb"
@@ -40,7 +35,7 @@ module Adminpanel
40
35
  end
41
36
 
42
37
  def lower_name
43
- resource_name.singularize.downcase
38
+ name.singularize.downcase
44
39
  end
45
40
 
46
41
  def capitalized_resource
@@ -88,7 +83,7 @@ module Adminpanel
88
83
  assign_attributes_variables(attribute)
89
84
 
90
85
  if @attr_type == "images"
91
- attr_string = attr_string + ":images_attributes, "
86
+ attr_string = attr_string + ":#{@attr_field.pluralize.downcase}_attributes, "
92
87
  elsif @attr_type == "belongs_to"
93
88
  attr_string = "#{attr_string}:#{belongs_to_field(@attr_field)}, "
94
89
  elsif @attr_type == "has_many" || @attr_type == "has_many_through"
@@ -115,17 +110,17 @@ module Adminpanel
115
110
  assign_attributes_variables(attribute)
116
111
 
117
112
  if @attr_type == "string" || @attr_type == "float"
118
- form_hash = form_hash + "\n\t\t\t\t{\"#{@attr_field}\" => {\"type\" => \"text_field\", \"name\" => \"#{@attr_field}\", \"label\" => \"#{@attr_field}\", \"placeholder\" => \"#{@attr_field}\"}},"
113
+ form_hash = form_hash + "#{attribute_hash('text_field')}"
119
114
  elsif @attr_type == "text" || @attr_type == "wysiwyg"
120
- form_hash = form_hash + "\n\t\t\t\t{\"#{@attr_field}\" => {\"type\" => \"wysiwyg_field\", \"name\" => \"#{@attr_field}\", \"label\" => \"#{@attr_field}\", \"placeholder\" => \"#{@attr_field}\"}},"
115
+ form_hash = form_hash + "#{attribute_hash('wysiwyg_field')}"
121
116
  elsif @attr_type == "integer"
122
- form_hash = form_hash + "\n\t\t\t\t{\"#{@attr_field}\" => {\"type\" => \"number_field\", \"name\" => \"#{@attr_field}\", \"label\" => \"#{@attr_field}\", \"placeholder\" => \"#{@attr_field}\"}},"
117
+ form_hash = form_hash + "#{attribute_hash('number_field')}"
123
118
  elsif @attr_type == "datepicker"
124
- form_hash = form_hash + "\n\t\t\t\t{\"#{@attr_field}\" => {\"type\" => \"datepicker\", \"name\" => \"#{@attr_field}\", \"label\" => \"#{@attr_field}\", \"placeholder\" => \"#{@attr_field}\"}},"
119
+ form_hash = form_hash + "#{attribute_hash('datepicker')}"
125
120
  elsif @attr_type == "images"
126
- form_hash = form_hash + "\n\t\t\t\t{\"#{@attr_field}\" => {\"type\" => \"adminpanel_file_field\", \"name\" => \"#{@attr_field}\"}},"
121
+ form_hash = form_hash + "#{file_field_hash}"
127
122
  elsif @attr_type == "belongs_to"
128
- form_hash = form_hash + "\n\t\t\t\t{\"#{belongs_to_field(@attr_field)}\" => {\"@attr_type\" => \"belongs_to\", \"model\" => \"Adminpanel\:\:#{resource_class_name(@attr_field)}\", \"name\" => \"#{belongs_to_field(@attr_field)}\"}},"
123
+ form_hash = form_hash + "#{belongs_to_attribute_hash(belongs_to_field(@attr_field))}"
129
124
  elsif @attr_type == "has_many" || @attr_type == "has_many_through"
130
125
  if models_in_parameter(@attr_field).second.nil?
131
126
  through_model = @attr_field
@@ -133,12 +128,64 @@ module Adminpanel
133
128
  through_model = models_in_parameter(@attr_field).first
134
129
  end
135
130
  through_model = resource_class_name(through_model)
136
- form_hash = form_hash + "\n\t\t\t\t{\"#{has_many_field(through_model)}\" => {\"type\" => \"has_many\", \"model\" => \"Adminpanel\:\:#{through_model}\", \"name\" => \"#{has_many_field(through_model)}\"}},"
131
+ # form_hash = form_hash + "#{relational_attribute_hash('belongs_to')}"
132
+ form_hash = form_hash + "\n\t\t\t\t{'#{has_many_field(through_model)}' => {'type' => 'has_many', 'model' => 'Adminpanel::#{through_model}', 'name' => '#{has_many_field(through_model)}'}},"
137
133
  end
138
134
  end
139
135
  form_hash
140
136
  end
141
137
 
138
+ def attribute_hash(type)
139
+ "#{attribute_name} => {#{form_type(type)}," +
140
+ "#{name_type}," +
141
+ "#{label_type}," +
142
+ "#{placeholder_type}}\n\t\t\t},"
143
+ end
144
+
145
+ def file_field_hash
146
+ "#{starting_hash(@attr_field.downcase.pluralize)} => {#{form_type('adminpanel_file_field')}," +
147
+ "#{name_type}," +
148
+ "#{label_type}," +
149
+ "#{placeholder_type}}\n\t\t\t},"
150
+ end
151
+
152
+ def belongs_to_attribute_hash(name)
153
+ "#{starting_hash(name)} => {#{form_type('belongs_to')}," +
154
+ "#{model_type}," +
155
+ "#{name_type}," +
156
+ "#{label_type}," +
157
+ "#{placeholder_type}}\n\t\t\t},"
158
+ end
159
+
160
+ def attribute_name
161
+ "\n\t\t\t{\n\t\t\t\t'#{@attr_field}'"
162
+ end
163
+
164
+ def starting_hash(name)
165
+ "\n\t\t\t{\n\t\t\t\t'#{name}'"
166
+ end
167
+
168
+ def form_type(type)
169
+ "\n\t\t\t\t\t'type' => '#{type}'"
170
+ end
171
+
172
+ def name_type
173
+ "\n\t\t\t\t\t'name' => '#{@attr_field}'"
174
+ end
175
+
176
+ def label_type
177
+ "\n\t\t\t\t\t'label' => '#{@attr_field}'"
178
+ end
179
+
180
+ def placeholder_type
181
+ "\n\t\t\t\t\t'placeholder' => '#{@attr_field}'"
182
+ end
183
+
184
+ def model_type
185
+ "\n\t\t\t\t\t'model' => 'Adminpanel::#{resource_class_name(@attr_field)}'"
186
+
187
+ end
188
+
142
189
  def migration_string(field, type)
143
190
  if type == "datepicker"
144
191
  "t.string :#{field}"
@@ -198,11 +245,14 @@ module Adminpanel
198
245
  end
199
246
 
200
247
  def image_association
201
- return "has_many :images, :foreign_key => \"foreign_key\", " +
202
- ":conditions => { :model => \"#{lower_name}\" } \n\t\t" +
203
- "accepts_nested_attributes_for :images, :allow_destroy => true\n\t\t" +
204
- "#remember to change the association if you change this model display_name\n\t\t"
248
+ generate_gallery
249
+ return "\n\t\tmount_images :#{@attr_field.pluralize.downcase}\n"
205
250
  end
251
+
252
+ def generate_gallery
253
+ Rails::Generators.invoke("adminpanel:gallery", [@attr_field, lower_name])
254
+ end
255
+
206
256
  end
207
257
  end
208
258
  end
@@ -2,7 +2,7 @@ namespace :adminpanel do
2
2
  desc "Interact with adminpanel models :D"
3
3
 
4
4
  task :section, [:section, :name, :type] => :environment do |t, args|
5
- args.with_defaults(:section => "home", :name => "greeting", :type => "wysiwyg")
5
+ args.with_defaults(:section => "home", :name => "greeting", :type => "")
6
6
  puts "Creating #{args[:name]} in #{args[:section]} section"
7
7
 
8
8
  s = Adminpanel::Section.new(
@@ -2,7 +2,8 @@
2
2
  capybara-*.html
3
3
  .rspec
4
4
  /log
5
- /tmp
5
+ /tmp/test.log
6
+ /tmp/development.log
6
7
  /db/*.sqlite3
7
8
  /public/system
8
9
  /coverage/
@@ -1,4 +1,4 @@
1
1
  module Adminpanel
2
- class CategoriesController < Adminpanel::ApplicationController
3
- end
2
+ class CategoriesController < Adminpanel::ApplicationController
3
+ end
4
4
  end
@@ -1,4 +1,4 @@
1
1
  module Adminpanel
2
- class ProductsController < Adminpanel::ApplicationController
3
- end
4
- end
2
+ class ProductsController < Adminpanel::ApplicationController
3
+ end
4
+ end
@@ -1,24 +1,24 @@
1
1
  module Adminpanel
2
- class Categorization < ActiveRecord::Base
3
- attr_accessible :product_id, :category_id
2
+ class Categorization < ActiveRecord::Base
3
+ attr_accessible :product_id, :category_id
4
4
 
5
- belongs_to :product
6
- belongs_to :category
5
+ belongs_to :product
6
+ belongs_to :category
7
7
 
8
8
 
9
- def self.form_attributes
10
- [
11
- {"product_id" => {"type" => "belongs_to", "model" => "Adminpanel::Product", "name" => "product_id"}},
12
- {"category_id" => {"type" => "belongs_to", "model" => "Adminpanel::Category", "name" => "category_id"}},
13
- ]
14
- end
15
-
16
- def self.display_name
17
- "Categorization"
18
- end
9
+ def self.form_attributes
10
+ [
11
+ {"product_id" => {"type" => "belongs_to", "model" => "Adminpanel::Product", "name" => "product_id"}},
12
+ {"category_id" => {"type" => "belongs_to", "model" => "Adminpanel::Category", "name" => "category_id"}},
13
+ ]
14
+ end
19
15
 
20
- # def self.icon
21
- # "icon-truck"
22
- # end
16
+ def self.display_name
17
+ "Categorization"
23
18
  end
19
+
20
+ # def self.icon
21
+ # "icon-truck"
22
+ # end
23
+ end
24
24
  end
@@ -0,0 +1,8 @@
1
+ module Adminpanel
2
+ class Photo < ActiveRecord::Base
3
+ attr_accessible :product_id, :file
4
+
5
+ mount_uploader :file, PhotoUploader
6
+
7
+ end
8
+ end
@@ -1,33 +1,56 @@
1
1
  module Adminpanel
2
- class Product < ActiveRecord::Base
3
- attr_accessible :price, :name, :category_ids, :description, :images_attributes
4
- has_many :images, :foreign_key => "foreign_key", :conditions => { :model => "product" }
5
- has_many :categorizations
6
- has_many :categories, :through => :categorizations, :dependent => :destroy
2
+ class Product < ActiveRecord::Base
3
+ attr_accessible :price, :name, :photos_attributes, :category_ids, :description
7
4
 
8
- accepts_nested_attributes_for :images, :allow_destroy => true
9
- #remember to change the relationship if you change this model display_name
5
+ has_many :categorizations
6
+ has_many :categories, :through => :categorizations
7
+ mount_images :photos
10
8
 
11
- validates_presence_of :name
12
- validates_presence_of :description
13
- validates_presence_of :price
9
+ validates_presence_of :name
10
+ validates_presence_of :price
11
+ validates_presence_of :description
14
12
 
15
- def self.form_attributes
16
- [
17
- {"category_ids" => {"type" => "has_many", "model" => "Adminpanel::Category", "name" => "category_ids"}},
18
- {"price" => {"type" => "text_field", "name" => "price", "label" => "price", "placeholder" => "price"}},
19
- {"name" => {"type" => "text_field", "name" => "name", "label" => "name", "placeholder" => "name"}},
20
- {"description" => {"type" => "wysiwyg_field", "name" => "description", "label" => "description", "placeholder" => "description"}},
21
- {"image" => {"type" => "adminpanel_file_field", "name" => "image"}},
22
- ]
23
- end
13
+ def self.form_attributes
24
14
 
25
- def self.display_name
26
- "Product"
27
- end
28
15
 
29
- # def self.icon
30
- # "icon-truck"
31
- # end
16
+ [
17
+ {"category_ids" => {"type" => "has_many", "model" => "Adminpanel::Category", "name" => "category_ids"}},
18
+ {
19
+ 'name' => {
20
+ 'type' => 'text_field',
21
+ 'name' => 'name',
22
+ 'label' => 'name',
23
+ 'placeholder' => 'name'}
24
+ },
25
+ {
26
+ 'price' => {
27
+ 'type' => 'text_field',
28
+ 'name' => 'price'
29
+ }
30
+ },
31
+ {
32
+ 'photos' => {
33
+ 'type' => 'adminpanel_file_field',
34
+ 'name' => 'photo',
35
+ 'label' => 'photo',
36
+ 'placeholder' => 'photo'}
37
+ },
38
+ {
39
+ 'description' => {
40
+ 'type' => 'wysiwyg_field',
41
+ 'name' => 'description',
42
+ 'label' => 'description',
43
+ 'placeholder' => 'description'}
44
+ },
45
+ ]
32
46
  end
33
- end
47
+
48
+ def self.display_name
49
+ "Product"
50
+ end
51
+
52
+ # def self.icon
53
+ # "icon-truck"
54
+ # end
55
+ end
56
+ end
@@ -0,0 +1,86 @@
1
+ module Adminpanel
2
+ class PhotoUploader < CarrierWave::Uploader::Base
3
+ include CarrierWave::RMagick
4
+
5
+ storage :file
6
+
7
+ def root
8
+ Rails.root.join 'public/'
9
+ end
10
+
11
+ def store_dir
12
+ "uploads/image/#{mounted_as}/#{model.id}"
13
+ end
14
+
15
+ # Process files as they are uploaded:
16
+ # process :resize_to_fill => [1366, 768]
17
+
18
+ # THE THUMB VERSION IS NECESSARY!!!!
19
+ version :thumb do
20
+ process :resize_to_limit => [220, 220]
21
+ end
22
+
23
+ # however, you can create your own versions:
24
+ # version :awesome do
25
+ # process :reside_and_pad => [120, 900]
26
+ # end
27
+
28
+ # resize_and_pad(width, height, background=:transparent, gravity=::Magick::CenterGravity)
29
+ #
30
+ # Resize the image to fit within the specified dimensions while retaining
31
+ # the original aspect ratio. If necessary, will pad the remaining area with
32
+ # the given color, which defaults to transparent (for gif and png, white for jpeg).
33
+ #
34
+ # width (Integer)
35
+ # the width to scale the image to
36
+ # height (Integer)
37
+ # the height to scale the image to
38
+ # background (String, :transparent)
39
+ # the color of the background as a hexcode, like “ff45de“
40
+ # gravity (Magick::GravityType)
41
+ # how to position the image
42
+
43
+ # resize_to_fill(width, height)
44
+ #
45
+ # From the RMagick documentation: “Resize the image to fit within the
46
+ # specified dimensions while retaining the aspect ratio of the original image.
47
+ # If necessary, crop the image in the larger dimension.“
48
+ #
49
+ # See even www.imagemagick.org/RMagick/doc/image3.html#resize_to_fill
50
+ #
51
+ # width (Integer)
52
+ # the width to scale the image to
53
+ # height (Integer)
54
+ # the height to scale the image to
55
+
56
+ # resize_to_fit(width, height)
57
+ #
58
+ # From the RMagick documentation: “Resize the image to fit within the
59
+ # specified dimensions while retaining the original aspect ratio. The image
60
+ # may be shorter or narrower than specified in the smaller dimension but
61
+ # will not be larger than the specified values.“
62
+ #
63
+ # See even www.imagemagick.org/RMagick/doc/image3.html#resize_to_fit
64
+ #
65
+ # width (Integer)
66
+ # the width to scale the image to
67
+ # height (Integer)
68
+ # the height to scale the image to
69
+
70
+ # resize_to_limit(width, height)
71
+ #
72
+ # Resize the image to fit within the specified dimensions while retaining
73
+ # the original aspect ratio. Will only resize the image if it is larger than
74
+ # the specified dimensions. The resulting image may be shorter or narrower
75
+ # than specified in the smaller dimension but will not be larger than the
76
+ # specified values.
77
+ #
78
+ # width (Integer)
79
+ # the width to scale the image to
80
+ # height (Integer)
81
+ # the height to scale the image to
82
+ def extension_white_list
83
+ %w(jpg jpeg png)
84
+ end
85
+ end
86
+ end