X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/e14ec1547e108116a57c910c938873e4155f6e9a..e15c00dc2cfdc220be15ce1392d29b238b3d6991:/app/helpers/banner_helper.rb diff --git a/app/helpers/banner_helper.rb b/app/helpers/banner_helper.rb index b96409d1e..92b633eca 100644 --- a/app/helpers/banner_helper.rb +++ b/app/helpers/banner_helper.rb @@ -1,54 +1,47 @@ 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() - active_banners = { - :sotmus2016 => { - :id => 'sotmus2016', - :alt => 'State of the Map US 2016', - :link => 'http://stateofthemap.us/', - :img => 'banners/sotmus-2016.jpg' - }, - :sotm2016 => { - :id => 'sotm2016', - :alt => 'State of the Map 2016', - :link => 'http://2016.stateofthemap.org/', - :img => 'banners/sotm-2016.jpg' - } - } + def next_banner + banners = active_banners + banner_key = nil + cookie_key = nil + min_index = 9999 - bannerKey = nil - cookieKey = nil - queuePos = 9999 - - active_banners.each do |k, v| + banners.each do |k, v| ckey = cookie_id(v[:id]).to_sym cval = cookies[ckey] || 0 - next if cval == 'hide' - + next if cval == "hide" # rotate all banner queue positions index = cval.to_i - if index > 0 - cookies[ckey] = index - 1 - end + cookies[ckey] = index - 1 if index > 0 # pick banner with mininum queue position - if index <= queuePos - bannerKey = k - cookieKey = ckey - queuePos = index - end + next if index > min_index + + banner_key = k + cookie_key = ckey + min_index = index end - unless bannerKey.nil? - cookies[cookieKey] = active_banners.length # bump to end of queue - active_banners[bannerKey] + unless banner_key.nil? + cookies[cookie_key] = banners.length # bump to end of queue + banners[banner_key] end end def cookie_id(key) "_osm_banner_#{key}" end - end