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

#crop!(geometry) ⇒ Object



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

def crop!(geometry)
  rename!
  self.cropper_geometry = geometry
  save!
  refresh_assetable
  self
end

#cropper_geometry=(value) ⇒ Object



117
118
119
120
121
122
123
124
# File 'lib/ab_admin/models/asset.rb', line 117

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)


126
127
128
# File 'lib/ab_admin/models/asset.rb', line 126

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



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

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



105
106
107
108
109
110
# File 'lib/ab_admin/models/asset.rb', line 105

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

#renameObject



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

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



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

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



130
131
132
133
134
135
# File 'lib/ab_admin/models/asset.rb', line 130

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

#rotate_degrees_changed?Boolean

Returns:

  • (Boolean)


137
138
139
# File 'lib/ab_admin/models/asset.rb', line 137

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