user images
authorSteve Coast <steve@asklater.com>
Sat, 23 Feb 2008 15:18:59 +0000 (15:18 +0000)
committerSteve Coast <steve@asklater.com>
Sat, 23 Feb 2008 15:18:59 +0000 (15:18 +0000)
app/controllers/user_controller.rb
app/models/user.rb
app/views/diary_entry/list.rhtml
app/views/message/read.rhtml
app/views/user/view.rhtml
config/routes.rb
db/migrate/011_add_user_image.rb [new file with mode: 0644]

index f279edd804afed98bec48fe988975a599b354891..c399066ca231bcbefa5b0b42cc1c730892e01e07 100644 (file)
@@ -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
index 4eba73a9f9aa12d7b0666a5f51353b5f584798b7..61c76898a0f2b754eab98e7c257145ed33289e2b 100644 (file)
@@ -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
index 0ac45f9d220271dc8bd7835d6dbc1e413c694fcf..7d592d87e24eb545abb84fcb7ebdf0d6e44a37b6 100644 (file)
@@ -1,4 +1,10 @@
 <h2><%= @title %></h2>
+
+<% if @this_user.image %>
+ <%= image_tag url_for_file_column(@this_user, "image") %>
+<% end %>
+<br />
+
 <% if @this_user %>
   <% if @user == @this_user %>
     <%= link_to 'New diary post', :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %>
index 7c010b9d5e90ebbfb23ed0c69fc9fb9a2b5ed1dc..58a77ad4631e7a32e286598b2e963262a8c46b59 100644 (file)
@@ -5,7 +5,12 @@
 <table>
   <tr>
     <th align="right">From</th>
-    <td><%= link_to @message.sender.display_name, :controller => 'user', :action => 'view', :display_name => @message.sender.display_name %></td>
+    <td>
+     <% 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 %></td>
   </tr>
   <tr>
     <th align="right">Subject</th>
index 3f74d036993bf4a97b29e57940e06100909fd8bb..033240f774747c2a0b8009ceb400f9cc38822f90 100644 (file)
 <% end %>
 </div>
 
+<h3>User image</h3>
+<% if @this_user.image %>
+ <%= image_tag url_for_file_column(@this_user, "image") %>
+<% end %>
+<br />
+
+<% if @user and @this_user.id == @user.id %>
+  Upload an image<br />
+  <%= form_tag({:action=>'upload_image'}, :multipart => true)%>
+    <%= file_column_field 'user', 'image' %>
+    <input type="submit" name="Upload" />
+  </form>
+<% end %>
+
+<h3>Description</h3?
 <div id="description"><%= simple_format(@this_user.description) %></div>
 
 <% if @this_user.home_lat.nil? or @this_user.home_lon.nil? %>
       <% @this_user.friends.each do |friend| %>
       <% @friend = User.find_by_id(friend.friend_user_id) %>
       <tr>
+      <td class="image">
+      <% if @friend.image %>
+        <%= image_tag url_for_file_column(@friend, "image") %>
+      <% end %>
+      </td>
       <td class="username"><%= link_to @friend.display_name, :controller => 'user', :action => 'view',  :display_name => @friend.display_name %></td>
       <td><% if @friend.home_lon and @friend.home_lat %><%= @this_user.distance(@friend).round %>km away<% end %></td>
       <td class="message">(<%= link_to 'send message', :controller => 'message', :action => 'new', :user_id => @friend.id %>)</td>
index c6a9de38a4c7654c9875aeda9aa907908e82b6b5..1d3a135655c052e0274dbd077fabc1653d79c9b7 100644 (file)
@@ -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 (file)
index 0000000..3d97e15
--- /dev/null
@@ -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