X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/49edb79711b8fad5cc7a702c6f982644f34bbd83..8551db4c82df7458632d4aa30e9344d60e0774dc:/app/helpers/banner_helper.rb diff --git a/app/helpers/banner_helper.rb b/app/helpers/banner_helper.rb index 98308ae12..9048d4840 100644 --- a/app/helpers/banner_helper.rb +++ b/app/helpers/banner_helper.rb @@ -1,13 +1,19 @@ module BannerHelper def active_banners BANNERS.reject do |_k, v| - enddate = v[:enddate] begin - parsed = enddate && Date.parse(enddate) - rescue - parsed = nil + startdate = v[:startdate] && Date.parse(v[:startdate]) + rescue StandardError + startdate = nil end - parsed.is_a?(Date) && parsed.past? + + begin + enddate = v[:enddate] && Date.parse(v[:enddate]) + rescue StandardError + enddate = nil + end + + startdate&.future? || enddate&.past? end end @@ -17,6 +23,7 @@ module BannerHelper banner_key = nil cookie_key = nil min_index = 9999 + min_date = Date.new(9999, 1, 1) banners.each do |k, v| ckey = banner_cookie(v[:id]).to_sym @@ -25,14 +32,19 @@ module BannerHelper # rotate all banner queue positions index = cval.to_i - cookies[ckey] = index - 1 if index > 0 + cookies[ckey] = index - 1 if index.positive? - # pick banner with mininum queue position + # pick banner with minimum queue position next if index > min_index + # or if equal queue position, pick banner with soonest end date (i.e. next expiring) + end_date = Date.parse(v[:enddate]) + next if index == min_index && end_date > min_date + banner_key = k cookie_key = ckey min_index = index + min_date = end_date end unless banner_key.nil?