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



53
54
55
56
57
58
59
60
61
62
# File 'lib/ab_admin/models/asset.rb', line 53

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



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

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

#cropper_geometry=(value) ⇒ Object



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

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)


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

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



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

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)


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

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

#human_nameObject



49
50
51
# File 'lib/ab_admin/models/asset.rb', line 49

def human_name
  original_name.presence || data_file_name
end

#image?Boolean

Returns:

  • (Boolean)


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

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

#main!Object



72
73
74
75
76
77
# File 'lib/ab_admin/models/asset.rb', line 72

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



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

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

#renameObject



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

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



95
96
97
98
# File 'lib/ab_admin/models/asset.rb', line 95

def rename!
  rename
  save!
end

#rotate!Object



79
80
81
82
83
84
85
# File 'lib/ab_admin/models/asset.rb', line 79

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

#rotate_degrees=(value) ⇒ Object



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

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

#rotate_degrees_changed?Boolean

Returns:

  • (Boolean)


141
142
143
# File 'lib/ab_admin/models/asset.rb', line 141

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