From cc90867183367d7758a11da3f2058117c7529891 Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Tue, 23 Dec 2008 13:06:07 +0000 Subject: [PATCH] view changesets by user --- app/controllers/changeset_controller.rb | 20 ++++++++++- app/views/changeset/_changeset.rhtml | 34 +++++++++++++++++++ .../changeset/_changeset_paging_nav.rhtml | 12 +++++++ app/views/changeset/list.rhtml | 15 ++++++++ app/views/user/view.rhtml | 2 ++ config/routes.rb | 1 + 6 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 app/views/changeset/_changeset.rhtml create mode 100644 app/views/changeset/_changeset_paging_nav.rhtml create mode 100644 app/views/changeset/list.rhtml diff --git a/app/controllers/changeset_controller.rb b/app/controllers/changeset_controller.rb index f7f4dc9f0..3e1870b70 100644 --- a/app/controllers/changeset_controller.rb +++ b/app/controllers/changeset_controller.rb @@ -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 index 000000000..83b0b0ce8 --- /dev/null +++ b/app/views/changeset/_changeset.rhtml @@ -0,0 +1,34 @@ + + <% cl = cycle('table0', 'table1') %> + + + #<%= changeset.id %> + + + <% if changeset.closed_at > DateTime.now %> (still editing) + <% else %><%= changeset.closed_at.strftime("%d %b %Y %H:%M") %><% end %> + + + <% if changeset.tags['comment'] %> + <%= changeset.tags['comment'] %> + <% else %> + (none) + <% end %> + + + <% 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 + %> + (<%= format("%0.3f",lat1) -%>,<%= format("%0.3f",lon1) -%>) to + (<%= format("%0.3f",lat2) -%>,<%= format("%0.3f",lon2) -%>) + <% end %> + + + <%= link_to 'more', {:controller => 'browse', :action => 'changeset', :id => changeset.id}, {:title => 'View changeset details'} %> + + diff --git a/app/views/changeset/_changeset_paging_nav.rhtml b/app/views/changeset/_changeset_paging_nav.rhtml new file mode 100644 index 000000000..df84a3930 --- /dev/null +++ b/app/views/changeset/_changeset_paging_nav.rhtml @@ -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 index 000000000..cea156320 --- /dev/null +++ b/app/views/changeset/list.rhtml @@ -0,0 +1,15 @@ +

Edits by <%= link_to(@display_name, {:controller=>'user', :action=>'view', :display_name=>@display_name}) %>

+<%= render :partial => 'changeset_paging_nav' %> + + + + + + + + + + <%= render :partial => 'changeset', :collection => @edits unless @edits.nil? %> +
IDSaved atCommentArea
+ +<%= render :partial => 'changeset_paging_nav' %> diff --git a/app/views/user/view.rhtml b/app/views/user/view.rhtml index 66a7426f5..4f2a168a1 100644 --- a/app/views/user/view.rhtml +++ b/app/views/user/view.rhtml @@ -5,12 +5,14 @@ <%= 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 %> <%= 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 %> diff --git a/config/routes.rb b/config/routes.rb index b99dfd2ca..4431c4765 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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' -- 2.43.2