Add end dates to banners
authorBryan Housel <bryan@mapbox.com>
Wed, 22 Jun 2016 17:08:27 +0000 (13:08 -0400)
committerBryan Housel <bryan@mapbox.com>
Wed, 22 Jun 2016 17:08:27 +0000 (13:08 -0400)
app/helpers/banner_helper.rb

index b96409d..589df76 100644 (file)
@@ -1,32 +1,44 @@
 module BannerHelper
 
-  # returns the least recently seen banner that is not hidden
-  def next_banner()
-    active_banners = {
+  def all_banners()
+    {
       :sotmus2016 => {
         :id => 'sotmus2016',
         :alt => 'State of the Map US 2016',
         :link => 'http://stateofthemap.us/',
-        :img => 'banners/sotmus-2016.jpg'
+        :img => 'banners/sotmus-2016.jpg',
+        :enddate => '2016-jul-23'
       },
       :sotm2016 => {
         :id => 'sotm2016',
         :alt => 'State of the Map 2016',
         :link => 'http://2016.stateofthemap.org/',
-        :img => 'banners/sotm-2016.jpg'
+        :img => 'banners/sotm-2016.jpg',
+        :enddate => '2016-sep-23'
       }
     }
+  end
 
+  def active_banners()
+    all_banners().reject do |k,v|
+      enddate = v[:enddate]
+      parsed = (enddate and Date.parse enddate rescue nil)
+      parsed.is_a?(Date) and parsed.past?
+    end
+  end
+
+  # returns the least recently seen banner that is not hidden
+  def next_banner()
+    banners = active_banners()
     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'
 
-
       # rotate all banner queue positions
       index = cval.to_i
       if index > 0
@@ -42,8 +54,8 @@ module BannerHelper
     end
 
     unless bannerKey.nil?
-      cookies[cookieKey] = active_banners.length   # bump to end of queue
-      active_banners[bannerKey]
+      cookies[cookieKey] = banners.length   # bump to end of queue
+      banners[bannerKey]
     end
   end