Add home location condition to user model
This commit is contained in:
parent
f47eeb0632
commit
033c032ed6
9 changed files with 15 additions and 11 deletions
|
@ -280,7 +280,7 @@ class DiaryEntriesController < ApplicationController
|
|||
@lon = @diary_entry.longitude
|
||||
@lat = @diary_entry.latitude
|
||||
@zoom = 12
|
||||
elsif current_user.home_lat.nil? || current_user.home_lon.nil?
|
||||
elsif !current_user.has_home?
|
||||
@lon = params[:lon] || -0.1
|
||||
@lat = params[:lat] || 51.5
|
||||
@zoom = params[:zoom] || 4
|
||||
|
|
|
@ -54,7 +54,7 @@ module ApplicationHelper
|
|||
if current_user
|
||||
data[:user] = current_user.id.to_json
|
||||
|
||||
data[:user_home] = { :lat => current_user.home_lat, :lon => current_user.home_lon } unless current_user.home_lon.nil? || current_user.home_lat.nil?
|
||||
data[:user_home] = { :lat => current_user.home_lat, :lon => current_user.home_lon } if current_user.has_home?
|
||||
end
|
||||
|
||||
data[:location] = session[:location] if session[:location]
|
||||
|
|
|
@ -238,8 +238,12 @@ class User < ApplicationRecord
|
|||
@preferred_languages ||= Locale.list(languages)
|
||||
end
|
||||
|
||||
def has_home?
|
||||
home_lat && home_lon
|
||||
end
|
||||
|
||||
def nearby(radius = Settings.nearby_radius, num = Settings.nearby_users)
|
||||
if home_lon && home_lat
|
||||
if has_home?
|
||||
gc = OSM::GreatCircle.new(home_lat, home_lon)
|
||||
sql_for_area = QuadTile.sql_for_area(gc.bounds(radius), "home_")
|
||||
sql_for_distance = gc.sql_for_distance("home_lat", "home_lon")
|
||||
|
@ -401,6 +405,6 @@ class User < ApplicationRecord
|
|||
end
|
||||
|
||||
def update_tile
|
||||
self.home_tile = QuadTile.tile_for_point(home_lat, home_lon) if home_lat && home_lon
|
||||
self.home_tile = QuadTile.tile_for_point(home_lat, home_lon) if has_home?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -46,7 +46,7 @@ json.user do
|
|||
end
|
||||
|
||||
if current_user && current_user == user && can?(:details, User)
|
||||
if user.home_lat && user.home_lon
|
||||
if user.has_home?
|
||||
json.home do
|
||||
json.lat user.home_lat
|
||||
json.lon user.home_lon
|
||||
|
|
|
@ -25,7 +25,7 @@ xml.tag! "user", :id => user.id,
|
|||
end
|
||||
end
|
||||
if current_user && current_user == user && can?(:details, User)
|
||||
if user.home_lat && user.home_lon
|
||||
if user.has_home?
|
||||
xml.tag! "home", :lat => user.home_lat,
|
||||
:lon => user.home_lon,
|
||||
:zoom => user.home_zoom
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<div class="col">
|
||||
<p class='text-muted mb-0'>
|
||||
<%= link_to contact.display_name, user_path(contact) %>
|
||||
<% if @user.home_lon and @user.home_lat and contact.home_lon and contact.home_lat %>
|
||||
<% if @user.has_home? and contact.has_home? %>
|
||||
<% distance = @user.distance(contact) %>
|
||||
<% if distance < 1 %>
|
||||
(<%= t ".m away", :count => (distance * 1000).round %>)
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<div class="row">
|
||||
<% if current_user and @user.id == current_user.id %>
|
||||
<div class="col-md order-md-last">
|
||||
<% if @user.home_lat.nil? or @user.home_lon.nil? %>
|
||||
<% if !@user.has_home? %>
|
||||
<div id="map" class="content_map border border-grey">
|
||||
<p class="m-3"><%= t(".no_home_location_html", :edit_profile_link => link_to(t(".edit_your_profile"), edit_profile_path)) %></p>
|
||||
</div>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<% content_for(:body_class) { "map-layout" } %>
|
||||
|
||||
<% if current_user and !current_user.home_lon.nil? and !current_user.home_lat.nil? %>
|
||||
<% if current_user&.has_home? %>
|
||||
<% content_for :greeting do %>
|
||||
<%= link_to t("layouts.home"),
|
||||
"#",
|
||||
|
|
|
@ -42,13 +42,13 @@
|
|||
|
||||
<fieldset>
|
||||
<legend><%= t ".home location" -%></legend>
|
||||
<p id="home_message" class="text-muted"<% if current_user.home_lat and current_user.home_lon %> hidden<% end %>><%= t ".no home location" %></p>
|
||||
<p id="home_message" class="text-muted"<% if current_user.has_home? %> hidden<% end %>><%= t ".no home location" %></p>
|
||||
<div class="row">
|
||||
<%= f.text_field :home_lat, :wrapper_class => "col-sm-4", :id => "home_lat" %>
|
||||
<%= f.text_field :home_lon, :wrapper_class => "col-sm-4", :id => "home_lon" %>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="updatehome" value="1" <% unless current_user.home_lat and current_user.home_lon %> checked="checked" <% end %> id="updatehome" />
|
||||
<input class="form-check-input" type="checkbox" name="updatehome" value="1" <% unless current_user.has_home? %> checked="checked" <% end %> id="updatehome" />
|
||||
<label class="form-check-label" for="updatehome"><%= t ".update home location on click" %></label>
|
||||
</div>
|
||||
<%= tag.div "", :id => "map", :class => "content_map set_location border border-grey rounded" %>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue