diff --git a/app/abilities/ability.rb b/app/abilities/ability.rb index 7ee75f3bc4..f98b1b24ac 100644 --- a/app/abilities/ability.rb +++ b/app/abilities/ability.rb @@ -16,7 +16,7 @@ def initialize(user) if Settings.status != "database_offline" can [:index, :feed, :show], Changeset - can :index, ChangesetComment + can :show, ChangesetComment can [:confirm, :confirm_resend, :confirm_email], :confirmation can [:index, :rss, :show], DiaryEntry can :index, DiaryComment diff --git a/app/controllers/feeds/changeset_comments_controller.rb b/app/controllers/changeset_comments/feeds_controller.rb similarity index 91% rename from app/controllers/feeds/changeset_comments_controller.rb rename to app/controllers/changeset_comments/feeds_controller.rb index c6b3552601..fef48bb188 100644 --- a/app/controllers/feeds/changeset_comments_controller.rb +++ b/app/controllers/changeset_comments/feeds_controller.rb @@ -1,16 +1,16 @@ -module Feeds - class ChangesetCommentsController < ApplicationController +module ChangesetComments + class FeedsController < ApplicationController before_action :authorize_web before_action :set_locale - authorize_resource + authorize_resource :changeset_comment before_action -> { check_database_readable(:need_api => true) } around_action :web_timeout ## # Get a feed of recent changeset comments - def index + def show if params[:changeset_id] # Extract the arguments changeset_id = params[:changeset_id].to_i diff --git a/app/views/feeds/changeset_comments/_comment.html.erb b/app/views/changeset_comments/feeds/_comment.html.erb similarity index 100% rename from app/views/feeds/changeset_comments/_comment.html.erb rename to app/views/changeset_comments/feeds/_comment.html.erb diff --git a/app/views/feeds/changeset_comments/_comment.rss.builder b/app/views/changeset_comments/feeds/_comment.rss.builder similarity index 100% rename from app/views/feeds/changeset_comments/_comment.rss.builder rename to app/views/changeset_comments/feeds/_comment.rss.builder diff --git a/app/views/feeds/changeset_comments/index.rss.builder b/app/views/changeset_comments/feeds/show.rss.builder similarity index 100% rename from app/views/feeds/changeset_comments/index.rss.builder rename to app/views/changeset_comments/feeds/show.rss.builder diff --git a/app/views/feeds/changeset_comments/timeout.atom.builder b/app/views/changeset_comments/feeds/timeout.atom.builder similarity index 100% rename from app/views/feeds/changeset_comments/timeout.atom.builder rename to app/views/changeset_comments/feeds/timeout.atom.builder diff --git a/app/views/feeds/changeset_comments/timeout.html.erb b/app/views/changeset_comments/feeds/timeout.html.erb similarity index 100% rename from app/views/feeds/changeset_comments/timeout.html.erb rename to app/views/changeset_comments/feeds/timeout.html.erb diff --git a/config/locales/en.yml b/config/locales/en.yml index f007022207..dfad0230ee 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -246,18 +246,6 @@ en: entry: comment: Comment full: Full note - feeds: - changeset_comments: - comment: - comment: "New comment on changeset #%{changeset_id} by %{author}" - commented_at_by_html: "Updated %{when} by %{user}" - comments: - comment: "New comment on changeset #%{changeset_id} by %{author}" - index: - title_all: OpenStreetMap changeset discussion - title_particular: "OpenStreetMap changeset #%{changeset_id} discussion" - timeout: - sorry: "Sorry, the list of changeset comments you requested took too long to retrieve." account: deletions: show: @@ -426,6 +414,18 @@ en: old_relations: not_found: sorry: "Sorry, relation #%{id} version %{version} could not be found." + changeset_comments: + feeds: + comment: + comment: "New comment on changeset #%{changeset_id} by %{author}" + commented_at_by_html: "Updated %{when} by %{user}" + comments: + comment: "New comment on changeset #%{changeset_id} by %{author}" + show: + title_all: OpenStreetMap changeset discussion + title_particular: "OpenStreetMap changeset #%{changeset_id} discussion" + timeout: + sorry: "Sorry, the list of changeset comments you requested took too long to retrieve." changesets: changeset_paging_nav: showing_page: "Page %{page}" diff --git a/config/routes.rb b/config/routes.rb index 817202486c..676afc0fb9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -126,8 +126,8 @@ resources :changesets, :path => "changeset", :id => /\d+/, :only => :show do match :subscribe, :unsubscribe, :on => :member, :via => [:get, :post] - namespace :feeds, :path => "" do - resources :changeset_comments, :path => "comments/feed", :only => :index, :defaults => { :format => "rss" } + namespace :changeset_comments, :as => :comments, :path => :comments do + resource :feed, :only => :show, :defaults => { :format => "rss" } end end resources :notes, :path => "note", :id => /\d+/, :only => [:show, :new] @@ -167,8 +167,10 @@ get "/communities" => "site#communities" get "/history" => "changesets#index" get "/history/feed" => "changesets#feed", :defaults => { :format => :atom } - namespace :feeds, :path => "" do - resources :changeset_comments, :path => "/history/comments/feed", :only => :index, :defaults => { :format => "rss" } + scope "/history" do + namespace :changeset_comments, :path => :comments, :as => :changesets_comments do + resource :feed, :only => :show, :defaults => { :format => "rss" } + end end get "/export" => "site#export" get "/login" => "sessions#new" diff --git a/test/controllers/feeds/changeset_comments_controller_test.rb b/test/controllers/changeset_comments/feeds_controller_test.rb similarity index 74% rename from test/controllers/feeds/changeset_comments_controller_test.rb rename to test/controllers/changeset_comments/feeds_controller_test.rb index a4149b0d55..20db62cefc 100644 --- a/test/controllers/feeds/changeset_comments_controller_test.rb +++ b/test/controllers/changeset_comments/feeds_controller_test.rb @@ -1,17 +1,17 @@ require "test_helper" -module Feeds - class ChangesetCommentsControllerTest < ActionDispatch::IntegrationTest +module ChangesetComments + class FeedsControllerTest < ActionDispatch::IntegrationTest ## # test all routes which lead to this controller def test_routes assert_routing( { :path => "/changeset/1/comments/feed", :method => :get }, - { :controller => "feeds/changeset_comments", :action => "index", :changeset_id => "1", :format => "rss" } + { :controller => "changeset_comments/feeds", :action => "show", :changeset_id => "1", :format => "rss" } ) assert_routing( { :path => "/history/comments/feed", :method => :get }, - { :controller => "feeds/changeset_comments", :action => "index", :format => "rss" } + { :controller => "changeset_comments/feeds", :action => "show", :format => "rss" } ) end @@ -21,7 +21,7 @@ def test_feed changeset = create(:changeset, :closed) create_list(:changeset_comment, 3, :changeset => changeset) - get feeds_changeset_comments_path(:format => "rss") + get changesets_comments_feed_path(:format => "rss") assert_response :success assert_equal "application/rss+xml", @response.media_type assert_select "rss", :count => 1 do @@ -30,7 +30,7 @@ def test_feed end end - get feeds_changeset_comments_path(:format => "rss", :limit => 2) + get changesets_comments_feed_path(:format => "rss", :limit => 2) assert_response :success assert_equal "application/rss+xml", @response.media_type assert_select "rss", :count => 1 do @@ -39,7 +39,7 @@ def test_feed end end - get changeset_feeds_changeset_comments_path(changeset, :format => "rss") + get changeset_comments_feed_path(changeset, :format => "rss") assert_response :success assert_equal "application/rss+xml", @response.media_type last_comment_id = -1 @@ -62,10 +62,10 @@ def test_feed ## # test comments feed def test_feed_bad_limit - get feeds_changeset_comments_path(:format => "rss", :limit => 0) + get changesets_comments_feed_path(:format => "rss", :limit => 0) assert_response :bad_request - get feeds_changeset_comments_path(:format => "rss", :limit => 100001) + get changesets_comments_feed_path(:format => "rss", :limit => 100001) assert_response :bad_request end end