Skip to content

Commit

Permalink
Merge pull request #2385 from omoshetech-t/refile-support
Browse files Browse the repository at this point in the history
Add refile support
  • Loading branch information
mshibuya committed Aug 20, 2015
2 parents dbff2cf + 0cb8001 commit 88eb9c3
Show file tree
Hide file tree
Showing 15 changed files with 136 additions and 2 deletions.
7 changes: 7 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ group :mongoid do
gem 'mongoid', '~> 4.0.0'
gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'

gem 'refile-mongoid', '>= 0.0.1' if RUBY_VERSION >= '2.1.0'
end

group :active_record do
Expand Down Expand Up @@ -51,6 +53,11 @@ group :test do
gem 'rubocop', '~> 0.31.0'
gem 'simplecov', '>= 0.9', require: false
gem 'timecop', '>= 0.5'

if RUBY_VERSION >= '2.1.0'
gem 'refile', '~> 0.5', require: 'refile/rails'
gem 'refile-mini_magick', '>= 0.1.0'
end
end

gemspec
8 changes: 8 additions & 0 deletions gemfiles/rails_4.0.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,15 @@ source "https://rubygems.org"
gem "appraisal", ">= 2.0"
gem "devise", ">= 3.2"
gem "rails", "~> 4.0.0"
gem "sass-rails", "~> 5.0"
gem "test-unit"

group :mongoid do
gem "mongoid", "~> 4.0.0"
gem "mongoid-paperclip", ">= 0.0.8", :require => "mongoid_paperclip"
gem "carrierwave-mongoid", ">= 0.6.3", :require => "carrierwave/mongoid"

gem "refile-mongoid", ">= 0.0.1" if RUBY_VERSION >= "2.1.0"
end

group :active_record do
Expand Down Expand Up @@ -55,6 +58,11 @@ group :test do
gem "rubocop", "~> 0.31.0"
gem "simplecov", ">= 0.9", :require => false
gem "timecop", ">= 0.5"

if RUBY_VERSION >= "2.1.0"
gem "refile", "~> 0.5", :require => "refile/rails"
gem "refile-mini_magick", ">= 0.1.0"
end
end

gemspec :path => "../"
8 changes: 8 additions & 0 deletions gemfiles/rails_4.1.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ source "https://rubygems.org"
gem "appraisal", ">= 2.0"
gem "devise", ">= 3.2"
gem "rails", "~> 4.1.0"
gem "sass-rails", "~> 5.0"

group :mongoid do
gem "mongoid", "~> 4.0.0"
gem "mongoid-paperclip", ">= 0.0.8", :require => "mongoid_paperclip"
gem "carrierwave-mongoid", ">= 0.6.3", :require => "carrierwave/mongoid"

gem "refile-mongoid", ">= 0.0.1" if RUBY_VERSION >= "2.1.0"
end

group :active_record do
Expand Down Expand Up @@ -54,6 +57,11 @@ group :test do
gem "rubocop", "~> 0.31.0"
gem "simplecov", ">= 0.9", :require => false
gem "timecop", ">= 0.5"

if RUBY_VERSION >= "2.1.0"
gem "refile", "~> 0.5", :require => "refile/rails"
gem "refile-mini_magick", ">= 0.1.0"
end
end

gemspec :path => "../"
7 changes: 7 additions & 0 deletions gemfiles/rails_4.2.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ group :mongoid do
gem "mongoid", "~> 4.0.0"
gem "mongoid-paperclip", ">= 0.0.8", :require => "mongoid_paperclip"
gem "carrierwave-mongoid", ">= 0.6.3", :require => "carrierwave/mongoid"

gem "refile-mongoid", ">= 0.0.1" if RUBY_VERSION >= "2.1.0"
end

group :active_record do
Expand Down Expand Up @@ -55,6 +57,11 @@ group :test do
gem "rubocop", "~> 0.31.0"
gem "simplecov", ">= 0.9", :require => false
gem "timecop", ">= 0.5"

if RUBY_VERSION >= "2.1.0"
gem "refile", "~> 0.5", :require => "refile/rails"
gem "refile-mini_magick", ">= 0.1.0"
end
end

gemspec :path => "../"
1 change: 1 addition & 0 deletions lib/rails_admin/config/fields.rb
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,5 @@ def self.register_factory(&block)
require 'rails_admin/config/fields/factories/paperclip'
require 'rails_admin/config/fields/factories/dragonfly'
require 'rails_admin/config/fields/factories/carrierwave'
require 'rails_admin/config/fields/factories/refile' if RUBY_VERSION >= '2.1.0'
require 'rails_admin/config/fields/factories/association'
25 changes: 25 additions & 0 deletions lib/rails_admin/config/fields/factories/refile.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
require 'rails_admin/config/fields'
require 'rails_admin/config/fields/types'
require 'rails_admin/config/fields/types/file_upload'

RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
extensions = [:id, :filename, :size, :content_type]
model = parent.abstract_model.model
if (properties.name.to_s =~ /^(.+)_id$/) && defined?(::Refile) && model.ancestors.map(&:to_s).include?("Refile::Attachment(#{attachment_name = Regexp.last_match[1].to_sym})")
field = RailsAdmin::Config::Fields::Types.load(:refile).new(parent, attachment_name, properties)
children_fields = []
extensions.each do |ext|
children_column_name = "#{attachment_name}_#{ext}".to_sym
next unless child_properties = parent.abstract_model.properties.detect { |p| p.name.to_s == children_column_name.to_s }
children_field = fields.detect { |f| f.name == children_column_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
children_field.hide
children_field.filterable(false)
children_fields << children_field.name
end
field.children_fields(children_fields)
fields << field
true
else
false
end
end
1 change: 1 addition & 0 deletions lib/rails_admin/config/fields/types/all.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
require 'rails_admin/config/fields/types/file_upload'
require 'rails_admin/config/fields/types/paperclip'
require 'rails_admin/config/fields/types/carrierwave'
require 'rails_admin/config/fields/types/refile' if RUBY_VERSION >= '2.1.0'
require 'rails_admin/config/fields/types/float'
require 'rails_admin/config/fields/types/has_and_belongs_to_many_association'
require 'rails_admin/config/fields/types/has_many_association'
Expand Down
27 changes: 27 additions & 0 deletions lib/rails_admin/config/fields/types/refile.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
require 'rails_admin/config/fields/base'
require 'rails_admin/config/fields/types/file_upload'

module RailsAdmin
module Config
module Fields
module Types
class Refile < RailsAdmin::Config::Fields::Types::FileUpload
RailsAdmin::Config::Fields::Types.register(self)

register_instance_option :thumb_method do
[:limit, 100, 100]
end

register_instance_option :delete_method do
"remove_#{name}"
end

def resource_url(thumb = [])
return nil unless value
Object.const_get(:Refile).attachment_url(bindings[:object], name, *thumb)
end
end
end
end
end
end
5 changes: 3 additions & 2 deletions spec/controllers/rails_admin/main_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,7 @@ class TeamWithNumberedPlayers < Team
field :paperclip_asset do
delete_method :delete_paperclip_asset
end
field :refile_asset if RUBY_VERSION >= '2.1.0'
end
controller.params = HashWithIndifferentAccess.new(
'field_test' => {
Expand All @@ -337,7 +338,7 @@ class TeamWithNumberedPlayers < Team
'paperclip_asset' => 'test',
'delete_paperclip_asset' => 'test',
'should_not_be_here' => 'test',
},
}.merge(RUBY_VERSION >= '2.1.0' ? {'refile_asset' => 'test', 'remove_refile_asset' => 'test'} : {}),
)

controller.send(:sanitize_params_for!, :create, RailsAdmin.config(FieldTest), controller.params['field_test'])
Expand All @@ -351,7 +352,7 @@ class TeamWithNumberedPlayers < Team
'retained_dragonfly_asset' => 'test',
'paperclip_asset' => 'test',
'delete_paperclip_asset' => 'test',
})
}.merge(RUBY_VERSION >= '2.1.0' ? {'refile_asset' => 'test', 'remove_refile_asset' => 'test'} : {}))
end

it 'allows for polymorphic associations parameters' do
Expand Down
7 changes: 7 additions & 0 deletions spec/dummy_app/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ group :mongoid do
gem 'mongoid', '~> 4.0.0.beta1'
gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'

gem 'refile-mongoid', '>= 0.0.1' if RUBY_VERSION >= '2.1.0'
end

gem 'carrierwave', '>= 0.8'
Expand All @@ -46,6 +48,11 @@ gem 'mlb', '>= 0.7'
gem 'paperclip', '>= 3.4'
gem 'rails_admin', path: '../../'

if RUBY_VERSION >= '2.1.0'
gem 'refile', '~> 0.5', require: 'refile/rails'
gem 'refile-mini_magick', '>= 0.1.0'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
Expand Down
2 changes: 2 additions & 0 deletions spec/dummy_app/app/active_record/field_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ class FieldTest < ActiveRecord::Base

dragonfly_accessor :dragonfly_asset
mount_uploader :carrierwave_asset, CarrierwaveUploader

attachment :refile_asset if RUBY_VERSION >= '2.1.0'
end
9 changes: 9 additions & 0 deletions spec/dummy_app/app/mongoid/field_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,14 @@ class FieldTest
dragonfly_accessor :dragonfly_asset
mount_uploader :carrierwave_asset, CarrierwaveUploader

if RUBY_VERSION >= '2.1.0'
extend Refile::Mongoid::Attachment

field :refile_asset_filename
field :refile_asset_size
field :refile_asset_content_type
attachment :refile_asset
end

validates :short_text, length: {maximum: 255}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class AddRefileToFieldTests < ActiveRecord::Migration
def change
add_column :field_tests, :refile_asset_id, :string
add_column :field_tests, :refile_asset_filename, :string
add_column :field_tests, :refile_asset_size, :string
add_column :field_tests, :refile_asset_content_type, :string
end
end
21 changes: 21 additions & 0 deletions spec/rails_admin/config/fields/base_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,14 @@ class CommentReversed < Tableless
expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :carrierwave_asset }.hidden?).to be_falsey
end
end

if RUBY_VERSION >= '2.1.0'
context 'of a Refile installation' do
it 'is a _id field' do
expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.children_fields).to eq([:refile_asset_id, :refile_asset_filename, :refile_asset_size, :refile_asset_content_type])
end
end
end
end

describe '#form_default_value' do
Expand Down Expand Up @@ -257,6 +265,12 @@ class CommentReversed < Tableless
it 'of carrierwave should find the underlying column on the base table' do
expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :carrierwave_asset }.searchable_columns.collect { |c| c[:column] }).to eq(['field_tests.carrierwave_asset'])
end

if RUBY_VERSION >= '2.1.0'
it 'of refile should find the underlying column on the base table' do
expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.searchable_columns.collect { |c| c[:column] }).to eq(['field_tests.refile_asset_id'])
end
end
end
end

Expand Down Expand Up @@ -288,6 +302,13 @@ class CommentReversed < Tableless
expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :carrierwave_asset }.searchable).to eq(:carrierwave_asset)
expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :carrierwave_asset }.sortable).to eq(:carrierwave_asset)
end

if RUBY_VERSION >= '2.1.0'
it 'of refile should target the first children field' do
expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.searchable).to eq(:refile_asset_id)
expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.sortable).to eq(:refile_asset_id)
end
end
end
end

Expand Down
2 changes: 2 additions & 0 deletions spec/rails_admin/config/fields/types/file_upload_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@
field :paperclip_asset do
delete_method :delete_paperclip_asset
end
field :refile_asset
end
end
expect(RailsAdmin.config(FieldTest).field(:carrierwave_asset).allowed_methods.collect(&:to_s)).to eq %w(carrierwave_asset remove_carrierwave_asset carrierwave_asset_cache)
expect(RailsAdmin.config(FieldTest).field(:dragonfly_asset).allowed_methods.collect(&:to_s)).to eq %w(dragonfly_asset remove_dragonfly_asset retained_dragonfly_asset)
expect(RailsAdmin.config(FieldTest).field(:paperclip_asset).allowed_methods.collect(&:to_s)).to eq %w(paperclip_asset delete_paperclip_asset)
expect(RailsAdmin.config(FieldTest).field(:refile_asset).allowed_methods.collect(&:to_s)).to eq %w(refile_asset remove_refile_asset) if RUBY_VERSION >= '2.1.0'
end
end

Expand Down

0 comments on commit 88eb9c3

Please sign in to comment.