From: Tom Hughes Date: Thu, 23 Jun 2016 07:59:58 +0000 (+0100) Subject: Merge remote-tracking branch 'openstreetmap/pull/1240' X-Git-Tag: live~4924 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/e15c00dc2cfdc220be15ce1392d29b238b3d6991?hp=5c572f57fcbffa2d9f494d01517edccc9ef7bfb7 Merge remote-tracking branch 'openstreetmap/pull/1240' --- diff --git a/app/assets/images/banners/.keep b/app/assets/images/banners/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/app/assets/images/banners/sotm-2016.jpg b/app/assets/images/banners/sotm-2016.jpg new file mode 100644 index 000000000..8f2586745 Binary files /dev/null and b/app/assets/images/banners/sotm-2016.jpg differ diff --git a/app/assets/images/banners/sotmus-2016.jpg b/app/assets/images/banners/sotmus-2016.jpg new file mode 100644 index 000000000..ea67d5a0d Binary files /dev/null and b/app/assets/images/banners/sotmus-2016.jpg differ diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index fdbeaba22..9ebee2dd2 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -161,17 +161,26 @@ $(document).ready(function () { map.getLayersCode(), map._object); - $.removeCookie("_osm_location"); - $.cookie("_osm_location", OSM.locationCookie(map), { expires: expiry, path: "/" }); + $.removeCookie('_osm_location'); + $.cookie('_osm_location', OSM.locationCookie(map), { expires: expiry, path: '/' }); }); if ($.cookie('_osm_welcome') === 'hide') { $('.welcome').hide(); } - $('.welcome .close').on('click', function() { + $('.welcome .close-wrap').on('click', function() { $('.welcome').hide(); - $.cookie("_osm_welcome", 'hide', { expires: expiry }); + $.cookie('_osm_welcome', 'hide', { expires: expiry }); + }); + + $('#banner .close-wrap').on('click', function(e) { + var cookieId = e.target.id; + $('#banner').hide(); + e.preventDefault(); + if (cookieId) { + $.cookie(cookieId, 'hide', { expires: expiry }); + } }); if (OSM.PIWIK) { diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index cf687653e..b54b49fd3 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -173,6 +173,7 @@ small, aside { .icon.clipboard { background-position: -160px 0; } .icon.link { background-position: -180px 0; } .icon.close { background-position: -200px 0; } +.close-wrap:hover .icon.close, .icon.close:hover { background-position: -200px -20px; } .icon.check { background-position: -220px 0; } .icon.note { background-position: -240px 0; } @@ -546,6 +547,13 @@ body.compact { background: #fff; font-size: 12px; + > div { + position: relative; + float: left; + clear: both; + width: 100%; + } + h2 { padding: $lineheight $lineheight $lineheight/2; } @@ -556,9 +564,24 @@ body.compact { font-size: 13px; } + .close-wrap { + cursor: pointer; + position: absolute; + top: 0; + right: 0; + width: 60px; + height: 60px; + + .icon.close { + pointer-events: none; + position: absolute; + right: 20px; + top: 20px; + } + } + .icon.close { float: right; - cursor: pointer; } p.error { @@ -568,25 +591,26 @@ body.compact { } } - .welcome { - display: none; - } - .overlay-sidebar #sidebar { position: absolute; z-index: 1000; height: auto; - border-bottom-right-radius: 5px; overflow: hidden; + + #banner, .welcome { display: block; } + #sidebar_content { display: none; } } .welcome { + display: none; + padding-bottom: 5px; + p { padding: $lineheight/2 $lineheight $lineheight; font-size: 110%; @@ -607,6 +631,15 @@ body.compact { } } + #banner { + display: none; + + img { + display: block; + width: $sidebarWidth; + } + } + #map { height: 100%; overflow: hidden; diff --git a/app/helpers/banner_helper.rb b/app/helpers/banner_helper.rb new file mode 100644 index 000000000..92b633eca --- /dev/null +++ b/app/helpers/banner_helper.rb @@ -0,0 +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 + banners = active_banners + banner_key = nil + cookie_key = nil + min_index = 9999 + + 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 + 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 cookie_id(key) + "_osm_banner_#{key}" + end +end diff --git a/app/views/layouts/_banner.html.erb b/app/views/layouts/_banner.html.erb new file mode 100644 index 000000000..6a62e1944 --- /dev/null +++ b/app/views/layouts/_banner.html.erb @@ -0,0 +1,4 @@ +<% unless (banner = next_banner()).nil? %> +<%= link_to (image_tag banner[:img], :alt => banner[:alt], :title => banner[:alt]), banner[:link] %> + +<% end %> diff --git a/app/views/layouts/map.html.erb b/app/views/layouts/map.html.erb index cb2fd0e07..6607bf7a5 100644 --- a/app/views/layouts/map.html.erb +++ b/app/views/layouts/map.html.erb @@ -46,12 +46,17 @@ <% unless @user %>
-

<%= t 'layouts.intro_header' %>

+

<%= t 'layouts.intro_header' %>

+

<%= t 'layouts.intro_text' %>

<%= t('layouts.learn_more') %>
<% end %> + +