Module: AbAdmin::Models::Asset
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #as_json(options = nil) ⇒ Object
- #base_filename ⇒ Object
- #base_filename=(value) ⇒ Object
-
#build_filename(base_filename, record = nil) ⇒ Object
allow to build custom human file name.
- #crop!(geometry) ⇒ Object
- #cropper_geometry=(value) ⇒ Object
- #cropper_geometry_changed? ⇒ Boolean
- #full_url(*args) ⇒ Object
- #has_dimensions? ⇒ Boolean
- #human_name ⇒ Object
- #image? ⇒ Boolean
- #main! ⇒ Object
- #refresh_assetable ⇒ Object
- #rename!(name = nil) ⇒ Object
- #rotate! ⇒ Object
- #rotate_degrees=(value) ⇒ Object
- #rotate_degrees_changed? ⇒ Boolean
- #store_model_filename(record) ⇒ Object
- #thumb_url ⇒ Object
- #url_on_fly(version) ⇒ Object
Instance Method Details
#as_json(options = nil) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/ab_admin/models/asset.rb', line 59 def as_json( = nil) = { only: [:id, :guid, :assetable_id, :assetable_type, :user_id, :data_file_size, :data_content_type, :is_main, :original_name, :cached_alt, :cached_title], root: 'asset', methods: [:filename, :url, :thumb_url, :width, :height] }.merge( || {}) super end |
#base_filename ⇒ Object
78 79 80 81 |
# File 'lib/ab_admin/models/asset.rb', line 78 def base_filename base = File.basename(data_file_name, '.*') base == data_secure_token ? File.basename(original_name, '.*') : base end |
#base_filename=(value) ⇒ Object
83 84 85 86 87 |
# File 'lib/ab_admin/models/asset.rb', line 83 def base_filename=(value) return false if value.blank? || File.basename(data_file_name, '.*') == value self.original_name = value + File.extname(data_file_name) rename!(value) end |
#build_filename(base_filename, record = nil) ⇒ Object
allow to build custom human file name
46 47 48 |
# File 'lib/ab_admin/models/asset.rb', line 46 def build_filename(base_filename, record=nil) nil end |
#crop!(geometry) ⇒ Object
108 109 110 111 112 113 114 |
# File 'lib/ab_admin/models/asset.rb', line 108 def crop!(geometry) rename! self.cropper_geometry = geometry save! refresh_assetable self end |
#cropper_geometry=(value) ⇒ Object
139 140 141 142 143 144 145 146 |
# File 'lib/ab_admin/models/asset.rb', line 139 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
148 149 150 |
# File 'lib/ab_admin/models/asset.rb', line 148 def cropper_geometry_changed? @cropper_geometry_changed === true end |
#full_url(*args) ⇒ Object
129 130 131 |
# File 'lib/ab_admin/models/asset.rb', line 129 def full_url(*args) AbAdmin.full_url url(*args) end |
#has_dimensions? ⇒ Boolean
70 71 72 |
# File 'lib/ab_admin/models/asset.rb', line 70 def has_dimensions? respond_to?(:width) && respond_to?(:height) end |
#human_name ⇒ Object
55 56 57 |
# File 'lib/ab_admin/models/asset.rb', line 55 def human_name original_name.presence || data_file_name end |
#image? ⇒ Boolean
74 75 76 |
# File 'lib/ab_admin/models/asset.rb', line 74 def image? AbAdmin.image_types.include?(self.data_content_type) end |
#main! ⇒ Object
89 90 91 92 93 94 95 96 97 98 |
# File 'lib/ab_admin/models/asset.rb', line 89 def main! cond = {assetable_type: assetable_type, type: type} if assetable_id.to_i.nonzero? || guid.presence cond.merge!(assetable_id.to_i.zero? ? {guid: guid} : {assetable_id: assetable_id}) self.class.where(cond).update_all(is_main: false) end update_column(:is_main, true) refresh_assetable self end |
#refresh_assetable ⇒ Object
122 123 124 125 126 127 |
# File 'lib/ab_admin/models/asset.rb', line 122 def refresh_assetable return unless assetable.try(:persisted?) assetable.touch assetable.tire.update_index if assetable.respond_to?(:tire) true end |
#rename!(name = nil) ⇒ Object
116 117 118 119 120 |
# File 'lib/ab_admin/models/asset.rb', line 116 def rename!(name=nil) normalized_name = name ? data.normalize_filename(name) : rand(9999) return false if normalized_name.blank? data.rename_via_move "#{normalized_name}#{File.extname(data_file_name)}" end |
#rotate! ⇒ Object
100 101 102 103 104 105 106 |
# File 'lib/ab_admin/models/asset.rb', line 100 def rotate! rename! self.rotate_degrees = 90 save! refresh_assetable self end |
#rotate_degrees=(value) ⇒ Object
152 153 154 155 156 157 |
# File 'lib/ab_admin/models/asset.rb', line 152 def rotate_degrees=(value) unless value.blank? @rotate_degrees_changed = true @rotate_degrees = value.to_s end end |
#rotate_degrees_changed? ⇒ Boolean
159 160 161 |
# File 'lib/ab_admin/models/asset.rb', line 159 def rotate_degrees_changed? @rotate_degrees_changed === true end |
#store_model_filename(record) ⇒ Object
41 42 43 |
# File 'lib/ab_admin/models/asset.rb', line 41 def store_model_filename(record) data.store_model_filename(record) and save!(validate: false) end |
#thumb_url ⇒ Object
50 51 52 53 |
# File 'lib/ab_admin/models/asset.rb', line 50 def thumb_url return unless image? data.versions[thumb_size] ? url(thumb_size) : url end |
#url_on_fly(version) ⇒ Object
133 134 135 136 137 |
# File 'lib/ab_admin/models/asset.rb', line 133 def url_on_fly(version) file_url = url(version) data.recreate_versions!(version) unless Rails.root.join("public/#{file_url}").exist? file_url end |