From 8c3d16ecc4af53235ab0361632a259ddd466b43b Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 28 Feb 2017 18:27:14 +0000 Subject: [PATCH] Remove inline javascript from potlatch view --- app/assets/javascripts/edit/potlatch.js.erb | 61 +++++++++++++++++++ app/views/site/_potlatch.html.erb | 66 +++------------------ config/i18n-js.yml | 1 + config/initializers/assets.rb | 2 +- 4 files changed, 71 insertions(+), 59 deletions(-) create mode 100644 app/assets/javascripts/edit/potlatch.js.erb diff --git a/app/assets/javascripts/edit/potlatch.js.erb b/app/assets/javascripts/edit/potlatch.js.erb new file mode 100644 index 000000000..d55d2eab2 --- /dev/null +++ b/app/assets/javascripts/edit/potlatch.js.erb @@ -0,0 +1,61 @@ +//= require swfobject + +$(document).ready(function () { + window.changesaved = true; + + window.markChanged = function (saved) { + window.changesaved = saved; + } + + $(window).on("beforeunload", function() { + if (!window.changesaved) { + return I18n.t("site.edit.potlatch_unsaved_changes"); + } + }); + + window.updatelinks = function (lon, lat, zoom, layers, minlon, minlat, maxlon, maxlat, object) { + var hash = OSM.formatHash({ lon: lon, lat: lat, zoom: zoom }); + + if (hash !== location.hash) { + location.replace(hash); + } + + updateLinks({ lon: lon, lat: lat }, zoom); + } + + var potlatch = $("#potlatch"), + urlparams = OSM.params(), + potlatch_swf = <%= asset_path("potlatch/potlatch.swf").to_json %>, + install_swf = <%= asset_path("expressInstall.swf").to_json %>, + flashvars = {}, + params = {}, + attributes = {}; + + flashvars.winie = document.all && window.print ? true : false; + flashvars.token = potlatch.data("token"); + + if (potlatch.data("lat") && potlatch.data("lon")) { + flashvars.lat = potlatch.data("lat"); + flashvars.long = potlatch.data("lon"); + flashvars.scale = potlatch.data("zoom"); + } else { + var mapParams = OSM.mapParams(); + + flashvars.lat = mapParams.lat; + flashvars.long = mapParams.lon; + flashvars.scale = mapParams.zoom || 17; + } + + if (flashvars.scale < 11) flashvars.scale = 11; + + if (urlparams.gpx) flashvars.gpx = urlparams.gpx; + if (urlparams.way) flashvars.way = urlparams.way; + if (urlparams.node) flashvars.node = urlparams.node; + if (urlparams.custombg) flashvars.custombg = urlparams.custombg; + + attributes.id = "potlatch"; + attributes.bgcolor = "#FFFFFF"; + + swfobject.embedSWF(potlatch_swf, "potlatch", "100%", "100%", "6", + install_swf, flashvars, params, attributes); +}); diff --git a/app/views/site/_potlatch.html.erb b/app/views/site/_potlatch.html.erb index e360dcad0..b0d20a9ae 100644 --- a/app/views/site/_potlatch.html.erb +++ b/app/views/site/_potlatch.html.erb @@ -1,60 +1,10 @@ +<%= javascript_include_tag "edit/potlatch" %> +
-
<%= raw t 'site.edit.flash_player_required' %>
+ <% session[:token] = @user.tokens.create.token unless session[:token] and UserToken.find_by_token(session[:token]) -%> + <% data = { :token => session[:token] } -%> + <% data[:lat] = @lat if @lat -%> + <% data[:lon] = @lon if @lon -%> + <% data[:zoom] = @zoom if @zoom -%> + <%= content_tag :div, raw(t("site.edit.flash_player_required")), :id => "potlatch", :data => data %>
- -<%= javascript_include_tag 'swfobject.js' %> - -<% session[:token] = @user.tokens.create.token unless session[:token] and UserToken.find_by_token(session[:token]) %> - - diff --git a/config/i18n-js.yml b/config/i18n-js.yml index 369fa340a..144954538 100644 --- a/config/i18n-js.yml +++ b/config/i18n-js.yml @@ -27,6 +27,7 @@ translations: - "*.time" - "*.browse.start_rjs.*" - "*.javascripts.*" + - "*.site.edit.*" - "*.site.index.remote_failed" - "*.site.sidebar.search_results" - "*.diary_entry.edit.marker_text" diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 5e07cc098..b60edd633 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -12,7 +12,7 @@ Rails.application.config.assets.paths << Rails.root.join("config") # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. Rails.application.config.assets.precompile += %w(index.js browse.js welcome.js fixthemap.js) -Rails.application.config.assets.precompile += %w(user.js login.js diary_entry.js) +Rails.application.config.assets.precompile += %w(user.js login.js diary_entry.js edit/*.js) Rails.application.config.assets.precompile += %w(screen-ltr.css print-ltr.css) Rails.application.config.assets.precompile += %w(screen-rtl.css print-rtl.css) Rails.application.config.assets.precompile += %w(leaflet-all.css leaflet.ie.css) -- 2.43.2