announcement-test/app/models/bulletin_file.rb

48 lines
1.3 KiB
Ruby
Raw Normal View History

2014-06-23 08:36:04 +00:00
# encoding: utf-8
2014-05-01 08:41:00 +00:00
class BulletinFile
include Mongoid::Document
include Mongoid::Timestamps
mount_uploader :file, AssetUploader
field :description, localize: true
field :title, localize: true
2016-05-09 10:11:18 +00:00
field :choose_lang, :type => Array, :default => ["en","zh_tw"]
2020-12-19 10:28:18 +00:00
field :privacy_type, type: String, default: 'public'
2014-05-01 08:41:00 +00:00
belongs_to :bulletin
2021-09-16 09:39:01 +00:00
def self.to_fronted(locale=I18n.locale)
self.all.map{|file| file.to_fronted(locale)}.compact rescue []
end
2021-09-16 09:15:44 +00:00
def to_fronted(locale=I18n.locale)
file = self
2021-09-16 09:39:01 +00:00
(file.enabled_for?(locale) && !file[:file].blank?) ? { "file_url" => "/xhr/announcements/file/#{file.id}/#{file['file']}" + "\" title=\"#{file.file_title}",
2021-09-16 09:15:44 +00:00
"file_title" => (file.title.blank? ? URI.unescape(File.basename(file.file.path)) : file.title rescue '')
} : nil rescue nil
end
2014-05-01 08:41:00 +00:00
2021-03-24 10:05:19 +00:00
def file_title
if self.description.present?
return self.description
elsif self.title.present?
return self.title
else
return File.basename(self.file.path)
end
end
2016-05-09 10:11:18 +00:00
def enabled_for?(lang)
if lang.nil?
return true
else
return self.choose_lang.include?(lang)
end
end
2020-12-19 10:28:18 +00:00
def can_access?(user)
if user.nil? && self.privacy_type == 'logged_in'
return false
else
return true
end
end
2014-05-01 08:41:00 +00:00
end