81 lines
3.2 KiB
Ruby
81 lines
3.2 KiB
Ruby
class SiteFeedAnnc
|
|
include Mongoid::Document
|
|
include Mongoid::Timestamps
|
|
field :top_list,type: Array,default: []
|
|
field :hot_list,type: Array,default: []
|
|
field :all_contents_for_feed
|
|
field :channel_key
|
|
field :feed_id
|
|
field :feed_name
|
|
field :category_title
|
|
field :hidden_annc,type: Array,default: []
|
|
field :merge_with_category
|
|
field :remote_site_url
|
|
field :channel_title
|
|
def get_annc(annc_uid)
|
|
Array(self[:all_contents_for_feed]).select{|v| v['id']==annc_uid}[0] rescue {}
|
|
end
|
|
def all_contents_for_feed(site_source=nil,locale=I18n.locale.to_s)
|
|
cat = self.category_title
|
|
Array(self[:all_contents_for_feed]).collect do |v|
|
|
tmp = v
|
|
if hidden_annc.exclude?(v['id'])
|
|
tmp['statuses'] = []
|
|
if self[:top_list].count == 0 || self[:top_list].exclude?(tmp['id'])
|
|
tmp[:is_top] = false
|
|
else
|
|
tmp[:is_top] = true
|
|
tmp['statuses'] << {
|
|
"status" => I18n.t(:top),
|
|
"status-class" => "status-top"
|
|
}
|
|
end
|
|
if self[:hot_list].count == 0 || self[:top_list].exclude?(tmp['id'])
|
|
tmp[:is_hot] = false
|
|
else
|
|
tmp[:is_hot] = true
|
|
tmp['statuses'] << {
|
|
"status" => I18n.t(:hot),
|
|
"status-class" => "status-hot"
|
|
}
|
|
end
|
|
tmp["category"] = cat
|
|
tmp["source-site"] = self.remote_site_url
|
|
tmp["source-site-title"] = self[:channel_title][locale]
|
|
tmp["params"] = tmp["params"].to_s + "_" + self.feed_id.to_s + "h"
|
|
next if !site_source.nil? && site_source != fa["source-site-title"]
|
|
tmp['statuses'] << {
|
|
"status" => "<a href='#{tmp["source-site"]}' target='_blank' class='feed-source'>#{tmp["source-site-title"]}</a>",
|
|
"status-class" => "status-source"
|
|
}
|
|
|
|
files = tmp["bulletin_files"].collect{|bf| { "file_url" => bf["url"], "file_title" => (fa["title_translations"][locale].blank? ? File.basename(fa["url"]) : fa["title_translations"][locale] rescue '') }} rescue []
|
|
links = tmp["bulletin_links"].map{|link| { "link_url" => link["url"], "link_title" => (link["title_translations"][locale].blank? ? link["url"] : link["title_translations"][locale]) } } rescue []
|
|
tmp["bulletin_links"] = links
|
|
tmp["bulletin_files"] = files
|
|
tmp["title"] = tmp["title_translations"][locale]
|
|
tmp["subtitle"] = tmp["subtitle_translations"][locale]
|
|
tmp["source-site-link"] = tmp["source-site"]
|
|
tmp["source-site"] = "<a href='#{tmp["source-site"]}' target='_blank' class='feed-source'>#{tmp["source-site-title"]}</a>"
|
|
tmp["link_to_show"] = OrbitHelper.url_to_show(tmp["params"]) rescue ''
|
|
tmp["target"] = "_self"
|
|
tmp["img_src"] = tmp["image"]["thumb"] || "/assets/announcement-default.jpg"
|
|
tmp["img_description"] = tmp["image_description_translations"][locale]
|
|
tmp["more"] = I18n.t(:more_plus)
|
|
tmp["view_count"] = ""
|
|
else
|
|
tmp = nil
|
|
end
|
|
tmp
|
|
end.compact
|
|
end
|
|
def channel_title(locale=I18n.locale)
|
|
self[:channel_title][locale]
|
|
end
|
|
def category
|
|
Category.find(self.merge_with_category) rescue nil
|
|
end
|
|
def category_title
|
|
self[:category_title][I18n.locale]
|
|
end
|
|
end |