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
- #format_created_at ⇒ Object
- #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
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/ab_admin/models/asset.rb', line 63 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
82 83 84 85 |
# File 'lib/ab_admin/models/asset.rb', line 82 def base_filename base = File.basename(data_file_name, '.*') base == data_secure_token ? File.basename(original_name, '.*') : base end |
#base_filename=(value) ⇒ Object
87 88 89 90 91 |
# File 'lib/ab_admin/models/asset.rb', line 87 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
112 113 114 115 116 117 118 |
# File 'lib/ab_admin/models/asset.rb', line 112 def crop!(geometry) rename! self.cropper_geometry = geometry save! refresh_assetable self end |
#cropper_geometry=(value) ⇒ Object
143 144 145 146 147 148 149 150 |
# File 'lib/ab_admin/models/asset.rb', line 143 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
152 153 154 |
# File 'lib/ab_admin/models/asset.rb', line 152 def cropper_geometry_changed? @cropper_geometry_changed === true end |
#format_created_at ⇒ Object
55 56 57 |
# File 'lib/ab_admin/models/asset.rb', line 55 def format_created_at I18n.l(created_at, format: '%d.%m.%Y %H:%M') end |
#full_url(*args) ⇒ Object
133 134 135 |
# File 'lib/ab_admin/models/asset.rb', line 133 def full_url(*args) AbAdmin.full_url url(*args) end |
#has_dimensions? ⇒ Boolean
74 75 76 |
# File 'lib/ab_admin/models/asset.rb', line 74 def has_dimensions? respond_to?(:width) && respond_to?(:height) end |
#human_name ⇒ Object
59 60 61 |
# File 'lib/ab_admin/models/asset.rb', line 59 def human_name original_name.presence || data_file_name end |
#image? ⇒ Boolean
78 79 80 |
# File 'lib/ab_admin/models/asset.rb', line 78 def image? AbAdmin.image_types.include?(self.data_content_type) end |
#main! ⇒ Object
93 94 95 96 97 98 99 100 101 102 |
# File 'lib/ab_admin/models/asset.rb', line 93 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
126 127 128 129 130 131 |
# File 'lib/ab_admin/models/asset.rb', line 126 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
120 121 122 123 124 |
# File 'lib/ab_admin/models/asset.rb', line 120 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
104 105 106 107 108 109 110 |
# File 'lib/ab_admin/models/asset.rb', line 104 def rotate! rename! self.rotate_degrees = 90 save! refresh_assetable self end |
#rotate_degrees=(value) ⇒ Object
156 157 158 159 160 161 |
# File 'lib/ab_admin/models/asset.rb', line 156 def rotate_degrees=(value) unless value.blank? @rotate_degrees_changed = true @rotate_degrees = value.to_s end end |
#rotate_degrees_changed? ⇒ Boolean
163 164 165 |
# File 'lib/ab_admin/models/asset.rb', line 163 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
137 138 139 140 141 |
# File 'lib/ab_admin/models/asset.rb', line 137 def url_on_fly(version) file_url = url(version) data.recreate_versions!(version) unless Rails.root.join("public/#{file_url}").exist? file_url end |