diff --git a/announcement.gemspec b/announcement.gemspec
index 8bfab98..a358c63 100644
--- a/announcement.gemspec
+++ b/announcement.gemspec
@@ -1,3 +1,4 @@
+# encoding: UTF-8
$:.push File.expand_path("../lib", __FILE__)
# Maintain your gem's version:
@@ -31,7 +32,7 @@ all_template.each do |folder|
filename = folder+'assets/stylesheets/template/base/_variables.scss'
texts = File.open(filename,'r:UTF-8') do |f|
f.read
- end
+ end.force_encoding('UTF-8')
s1 = texts.scan(/{|}/)
if s1.count % 2 != 0
i = texts.rindex(s1[-1])
@@ -50,7 +51,7 @@ all_template.each do |folder|
File.open(filename,'w') do |f|
f.write texts
end
- tp_text = File.read(folder+'assets/stylesheets/template/template.scss') rescue ''
+ tp_text = File.read(folder+'assets/stylesheets/template/template.scss').force_encoding('UTF-8') rescue ''
tp_last_text = tp_text
tp_text.scan(/@import.*http.*;/).each do |pat|
if pat.scan(/@import\W+url/).count==0
diff --git a/app/controllers/announcements_controller.rb b/app/controllers/announcements_controller.rb
index 89469bb..f28c72c 100644
--- a/app/controllers/announcements_controller.rb
+++ b/app/controllers/announcements_controller.rb
@@ -147,9 +147,11 @@ class AnnouncementsController < ApplicationController
anns = top_anns
else
feeds_anns = get_feed_announcements("widget")
- rest_all_anns = feeds_anns + sorted_anns.select{|v| !v.is_top}.take(rest_count).map{|v| data_to_human_type(v)}
+ top_anns = top_anns + feeds_anns.select{|v| v['is_top']}
+ top_anns = top_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]}
+ rest_all_anns = feeds_anns.select{|v| v['is_top'] != true} + sorted_anns.select{|v| !v.is_top}.take(rest_count).map{|v| data_to_human_type(v)}
rest_anns = rest_all_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]}.take(rest_count)
- anns = top_anns + rest_anns
+ anns = (top_anns + rest_anns).take(widget_data_count)
end
end
mp = (anns[0]["img_src"] rescue "")
diff --git a/app/helpers/announcements_helper.rb b/app/helpers/announcements_helper.rb
index 3ca92a0..293b118 100644
--- a/app/helpers/announcements_helper.rb
+++ b/app/helpers/announcements_helper.rb
@@ -60,42 +60,69 @@ module AnnouncementsHelper
"img_description" => desc
}
end
+ def get_feed_annc(type,site_source,locale)
+ ma_key = 'announcement'
+ if type == "index"
+ categories = Array(OrbitHelper.widget_categories)
+ elsif type == "widget"
+ categories = Array(OrbitHelper.widget_categories)
+ else
+ categories = []
+ end
+ if categories.include?("all")
+ feeds = SiteFeedAnnc.where(:channel_key => ma_key)
+ else
+ feeds = SiteFeedAnnc.where(:channel_key => ma_key, :merge_with_category.in => categories)
+ end
+ if feeds.count > 0
+ temp_ids = []
+ data = feeds.collect do |feed|
+ feed.all_contents_for_feed(site_source,locale)
+ end.flatten.compact
+ else
+ data = []
+ end
+ data
+ end
def get_feed_announcements(type,site_source=nil)
- feed_anns = OrbitHelper.get_feed_for_module(type)
- fans = []
locale = OrbitHelper.get_site_locale.to_s
- feed_anns.each do |fa|
- next if !site_source.nil? && site_source != fa["source-site-title"]
- status = {
- "status" => "#{fa["source-site-title"]}",
- "status-class" => "status-source"
- }
+ if !(defined? SiteFeedAnnc).nil?
+ fans = get_feed_annc(type,site_source,locale)
+ else
+ feed_anns = OrbitHelper.get_feed_for_module(type)
+ fans = []
+ feed_anns.each do |fa|
+ next if !site_source.nil? && site_source != fa["source-site-title"]
+ status = {
+ "status" => "#{fa["source-site-title"]}",
+ "status-class" => "status-source"
+ }
- files = fa["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 = fa["bulletin_links"].map{|link| { "link_url" => link["url"], "link_title" => (link["title_translations"][locale].blank? ? link["url"] : link["title_translations"][locale]) } } rescue []
+ files = fa["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 = fa["bulletin_links"].map{|link| { "link_url" => link["url"], "link_title" => (link["title_translations"][locale].blank? ? link["url"] : link["title_translations"][locale]) } } rescue []
- x = {
- "bulletin_links" => links,
- "bulletin_files" => files,
- "title" => fa["title_translations"][locale],
- "subtitle" => fa["subtitle_translations"][locale],
- "statuses" => [status],
- "category" => fa["category"],
- "postdate" => fa["postdate"],
- "author" => fa["author"],
- "is_top" => 0,
- "source-site" => "#{fa["source-site-title"]}",
- "source-site-title" => fa["source-site-title"],
- "source-site-link" => fa["source-site"],
- "link_to_show" => OrbitHelper.url_to_show(fa["params"]),
- "target" => "_self",
- "img_src" => fa["image"]["thumb"] || "/assets/announcement-default.jpg",
- "img_description" => fa["image_description_translations"][locale],
- "more" => t(:more_plus),
- "view_count" => ""
- }
- if (!x["title"].empty? rescue false)
- fans << x
+ x = {
+ "bulletin_links" => links,
+ "bulletin_files" => files,
+ "title" => fa["title_translations"][locale],
+ "subtitle" => fa["subtitle_translations"][locale],
+ "statuses" => [status],
+ "category" => fa["category"],
+ "postdate" => fa["postdate"],
+ "author" => fa["author"],
+ "source-site" => "#{fa["source-site-title"]}",
+ "source-site-title" => fa["source-site-title"],
+ "source-site-link" => fa["source-site"],
+ "link_to_show" => OrbitHelper.url_to_show(fa["params"]),
+ "target" => "_self",
+ "img_src" => fa["image"]["thumb"] || "/assets/announcement-default.jpg",
+ "img_description" => fa["image_description_translations"][locale],
+ "more" => t(:more_plus),
+ "view_count" => ""
+ }
+ if (!x["title"].empty? rescue false)
+ fans << x
+ end
end
end
fans
@@ -137,12 +164,12 @@ module AnnouncementsHelper
end
if !feeds_anns.blank?
if announcements.count != 0
- top_anns = announcements.select{|v| v.is_top}
- rest_all_anns = feeds_anns + announcements.select{|v| !v.is_top}
+ top_anns = announcements.select{|v| v.is_top} + feeds_anns.select{|v| v['is_top']}
+ rest_all_anns = feeds_anns.select{|v| v['is_top'] != true} + announcements.select{|v| !v.is_top}
rest_anns = rest_all_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]}
- all_sorted = top_anns + rest_anns
+ all_sorted = top_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} + rest_anns
else
- all_sorted = feeds_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]}
+ all_sorted = feeds_anns.sort{|v1,v2| [v2['is_top'],v2["postdate"]]<=>[v1['is_top'],v1["postdate"]]}
end
all_filter = filter_by_keywords(all_sorted,params[:keywords])
else
diff --git a/temp_file/app/models/site.rb b/temp_file/app/models/site.rb
index a5bd159..a842953 100644
--- a/temp_file/app/models/site.rb
+++ b/temp_file/app/models/site.rb
@@ -71,29 +71,6 @@ class Site
mount_uploader :site_logo_1, ImageUploader
mount_uploader :favicon, ImageUploader
mount_uploader :mobile_icon, ImageUploader
- Impression.class_eval{
- def self.create_date_for_group(date)
- {'_id'=>{'year'=>date.year,'month'=>date.month,'day'=>date.day},'count'=>0}
- end
- def self.group_by(field,day_limit,start_day=Date.today,format = 'day')
- limit_ele = self.desc(:id).where({ created_at: { "$lt" => start_day-(day_limit-2).days }}).first || self.first
- key_op = [['year','$year'],['month', '$month'], ['day', '$dayOfMonth']]
- key_op = key_op.take(1 + key_op.find_index { |key, op| format == key })
- project_date_fields = Hash[*key_op.collect { |key, op| [key, {op => "$#{field}"}] }.flatten]
- group_id_fields = Hash[*key_op.collect { |key, op| [key, "$#{key}"] }.flatten]
- pipeline = [
- {"$match"=> {"_id" => {"$gte" => (limit_ele['_id'] rescue '')}}},
- {"$project" => {field => 1}.merge(project_date_fields)},
- {"$group" => {"_id" => group_id_fields,"count" => {"$sum" => 1}}},
- {"$sort" => {"_id"=>-1}}
- ]
- tmp = collection.aggregate(pipeline)
- if tmp.count < day_limit
- tmp.concat(Array.new(day_limit-tmp.count).map.with_index.map{|v,i| create_date_for_group(start_day+i.days)})
- end
- tmp
- end
- }
after_initialize do
if !self.new_record?
if self.is_hidden_orbit_bar.nil?