Update iD frame parameters if the parent URL changes
[rails.git] / app / views / site / _id.html.erb
index a6f42e43cf14f2e0a1c7e633954a9ad7596727c4..d582028f83226ceaad63ea3ea1b11b608a68abb3 100644 (file)
@@ -1,34 +1,40 @@
 <% if defined? ID_KEY %>
   <div id="map">
 <% if defined? ID_KEY %>
   <div id="map">
-    <iframe frameBorder="0" id="id-embed" class="id-embed"></iframe>
+    <iframe frameBorder="0" id="id-embed" class="id-embed" allowfullscreen></iframe>
   </div>
   <script>
     var params = {};
 
   </div>
   <script>
     var params = {};
 
-    var mapParams = OSM.mapParams();
-    if (mapParams.object) {
-      params.id = mapParams.object.type[0] + mapParams.object.id;
-      mapParams = OSM.parseHash(location.hash);
-      if (mapParams.center) {
-        params.map = mapParams.zoom + '/' + mapParams.center.lng + '/' + mapParams.center.lat;
+    function getParams(params) {
+      var mapParams = OSM.mapParams();
+      if (mapParams.object) {
+        params.id = mapParams.object.type[0] + mapParams.object.id;
+        mapParams = OSM.parseHash(location.hash);
+        if (mapParams.center) {
+          params.map = mapParams.zoom + '/' + mapParams.center.lat + '/' + mapParams.center.lng;
+        }
+      } else {
+        params.map = (mapParams.zoom || 17) + '/' + mapParams.lat + '/' + mapParams.lon;
       }
       }
-    } else {
+    }
+
+    getParams(params);
+
 <% if @lat && @lon -%>
 <% if @lat && @lon -%>
-      params.map = '16/<%= @lon %>/<%= @lat %>';
-<% else -%>
-      params.map = (mapParams.zoom || 17) + '/' + mapParams.lon + '/' + mapParams.lat;
+    params.map = '16/<%= @lat %>/<%= @lon %>';
 <% end -%>
 <% end -%>
-    }
 
     var hashParams = OSM.params(location.hash.substring(1));
 
     if (hashParams.background) {
       params.background = hashParams.background;
     }
 
     var hashParams = OSM.params(location.hash.substring(1));
 
     if (hashParams.background) {
       params.background = hashParams.background;
     }
-
     if (hashParams.comment) {
       params.comment = hashParams.comment;
     }
     if (hashParams.comment) {
       params.comment = hashParams.comment;
     }
+    if (hashParams.offset) {
+      params.offset = hashParams.offset;
+    }
 
 <% if params[:gpx] -%>
     params.gpx = '<%= trace_data_url(params[:gpx], :format => :xml) %>';
 
 <% if params[:gpx] -%>
     params.gpx = '<%= trace_data_url(params[:gpx], :format => :xml) %>';
     }
 <% end -%>
 
     }
 <% end -%>
 
-    $('#id-embed').attr('src', '<%= id_url :locale => params[:locale] %>#' + querystring.stringify(params));
+    var baseUrl = '<%= id_url :locale => params[:locale] %>#';
+
+    $('#id-embed').attr('src', baseUrl + querystring.stringify(params));
+
+    $(window).on('hashchange', function () {
+      getParams(params);
+      $('#id-embed').attr('src', baseUrl + querystring.stringify(params));
+    });
   </script>
 <% else %>
   <script type="text/javascript">alert("<%= t 'site.edit.id_not_configured' %>")</script>
   </script>
 <% else %>
   <script type="text/javascript">alert("<%= t 'site.edit.id_not_configured' %>")</script>