view changesets by user
authorRichard Fairhurst <richard@systemed.net>
Tue, 23 Dec 2008 13:06:07 +0000 (13:06 +0000)
committerRichard Fairhurst <richard@systemed.net>
Tue, 23 Dec 2008 13:06:07 +0000 (13:06 +0000)
app/controllers/changeset_controller.rb
app/views/changeset/_changeset.rhtml [new file with mode: 0644]
app/views/changeset/_changeset_paging_nav.rhtml [new file with mode: 0644]
app/views/changeset/list.rhtml [new file with mode: 0644]
app/views/user/view.rhtml
config/routes.rb

index f7f4dc9f0ac2ef46fa2094dda96dd322d60185da..3e1870b70b139fe5f8b2433df71a8b97b2a25742 100644 (file)
@@ -1,9 +1,12 @@
 # The ChangesetController is the RESTful interface to Changeset objects
 
 class ChangesetController < ApplicationController
+  layout 'site'
   require 'xml/libxml'
 
-  session :off
+# session :off
+# FIXME is this required?
+  before_filter :authorize_web, :only => [:list]
   before_filter :authorize, :only => [:create, :update, :delete, :upload, :include, :close]
   before_filter :check_write_availability, :only => [:create, :update, :delete, :upload, :include]
   before_filter :check_read_availability, :except => [:create, :update, :delete, :upload, :download, :query]
@@ -289,6 +292,21 @@ class ChangesetController < ApplicationController
     render ex.render_opts
   end
 
+  ##
+  # list edits belonging to a user
+  def list
+    user = User.find(:first, :conditions => [ "visible = ? and display_name = ?", true, params[:display_name]])
+    @edit_pages, @edits = paginate(:changesets,
+                                   :include => [:user, :changeset_tags],
+                                   :conditions => ["changesets.user_id = ? AND min_lat IS NOT NULL", user.id],
+                                   :order => "changesets.created_at DESC",
+                                   :per_page => 20)
+    
+    @action = 'list'
+    @display_name = user.display_name
+    # FIXME needs rescues in here
+  end
+
 private
   #------------------------------------------------------------
   # utility functions below.
diff --git a/app/views/changeset/_changeset.rhtml b/app/views/changeset/_changeset.rhtml
new file mode 100644 (file)
index 0000000..83b0b0c
--- /dev/null
@@ -0,0 +1,34 @@
+<tr>
+  <% cl = cycle('table0', 'table1') %>
+
+  <td class="<%= cl %>">
+    #<%= changeset.id %>
+
+  <td class="<%= cl %>">
+    <% if changeset.closed_at > DateTime.now %> (still editing)
+    <% else %><%= changeset.closed_at.strftime("%d %b %Y %H:%M") %><% end %>
+
+  <td class="<%= cl %>">
+    <% if changeset.tags['comment'] %>
+      <%= changeset.tags['comment'] %>
+    <% else %>
+      (none)
+    <% end %>
+
+  <td class="<%= cl %>">
+    <% if changeset.min_lat.nil? %>
+      (no edits)
+    <% else 
+      lat1 = changeset.min_lat/GeoRecord::SCALE.to_f
+      lat2 = changeset.max_lat/GeoRecord::SCALE.to_f
+      lon1 = changeset.min_lon/GeoRecord::SCALE.to_f
+      lon2 = changeset.min_lon/GeoRecord::SCALE.to_f
+    %>
+      (<a href='/?lat=<%= lat1 %>&lon=<%= lon1 %>&zoom=14'><%= format("%0.3f",lat1) -%>,<%= format("%0.3f",lon1) -%></a>) to 
+      (<a href='/?lat=<%= lat2 %>&lon=<%= lon2 %>&zoom=14'><%= format("%0.3f",lat2) -%>,<%= format("%0.3f",lon2) -%></a>) 
+  <% end %>
+
+  <td class="<%= cl %>">
+    <%= link_to 'more', {:controller => 'browse', :action => 'changeset', :id => changeset.id}, {:title => 'View changeset details'} %> 
+
+</tr>
diff --git a/app/views/changeset/_changeset_paging_nav.rhtml b/app/views/changeset/_changeset_paging_nav.rhtml
new file mode 100644 (file)
index 0000000..df84a39
--- /dev/null
@@ -0,0 +1,12 @@
+<% current_page = @edit_pages.current_page %>
+
+Showing page 
+<%= current_page.number %> (<%= current_page.first_item %><% 
+if (current_page.first_item < current_page.last_item) # if more than 1 changeset on page 
+  %>-<%= current_page.last_item %><% 
+end %>
+of <%= @edit_pages.item_count %>)
+
+<% if @edit_pages.page_count > 1 %>
+ | <%= pagination_links_each(@edit_pages, {}) { |n| link_to(n, :display_name => @display_name, :page => n) }  %>
+<% end %>
diff --git a/app/views/changeset/list.rhtml b/app/views/changeset/list.rhtml
new file mode 100644 (file)
index 0000000..cea1563
--- /dev/null
@@ -0,0 +1,15 @@
+<h1>Edits by <%= link_to(@display_name, {:controller=>'user', :action=>'view', :display_name=>@display_name}) %></h1>
+<%= render :partial => 'changeset_paging_nav' %>
+
+<table id="keyvalue" cellpadding="3">
+  <tr>
+    <th>ID</th>
+    <th>Saved at</th>
+    <th>Comment</th>
+    <th>Area</th>
+    <th></th>
+  </tr>
+  <%= render :partial => 'changeset', :collection => @edits unless @edits.nil? %>
+</table>
+
+<%= render :partial => 'changeset_paging_nav' %>
index 66a7426f52922031ee60395a18292c05a9045a11..4f2a168a141aba8d073c284bc20432d0619d693c 100644 (file)
@@ -5,12 +5,14 @@
 <!-- Displaying user's own profile page -->
 <%= link_to 'my diary', :controller => 'diary_entry', :action => 'list', :display_name => @user.display_name %>
 | <%= link_to 'new diary entry', :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %>
+| <%= link_to 'my edits', :controller => 'changeset', :action => 'list', :display_name => @user.display_name %>
 | <%= link_to 'my traces', :controller => 'trace', :action=>'mine' %>
 | <%= link_to 'my settings', :controller => 'user', :action => 'account', :display_name => @user.display_name %>
 <% else %>
 <!-- Displaying another user's profile page -->
 <%= link_to 'send message', :controller => 'message', :action => 'new', :user_id => @this_user.id %>
 | <%= link_to 'diary', :controller => 'diary_entry', :action => 'list', :display_name => @this_user.display_name %>
+| <%= link_to 'edits', :controller => 'changeset', :action => 'list', :display_name => @this_user.display_name %>
 | <%= link_to 'traces', :controller => 'trace', :action => 'view', :display_name => @this_user.display_name %>
 | <% if @user and @user.is_friends_with?(@this_user) %>
   <%= link_to 'remove as friend', :controller => 'user', :action => 'remove_friend', :display_name => @this_user.display_name %>
index b99dfd2ca56964c12ba3ba48c69b13aff443aad7..4431c47653050fd31d6720de63ce8058ea17bdf3 100644 (file)
@@ -137,6 +137,7 @@ ActionController::Routing::Routes.draw do |map|
 
   # user pages
   map.connect '/user/:display_name', :controller => 'user', :action => 'view'
+  map.connect '/user/:display_name/edits', :controller => 'changeset', :action => 'list'
   map.connect '/user/:display_name/make_friend', :controller => 'user', :action => 'make_friend'
   map.connect '/user/:display_name/remove_friend', :controller => 'user', :action => 'remove_friend'
   map.connect '/user/:display_name/diary', :controller => 'diary_entry', :action => 'list'