From acd72861ed8ad46d759a6e509f3e7c459db1a4f5 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 27 Feb 2010 18:11:04 +0000 Subject: [PATCH 1/1] Rework the user details screen to be less crap... Highlights include: - Map is smaller and placed to the side with lists of friends and nearby users (now excluding friends) beside it. - Map includes friends as well as nearby users. - Friend and nearby user lists include photos and links to friend/unfriend as appropriate. - OAuth settings link moved up with all the other links in the main navigation bar. The addition of friends to the map also carries through to the user settings page. --- app/controllers/user_controller.rb | 12 +- app/views/user/_contact.html.erb | 31 +++ .../{_friend_map.html.erb => _map.html.erb} | 41 +++- app/views/user/account.html.erb | 4 +- app/views/user/view.html.erb | 226 ++++++++---------- config/locales/en.yml | 12 +- public/images/anon_large.png | Bin 0 -> 1826 bytes public/images/anon_small.png | Bin 0 -> 1002 bytes public/stylesheets/common.css | 10 + 9 files changed, 189 insertions(+), 147 deletions(-) create mode 100644 app/views/user/_contact.html.erb rename app/views/user/{_friend_map.html.erb => _map.html.erb} (58%) create mode 100644 public/images/anon_large.png create mode 100644 public/images/anon_small.png diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index c181da305..5b6222a98 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -287,7 +287,11 @@ class UserController < ApplicationController flash[:warning] = t 'user.make_friend.already_a_friend', :name => name end - redirect_to :controller => 'user', :action => 'view' + if params[:referer] + redirect_to params[:referer] + else + redirect_to :controller => 'user', :action => 'view' + end end end @@ -302,7 +306,11 @@ class UserController < ApplicationController flash[:error] = t 'user.remove_friend.not_a_friend', :name => friend.display_name end - redirect_to :controller => 'user', :action => 'view' + if params[:referer] + redirect_to params[:referer] + else + redirect_to :controller => 'user', :action => 'view' + end end end diff --git a/app/views/user/_contact.html.erb b/app/views/user/_contact.html.erb new file mode 100644 index 000000000..be1c24106 --- /dev/null +++ b/app/views/user/_contact.html.erb @@ -0,0 +1,31 @@ + + + <% if contact.image %> + <%= image_tag url_for_file_column(contact, "image"), :class => "user_thumbnail" %> + <% else %> + <%= image_tag "anon_small.png" %> + <% end %> + + + <%= link_to h(contact.display_name), :controller => 'user', :action => 'view', :display_name => contact.display_name %> + <% if contact.home_lon and contact.home_lat %> + <% distance = @this_user.distance(contact) %> + <% if distance < 1 %> + (<%= t 'user.view.m away', :count => (distance * 1000).round %>) + <% else %> + (<%= t 'user.view.km away', :count => distance.round %>) + <% end %> + <% end %> + + + + + <%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :display_name => contact.display_name %> + | + <% if @user.is_friends_with?(contact) %> + <%= link_to t('user.view.remove as friend'), :controller => 'user', :action => 'remove_friend', :display_name => contact.display_name, :referer => request.request_uri %> + <% else %> + <%= link_to t('user.view.add as friend'), :controller => 'user', :action => 'make_friend', :display_name => contact.display_name, :referer => request.request_uri %> + <% end %> + + diff --git a/app/views/user/_friend_map.html.erb b/app/views/user/_map.html.erb similarity index 58% rename from app/views/user/_friend_map.html.erb rename to app/views/user/_map.html.erb index a73bb53b8..17f4ed344 100644 --- a/app/views/user/_friend_map.html.erb +++ b/app/views/user/_map.html.erb @@ -1,14 +1,23 @@ -<% nearest_str = "" %> -<% if !@user.home_lat.nil? and !@user.home_lon.nil? %> - <% if !@user.nearby.empty? %> - <% @user.nearby.each do |nearby| %> - <% nearest_str += "nearest.push( { 'display_name' : '#{escape_javascript(nearby.display_name)}', 'home_lat' : #{nearby.home_lat}, 'home_lon' : #{nearby.home_lon} } );\n" %> + <% if @user.home_lat.nil? or @user.home_lon.nil? %> @@ -47,17 +56,25 @@ setMapCenter(centre, zoom); <% if marker %> - marker = addMarkerToMap(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>), null, "<%= t 'user.friend_map.your location' %>"); + marker = addMarkerToMap(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>), null, "<%= t 'user.map.your location' %>"); <% end %> var near_icon = OpenLayers.Marker.defaultIcon(); near_icon.url = OpenLayers.Util.getImagesLocation() + "marker-green.png";; var i = nearest.length; while( i-- ) { - var description = i18n('<%= t 'user.friend_map.nearby mapper'%>', { nearby_user: ''+nearest[i].display_name+'' }); + var description = i18n('<%= t 'user.map.nearby mapper'%>', { nearby_user: ''+nearest[i].display_name+'' }); var nearmarker = addMarkerToMap(new OpenLayers.LonLat(nearest[i].home_lon, nearest[i].home_lat), near_icon.clone(), description); } + var friend_icon = OpenLayers.Marker.defaultIcon(); + friend_icon.url = OpenLayers.Util.getImagesLocation() + "marker-blue.png";; + var i = friends.length; + while( i-- ) { + var description = i18n('<%= t 'user.map.friend'%>', { friend_user: ''+friends[i].display_name+'' }); + var friendmarker = addMarkerToMap(new OpenLayers.LonLat(friends[i].home_lon, friends[i].home_lat), friend_icon.clone(), description); + } + if (document.getElementById('updatehome')) { map.events.register("click", map, setHome); } @@ -77,7 +94,7 @@ removeMarkerFromMap(marker); } - marker = addMarkerToMap(lonlat, null, "<%= t 'user.friend_map.your location' %>"); + marker = addMarkerToMap(lonlat, null, "<%= t 'user.map.your location' %>"); } } diff --git a/app/views/user/account.html.erb b/app/views/user/account.html.erb index 881750c36..92c37056b 100644 --- a/app/views/user/account.html.erb +++ b/app/views/user/account.html.erb @@ -59,7 +59,7 @@ <% else %> - + @@ -96,7 +96,7 @@
<%= image_tag url_for_file_column(@user, "image") %><%= image_tag url_for_file_column(@user, "image"), :class => "user_image" %> <%= radio_button_tag "image_action", "keep", true %> <%= t 'user.account.keep image' %>
<% end %> -<%= render :partial => 'friend_map' %> +<%= render :partial => 'map' %> <% unless @user.data_public? %> diff --git a/app/views/user/view.html.erb b/app/views/user/view.html.erb index 372bd660d..865c38959 100644 --- a/app/views/user/view.html.erb +++ b/app/views/user/view.html.erb @@ -1,148 +1,124 @@ <% if @this_user.image %> -<%= image_tag url_for_file_column(@this_user, "image"), :align => "right", :float => "left" %> + <%= image_tag url_for_file_column(@this_user, "image"), :style => "float: right; margin-top: 19px", :class => "user_image" %> <% end %> +

<%= h(@this_user.display_name) %> + <% UserRole::ALL_ROLES.each do |role| %> -<% if @user and @user.administrator? %> -<% if @this_user.has_role? role %> -<%= link_to(image_tag("roles/#{role}.png", :size => "20x20", :border => 0, :alt => t("user.view.role.revoke.#{role}"), :title => t("user.view.role.revoke.#{role}")), :controller => 'user_roles', :action => 'revoke', :display_name => @this_user.display_name, :role => role) %> -<% else %> -<%= link_to(image_tag("roles/blank_#{role}.png", :size => "20x20", :border => 0, :alt => t("user.view.role.grant.#{role}"), :title => t("user.view.role.grant.#{role}")), :controller => 'user_roles', :action => 'grant', :display_name => @this_user.display_name, :role => role) %> -<% end %> -<% elsif @this_user.has_role? role %> -<%= image_tag("roles/#{role}.png", :size => "20x20", :border => 0, :alt => t("user.view.role.#{role}"), :title => t("user.view.role.#{role}")) %> -<% end %> + <% if @user and @user.administrator? %> + <% if @this_user.has_role? role %> + <%= link_to(image_tag("roles/#{role}.png", :size => "20x20", :border => 0, :alt => t("user.view.role.revoke.#{role}"), :title => t("user.view.role.revoke.#{role}")), :controller => 'user_roles', :action => 'revoke', :display_name => @this_user.display_name, :role => role) %> + <% else %> + <%= link_to(image_tag("roles/blank_#{role}.png", :size => "20x20", :border => 0, :alt => t("user.view.role.grant.#{role}"), :title => t("user.view.role.grant.#{role}")), :controller => 'user_roles', :action => 'grant', :display_name => @this_user.display_name, :role => role) %> + <% end %> + <% elsif @this_user.has_role? role %> + <%= image_tag("roles/#{role}.png", :size => "20x20", :border => 0, :alt => t("user.view.role.#{role}"), :title => t("user.view.role.#{role}")) %> + <% end %> <% end %>

+
-<% if @user and @this_user.id == @user.id %> - -<%= link_to t('user.view.my diary'), :controller => 'diary_entry', :action => 'list', :display_name => @user.display_name %> -| <%= link_to t('user.view.new diary entry'), :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %> -| <%= link_to t('user.view.my edits'), :controller => 'changeset', :action => 'list', :display_name => @user.display_name %> -| <%= link_to t('user.view.my traces'), :controller => 'trace', :action=>'mine' %> -| <%= link_to t('user.view.my settings'), :controller => 'user', :action => 'account', :display_name => @user.display_name %> -| <%= link_to t('user.view.blocks on me'), :controller => 'user_blocks', :action => 'blocks_on', :display_name => @user.display_name %> -<% if @user and @user.moderator? %> -| <%= link_to t('user.view.blocks by me'), :controller => 'user_blocks', :action => 'blocks_by', :display_name => @user.display_name %> -<% end %> -<% else %> - -<%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :display_name => @this_user.display_name %> -| <%= link_to t('user.view.diary'), :controller => 'diary_entry', :action => 'list', :display_name => @this_user.display_name %> -| <%= link_to t('user.view.edits'), :controller => 'changeset', :action => 'list', :display_name => @this_user.display_name %> -| <%= link_to t('user.view.traces'), :controller => 'trace', :action => 'view', :display_name => @this_user.display_name %> -| <% if @user and @user.is_friends_with?(@this_user) %> - <%= link_to t('user.view.remove as friend'), :controller => 'user', :action => 'remove_friend', :display_name => @this_user.display_name %> -<% else %> - <%= link_to t('user.view.add as friend'), :controller => 'user', :action => 'make_friend', :display_name => @this_user.display_name %> -<% end %> -| <%= link_to t('user.view.block_history'), :controller => 'user_blocks', :action => 'blocks_on', :display_name => @this_user.display_name %> -<% if @this_user.moderator? %> -| <%= link_to t('user.view.moderator_history'), :controller => 'user_blocks', :action => 'blocks_by', :display_name => @this_user.display_name %> -<% end %> -<% if @user and @user.moderator? %> -| <%= link_to t('user.view.create_block'), :controller => 'user_blocks', :action => 'new', :display_name => @this_user.display_name %> -<% end %> -<% end %> -<% if @user and @user.administrator? %> -
-<% if @this_user.active? %> -<%= link_to t('user.view.deactivate_user'), {:controller => 'user', :action => 'deactivate', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> -<% else %> -<%= link_to t('user.view.activate_user'), {:controller => 'user', :action => 'activate', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> -<% end %> -<% if @this_user.visible? %> -| <%= link_to t('user.view.hide_user'), {:controller => 'user', :action => 'hide', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> -| <%= link_to t('user.view.delete_user'), {:controller => 'user', :action => 'delete', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> -<% else %> -| <%= link_to t('user.view.unhide_user'), {:controller => 'user', :action => 'unhide', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> -<% end %> -<% end %> + <% if @user and @this_user.id == @user.id %> + + <%= link_to t('user.view.my diary'), :controller => 'diary_entry', :action => 'list', :display_name => @user.display_name %> + | + <%= link_to t('user.view.new diary entry'), :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %> + | + <%= link_to t('user.view.my edits'), :controller => 'changeset', :action => 'list', :display_name => @user.display_name %> + | + <%= link_to t('user.view.my traces'), :controller => 'trace', :action=>'mine' %> + | + <%= link_to t('user.view.my settings'), :controller => 'user', :action => 'account', :display_name => @user.display_name %> + | + <%= link_to t('user.view.oauth settings'), :controller => 'oauth_clients', :action => 'index' %> + | + <%= link_to t('user.view.blocks on me'), :controller => 'user_blocks', :action => 'blocks_on', :display_name => @user.display_name %> + <% if @user and @user.moderator? %> + | <%= link_to t('user.view.blocks by me'), :controller => 'user_blocks', :action => 'blocks_by', :display_name => @user.display_name %> + <% end %> + <% else %> + + <%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :display_name => @this_user.display_name %> + | + <%= link_to t('user.view.diary'), :controller => 'diary_entry', :action => 'list', :display_name => @this_user.display_name %> + | + <%= link_to t('user.view.edits'), :controller => 'changeset', :action => 'list', :display_name => @this_user.display_name %> + | + <%= link_to t('user.view.traces'), :controller => 'trace', :action => 'view', :display_name => @this_user.display_name %> + | + <% if @user and @user.is_friends_with?(@this_user) %> + <%= link_to t('user.view.remove as friend'), :controller => 'user', :action => 'remove_friend', :display_name => @this_user.display_name %> + <% else %> + <%= link_to t('user.view.add as friend'), :controller => 'user', :action => 'make_friend', :display_name => @this_user.display_name %> + <% end %> + | + <%= link_to t('user.view.block_history'), :controller => 'user_blocks', :action => 'blocks_on', :display_name => @this_user.display_name %> + <% if @this_user.moderator? %> + | <%= link_to t('user.view.moderator_history'), :controller => 'user_blocks', :action => 'blocks_by', :display_name => @this_user.display_name %> + <% end %> + <% if @user and @user.moderator? %> + | <%= link_to t('user.view.create_block'), :controller => 'user_blocks', :action => 'new', :display_name => @this_user.display_name %> + <% end %> + <% end %> + <% if @user and @user.administrator? %> +
+ <% if @this_user.active? %> + <%= link_to t('user.view.deactivate_user'), {:controller => 'user', :action => 'deactivate', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> + <% else %> + <%= link_to t('user.view.activate_user'), {:controller => 'user', :action => 'activate', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> + <% end %> + | + <% if @this_user.visible? %> + <%= link_to t('user.view.hide_user'), {:controller => 'user', :action => 'hide', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> + | + <%= link_to t('user.view.delete_user'), {:controller => 'user', :action => 'delete', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> + <% else %> + <%= link_to t('user.view.unhide_user'), {:controller => 'user', :action => 'unhide', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> + <% end %> + <% end %>

<%= t 'user.view.mapper since' %> <%= l @this_user.creation_time %> <%= t 'user.view.ago', :time_in_words_ago => time_ago_in_words(@this_user.creation_time) %>

<% if @user and @user.administrator? %> -

<%= t 'user.view.email address' %> <%= @this_user.email %>

-

<%= t 'user.view.created from' %> <%= @this_user.creation_ip %>

+

<%= t 'user.view.email address' %> <%= @this_user.email %>

+

<%= t 'user.view.created from' %> <%= @this_user.creation_ip %>

<% end %>

<%= t 'user.view.description' %>

-
<%= htmlize(@this_user.description) %>
-<% if @this_user.home_lat.nil? or @this_user.home_lon.nil? %> -

<%= t 'user.view.user location' %>

- - <%= t 'user.view.no home location' %> - <% if @user and @this_user.id == @user.id %> - <%= 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) %> - <% end %> -<% else %> +
<%= htmlize(@this_user.description) %>
- <% if @user and @this_user.id == @user.id %> -

<%= t 'user.view.your friends' %>

- <% if @this_user.friends.empty? %> - <%= t 'user.view.no friends' %> +<% if @user and @this_user.id == @user.id %> +
+ <% if @this_user.home_lat.nil? or @this_user.home_lon.nil? %> +

+ <%= 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 %> - - <% @this_user.friends.each do |friend| %> - <% @friend = User.find_by_id(friend.friend_user_id) %> - - - - - - - <%end%> -
- <% if @friend.image %> - <%= image_tag url_for_file_column(@friend, "image") %> - <% end %> - <%= link_to h(@friend.display_name), :controller => 'user', :action => 'view', :display_name => @friend.display_name %> - <% if @friend.home_lon and @friend.home_lat %> - <% distance = @this_user.distance(@friend) %> - <% if distance < 1 %> - <%= t 'user.view.m away', :count => (distance * 1000).round %> - <% else %> - <%= t 'user.view.km away', :count => distance.round %> - <% end %> - <% end %> - (<%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :display_name => @friend.display_name %>)
- <%end%> -
- <%end%> + <%= render :partial => 'map' %> + <% end %> +
+ <% friends = @this_user.friends.collect { |f| f.befriendee } %> + <% nearby = @this_user.nearby - friends %> - <% if @user and @this_user.id == @user.id %> -

<%= t 'user.view.nearby users' %>

- <% if @this_user.nearby.empty? %> - <%= t 'user.view.no nearby users' %> - <% else %> +

<%= t 'user.view.your friends' %>

-
- <%= render :partial => 'friend_map' %> - - <% @this_user.nearby.each do |nearby| %> - - - - - - <% end %> -
<%= link_to h(nearby.display_name), :controller => 'user', :action => 'view', :display_name => nearby.display_name %> - <% distance = @this_user.distance(nearby) %> - <% if distance < 1 %> - <%= t 'user.view.m away', :count => (distance * 1000).round %> - <% else %> - <%= t 'user.view.km away', :count => distance.round %> - <% end %> - (<%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :display_name => nearby.display_name %>)
- <% end %> + <% if friends.empty? %> + <%= t 'user.view.no friends' %> + <% else %> + + <%= render :partial => "contact", :collection => friends %> +
<% end %> -<% end %> -
-
-<% if @user and @this_user.id == @user.id %> -<%= link_to t('user.view.my_oauth_details'), :controller => 'oauth_clients', :action => 'index' %> +

<%= t 'user.view.nearby users' %>

+ + <% if nearby.empty? %> + <%= t 'user.view.no nearby users' %> + <% else %> + + <%= render :partial => "contact", :collection => nearby %> +
+ <% end %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 47847680f..1e6e49dba 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1397,6 +1397,7 @@ en: my edits: my edits my traces: my traces my settings: my settings + oauth settings: oauth settings blocks on me: blocks on me blocks by me: blocks by me send message: send message @@ -1411,16 +1412,14 @@ en: created from: "Created from:" description: Description user location: User location - no home location: "No home location has been set." - if set location: "If you set your location, a pretty map and stuff will appear below. You can set your home location on your {{settings_link}} page." + if set location: "If you set your location, a pretty map and stuff will appear here. You can set your home location on your {{settings_link}} page." settings_link_text: settings your friends: Your friends no friends: You have not added any friends yet. km away: "{{count}}km away" m away: "{{count}}m away" - nearby users: "Nearby users:" - no nearby users: "There are no users who admit to mapping nearby yet." - my_oauth_details: "View my OAuth details" + nearby users: "Other nearby users" + no nearby users: "There are no other users who admit to mapping nearby yet." role: administrator: "This user is an administrator" moderator: "This user is a moderator" @@ -1439,9 +1438,10 @@ en: unhide_user: "unhide this user" delete_user: "delete this user" confirm: "Confirm" - friend_map: + map: your location: Your location nearby mapper: "Nearby mapper: [[nearby_user]]" + friend: "Friend: [[friend_user]]" account: title: "Edit account" my settings: My settings diff --git a/public/images/anon_large.png b/public/images/anon_large.png new file mode 100644 index 0000000000000000000000000000000000000000..761aa6081532313344aeba6a5b1a40917fef8fba GIT binary patch literal 1826 zcmV+-2i^FIP)8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H12A@epK~#90?VV|E+dL44UnyF=1Zip%NPqMzdJNy8=j|PGhZao@ zBW~)rwH)n~NcKk{f3}-Nwzx_50|WtrSfurGX2=mavPPrP@9}sXXy7~taK0{wnpVQ=fvN_5{tzG_xJaplmY-O%R2aaVHhF|LktE3TwPt^&6_u(x_U6J z5#-_F0h7sOErdvtB*D$i4K6P)@$utF*tRXajk*{w2fBwY%{rx&n%OVH@q-lyz zpFU}eFGdSe6a^-e3F7#1R^G%t)rAm(uV267!-o$TjYiVj+r?Nx@;t}4Z{JXsrSi5p z=a^2XAcWxk`}a!QHd2tHDDeIJcTh@|SjBV9=W{rYgLm)VDQi<-^m+zLDQ<3V_L|Ph zWHy^&wOT1_&nQ7S=lJpC2eK^F-IXn-)9E^n$;K!_Zf|dqBnd3bGU|tOj>%+#JkO=y z17ie^ zjauB@-ATz7RA?6@%Q7q$3*FtQO<9)s_3M|k>uYyecXxLH)U3iqv0N_k_U&6K=@qRO zl4Y5)>Eyn=HuI_ml4!JA$e%xdT4foVq-lyQ%h2ofgkD#hg-}YBu7G7AW16l_kRS-8 zr_<|l=z?*zS_z+VX>(c2<+8Qzs)BQl)oLX)O|M0eIF6Mk4`qoT1VQ@+sq$4_fDnQ> zjxih#g2=lCCvt!(7bHzn0PR|tzXqigd7i`f{l?c) zE{LenWSXE!k_Zt*c??O@RLDak(-1Y#lnbKbshbWeSKJh(E{idC(CXYoi`a#8E+n_5 zRFJYPTXAy_B}tO@3Gy6W5K6>!{$wEn5s?m38q{@c3ss4T%&$@l5pkx&WH{$wj5RvW zpwvQi@6}a7Q!k*@LLA3A3PC*2JNWZTEyVOwup($0M^1tW=A~1>bx`WET-WWq%WAq$ zKzR)55;6vt(mP~X7F^fu{CcDb%Co&)k0VW8)=7|>sCrJL+^P3^J%nMXx>;p36-A36 z)iE*C5HZ5f&dwTrUb!H)ZNvBd&OSM8T9!l0zAO{VB8j4P76Lp95(I&crq{??pfk0i|2V>S%nVZup2xF`hf`}}yp*4oIrAF3ERL^%rp;eGBJQERJd`6qgN|L1Y z#}h2e5^~UU6D{Y|lO*Xx@qm86FML2r5ri=Y#uzB2TfZ4&TXCb!)&W3RIgL#k3&J@^ zp6AH(9A#M^e6X`^3dXrJ5Jcv!o}!i@)!Wdjb;GfW0X)vEWIpMvCCJ0WgE6m<(2300 zQSquEVHh5@7@OWe#=2vd7X^vq7=)0cc2O0wV@Jiaf@E1{+>2FYQD?xNot>d9OX>mLx-iUPjx z!}tB#efmcb6TVDWsLK8kLNFW-YsHxL6oGTz>DZwY#u%a~s&yV_Z6R$vJkutNj^h~p ze*eWiz-vLevL(lK(lmu_+s~F6S^w4KVBWQXlBOxn&(ELyUR#26?TedA73`nNjje-v z(>hNl_M<3@C*!tpF6)@Alo0YyEIGL>jZjMex$h33-d&x9|DWBIz5^Ub`Bqce6~qQk z0bK`GeXZS%h0jD$-2eap literal 0 HcmV?d00001 diff --git a/public/images/anon_small.png b/public/images/anon_small.png new file mode 100644 index 0000000000000000000000000000000000000000..0f3e49eb4e6849cdab07199649d83c121af802ca GIT binary patch literal 1002 zcmV|zD*ylh8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H117}G@K~!jg-I?2Nt2z*de*@u=p01E8?TbE4o}$-%&Q^Vpu2!m= zsG?0nf!LTBvo0!7P6dM@$=bh!gwS~Gk74YwA$NCoeK zvg#QjWW$Cr2F4hIAb{`txW2yLv1y}TL5iZlbUMZ7=cjTTDJ6m+z;e07&CLx)qfw{6 zjb;-y6-9yP=V#34a}YvmFT*f4ErFeRJ!fLfTF39WaE0)V;BShWjvs$h2^768g zPpaw#BnSdTQKSUXbaBq{_V(6#4B9!uImgGxhgPC)D~@ACQH0COOXW7&AhX#FMNw=# z>jUcj{T=7$=P(Slk46iGF$PMha%XKMgur}0hwuAJ_F5zO`ughiliF4ohC9*zO`Ri> z=Q-jy9u!0ffh0+AadFXT+ZlvX3ZS2Ss8bk*!-6oz28RHCUYL}!F%M53r0nbL?5x(N zbF!}&ghOb3kz|ZD+INabSwi#~kvd<4fe0ZE_F0wvHR+!KQCUkmftaRwP!Ir(Ggl`N z%WB_D7kn@f!!T+?-gm^LtUs^lypGtmJ@^#7uE9WD*X_J5?V`a}cF*&WBuUrit<{v5 zS`lf=lfG0QSk$RA2q6Tn>mp6lt}c|Nazv!HvGP1mr@69JrhBce?r1a`bYU!g+qT_k zs|9kX6@EM(H`-{Qq6`gU+qTjnw-(4DibvHv)B@q0>oiw-39joZ`Dz7{=Q*U5$nzYW zbEIk7Dk5#8SFTkmss+ii44iXt&iB?jL(f=E`}B3~1(8xBilU8L>d^ZS*L7R{$=U%C zLg4%R8%0qZeDLd1nR3^)0V1VD9LJsOr@p`)$7%gvaRVet5=beP2Q*Z~q?Ab06t-=* zPj*V_!4DOFlMn(z2vAC4nkF2_f#W!}W3zytQwq-cNkD8%N(sgo(lo7r_C?78e*WE^ zBE+^h=g6`Qw6}oY55P_pj#3KG^ERqt3qY0Nr#kR`O4AgkX;!mamF%Yg(RK`+ z^J=}RlKog9I{iv1tJ2B(@pb%YbXEChz&ds*qO1Q+M9Ol?dVG9L0n9r3If*y$@bJL@ Y0{RSq1opYhCIA2c07*qoM6N<$f`miY@c;k- literal 0 HcmV?d00001 diff --git a/public/stylesheets/common.css b/public/stylesheets/common.css index 738a16e62..d2fdea511 100644 --- a/public/stylesheets/common.css +++ b/public/stylesheets/common.css @@ -704,3 +704,13 @@ input[type="submit"] { abbr.geo { border-bottom: none; } + +img.user_image { + width: 100px; + height: 100px; +} + +img.user_thumbnail { + width: 50px; + height: 50px; +} -- 2.43.2