Add a view to show diary comments left by a user
authorSteve Singer <steve@ssinger.info>
Sat, 25 Feb 2012 20:46:11 +0000 (15:46 -0500)
committerTom Hughes <tom@compton.nu>
Tue, 28 Feb 2012 21:29:18 +0000 (21:29 +0000)
app/controllers/diary_entry_controller.rb
app/views/diary_entry/comments.html.erb [new file with mode: 0644]
app/views/user/view.html.erb
config/locales/en.yml
config/routes.rb

index ff1976a823e6e763ca5fe3cddc72e75b21c72580..f87b02ef9b916b7b879a0a166db79d09e5f26577 100644 (file)
@@ -195,6 +195,22 @@ class DiaryEntryController < ApplicationController
     comment.update_attributes(:visible => false)
     redirect_to :action => "view", :display_name => comment.diary_entry.user.display_name, :id => comment.diary_entry.id
   end
+
+  def comments
+    @this_user = User.active.find_by_display_name(params[:display_name])
+
+    if @this_user
+      @comment_pages, @comments = paginate(:diary_comments,
+                                           :conditions => { :user_id => @this_user },
+                                           :order => 'created_at DESC',
+                                           :per_page => 20)
+      @page = (params[:page] || 1).to_i
+    else
+       @title = t'diary_entry.no_such_user.title'
+       @not_found_user = params[:display_name]
+       render :action => 'no_such_user', :status => :not_found
+    end                                                
+  end  
 private
   ##
   # require that the user is a administrator, or fill out a helpful error message
diff --git a/app/views/diary_entry/comments.html.erb b/app/views/diary_entry/comments.html.erb
new file mode 100644 (file)
index 0000000..fbad59d
--- /dev/null
@@ -0,0 +1,23 @@
+<h1><%= @title%>
+ <%= t('diary_entry.comments.has_commented_on',:display_name => @this_user.display_name) %>
+</h1>
+<p>
+<br>
+<table id="comment-list-container">
+<tr><th>Title</th><th>Date</th><th>Comment</th></tr>
+<% for comment in @comments %>
+<tr id="comment-row">
+<td><a href="/user/<%= comment.diary_entry.user.display_name %>/diary/<%= comment.diary_entry.id %>"><%= comment.diary_entry.title %></a> 
+</td>
+<td>
+<span class="date"><%= comment.created_at %></span>
+</td>
+<td>
+<%= htmlize(comment.body) %></td></tr>
+<% end %>
+</table>
+<%= link_to t('diary_entry.comments.older_comments') , { :page => @comment_pages.current.next} if @comment_pages.current.next %>
+<% if @comment_pages.current.next and @comment_pages.current.previous %>
+|
+<% end %>
+<%= link_to t('diary_entry.comments.newer_comments'), { :page => @comment_pages.current.previous } if @comment_pages.current.previous %>
index bd3a371aaac9ca5dd9fb305236c9da00c3a9ded0..f6a4d8339165648f68cb7508967a7298915883cb 100644 (file)
@@ -21,6 +21,8 @@
     |
     <%= link_to t('user.view.new diary entry'), :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %>
     |
+    <%= link_to t('user.view.my comments' ), :controller => 'diary_entry', :action => 'comments', :display_name => @this_user.display_name %><br/>
+    |
     <%= 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' %>
@@ -39,6 +41,8 @@
     |
     <%= link_to t('user.view.diary'), :controller => 'diary_entry', :action => 'list', :display_name => @this_user.display_name %>
     |
+    <%= link_to t('user.view.comments'), :controller => 'diary_entry', :action => 'comments', :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 => 'list', :display_name => @this_user.display_name %>
index b5cfba61ba8843b7d3be1e03e973a77065b6c7e6..49b9d1d341a485c7e7eaef71957940359fde6de1 100644 (file)
@@ -392,6 +392,10 @@ en:
       all:
         title: "OpenStreetMap diary entries"
         description: "Recent diary entries from users of OpenStreetMap"
+    comments:
+      has_commented_on: "%{display_name} has commented on the following diary entries"
+      newer_comments: "Newer Comments"
+      older_comments: "Older Comments"
   export:
     start:
       area_to_export: "Area to Export"
@@ -1662,6 +1666,7 @@ en:
       my edits: my edits
       my traces: my traces
       my settings: my settings
+      my comments: my comments
       oauth settings: oauth settings
       blocks on me: blocks on me
       blocks by me: blocks by me
@@ -1703,6 +1708,7 @@ en:
           moderator: "Revoke moderator access"
       block_history: "view blocks received"
       moderator_history: "view blocks given"
+      comments: "comments"
       create_block: "block this user"
       activate_user: "activate this user"
       deactivate_user: "deactivate this user"
index 71af08b73d46a81d7dfa19939aef5126d83e32b9..89f7e1951391826e2864b8a18d0593e33bdb90e0 100644 (file)
@@ -160,6 +160,8 @@ OpenStreetMap::Application.routes.draw do
   match '/user/:display_name/diary/rss' => 'diary_entry#rss', :format => :rss
   match '/diary/:language/rss' => 'diary_entry#rss', :format => :rss
   match '/diary/rss' => 'diary_entry#rss', :format => :rss
+  match '/user/:display_name/diary/comments/:page' => 'diary_entry#comments', :page => /\d+/
+  match '/user/:display_name/diary/comments/' => 'diary_entry#comments'
   match '/user/:display_name/diary' => 'diary_entry#list'
   match '/diary/:language' => 'diary_entry#list'
   match '/diary' => 'diary_entry#list'