X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/18777b41ea4aa1364dbf33e86e6cb65762b53296..3622db1665a51795cd381745b59693d88d66f699:/app/views/browse/start.rjs diff --git a/app/views/browse/start.rjs b/app/views/browse/start.rjs index 35cd56591..8eaf90070 100644 --- a/app/views/browse/start.rjs +++ b/app/views/browse/start.rjs @@ -1,4 +1,4 @@ -page.replace_html :sidebar_title, 'Data' +page.replace_html :sidebar_title, t('browse.start_rjs.data_frame_title') page.replace_html :sidebar_content, :partial => 'start' page << <= 15) { useMap(); } else { - $("browse_status").innerHTML = "Zoom in or Select an area of the map to view."; + setStatus("#{I18n.t('browse.start_rjs.zoom_or_select')}"); } } } @@ -50,11 +50,6 @@ page << < '{{num_features}}')}", { num_features: browseFeatureList.length }))); div.appendChild(p); var input = document.createElement("input"); input.type = "submit"; - input.value = "Load Data"; + input.value = "#{I18n.t('browse.start_rjs.load_data')}"; input.onclick = loadFeatureList; div.appendChild(input); - $("browse_object_list").innerHTML = ""; - $("browse_object_list").appendChild(div); + $("browse_content").innerHTML = ""; + $("browse_content").appendChild(div); } - + function loadFeatureList() { browseDataLayer.addFeatures(browseFeatureList); browseDataLayer.events.triggerEvent("loadend"); @@ -153,7 +153,7 @@ page << < 0.25) { - $("browse_status").innerHTML = "Unable to load: Bounding box size of " + size + " is too large. (Must be smaller than 0.25)
"; + if (size > #{APP_CONFIG['max_request_area']}) { + setStatus("#{I18n.t('browse.start_rjs.unable_to_load')} " + size + " #{I18n.t('browse.start_rjs.must_be_smaller')}"); } else { - loadGML("/api/0.5/map?bbox=" + projected.toBBOX()); + loadGML("/api/#{API_VERSION}/map?bbox=" + projected.toBBOX()); } } function loadGML(url) { - $("browse_status").innerHTML = "Loading..."; - $("browse_object_list").innerHTML = ""; + setStatus("#{I18n.t('browse.start_rjs.loading')}"); + $("browse_content").innerHTML = ""; if (!browseDataLayer) { var style = new OpenLayers.Style(); @@ -210,21 +210,24 @@ page << <= 0; i--) { - var user = nodes[i].getAttribute("user") || "private user"; + var user = nodes[i].getAttribute("user") || "#{I18n.t('browse.start_rjs.private_user')}"; var timestamp = nodes[i].getAttribute("timestamp"); var item = document.createElement("li"); - item.appendChild(document.createTextNode("Edited by " + user + " at " + timestamp)); + item.appendChild(document.createTextNode("#{I18n.t('browse.start_rjs.edited_by')} " + user + " #{I18n.t('browse.start_rjs.at_timestamp')} " + timestamp)); history.appendChild(item); } div.appendChild(history); - var link = document.createElement("a"); - link.appendChild(document.createTextNode("History entry for " + this.feature.osm_id)); - link.href = "/browse/"+this.type+"/"+this.feature.osm_id+"/history"; - div.appendChild(link); + $("browse_content").appendChild(div); + } - $("browse_object_list").appendChild(div); + function featureType(feature) { + if (feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Point") { + return "node"; + } else { + return "way"; + } } - + + function featureTypeName(feature) { + if (featureType(feature) == "node") { + return "#{I18n.t('browse.start_rjs.object_list.type.node')}"; + } else if (featureType(feature) == "way") { + return "#{I18n.t('browse.start_rjs.object_list.type.way')}"; + } + } + + function featureNameSelect(feature) { + if (feature.attributes.name) { + return feature.attributes.name; + } else if (featureType(feature) == "node") { + return "#{I18n.t('browse.start_rjs.object_list.selected.type.node')} " + feature.osm_id; + } else if (featureType(feature) == "way") { + return "#{I18n.t('browse.start_rjs.object_list.selected.type.way')} " + feature.osm_id; + } + } + + function featureNameHistory(feature) { + if (feature.attributes.name) { + return feature.attributes.name; + } else if (featureType(feature) == "node") { + return "#{I18n.t('browse.start_rjs.object_list.history.type.node')} " + feature.osm_id; + } else if (featureType(feature) == "way") { + return "#{I18n.t('browse.start_rjs.object_list.history.type.way')} " + feature.osm_id; + } + } + + /* + This is a hack so that we can interpolate JavaScript variables in + translation strings from Ruby, doing the string replacement + client-side instead of on the server. + */ + function i18n_js(string, keys) { + for (var key in keys) { + var re_key = '\{\{' + key + '\}\}'; + var re = new RegExp(re_key, "g"); + + string = string.replace(re, keys[key]); + } + + return string; + } + + function setStatus(status) { + $("browse_status").innerHTML = status; + $("browse_status").style.display = "block"; + } + + function clearStatus() { + $("browse_status").innerHTML = ""; + $("browse_status").style.display = "none"; + } + startBrowse(); EOJ