openstreetmap-website/app/helpers/banner_helper.rb
2016-06-23 09:04:07 +01:00

47 lines
1 KiB
Ruby

module BannerHelper
def active_banners
BANNERS.reject do |_k, v|
enddate = v[:enddate]
begin
parsed = enddate && Date.parse(enddate)
rescue
parsed = nil
end
parsed.is_a?(Date) && parsed.past?
end
end
# returns the least recently seen banner that is not hidden
def next_banner
banners = active_banners
banner_key = nil
cookie_key = nil
min_index = 9999
banners.each do |k, v|
ckey = banner_cookie(v[:id]).to_sym
cval = cookies[ckey] || 0
next if cval == "hide"
# rotate all banner queue positions
index = cval.to_i
cookies[ckey] = index - 1 if index > 0
# pick banner with mininum queue position
next if index > min_index
banner_key = k
cookie_key = ckey
min_index = index
end
unless banner_key.nil?
cookies[cookie_key] = banners.length # bump to end of queue
banners[banner_key]
end
end
def banner_cookie(key)
"_osm_banner_#{key}"
end
end