layout 'site'
before_filter :authorize, :only => [:api_details, :api_gpx_files]
- before_filter :authorize_web, :only => [:account, :go_public, :view, :diary, :make_friend]
- before_filter :require_user, :only => [:set_home, :account, :go_public, :make_friend]
+ before_filter :authorize_web, :only => [:account, :go_public, :view, :diary, :make_friend, :remove_friend]
+ before_filter :require_user, :only => [:set_home, :account, :go_public, :make_friend, :remove_friend]
filter_parameter_logging :password, :pass_crypt, :pass_crypt_confirmation
end
def make_friend
-
if params[:display_name]
name = params[:display_name]
+ new_friend = User.find_by_display_name(name)
friend = Friend.new
friend.user_id = @user.id
- friend.friend_user_id = User.find_by_display_name(name).id
- unless @user.is_friends_with?(friend)
+ friend.friend_user_id = new_friend.id
+ unless @user.is_friends_with?(new_friend)
if friend.save
flash[:notice] = "#{name} is now your friend."
+ Notifier::deliver_friend_notification(friend)
else
friend.add_error("Sorry, failed to add #{name} as a friend.")
end
end
end
+ def remove_friend
+ if params[:display_name]
+ name = params[:display_name]
+ friend = User.find_by_display_name(name)
+ if @user.is_friends_with?(friend)
+ Friend.delete_all "user_id = #{@user.id} AND friend_user_id = #{friend.id}"
+ flash[:notice] = "#{friend.display_name} was removed from your friends."
+ else
+ flash[:notice] = "#{friend.display_name} was not already one of your friends."
+ end
+ redirect_to :controller => 'user', :action => 'view'
+ end
+ end
+
end
+<% @this_user = User.find_by_display_name(@this_user.display_name) %>
<h2><%= @this_user.display_name %></h2>
-<div id="description"><%= simple_format(@this_user.description) %></div>
-
+<div id="userinformation">
<% if @user and @this_user.id == @user.id %>
-<h3>Your diary</h3>
-<%= link_to 'View your diary', :controller => 'diary_entry', :action => 'list', :display_name => @user.display_name %><br/>
-<%= link_to 'New diary post', :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %>
-<h3>Your traces</h3>
-<%= link_to 'View your traces', :controller => 'trace', :action=>'mine' %>
-<h3>Your account</h3>
-<%= link_to 'Edit your settings', :controller => 'user', :action => 'account', :display_name => @user.display_name %>
+<%= link_to 'my diary', :controller => 'diary_entry', :action => 'list', :display_name => @user.display_name %>
+| <%= link_to 'new diary post', :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %>
+| <%= link_to 'my traces', :controller => 'trace', :action=>'mine' %>
+| <%= link_to 'my settings', :controller => 'user', :action => 'account', :display_name => @user.display_name %>
+<% else %>
+<%= link_to 'send message', :controller => 'message', :action => 'new', :user_id => @this_user.id %>
+| <%= link_to 'diary', :controller => 'diary_entry', :action => 'list', :display_name => @this_user.display_name %>
+| <%= link_to 'traces', :controller => 'trace', :action => 'view', :display_name => @this_user.display_name %>
+| <% if @user and @user.is_friends_with?(@this_user) %>
+ <%= link_to 'remove as friend', :controller => 'user', :action => 'remove_friend', :display_name => @this_user.display_name %>
<% else %>
-<%= link_to 'Send message', :controller => 'message', :action => 'new', :user_id => @this_user.id %><br />
-<%= link_to 'Add as friend', :controller => 'user', :action => 'make_friend', :display_name => @this_user.display_name %><br />
-<%= link_to 'View diary', :controller => 'diary_entry', :action => 'list', :display_name => @this_user.display_name %><br />
-<%= link_to 'View traces', :controller => 'trace', :action => 'view', :display_name => @this_user.display_name %>
+ <%= link_to 'add as friend', :controller => 'user', :action => 'make_friend', :display_name => @this_user.display_name %>
<% end %>
+<% end %>
+</div>
+
+<div id="description"><%= simple_format(@this_user.description) %></div>
-<h3>Nearby users</h3>
+<h3>User location</h3>
<% if @this_user.home_lat.nil? or @this_user.home_lon.nil? %>
No home location has been set.
<% if @user and @this_user.id == @user.id %>
You can set your home location on your <%= link_to 'settings', :controller => 'user', :action => 'account', :display_name => @user.display_name %> page.
<% end %>
<% else %>
+ Nearby users:<br/>
<% if @this_user.nearby.empty? %>
- There are no users who admit to mapping nearby.
+ There are no users who admit to mapping nearby yet.
<% else %>
<table id="nearbyusers">
<% @this_user.nearby.each do |nearby| %>
<%end%>
</table>
<%end%>
+
+ <% if @user and @this_user.id == @user.id %>
+ <br/>
+ Your friends:<br/>
+ <% if @this_user.friends.empty? %>
+ You have not added any friends yet.
+ <% else %>
+ <table id="friends">
+ <% @this_user.friends.each do |friend| %>
+ <% @friend = User.find_by_id(friend.friend_user_id) %>
+ <tr>
+ <td class="username"><%= link_to @friend.display_name, :controller => 'user', :action => 'view', :display_name => @friend.display_name %></td>
+ <td><%= @this_user.distance(@friend).round %>km away</td>
+ <td class="message">(<%= link_to 'send message', :controller => 'message', :action => 'new', :user_id => @friend.id %>)</td>
+ </tr>
+ <%end%>
+ </table>
+ <%end%>
+ <%end%>
<% end %>
map.connect '/user/:display_name/traces/:id/icon', :controller => 'trace', :action => 'icon'
# user pages
- map.connect '/user/:display_name/make_friend', :controller => 'user', :action => 'make_friend'
map.connect '/user/:display_name', :controller => 'user', :action => 'view'
+ map.connect '/user/:display_name/make_friend', :controller => 'user', :action => 'make_friend'
+ map.connect '/user/:display_name/remove_friend', :controller => 'user', :action => 'remove_friend'
map.connect '/user/:display_name/diary', :controller => 'diary_entry', :action => 'list'
map.connect '/user/:display_name/diary/:id', :controller => 'diary_entry', :action => 'list', :id => /\d+/
map.connect '/user/:display_name/diary/rss', :controller => 'diary_entry', :action => 'rss'