Move index JS to page-specific script file
authorJohn Firebaugh <john.firebaugh@gmail.com>
Sat, 29 Sep 2012 15:38:59 +0000 (08:38 -0700)
committerTom Hughes <tom@compton.nu>
Sat, 29 Sep 2012 17:00:04 +0000 (18:00 +0100)
app/assets/javascripts/index.js [new file with mode: 0644]
app/views/site/index.html.erb
config/environments/production.rb

diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js
new file mode 100644 (file)
index 0000000..27a2d5e
--- /dev/null
@@ -0,0 +1,141 @@
+var marker;
+var map;
+var params = OSM.mapParams();
+
+function mapInit(){
+  map = createMap("map");
+
+  if (!params.object_zoom) {
+    if (params.bbox) {
+      var bbox = new OpenLayers.Bounds(params.minlon, params.minlat, params.maxlon, params.maxlat);
+
+      map.zoomToExtent(proj(bbox));
+
+      if (params.box) {
+        $(window).load(function() { addBoxToMap(bbox) });
+      }
+    } else {
+      setMapCenter(new OpenLayers.LonLat(params.lon, params.lat), params.zoom);
+    }
+  }
+
+  if (params.layers) {
+    setMapLayers(params.layers);
+  }
+
+  if (params.marker) {
+    marker = addMarkerToMap(new OpenLayers.LonLat(params.mlon, params.mlat));
+  }
+
+  if (params.object) {
+    var url = "/api/" + OSM.API_VERSION + "/" + params.object_type + "/" + params.object_id;
+
+    if (params.object_type != "node") {
+      url += "/full";
+    }
+
+    $(window).load(function() { addObjectToMap(url, params.object_zoom) });
+  }
+
+  map.events.register("moveend", map, updateLocation);
+  map.events.register("changelayer", map, updateLocation);
+
+  updateLocation();
+  handleResize();
+}
+
+$(document).ready(function () {
+  $("#show_data").click(function (e) {
+    $.ajax({ url: $(this).attr('href'), success: function (sidebarHtml) {
+      startBrowse(sidebarHtml);
+    }});
+    e.preventDefault();
+  });
+
+  $("body").on("click", "a.set_position", function () {
+    var data = $(this).data();
+    var centre = new OpenLayers.LonLat(data.lon, data.lat);
+
+    if (data.minLon && data.minLat && data.maxLon && data.maxLat) {
+      var bbox = new OpenLayers.Bounds(data.minLon, data.minLat, data.maxLon, data.maxLat);
+
+      map.zoomToExtent(proj(bbox));
+    } else {
+      setMapCenter(centre, data.zoom);
+    }
+
+    if (marker) {
+      removeMarkerFromMap(marker);
+    }
+
+    marker = addMarkerToMap(centre, getArrowIcon());
+
+    return false;
+  });
+});
+
+function updateLocation() {
+  var lonlat = unproj(map.getCenter());
+  var zoom = map.getZoom();
+  var layers = getMapLayers();
+  var extents = unproj(map.getExtent());
+  var expiry = new Date();
+
+  updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top, params.object_type, params.object_id);
+
+  expiry.setYear(expiry.getFullYear() + 10);
+  $.cookie("_osm_location", [lonlat.lon, lonlat.lat, zoom, layers].join("|"), {expires: expiry});
+}
+
+function remoteEditHandler(event) {
+  var extent = unproj(map.getExtent());
+  var loaded = false;
+
+  $("#linkloader").load(function () { loaded = true; });
+  $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?left=" + extent.left + "&top=" + extent.top + "&right=" + extent.right + "&bottom=" + extent.bottom);
+
+  setTimeout(function () {
+    if (!loaded) alert(I18n.t('site.index.remote_failed'));
+  }, 1000);
+
+  return false;
+}
+
+function installEditHandler() {
+  $("a[data-editor=remote]").click(remoteEditHandler);
+
+  if (OSM.preferred_editor == "remote" && $('body').hasClass("site-edit")) {
+    remoteEditHandler();
+  }
+}
+
+$(document).ready(mapInit);
+$(document).ready(installEditHandler);
+$(document).ready(handleResize);
+
+$(window).resize(function() {
+  var centre = map.getCenter();
+  var zoom = map.getZoom();
+
+  handleResize();
+
+  map.setCenter(centre, zoom);
+});
+
+$(document).ready(function () {
+  $("#exportanchor").click(function (e) {
+    $.ajax({ url: $(this).data('url'), success: function (sidebarHtml) {
+      startExport(sidebarHtml);
+    }});
+    e.preventDefault();
+  });
+
+  if (window.location.pathname == "/export") {
+    $("#exportanchor").click();
+  }
+
+  var query;
+  if (query = getArgs(window.location.toString()).query) {
+    doSearch(query);
+  }
+});
index 98a3a1ce72d0c198d85328665d9414b9921f6abf..3adc55f55dee37e2ef2e00679b6a2f92ca00cfb4 100644 (file)
@@ -1,3 +1,7 @@
+<% content_for :head do %>
+  <%= javascript_include_tag "index" %>
+<% end %>
+
 <% if @user and !@user.home_lon.nil? and !@user.home_lat.nil? %>
   <% content_for :greeting do %>
     <%= link_to t("layouts.home"), "#", :class => "set_position", :data => { :lat => @user.home_lat, :lon => @user.home_lon, :zoom => 15 }, :title => t("layouts.home_tooltip") %> |
     </tr>
   </table>
 </div>
-
-<script type="text/javascript">
-  var marker;
-  var map;
-  var params = OSM.mapParams();
-
-  function mapInit(){
-    map = createMap("map");
-
-    if (!params.object_zoom) {
-      if (params.bbox) {
-        var bbox = new OpenLayers.Bounds(params.minlon, params.minlat, params.maxlon, params.maxlat);
-
-        map.zoomToExtent(proj(bbox));
-
-        if (params.box) {
-          $(window).load(function() { addBoxToMap(bbox) });
-        }
-      } else {
-        setMapCenter(new OpenLayers.LonLat(params.lon, params.lat), params.zoom);
-      }
-    }
-
-    if (params.layers) {
-      setMapLayers(params.layers);
-    }
-
-    if (params.marker) {
-      marker = addMarkerToMap(new OpenLayers.LonLat(params.mlon, params.mlat));
-    }
-
-    if (params.object) {
-      var url = "/api/" + OSM.API_VERSION + "/" + params.object_type + "/" + params.object_id;
-
-      if (params.object_type != "node") {
-        url += "/full";
-      }
-
-      $(window).load(function() { addObjectToMap(url, params.object_zoom) });
-    }
-
-    map.events.register("moveend", map, updateLocation);
-    map.events.register("changelayer", map, updateLocation);
-
-    updateLocation();
-    handleResize();
-  }
-
-  $(document).ready(function () {
-    $("#show_data").click(function (e) {
-      $.ajax({ url: $(this).attr('href'), success: function (sidebarHtml) {
-        startBrowse(sidebarHtml);
-      }});
-      e.preventDefault();
-    });
-
-    $("body").on("click", "a.set_position", function () {
-      var data = $(this).data();
-      var centre = new OpenLayers.LonLat(data.lon, data.lat);
-
-      if (data.minLon && data.minLat && data.maxLon && data.maxLat) {
-        var bbox = new OpenLayers.Bounds(data.minLon, data.minLat, data.maxLon, data.maxLat);
-
-        map.zoomToExtent(proj(bbox));
-      } else {
-        setMapCenter(centre, data.zoom);
-      }
-
-      if (marker) {
-        removeMarkerFromMap(marker);
-      }
-
-      marker = addMarkerToMap(centre, getArrowIcon());
-
-      return false;
-    });
-  });
-
-  function updateLocation() {
-    var lonlat = unproj(map.getCenter());
-    var zoom = map.getZoom();
-    var layers = getMapLayers();
-    var extents = unproj(map.getExtent());
-    var expiry = new Date();
-
-    updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top, params.object_type, params.object_id);
-
-    expiry.setYear(expiry.getFullYear() + 10);
-    $.cookie("_osm_location", [lonlat.lon, lonlat.lat, zoom, layers].join("|"), {expires: expiry});
-  }
-
-  function remoteEditHandler(event) {
-    var extent = unproj(map.getExtent());
-    var loaded = false;
-
-    $("#linkloader").load(function () { loaded = true; });
-    $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?left=" + extent.left + "&top=" + extent.top + "&right=" + extent.right + "&bottom=" + extent.bottom);
-
-    setTimeout(function () {
-      if (!loaded) alert(I18n.t('site.index.remote_failed'));
-    }, 1000);
-
-    return false;
-  }
-
-  function installEditHandler() {
-    $("a[data-editor=remote]").click(remoteEditHandler);
-
-    if (OSM.preferred_editor == "remote" && $('body').hasClass("site-edit")) {
-      remoteEditHandler();
-    }
-  }
-
-  $(document).ready(mapInit);
-  $(document).ready(installEditHandler);
-  $(document).ready(handleResize);
-
-  $(window).resize(function() {
-    var centre = map.getCenter();
-    var zoom = map.getZoom();
-
-    handleResize();
-
-    map.setCenter(centre, zoom);
-  });
-
-  $(document).ready(function () {
-    $("#exportanchor").click(function (e) {
-      $.ajax({ url: $(this).data('url'), success: function (sidebarHtml) {
-        startExport(sidebarHtml);
-      }});
-      e.preventDefault();
-    });
-
-    if (window.location.pathname == "/export") {
-      $("#exportanchor").click();
-    }
-
-    var query;
-    if (query = getArgs(window.location.toString()).query) {
-      doSearch(query);
-    }
-  });
-// -->
-</script>
index 334eefd620400d413bf465e86ba3c7853d12536f..43c76a6a599fcc4fad78d603a413f2e57a1dc98c 100644 (file)
@@ -56,7 +56,7 @@ OpenStreetMap::Application.configure do
   # config.action_controller.asset_host = "http://assets.example.com"
 
   # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
-  config.assets.precompile += %w( pngfix.js swfobject.js )
+  config.assets.precompile += %w( index.js pngfix.js swfobject.js )
   config.assets.precompile += %w( large-ltr.css small-ltr.css print-ltr.css )
   config.assets.precompile += %w( large-rtl.css small-rtl.css print-rtl.css )
   config.assets.precompile += %w( browse.css theme/openstreetmap/style.css )