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?