Module: AbAdmin::Models::Asset

Extended by:
ActiveSupport::Concern
Included in:
Asset
Defined in:
lib/ab_admin/models/asset.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#as_json(options = nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/ab_admin/models/asset.rb', line 49

def as_json(options = nil)
  options = {
      :only => [:id, :guid, :assetable_id, :assetable_type, :user_id,
                :data_file_size, :data_content_type, :is_main, :original_name],
      :root => 'asset',
      :methods => [:filename, :url, :thumb_url, :width, :height]
  }.merge(options || {})

  super
end

#cropper_geometry=(value) ⇒ Object



109
110
111
112
113
114
115
116
# File 'lib/ab_admin/models/asset.rb', line 109

def cropper_geometry=(value)
  geometry = (value || '').to_s.split(',')

  unless geometry.map(&:blank?).any?
    @cropper_geometry_changed = true
    @cropper_geometry = geometry
  end
end

#cropper_geometry_changed?Boolean

Returns:

  • (Boolean)


118
119
120
# File 'lib/ab_admin/models/asset.rb', line 118

def cropper_geometry_changed?
  @cropper_geometry_changed === true
end

#format_created_atObject



45
46
47
# File 'lib/ab_admin/models/asset.rb', line 45

def format_created_at
  I18n.l(created_at, :format => '%d.%m.%Y %H:%M')
end

#full_url(*args) ⇒ Object



104
105
106
107
# File 'lib/ab_admin/models/asset.rb', line 104

def full_url(*args)
  host = Rails.application.config.action_mailer.default_url_options[:host] || 'www.example.com'
  "//#{host}#{data.url(*args)}"
end

#has_dimensions?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/ab_admin/models/asset.rb', line 60

def has_dimensions?
  respond_to?(:width) && respond_to?(:height)
end

#image?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/ab_admin/models/asset.rb', line 64

def image?
  AbAdmin.image_types.include?(self.data_content_type)
end

#main!Object



68
69
70
71
72
73
# File 'lib/ab_admin/models/asset.rb', line 68

def main!
  self.class.update_all('is_main=0', ['assetable_type=? AND assetable_id=? AND type=?', assetable_type, assetable_id, type])
  update_column(:is_main, true)
  refresh_assetable
  self
end

#refresh_assetableObject



97
98
99
100
101
102
# File 'lib/ab_admin/models/asset.rb', line 97

def refresh_assetable
  return unless assetable.try(:persisted?)
  assetable.touch
  assetable.tire.update_index if assetable.respond_to?(:tire)
  true
end

#renameObject



88
89
90
91
92
93
94
95
# File 'lib/ab_admin/models/asset.rb', line 88

def rename
  file = data.file
  path = data.path
  ext = File.extname(path)
  new_path = File.join(File.dirname(path), "#{File.basename(path).chomp(ext)}_#{rand(99)}#{ext}")
  new_file = ::CarrierWave::SanitizedFile.new file.move_to(new_path)
  data.cache!(new_file)
end

#rename!Object



83
84
85
86
# File 'lib/ab_admin/models/asset.rb', line 83

def rename!
  rename
  save!
end

#rotate!Object



75
76
77
78
79
80
81
# File 'lib/ab_admin/models/asset.rb', line 75

def rotate!
  rename!
  self.rotate_degrees = 90
  save!
  refresh_assetable
  self
end

#rotate_degrees=(value) ⇒ Object



122
123
124
125
126
127
# File 'lib/ab_admin/models/asset.rb', line 122

def rotate_degrees=(value)
  unless value.blank?
    @rotate_degrees_changed = true
    @rotate_degrees = value.to_s
  end
end

#rotate_degrees_changed?Boolean

Returns:

  • (Boolean)


129
130
131
# File 'lib/ab_admin/models/asset.rb', line 129

def rotate_degrees_changed?
  @rotate_degrees_changed === true
end

#thumb_urlObject



41
42
43
# File 'lib/ab_admin/models/asset.rb', line 41

def thumb_url
  data.url(self.thumb_size) if image?
end