From: Tom Hughes Date: Sat, 23 Jun 2007 12:41:58 +0000 (+0000) Subject: Make per-user diary entry lists go through the diary_entry controller so X-Git-Tag: live~8379 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/1017c4c39a1a8523262f290ff20f999223a0572b Make per-user diary entry lists go through the diary_entry controller so that we aren't duplicating everything in the user controller. This also makes per-user RSS feeds work, and makes links to specific posts work properly so that the RSS feeds behave sensibly. --- diff --git a/app/controllers/diary_entry_controller.rb b/app/controllers/diary_entry_controller.rb index 4b94a7071..2dbf8a0cb 100644 --- a/app/controllers/diary_entry_controller.rb +++ b/app/controllers/diary_entry_controller.rb @@ -10,26 +10,41 @@ class DiaryEntryController < ApplicationController @entry = DiaryEntry.new(params[:diary_entry]) @entry.user = @user if @entry.save - redirect_to :controller => 'user', :action => 'diary', :display_name => @user.display_name + redirect_to :controller => 'diary_entry', :action => 'list', :display_name => @user.display_name end end end def list - @title = 'recent diary entries' - @entries=DiaryEntry.find(:all, :order => 'created_at DESC', :limit=>20) + if params[:display_name] + @this_user = User.find_by_display_name(params[:display_name]) + @title = @this_user.display_name + "'s diary" + if params[:id] + @entries=DiaryEntry.find(:all, :conditions => ['user_id = ? AND id = ?', @this_user.id, params[:id]]) + else + @entries=DiaryEntry.find(:all, :conditions => ['user_id = ?', @this_user.id], :order => 'created_at DESC') + end + else + @title = 'recent diary entries' + @entries=DiaryEntry.find(:all, :order => 'created_at DESC', :limit => 20) + end end def rss - @entries=DiaryEntry.find(:all, :order => 'created_at DESC', :limit=>20) - - rss = OSM::GeoRSS.new('OpenStreetMap diary entries', 'Recent diary entries from users of OpenStreetMap', 'http://www.openstreetmap.org/diary') + if params[:display_name] + @this_user = User.find_by_display_name(params[:display_name]) + @entries=DiaryEntry.find(:all, :conditions => ['user_id = ?', @this_user.id], :order => 'created_at DESC', :limit => 20) + rss = OSM::GeoRSS.new("OpenStreetMap diary entries for #{@this_user.display_name}", "Recent OpenStreetmap diary entries from #{@this_user.display_name}", "http://www.openstreetmap.org/user/#{@this_user.display_name}/diary") + else + @entries=DiaryEntry.find(:all, :order => 'created_at DESC', :limit => 20) + rss = OSM::GeoRSS.new('OpenStreetMap diary entries', 'Recent diary entries from users of OpenStreetMap', 'http://www.openstreetmap.org/diary') + end @entries.each do |entry| # add geodata here latitude = nil longitude = nil - rss.add(latitude, longitude, entry.title, url_for({:controller => 'user', :action => 'diary', :id => entry.id, :display_name => entry.user.display_name}), entry.body, entry.created_at) + rss.add(latitude, longitude, entry.title, url_for({:controller => 'diary_entry', :action => 'list', :id => entry.id, :display_name => entry.user.display_name}), entry.body, entry.created_at) end response.headers["Content-Type"] = 'application/rss+xml' diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 998a636c1..b1a37872b 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -186,11 +186,6 @@ class UserController < ApplicationController @title = @this_user.display_name end - def diary - @this_user = User.find_by_display_name(params[:display_name]) - @title = @this_user.display_name + "'s diary" - end - def make_friend if params[:display_name] diff --git a/app/views/diary_entry/_diary_entry.rhtml b/app/views/diary_entry/_diary_entry.rhtml index 13a2dff30..439cb9018 100644 --- a/app/views/diary_entry/_diary_entry.rhtml +++ b/app/views/diary_entry/_diary_entry.rhtml @@ -1,5 +1,5 @@ <%= diary_entry.title %>
<%= simple_format(diary_entry.body) %> -Posted by user <%= link_to diary_entry.user.display_name,{:controller => 'user', :action=>'diary', :display_name => diary_entry.user.display_name} %> at <%= diary_entry.created_at %>
+Posted by user <%= link_to diary_entry.user.display_name,{:controller => 'diary_entry', :action => 'list', :display_name => diary_entry.user.display_name} %> at <%= diary_entry.created_at %>


diff --git a/app/views/diary_entry/list.rhtml b/app/views/diary_entry/list.rhtml index 06aebdfef..37b0365aa 100644 --- a/app/views/diary_entry/list.rhtml +++ b/app/views/diary_entry/list.rhtml @@ -1,6 +1,14 @@ +<% if @this_user %> +

<%= @this_user.display_name %>'s diary

+ + <% if @user and @this_user.id == @user.id %> + <%= link_to 'new post', :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %> + <% end %> +<% end %> +

Recent diary entries:

-
+ <%= render :partial => 'diary_entry/diary_entry', :collection => @entries %> <%= link_to(image_tag("RSS.gif", :size => "16x16", :border => 0), :action => 'rss') %> -<%= auto_discovery_link_tag(:atom, :action => 'rss') %> \ No newline at end of file +<%= auto_discovery_link_tag(:atom, :action => 'rss') %> diff --git a/app/views/user/diary.rhtml b/app/views/user/diary.rhtml deleted file mode 100644 index 106cfd73f..000000000 --- a/app/views/user/diary.rhtml +++ /dev/null @@ -1,8 +0,0 @@ -

<%= @this_user.display_name %>'s diary

-<% if @user and @this_user.id == @user.id %> - <%= link_to 'new post', :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %> -<% end %> - -

recent posts:

-

-<%= render :partial => 'diary_entry/diary_entry', :collection => @this_user.diary_entries %> diff --git a/app/views/user/view.rhtml b/app/views/user/view.rhtml index 1fd177fa7..15176f375 100644 --- a/app/views/user/view.rhtml +++ b/app/views/user/view.rhtml @@ -3,8 +3,8 @@ <% if @user and @this_user.id == @user.id %>

Your diary

-<%= link_to 'View your diary', :controller => 'user', :action=>'diary', :display_name => @user.display_name %>
-<%= link_to 'New diary post', :controller => 'diary_entry', :action=>'new', :display_name => @user.display_name %> +<%= link_to 'View your 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 %>

Your traces

<%= link_to 'View your traces', :controller => 'trace', :action=>'mine' %> @@ -16,8 +16,8 @@ <% else %> <%= link_to 'Send message', :controller => 'message', :action => 'new', :user_id => @this_user.id %>
<%= link_to 'Add as friend', :controller => 'user', :action => 'make_friend', :display_name => @this_user.display_name %>
-<%= link_to 'View diary', :controller => 'user', :action=>'diary', :display_name => @this_user.display_name %>
-<%= link_to 'View traces', :controller => 'trace', :action=>'view', :display_name => @this_user.display_name %> +<%= link_to 'View diary', :controller => 'diary_entry', :action => 'user', :display_name => @this_user.display_name %>
+<%= link_to 'View traces', :controller => 'trace', :action => 'view', :display_name => @this_user.display_name %> <% end %>