diff --git a/app/controllers/announcements_controller.rb b/app/controllers/announcements_controller.rb index f91d4d6..e8cdf98 100644 --- a/app/controllers/announcements_controller.rb +++ b/app/controllers/announcements_controller.rb @@ -164,7 +164,7 @@ class AnnouncementsController < ApplicationController else cats = ["all"] + cats end - anns = anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} + anns = anns.sort_by { |a| [a["postdate"].blank? ? 1 : 0, a["postdate"].to_time] } end cats = cats.uniq tags = tags.uniq @@ -500,16 +500,16 @@ class AnnouncementsController < ApplicationController anns = anns_cache.first.filter_result end if devide_flag + feeds_anns = get_feed_announcements("widget") + top_anns = top_anns + feeds_anns.select{|v| v['is_top']} + top_anns = top_anns.sort_by { |a| [a["postdate"].blank? ? 1 : 0, a["postdate"].to_time] } rest_count = widget_data_count - top_anns.count if rest_count <= 0 - anns = top_anns + anns = top_anns.take(widget_data_count) else - feeds_anns = get_feed_announcements("widget") - 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} + not_top_anns.take(rest_count) - rest_anns = rest_all_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]}.take(rest_count) - anns = (top_anns + rest_anns).take(widget_data_count) + rest_anns = rest_all_anns.sort_by { |a| [a["postdate"].blank? ? 1 : 0, a["postdate"].to_time] }.take(rest_count) + anns = top_anns + rest_anns end end anns.each{|a| a["postdate"] = a["postdate"].in_time_zone(Time.zone.utc_offset / 3600).strftime('%Y-%m-%d %H:%M') rescue nil } diff --git a/app/helpers/announcements_helper.rb b/app/helpers/announcements_helper.rb index 520efa0..94bb7c4 100644 --- a/app/helpers/announcements_helper.rb +++ b/app/helpers/announcements_helper.rb @@ -243,10 +243,10 @@ module AnnouncementsHelper if announcements.count != 0 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.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} + rest_anns + rest_anns = rest_all_anns.sort_by { |a| [a["postdate"].blank? ? 1 : 0, a["postdate"].to_time] } + all_sorted = top_anns.sort_by { |a| [a["postdate"].blank? ? 1 : 0, a["postdate"].to_time] } + rest_anns else - all_sorted = feeds_anns.select{|v| v['is_top']}.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} + feeds_anns.select{|v| v['is_top'] != true}.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} + all_sorted = feeds_anns.select{|v| v['is_top']}.sort_by { |a| [a["postdate"].blank? ? 1 : 0, a["postdate"].to_time] } + feeds_anns.select{|v| v['is_top'] != true}.sort_by { |a| [a["postdate"].blank? ? 1 : 0, a["postdate"].to_time] } end all_filter = filter_by_keywords(all_sorted,params[:keywords],params[:stime],params[:etime]) else