# encoding: utf-8 class ArchiveFile include Mongoid::Document include Mongoid::Timestamps include OrbitCategory::Categorizable include OrbitModel::Status include OrbitTag::Taggable include Slug # include Tire::Model::Search # include Tire::Model::Callbacks # BelongsToCategory = :archive_file_category # PAYMENT_TYPES = @site_valid_locales before_save do cat = self.category rescue nil if cat && ArchiveCategory.where(:category_id => cat.id).count==0 ArchiveCategory.create(category_id: cat.id.to_s,sort_number: cat.sort_number) end end field :title, as: :slug_title, localize: true field :description, localize: true field :urls, localize: true, type: Array field :url, localize: true #Old field field :url_texts, localize: true, type: Array, default: [] field :create_user_id field :update_user_id field :postdate , :type => DateTime, :default => Time.now field :deadline , :type => DateTime field :uid, type: String field :sort_number, type: Integer field :rss2_sn # scope :can_display,where(is_hidden: false) scope :can_display, ->{where(is_hidden: false).order_by([:is_top, :desc],[:sort_number, :asc])} # belongs_to :archive_file_category has_many :archive_file_multiples, :autosave => true, :dependent => :destroy accepts_nested_attributes_for :archive_file_multiples, :allow_destroy => true # validates :title, :at_least_one => true after_save :save_archive_file_multiples before_save :add_http after_initialize do unless self.new_record? if self.urls.nil? && self.url.present? self.urls_translations = self.url_translations.map{|k,v| [k,[v]]}.to_h self.save end end end def get_url_text(idx=0,org=false) url_text = self.url_texts[idx] rescue nil if org url_text else url_text.present? ? url_text : "link" end end protected def add_http in_use_locales = Site.first.in_use_locales temp_urls = {} in_use_locales.each do |locale| locale = locale.to_s temp_urls[locale] = [] self.urls_translations[locale].each do |tmp_url| tmp = tmp_url if tmp.present? unless /^(http|https|ftp):\/\/[\S]+/.match(tmp_url) || url.include?("mailto:") tmp = 'http://' + tmp_url end temp_urls[locale] << tmp end end rescue nil end self.urls_translations = temp_urls end # def to_indexed_json # self.to_json # end # search_in :title # searchable do # text :titles do # title_translations.to_a.collect{|t| t[1]} # end # boolean :frontend_search do # !is_hidden # end # end # def self.search( category_id = nil ) # if category_id.to_s.size > 0 # find(:all, :conditions => {archive_file_category_id: category_id}).desc( :is_top, :title ) # else # find(:all).desc( :is_top, :title) # end # end def self.find_by_param(input) self.find_by(uid: input) end def self.widget_datas where( :is_hidden => false ).desc(:is_top, :title) end def get_file_icon( file_data ) file_icon = "#{file_data.split('.')[-1]}".html_safe end def save_archive_file_multiples self.archive_file_multiples.each do |t| if t.should_destroy t.destroy end end end end