From cacf1879c3bbae1fac645b53be6abf9ee139d686 Mon Sep 17 00:00:00 2001 From: Steve Coast Date: Sat, 23 Feb 2008 15:18:59 +0000 Subject: [PATCH] user images --- app/controllers/user_controller.rb | 10 ++++++++-- app/models/user.rb | 2 ++ app/views/diary_entry/list.rhtml | 6 ++++++ app/views/message/read.rhtml | 7 ++++++- app/views/user/view.rhtml | 20 ++++++++++++++++++++ config/routes.rb | 1 + db/migrate/011_add_user_image.rb | 9 +++++++++ 7 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 db/migrate/011_add_user_image.rb diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index f279edd80..c399066ca 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -2,8 +2,8 @@ class UserController < ApplicationController layout 'site' before_filter :authorize, :only => [:api_details, :api_gpx_files] - 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] + before_filter :authorize_web, :only => [:account, :go_public, :view, :diary, :make_friend, :remove_friend, :upload_image] + before_filter :require_user, :only => [:set_home, :account, :go_public, :make_friend, :remove_friend, :upload_image] filter_parameter_logging :password, :pass_crypt, :pass_crypt_confirmation @@ -155,6 +155,12 @@ class UserController < ApplicationController end end + def upload_image + @user.image = params[:user][:image] + @user.save! + redirect_to :controller => 'user', :action => 'view', :display_name => @user.display_name + end + def api_details render :text => @user.to_xml.to_s, :content_type => "text/xml" end diff --git a/app/models/user.rb b/app/models/user.rb index 4eba73a9f..61c76898a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -25,6 +25,8 @@ class User < ActiveRecord::Base before_save :encrypt_password + file_column :image, :magick => { :geometry => "100x100>" } + def after_initialize self.creation_time = Time.now if self.creation_time.nil? end diff --git a/app/views/diary_entry/list.rhtml b/app/views/diary_entry/list.rhtml index 0ac45f9d2..7d592d87e 100644 --- a/app/views/diary_entry/list.rhtml +++ b/app/views/diary_entry/list.rhtml @@ -1,4 +1,10 @@

<%= @title %>

+ +<% if @this_user.image %> + <%= image_tag url_for_file_column(@this_user, "image") %> +<% end %> +
+ <% if @this_user %> <% if @user == @this_user %> <%= link_to 'New diary post', :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %> diff --git a/app/views/message/read.rhtml b/app/views/message/read.rhtml index 7c010b9d5..58a77ad46 100644 --- a/app/views/message/read.rhtml +++ b/app/views/message/read.rhtml @@ -5,7 +5,12 @@ - + diff --git a/app/views/user/view.rhtml b/app/views/user/view.rhtml index 3f74d0369..033240f77 100644 --- a/app/views/user/view.rhtml +++ b/app/views/user/view.rhtml @@ -18,6 +18,21 @@ <% end %> +

User image

+<% if @this_user.image %> + <%= image_tag url_for_file_column(@this_user, "image") %> +<% end %> +
+ +<% if @user and @this_user.id == @user.id %> + Upload an image
+ <%= form_tag({:action=>'upload_image'}, :multipart => true)%> + <%= file_column_field 'user', 'image' %> + + +<% end %> + +

Description<%= simple_format(@this_user.description) %> <% if @this_user.home_lat.nil? or @this_user.home_lon.nil? %> @@ -38,6 +53,11 @@ <% @this_user.friends.each do |friend| %> <% @friend = User.find_by_id(friend.friend_user_id) %>

+ diff --git a/config/routes.rb b/config/routes.rb index c6a9de38a..1d3a13565 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -61,6 +61,7 @@ ActionController::Routing::Routes.draw do |map| map.connect '/user/confirm', :controller => 'user', :action => 'confirm' map.connect '/user/go_public', :controller => 'user', :action => 'go_public' map.connect '/user/reset_password', :controller => 'user', :action => 'reset_password' + map.connect '/user/upload_image', :controller => 'user', :action => 'upload_image' map.connect '/index.html', :controller => 'site', :action => 'index' map.connect '/edit.html', :controller => 'site', :action => 'edit' map.connect '/search.html', :controller => 'way_tag', :action => 'search' diff --git a/db/migrate/011_add_user_image.rb b/db/migrate/011_add_user_image.rb new file mode 100644 index 000000000..3d97e1582 --- /dev/null +++ b/db/migrate/011_add_user_image.rb @@ -0,0 +1,9 @@ +class AddUserImage < ActiveRecord::Migration + def self.up + add_column 'users', 'image', 'mediumblob' + end + + def self.down + remove_column 'users', 'image' + end +end -- 2.43.2
From<%= link_to @message.sender.display_name, :controller => 'user', :action => 'view', :display_name => @message.sender.display_name %> + <% if @message.sender.image %> + <%= image_tag url_for_file_column(@message.sender, "image") %> + <% end %> + +<%= link_to @message.sender.display_name, :controller => 'user', :action => 'view', :display_name => @message.sender.display_name %>
Subject
+ <% if @friend.image %> + <%= image_tag url_for_file_column(@friend, "image") %> + <% end %> + <%= link_to @friend.display_name, :controller => 'user', :action => 'view', :display_name => @friend.display_name %> <% if @friend.home_lon and @friend.home_lat %><%= @this_user.distance(@friend).round %>km away<% end %> (<%= link_to 'send message', :controller => 'message', :action => 'new', :user_id => @friend.id %>)