Support background hash parameter for iD
authorJohn Firebaugh <john.firebaugh@gmail.com>
Mon, 12 Aug 2013 17:09:22 +0000 (10:09 -0700)
committerTom Hughes <tom@compton.nu>
Mon, 12 Aug 2013 22:53:41 +0000 (23:53 +0100)
Fixes systemed/iD#1590
Fixes systemed/iD#1682

app/assets/javascripts/osm.js.erb
app/views/site/_id.html.erb

index d2fc81e387a48ee897125c6caa71e0ea66bcc6a1..eb5ce64f310b178126b5885186e6032a809ef8a4 100644 (file)
@@ -22,8 +22,8 @@ OSM = {
     return url;
   },
 
-  mapParams: function (search) {
-    var params = {}, mapParams = {}, bounds, loc;
+  params: function(search) {
+    var params = {};
 
     search = (search || window.location.search).replace('?', '').split(/&|;/);
 
@@ -35,6 +35,12 @@ OSM = {
       params[key] = decodeURIComponent(val);
     }
 
+    return params;
+  },
+
+  mapParams: function (search) {
+    var params = OSM.params(search), mapParams = {}, bounds, loc;
+
     if (params.mlon && params.mlat) {
       mapParams.marker = true;
       mapParams.mlon = parseFloat(params.mlon);
index e2f783731b7ff50f6107e5af77ee7661963724b8..5a0a7a4324374e0953a0fc6981eacd7e7d188cff 100644 (file)
@@ -3,23 +3,21 @@
     <iframe frameBorder="0" id="id-embed" class="id-embed"></iframe>
   </div>
   <script>
-    var coord = {};
-    <% if @lat && @lon && @zoom -%>
-    coord.lat = <%= @lat %>;
-    coord.lon = <%= @lon %>;
-    coord.zoom = <%= @zoom %>;
-    <% else -%>
-    coord = OSM.mapParams();
-    <% end -%>
+    var params = {};
 
-    var hash;
-    if (coord.object) {
-      hash = '#id=' + coord.object.type[0] + coord.object.id;
+    var mapParams = OSM.mapParams();
+    if (mapParams.object) {
+      params.id = mapParams.object.type[0] + mapParams.object.id;
     } else {
-      hash = '#map=' + (coord.zoom || 17) + '/' + coord.lon + '/' + coord.lat
+      params.map = (mapParams.zoom || 17) + '/' + mapParams.lon + '/' + mapParams.lat;
     }
 
-    $('#id-embed').attr('src', '<%= id_url :locale => params[:locale] %>' + hash);
+    var hashParams = OSM.params(location.hash.substring(1));
+    if (hashParams.background) {
+      params.background = hashParams.background;
+    }
+
+    $('#id-embed').attr('src', '<%= id_url :locale => params[:locale] %>#' + querystring.stringify(params));
   </script>
 <% else %>
   <script type="text/javascript">alert("<%= t 'site.edit.id_not_configured' %>")</script>