From: John Firebaugh Date: Fri, 5 Oct 2012 17:01:38 +0000 (-0700) Subject: Move user JS to page-specific script file X-Git-Tag: live~5334 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/dd1ec4eb9bd23c2e7d93451b41f3eda99ffb9f08 Move user JS to page-specific script file In this case it was difficult to eliminate interpolation in a separate step, so I didn't bother. --- diff --git a/app/assets/javascripts/user.js b/app/assets/javascripts/user.js new file mode 100644 index 000000000..97827fb8d --- /dev/null +++ b/app/assets/javascripts/user.js @@ -0,0 +1,45 @@ +function init(){ + var params = $("#map").data(); + var map = createMap("map"); + + setMapCenter(new OpenLayers.LonLat(params.lon, params.lat), params.zoom); + + if ($("#map").hasClass("set_location")) { + var marker; + + if (params.marker) { + marker = addMarkerToMap(new OpenLayers.LonLat(params.lon, params.lat)); + } + + map.events.register("click", map, function (e) { + closeMapPopup(); + + if (document.getElementById('updatehome').checked) { + var lonlat = getEventPosition(e); + + document.getElementById('homerow').className = ''; + document.getElementById('home_lat').value = lonlat.lat; + document.getElementById('home_lon').value = lonlat.lon; + + if (marker) { + removeMarkerFromMap(marker); + } + + marker = addMarkerToMap(lonlat); + } + }); + } else { + addMarkerToMap(new OpenLayers.LonLat(params.lon, params.lat), null, params.marker.description); + + $("[data-user]").each(function () { + var user = $(this).data('user'); + if (user.lon && user.lat) { + var icon = OpenLayers.Marker.defaultIcon(); + icon.url = OpenLayers.Util.getImageLocation(user.icon); + addMarkerToMap(new OpenLayers.LonLat(user.lon, user.lat), icon, user.description); + } + }); + } +} + +window.onload = init; diff --git a/app/views/user/_contact.html.erb b/app/views/user/_contact.html.erb index a13b2c50a..82ca579d9 100644 --- a/app/views/user/_contact.html.erb +++ b/app/views/user/_contact.html.erb @@ -1,7 +1,15 @@ - + <% + user_data = { + :lon => contact.home_lon, + :lat => contact.home_lat, + :icon => type == "friend" ? "marker-blue.png" : "marker-green.png", + :description => render(:partial => "popup", :object => contact, :locals => {:type => type}) + } + %> + <%= content_tag "td", :rowspan => 3, :data => {:user => user_data} do %> <%= user_thumbnail contact %> - + <% end %> <%= link_to h(contact.display_name), :controller => 'user', :action => 'view', :display_name => contact.display_name %> <% if @this_user.home_lon and @this_user.home_lat and contact.home_lon and contact.home_lat %> diff --git a/app/views/user/_map.html.erb b/app/views/user/_map.html.erb deleted file mode 100644 index c1ef0c6f0..000000000 --- a/app/views/user/_map.html.erb +++ /dev/null @@ -1,91 +0,0 @@ -<% -if @user.home_lat.nil? or @user.home_lon.nil? - lon = h(params['lon'] || '0') - lat = h(params['lat'] || '20') - zoom = h(params['zoom'] || '1') -else - marker = true - mlon = @user.home_lon - mlat = @user.home_lat - lon = @user.home_lon - lat = @user.home_lat - zoom = '12' -end -%> - - diff --git a/app/views/user/account.html.erb b/app/views/user/account.html.erb index cdd3160e8..64e5ed4bd 100644 --- a/app/views/user/account.html.erb +++ b/app/views/user/account.html.erb @@ -117,7 +117,23 @@

<%= t 'user.account.update home location on click' %> checked="checked" <% end %> id="updatehome" />

-
+ <% content_for :head do %> + <%= javascript_include_tag "user" %> + <% end %> + <% + home = @user.home_lat && @user.home_lon + data = { + :lon => @user.home_lon || params['lon'] || 0, + :lat => @user.home_lat || params['lat'] || 20, + :zoom => home ? 12 : params['zoom'] || 1, + :marker => !!home + } + + if params[:scale].to_f > 0 then + data[:zoom] = scale_to_zoom params[:scale] + end + %> + <%= content_tag "div", "", :id => "map", :class => "user_map set_location", :data => data %> @@ -128,8 +144,6 @@ <% end %> -<%= render :partial => 'map', :locals => { :setting_location => true, :show_other_users => false } %> - <% unless @user.data_public? %>

<%= t 'user.account.public editing note.heading' %>

diff --git a/app/views/user/view.html.erb b/app/views/user/view.html.erb index 31e9d7585..64d75ad17 100644 --- a/app/views/user/view.html.erb +++ b/app/views/user/view.html.erb @@ -104,13 +104,30 @@ <% end -%> <% if @user and @this_user.id == @user.id %> -
- <% if @this_user.home_lat.nil? or @this_user.home_lon.nil? %> + <% if @this_user.home_lat.nil? or @this_user.home_lon.nil? %> +

<%= raw(t 'user.view.if set location', :settings_link => (link_to t('user.view.settings_link_text'), :controller => 'user', :action => 'account', :display_name => @user.display_name)) %>

- <% else %> - <%= render :partial => 'map', :locals => { :setting_location => false, :show_other_users => true } %> +
+ <% else %> + <% content_for :head do %> + <%= javascript_include_tag "user" %> <% end %> -
+ <% + data = { + :lon => @user.home_lon, + :lat => @user.home_lat, + :zoom => 12, + :marker => { + :description => render(:partial => "popup", :object => @user, :locals => {:type => "your location"}) + } + } + + if params[:scale].to_f > 0 then + data[:zoom] = scale_to_zoom params[:scale] + end + %> + <%= content_tag "div", "", :id => "map", :class => "user_map", :data => data %> + <% end %> <% friends = @this_user.friends.collect { |f| f.befriendee } %> <% nearby = @this_user.nearby - friends %> @@ -123,7 +140,7 @@ <%= link_to t('user.view.friends_changesets'), friend_changesets_path %>
<%= link_to t('user.view.friends_diaries'), friend_diaries_path %>

- <%= render :partial => "contact", :collection => friends %> + <%= render :partial => "contact", :collection => friends, :locals => {:type => "friend"} %>
<% end %> @@ -135,7 +152,7 @@ <%= link_to t('user.view.nearby_changesets'), nearby_changesets_path %>
<%= link_to t('user.view.nearby_diaries'), nearby_diaries_path %>

- <%= render :partial => "contact", :collection => nearby %> + <%= render :partial => "contact", :collection => nearby, :locals => {:type => "nearby mapper"} %>
<% end %> <% end %> diff --git a/config/environments/production.rb b/config/environments/production.rb index a4ca6f273..518d712fa 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -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( index.js edit.js browse.js changeset.js pngfix.js swfobject.js ) + config.assets.precompile += %w( index.js edit.js browse.js changeset.js user.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 )