Class: Alchemy::Attachment
- Inherits:
-
BaseRecord
- Object
- ActiveRecord::Base
- BaseRecord
- Alchemy::Attachment
- Includes:
- Filetypes, NameConversions, RelatableResource, Taggable, TouchElements
- Defined in:
- app/models/alchemy/attachment.rb
Constant Summary
Constants included from Filetypes
Filetypes::ARCHIVE_FILE_TYPES, Filetypes::AUDIO_FILE_TYPES, Filetypes::EXCEL_FILE_TYPES, Filetypes::IMAGE_FILE_TYPES, Filetypes::POWERPOINT_FILE_TYPES, Filetypes::TEXT_FILE_TYPES, Filetypes::VCARD_FILE_TYPES, Filetypes::VIDEO_FILE_TYPES, Filetypes::WORD_FILE_TYPES
Constants included from SearchableResource
SearchableResource::SEARCHABLE_COLUMN_TYPES
Class Method Summary collapse
- .allowed_filetypes ⇒ Object
- .file_types(scope = all, from_extensions: nil) ⇒ Object
- .last_upload ⇒ Object
- .ransackable_associations(_auth_object = nil) ⇒ Object
- .ransackable_attributes(_auth_object = nil) ⇒ Object
- .ransackable_scopes(_auth_object = nil) ⇒ Object
- .searchable_alchemy_resource_attributes ⇒ Object
-
.url_class ⇒ Object
The class used to generate URLs for attachments.
-
.url_class=(klass) ⇒ Object
Set a different attachment url class.
Instance Method Summary collapse
-
#extension ⇒ Object
(also: #suffix)
File format suffix.
- #file_mime_type ⇒ Object
-
#file_name ⇒ Object
File name.
-
#file_size ⇒ Object
File size.
-
#icon_css_class ⇒ Object
Returns a css class name for kind of file.
-
#restricted? ⇒ Boolean
Checks if the attachment is restricted, because it is attached on restricted pages only.
-
#slug ⇒ Object
An url save filename without format suffix.
- #svg? ⇒ Boolean
-
#url(options = {}) ⇒ Object
Instance methods.
Methods included from RelatableResource
Methods included from TouchElements
Methods included from Taggable
Methods included from NameConversions
#convert_to_urlname, #sanitized_filename
Methods included from ConfigMissing
Methods included from SearchableResource
#ransackable_associations, #ransackable_attributes, #ransackable_scopes, #ransortable_attributes
Class Method Details
.allowed_filetypes ⇒ Object
88 89 90 |
# File 'app/models/alchemy/attachment.rb', line 88 def allowed_filetypes Alchemy.config.uploader.allowed_filetypes. end |
.file_types(scope = all, from_extensions: nil) ⇒ Object
79 80 81 82 83 84 85 86 |
# File 'app/models/alchemy/attachment.rb', line 79 def file_types(scope = all, from_extensions: nil) if from_extensions.present? scope = by_file_type( Array(from_extensions).map { |extension| Marcel::MimeType.for(extension:) } ) end Alchemy.storage_adapter.file_formats(name, scope:) end |
.last_upload ⇒ Object
60 61 62 63 64 65 |
# File 'app/models/alchemy/attachment.rb', line 60 def last_upload last_id = Attachment.maximum(:id) return Attachment.all unless last_id where(id: last_id) end |
.ransackable_associations(_auth_object = nil) ⇒ Object
75 76 77 |
# File 'app/models/alchemy/attachment.rb', line 75 def ransackable_associations(_auth_object = nil) Alchemy.storage_adapter.ransackable_associations(name) end |
.ransackable_attributes(_auth_object = nil) ⇒ Object
71 72 73 |
# File 'app/models/alchemy/attachment.rb', line 71 def ransackable_attributes(_auth_object = nil) Alchemy.storage_adapter.ransackable_attributes(name) end |
.ransackable_scopes(_auth_object = nil) ⇒ Object
92 93 94 |
# File 'app/models/alchemy/attachment.rb', line 92 def ransackable_scopes(_auth_object = nil) i[by_file_type not_file_type recent last_upload without_tag deletable] end |
.searchable_alchemy_resource_attributes ⇒ Object
67 68 69 |
# File 'app/models/alchemy/attachment.rb', line 67 def searchable_alchemy_resource_attributes Alchemy.storage_adapter.searchable_alchemy_resource_attributes(name) end |
.url_class ⇒ Object
The class used to generate URLs for attachments
49 50 51 |
# File 'app/models/alchemy/attachment.rb', line 49 def url_class @_url_class ||= Alchemy.storage_adapter. end |
.url_class=(klass) ⇒ Object
Set a different attachment url class
56 57 58 |
# File 'app/models/alchemy/attachment.rb', line 56 def url_class=(klass) @_url_class = klass end |
Instance Method Details
#extension ⇒ Object Also known as: suffix
File format suffix
135 136 137 |
# File 'app/models/alchemy/attachment.rb', line 135 def extension Alchemy.storage_adapter.file_extension(self) end |
#file_mime_type ⇒ Object
130 131 132 |
# File 'app/models/alchemy/attachment.rb', line 130 def file_mime_type Alchemy.storage_adapter.file_mime_type(self) end |
#file_name ⇒ Object
File name
121 122 123 |
# File 'app/models/alchemy/attachment.rb', line 121 def file_name Alchemy.storage_adapter.file_name(self) end |
#file_size ⇒ Object
File size
126 127 128 |
# File 'app/models/alchemy/attachment.rb', line 126 def file_size Alchemy.storage_adapter.file_size(self) end |
#icon_css_class ⇒ Object
Returns a css class name for kind of file
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'app/models/alchemy/attachment.rb', line 146 def icon_css_class case file_mime_type when "application/pdf" "file-pdf-2" when *TEXT_FILE_TYPES "file-text" when *EXCEL_FILE_TYPES "file-excel-2" when *POWERPOINT_FILE_TYPES "file-ppt-2" when *WORD_FILE_TYPES "file-word-2" when *VCARD_FILE_TYPES "profile" when *ARCHIVE_FILE_TYPES "file-zip" when *AUDIO_FILE_TYPES "file-music" when *IMAGE_FILE_TYPES "file-image" when *VIDEO_FILE_TYPES "file-video" else "file-3" end end |
#restricted? ⇒ Boolean
Checks if the attachment is restricted, because it is attached on restricted pages only
116 117 118 |
# File 'app/models/alchemy/attachment.rb', line 116 def restricted? pages.any? && pages.not_restricted.blank? end |
#slug ⇒ Object
An url save filename without format suffix
111 112 113 |
# File 'app/models/alchemy/attachment.rb', line 111 def slug CGI.escape(file_name.gsub(/\.#{extension}$/, "").tr(".", " ")) end |
#svg? ⇒ Boolean
140 141 142 |
# File 'app/models/alchemy/attachment.rb', line 140 def svg? file_mime_type == "image/svg+xml" end |
#url(options = {}) ⇒ Object
Instance methods
106 107 108 |
# File 'app/models/alchemy/attachment.rb', line 106 def url( = {}) self.class.url_class.new(self).call() end |