Improve formatting of note descriptions in GPX and RSS responses
authorTom Hughes <tom@compton.nu>
Sun, 28 Aug 2011 16:58:02 +0000 (17:58 +0100)
committerTom Hughes <tom@compton.nu>
Sun, 28 Aug 2011 16:58:02 +0000 (17:58 +0100)
app/helpers/application_helper.rb
app/helpers/browse_helper.rb
app/views/note/_description.html.erb [new file with mode: 0644]
app/views/note/_note.gpx.builder
app/views/note/_note.rss.builder
config/locales/en.yml

index 59ba7d1..ec6c455 100644 (file)
@@ -133,6 +133,22 @@ module ApplicationHelper
     content_tag(:span, time_ago_in_words(date), :title => l(date, :format => :friendly))
   end
 
+  def note_author(object, link_options = {})
+    if object.author.nil?
+      h(object.author_name)
+    else
+      link_to h(object.author_name), link_options.merge({:controller => "user", :action => "view", :display_name => object.author_name})
+    end
+  end
+
+  def with_format(format, &block)
+    old_format = @template_format
+    @template_format = format
+    result = block.call
+    @template_format = old_format
+    return result
+  end
+
 private
 
   def javascript_strings_for_key(key)
index 9a49abd..a41b39a 100644 (file)
@@ -42,14 +42,6 @@ module BrowseHelper
     end
   end
 
-  def note_author(object)
-    if object.author.nil?
-      h(object.author_name)
-    else
-      link_to h(object.author_name), :controller => "user", :action => "view", :display_name => object.author_name
-    end
-  end
-
 private
 
   ICON_TAGS = [ 
diff --git a/app/views/note/_description.html.erb b/app/views/note/_description.html.erb
new file mode 100644 (file)
index 0000000..596d632
--- /dev/null
@@ -0,0 +1,8 @@
+<div>
+  <% description.comments.each do |comment| -%>
+  <div class="note-comment" style="margin-top: 5px">
+    <div class="note-comment-description" style="font-size: smaller; color: #999999"><%= t "note.description.#{comment.event}_at_by", :when => friendly_date(comment.created_at), :user => note_author(comment, :only_path => false) %></div>
+    <div class="note-comment-text"><%= comment.body %></div>
+  </div>
+  <% end -%>
+</div>
index 91c0cbd..8b599eb 100644 (file)
@@ -1,6 +1,8 @@
 xml.wpt("lon" => note.lon, "lat" => note.lat) do
-  xml.desc do
-    xml.cdata! note.flatten_comment("<hr />")
+  with_format(:html) do
+    xml.desc do
+      xml.cdata! render(:partial => "description", :object => note, :format => :html)
+    end
   end
 
   xml.extension do
index 856b4cc..49f0a51 100644 (file)
@@ -9,7 +9,9 @@ xml.item do
 
   xml.link url_for(:controller => "browse", :action => "note", :id => note.id, :only_path => false)
   xml.guid url_for(:controller => "note", :action => "read", :id => note.id, :only_path => false)
-  xml.description  htmlize(note.flatten_comment("<br><br>"))
+  with_format(:html) do
+    xml.description render(:partial => "description", :object => note)
+  end
   xml.author note.author_name
   xml.pubDate note.updated_at.to_s(:rfc822)
   xml.geo :lat, note.lat
index 2f558eb..63b1523 100644 (file)
@@ -293,10 +293,6 @@ en:
       at_by: "%{when} ago by %{user}"
       description: "Description:"
       comments: "Comments:"
-
-      comment_by: "Comment by: "
-      comment: "Comment:"
-      date: "Date:"
   changeset:
     changeset_paging_nav:
       showing_page: "Showing page %{page}"
@@ -1926,6 +1922,11 @@ en:
       revoker: "Revoker:"
       needs_view: "The user needs to log in before this block will be cleared."
   note:
+    description:
+      opened_at_by: "Created %{when} ago by %{user}"
+      commented_at_by: "Updated %{when} ago by %{user}"
+      closed_at_by: "Resolved %{when} ago by %{user}"
+      reopened_at_by: "Reactivated %{when} ago by %{user}"
     rss:
       title: "OpenStreetMap Notes"
       description_area: "A list of notes, reported, commented on or closed in your area [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]"
@@ -1939,7 +1940,6 @@ en:
       description: "Notes submitted or commented on by %{user}"
       id: "Id"
       last_changed: "Last changed"
-
   javascripts:
     map:
       base: