Class: FieldDefinitions::File
- Inherits:
-
FieldDefinition
- Object
- FieldDefinition
- FieldDefinitions::File
- Defined in:
- app/models/iron/field_definitions/file.rb
Constant Summary collapse
- FILE_TYPE_PRESETS =
{ "images" => { extensions: %w[jpg jpeg png gif webp svg heic], mime_types: %w[image/jpeg image/png image/gif image/webp image/svg+xml image/heic] }, "videos" => { extensions: %w[mp4 mov avi webm], mime_types: %w[video/mp4 video/quicktime video/x-msvideo video/webm] }, "documents" => { extensions: %w[pdf doc docx xls xlsx ppt pptx txt], mime_types: %w[ application/pdf application/msword application/vnd.openxmlformats-officedocument.wordprocessingml.document application/vnd.ms-excel application/vnd.openxmlformats-officedocument.spreadsheetml.sheet application/vnd.ms-powerpoint application/vnd.openxmlformats-officedocument.presentationml.presentation text/plain ] }, "audio" => { extensions: %w[mp3 wav ogg m4a], mime_types: %w[audio/mpeg audio/wav audio/ogg audio/mp4] } }.freeze
Instance Method Summary collapse
- #accepted_extensions ⇒ Object
- #accepted_mime_types ⇒ Object
- #file_scope ⇒ Object
- #selected_presets ⇒ Object
- #validation_description ⇒ Object
Instance Method Details
#accepted_extensions ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'app/models/iron/field_definitions/file.rb', line 41 def accepted_extensions return nil if file_scope == "all" extensions = [] selected_presets.each do |preset| extensions.concat(FILE_TYPE_PRESETS[preset][:extensions]) if FILE_TYPE_PRESETS[preset] end extensions.uniq end |
#accepted_mime_types ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'app/models/iron/field_definitions/file.rb', line 51 def accepted_mime_types return nil if file_scope == "all" mime_types = [] selected_presets.each do |preset| mime_types.concat(FILE_TYPE_PRESETS[preset][:mime_types]) if FILE_TYPE_PRESETS[preset] end mime_types.uniq end |
#file_scope ⇒ Object
33 34 35 |
# File 'app/models/iron/field_definitions/file.rb', line 33 def file_scope super || "all" end |
#selected_presets ⇒ Object
37 38 39 |
# File 'app/models/iron/field_definitions/file.rb', line 37 def selected_presets super || [] end |
#validation_description ⇒ Object
61 62 63 64 65 |
# File 'app/models/iron/field_definitions/file.rb', line 61 def validation_description return "All file types accepted" if file_scope == "all" "Accepted formats: #{accepted_extensions.join(', ')}" if accepted_extensions.present? end |