Module: AbAdmin::Models::Asset
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #as_json(options = nil) ⇒ 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_filename ⇒ Object
- #human_filename=(value) ⇒ Object
- #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 69 |
# File 'lib/ab_admin/models/asset.rb', line 59 def as_json( = nil) = { root: 'asset', only: [:id, :guid, :assetable_id, :assetable_type, :user_id, :data_file_size, :data_content_type, :is_main, :original_name], methods: [:filename, :url, :thumb_url, :width, :height] }.merge( || {}) res = super I18n.with_locale(assetable.try(:locale)) { (res[[:root]] || res).update('name' => name, 'alt' => alt) } res 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
107 108 109 110 111 112 113 |
# File 'lib/ab_admin/models/asset.rb', line 107 def crop!(geometry) rename! self.cropper_geometry = geometry save! refresh_assetable self end |
#cropper_geometry=(value) ⇒ Object
137 138 139 140 141 142 143 144 |
# File 'lib/ab_admin/models/asset.rb', line 137 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
146 147 148 |
# File 'lib/ab_admin/models/asset.rb', line 146 def cropper_geometry_changed? @cropper_geometry_changed === true end |
#full_url(*args) ⇒ Object
127 128 129 |
# File 'lib/ab_admin/models/asset.rb', line 127 def full_url(*args) AbAdmin.full_url url(*args) end |
#has_dimensions? ⇒ Boolean
71 72 73 |
# File 'lib/ab_admin/models/asset.rb', line 71 def has_dimensions? respond_to?(:width) && respond_to?(:height) end |
#human_filename ⇒ Object
79 80 81 |
# File 'lib/ab_admin/models/asset.rb', line 79 def human_filename data.human_part end |
#human_filename=(value) ⇒ Object
83 84 85 86 |
# File 'lib/ab_admin/models/asset.rb', line 83 def human_filename=(value) return if (human_filename.blank? && value.blank?) || human_filename == value rename!(value) 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
75 76 77 |
# File 'lib/ab_admin/models/asset.rb', line 75 def image? AbAdmin.image_types.include?(self.data_content_type) end |
#main! ⇒ Object
88 89 90 91 92 93 94 95 96 97 |
# File 'lib/ab_admin/models/asset.rb', line 88 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
121 122 123 124 125 |
# File 'lib/ab_admin/models/asset.rb', line 121 def refresh_assetable return unless assetable.try(:persisted?) assetable.touch true end |
#rename!(name = nil) ⇒ Object
115 116 117 118 119 |
# File 'lib/ab_admin/models/asset.rb', line 115 def rename!(name=nil) normalized_name = name ? data.normalize_filename(name) : rand(9999) return if normalized_name.blank? data.rename_via_move normalized_name end |
#rotate! ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/ab_admin/models/asset.rb', line 99 def rotate! rename! self.rotate_degrees = 90 save! refresh_assetable self end |
#rotate_degrees=(value) ⇒ Object
150 151 152 153 154 155 |
# File 'lib/ab_admin/models/asset.rb', line 150 def rotate_degrees=(value) unless value.blank? @rotate_degrees_changed = true @rotate_degrees = value.to_s end end |
#rotate_degrees_changed? ⇒ Boolean
157 158 159 |
# File 'lib/ab_admin/models/asset.rb', line 157 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
131 132 133 134 135 |
# File 'lib/ab_admin/models/asset.rb', line 131 def url_on_fly(version) file_url = url(version) data.recreate_versions!(version) unless Rails.root.join("public/#{file_url}").exist? file_url end |