Get the note browse pages into a vaguely working state
authorTom Hughes <tom@compton.nu>
Sat, 13 Aug 2011 12:25:41 +0000 (13:25 +0100)
committerTom Hughes <tom@compton.nu>
Sat, 13 Aug 2011 12:25:41 +0000 (13:25 +0100)
app/helpers/application_helper.rb
app/helpers/browse_helper.rb
app/views/browse/_map.html.erb
app/views/browse/note.html.erb
config/locales/en.yml
public/stylesheets/common.css

index 6e2ecd3234fcf1c68a5ba72284483a6899288153..59ba7d171afd76c190b95da4b465fd6ad3d2d4bd 100644 (file)
@@ -129,6 +129,10 @@ module ApplicationHelper
     end
   end
 
+  def friendly_date(date)
+    content_tag(:span, time_ago_in_words(date), :title => l(date, :format => :friendly))
+  end
+
 private
 
   def javascript_strings_for_key(key)
index a41b39a3deac07a9c7165648b1946a885b1bae18..9a49abd679c015f4c3a02259e9b9a2ac849f549d 100644 (file)
@@ -42,6 +42,14 @@ 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 = [ 
index d2695ebe6f98d35c1900fc173874b9c5eccf6863..9ff93b365fba258ff3acf1f13996eb8d57039d75 100644 (file)
@@ -6,14 +6,14 @@
 </iframe>
 
 <div id="browse_map">
-  <% if map.instance_of? Changeset or (map.instance_of? Node and map.version > 1) or map.visible %>
+  <% if map.instance_of? Changeset or (map.instance_of? Node and map.version > 1) or map.visible? %>
   <div id="small_map">
   </div>
   <span id="loading"><%= t 'browse.map.loading' %></span>
   <%= link_to(t("browse.map.larger.area"), { :controller => :site, :action => :index, :box => "yes" }, { :id => "area_larger_map", :class => "geolink bbox" }) %>
   <br />
   <%= link_to(t("browse.map.edit.area"), { :controller => :site, :action => :edit }, { :id => "area_edit", :class => "geolink bbox" }) %>
-  <% unless map.instance_of? Changeset %>
+  <% unless map.instance_of? Changeset or map.instance_of? Note %>
     <br />
     <%= link_to("", { :controller => :site, :action => :index }, { :id => "object_larger_map", :class => "geolink object" }) %>
     <br />
@@ -40,7 +40,7 @@
   </ul>
 </div>
 
-<% if map.instance_of? Changeset or (map.instance_of? Node and map.version > 1) or map.visible %>
+<% if map.instance_of? Changeset or (map.instance_of? Node and map.version > 1) or map.visible? %>
   <script type="text/javascript">
     OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
 
         setMapCenter(centre, 16);
         addMarkerToMap(centre);
 
+        var bbox = getMapExtent();
+
         $("loading").style.display = "none";
 
-        updatelinks(centre.lon, centre.lat, 16, null, null, null, null, null)
+        $$("#browse_map .geolink").each(function (link) {
+          link.style.display = "inline";
+        });
+
+        $("remote_area_edit").observe("click", function (event) {
+          remoteEditHandler(event, bbox);
+        });
+
+        <% if preferred_editor == "remote" %>
+          $("area_edit").observe("click", function (event) {
+            remoteEditHandler(event, bbox);
+          });
+        <% end %>
+
+        updatelinks(centre.lon, centre.lat, 16, null, bbox.left, bbox.bottom, bbox.right, bbox.top)
       <% else %>
         var obj_type = "<%= map.class.name.downcase %>";
         var obj_id = <%= map.id %>;
index 5c42fddd632730b3f65240ac3a912b5efac400a0..59c96c4aa2bc78c791c0ec5e8e347c43ca20f483 100644 (file)
@@ -1,83 +1,58 @@
-<table width="100%">
+<%= render :partial => "navigation" %>
+
+<h2>
+  <%= image_tag "#{@note.status}_note_marker.png", :alt => @note.status %>
+  <%= t "browse.note.#{@note.status}_title", :note_name => @note.id %>
+</h2>
+
+<%= render :partial => "map", :object => @note %>
+
+<table class="browse_details">
+
   <tr>
-    <td width="100%">
-      <h2>
-        <% if @note.status == "closed" %>
-          <%= image_tag("closed_note_marker.png", :alt => 'closed') %>
-          <%= t 'browse.note.closed_title', :note_name => @note.id %>
-        <% else %>
-          <%= image_tag("open_note_marker.png", :alt => 'open') %>
-          <%= t 'browse.note.open_title', :note_name => @note.id %>
-        <% end %>
-      </h2>
-    </td>
-    <td>
-      <%= render :partial => "navigation" %>
-    </td>
-  </tr>
-  <tr valign="top">
-    <td>
-      <table>
-        <tr>
-          <th><%= t 'browse.note.created_at' %></th>
-          <td><%= l @note.created_at %></td>
-        </tr>  
-       <tr>
-         <th><%= t 'browse.note.edited_at' %></th>
-         <td><%= l @note.updated_at %></td>
-       </tr>
-       <% if @note.status == "closed" %>
-         <tr>
-           <th><%= t 'browse.note.closed_at' %></th>
-           <td><%= l @note.closed_at %></td>
-         </tr>
-       <% end %>
-       <tr>
-         <th><%= t 'browse.note.opened_by' %></th>
-         <% if @note.author.nil? %>
-           <td> <%= @note.author_name %> </td>
-         <% else %>
-           <td><%= link_to h(@note.author_name), :controller => "user", :action => "view", :display_name => @note.author_name %></td>
-         <% end %>
-       </tr>
-       <tr>
-         <th><%= t 'browse.note.description' %></th>
-         <td><%= h(@note.comments.first.body) %></td>
-       </tr>
-       <tr>
-         <th><%= t 'browse.node_details.coordinates' %></th>
-         <td><div class="geo"><%= link_to ("<span class='latitude'>#{number_with_delimiter(@note.lat)}</span>, <span class='longitude'>#{number_with_delimiter(@note.lon)}</span>"), {:controller => 'site', :action => 'index', :lat => h(@note.lat), :lon => h(@note.lon), :zoom => "18"} %></div></td>
-       </tr>
-    </table>
+    <th><%= t "browse.note.opened" %></th>
+    <td><%= t "browse.note.at_by", :when => friendly_date(@note.created_at), :user => note_author(@note) %></td>
+  </tr>  
 
-    <br />
+  <% if @note.status == "closed" %>
+    <tr>
+      <th><%= t "browse.note.closed" %></th>
+      <td><%= t "browse.note.at_by", :when => friendly_date(@note.closed_at), :user => note_author(@note.comments.last) %></td>
+    </tr>  
+  <% elsif @note.comments.length > 1 %>
+    <tr>
+      <th><%= t "browse.note.last_modified" %></th>
+      <td><%= t "browse.note.at_by", :when => friendly_date(@note.updated_at), :user => note_author(@note.comments.last) %></td>
+    </tr>  
+  <% end %>
 
-    <% if @note.comments.length > 1 %>
-      <table>
-        <tr>
-          <th width="20%"> <%= t 'browse.note.comment_by' %></th>
-          <th width="60%"> <%= t 'browse.note.comment' %></th>
-          <th width="20%"> <%= t 'browse.note.date' %></th> 
-        </tr>
-        <% @note.comments[1..-1].each do |comment| %>
-          <tr>
-            <td>
-              <% if comment.author.nil? %>
-                <%= comment.author_name %>
-              <% else %>
-                <%= link_to h(comment.author.display_name), :controller => "user", :action => "view", :display_name => comment.author.display_name %>                                  
-              <% end %>
-            </td>
-            <td> <%= h(comment.body) %> </td>
-            <td> <%= l comment.created_at %> </td>
-          </tr>
-        <% end %>
-      </table>
-    <% end %>
-       
-    <hr />
-    </td>
+  <tr>
+    <th><%= t "browse.note.description" %></th>
+    <td><%= h(@note.comments.first.body) %></td>
+  </tr>
 
-    <%= render :partial => "map", :object => @note %>
+  <tr>
+    <th><%= t "browse.node_details.coordinates" %></th>
+    <td><div class="geo"><%= link_to ("<span class='latitude'>#{number_with_delimiter(@note.lat)}</span>, <span class='longitude'>#{number_with_delimiter(@note.lon)}</span>"), {:controller => 'site', :action => 'index', :lat => h(@note.lat), :lon => h(@note.lon), :zoom => "18"} %></div></td>
   </tr>
+
+  <% if @note.comments.length > 1 %>
+    <tr valign="top">
+      <th><%= t "browse.note.comments" %></th>
+      <td class="browse_comments">
+        <table>
+          <% @note.comments[1..-1].each do |comment| %>
+            <tr>
+              <td>
+                <%= h(comment.body) %>
+                <br />
+                <span class="by"><%= t "browse.note.at_by", :when => friendly_date(comment.created_at), :user => note_author(comment) %></span>
+              </td>
+            </tr>
+          <% end %>
+        </table>
+      </td>
+    </tr>
+  <% end %>
+
 </table>
index 598301c2a0c8d8cac0cbdc0acafb5083fb12142b..d895654605783ff2d43d0577d41c6283c2f451fe 100644 (file)
@@ -285,11 +285,13 @@ en:
     note:
       open_title: "Unresolved issue: %{note_name}"
       closed_title: "Resolved issue: %{note_name}"
-      created_at: "Created at:"
-      edited_at: "Edited at:"
-      closed_at: "Closed at:"
-      opened_by: "Opened by:"
+      opened: "Opened:"
+      last_modified: "Last modified:"
+      closed: "Closed:"
+      at_by: "%{when} ago by %{user}"
       description: "Description:"
+      comments: "Comments:"
+
       comment_by: "Comment by: "
       comment: "Comment:"
       date: "Date:"
index e256bb3f6a380a508fe8fd62cbbd155cb70d510b..9b68bd03e28e03068c194de04187acfacf06fd8f 100644 (file)
@@ -651,6 +651,23 @@ table.browse_details th {
   white-space: nowrap;
 }
 
+td.browse_comments {
+  padding: 0px;
+}
+
+td.browse_comments table {
+  border-collapse: collapse;
+}
+
+td.browse_comments table td {
+  padding-bottom: 10px;
+}
+
+td.browse_comments table td span.by {
+  font-size: small;
+  color: #999999;
+}
+
 #browse_map {
   width: 250px;
 }