From: Tom Hughes Date: Fri, 23 Aug 2024 17:27:10 +0000 (+0100) Subject: Merge remote-tracking branch 'upstream/pull/5106' X-Git-Tag: live~691 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/fba6f95b3918bdaa153f1624e82a2e79672f1fa5?hp=3bba84ed3abbb9badfe8833e4aae7ceaeeb8586e Merge remote-tracking branch 'upstream/pull/5106' --- diff --git a/app/abilities/ability.rb b/app/abilities/ability.rb index 6baa67be5..7ee75f3bc 100644 --- a/app/abilities/ability.rb +++ b/app/abilities/ability.rb @@ -60,7 +60,7 @@ class Ability can [:index, :show, :resolve, :ignore, :reopen], Issue can :create, IssueComment can [:new, :create, :edit, :update, :destroy], Redaction - can [:new, :create, :revoke, :revoke_all], UserBlock + can [:new, :create, :revoke_all], UserBlock can :update, UserBlock, :creator => user can :update, UserBlock, :revoker => user can :update, UserBlock, :active? => true diff --git a/app/controllers/user_blocks_controller.rb b/app/controllers/user_blocks_controller.rb index 7027359cc..6bf86de3f 100644 --- a/app/controllers/user_blocks_controller.rb +++ b/app/controllers/user_blocks_controller.rb @@ -10,10 +10,10 @@ class UserBlocksController < ApplicationController authorize_resource before_action :lookup_user, :only => [:new, :create, :revoke_all, :blocks_on, :blocks_by] - before_action :lookup_user_block, :only => [:show, :edit, :update, :revoke] + before_action :lookup_user_block, :only => [:show, :edit, :update] before_action :require_valid_params, :only => [:create, :update] before_action :check_database_readable - before_action :check_database_writable, :only => [:create, :update, :revoke, :revoke_all] + before_action :check_database_writable, :only => [:create, :update, :revoke_all] def index @params = params.permit @@ -105,15 +105,6 @@ class UserBlocksController < ApplicationController end end - ## - # revokes the block, setting the end_time to now - def revoke - if request.post? && params[:confirm] && @user_block.revoke!(current_user) - flash[:notice] = t ".flash" - redirect_to(@user_block) - end - end - ## # revokes all active blocks def revoke_all diff --git a/app/views/dashboards/show.html.erb b/app/views/dashboards/show.html.erb index a65597fef..c4b595e9b 100644 --- a/app/views/dashboards/show.html.erb +++ b/app/views/dashboards/show.html.erb @@ -27,7 +27,7 @@
-

<%= t ".my friends" %>

+

<%= t ".my friends" %>

<% if friends.empty? %> <%= t ".no friends" %> @@ -38,14 +38,14 @@
  • <%= link_to t(".friends_diaries"), friends_diary_entries_path %>
  • -
    +
    <%= render :partial => "contact", :collection => friends, :locals => { :type => "friend" } %>
    <% end %>
    -

    <%= t ".nearby users" %>

    +

    <%= t ".nearby users" %>

    <% if nearby.empty? %> <%= t ".no nearby users" %> diff --git a/app/views/diary_comments/_page.html.erb b/app/views/diary_comments/_page.html.erb index 53472e3ea..66e40cd80 100644 --- a/app/views/diary_comments/_page.html.erb +++ b/app/views/diary_comments/_page.html.erb @@ -1,4 +1,4 @@ - + diff --git a/app/views/diary_entries/_page.html.erb b/app/views/diary_entries/_page.html.erb index 34f364ac4..f07db9b6c 100644 --- a/app/views/diary_entries/_page.html.erb +++ b/app/views/diary_entries/_page.html.erb @@ -1,4 +1,4 @@ - +

    <%= t ".recent_entries" %>

    <%= render @entries %> diff --git a/app/views/shared/_pagination.html.erb b/app/views/shared/_pagination.html.erb index 67b69e864..c8eddcd37 100644 --- a/app/views/shared/_pagination.html.erb +++ b/app/views/shared/_pagination.html.erb @@ -7,7 +7,7 @@ <% end %> <% if newer_id -%>
  • - <%= link_to newer_link_content, @params.merge(:before => nil, :after => newer_id), :class => link_class, :data => { "turbo-frame" => "pagination", "turbo-action" => "advance" } %> + <%= link_to newer_link_content, @params.merge(:before => nil, :after => newer_id), :class => link_class, :data => { "turbo" => true, "turbo-frame" => "pagination", "turbo-action" => "advance" } %>
  • <% else -%>
  • @@ -21,7 +21,7 @@ <% end %> <% if older_id -%>
  • - <%= link_to older_link_content, @params.merge(:before => older_id, :after => nil), :class => link_class, :data => { "turbo-frame" => "pagination", "turbo-action" => "advance" } %> + <%= link_to older_link_content, @params.merge(:before => older_id, :after => nil), :class => link_class, :data => { "turbo" => true, "turbo-frame" => "pagination", "turbo-action" => "advance" } %>
  • <% else -%>
  • diff --git a/app/views/traces/_page.html.erb b/app/views/traces/_page.html.erb index 38cdc7341..e1ce3fe48 100644 --- a/app/views/traces/_page.html.erb +++ b/app/views/traces/_page.html.erb @@ -1,4 +1,4 @@ - + <%= render "shared/pagination", :newer_key => "traces.page.newer", :older_key => "traces.page.older", diff --git a/app/views/user_blocks/_block.html.erb b/app/views/user_blocks/_block.html.erb index b464b4ccd..1eb38f93f 100644 --- a/app/views/user_blocks/_block.html.erb +++ b/app/views/user_blocks/_block.html.erb @@ -16,7 +16,4 @@
  • - <% if can?(:revoke, UserBlock) %> - - <% end %> diff --git a/app/views/user_blocks/_blocks.html.erb b/app/views/user_blocks/_blocks.html.erb index 8816acb15..de6feafa1 100644 --- a/app/views/user_blocks/_blocks.html.erb +++ b/app/views/user_blocks/_blocks.html.erb @@ -1,4 +1,4 @@ - +
    <%= link_to t(".show"), block %> <% if can?(:edit, block) %><%= link_to t(".edit"), edit_user_block_path(block) %><% end %><% if block.active? %><%= link_to t(".revoke"), revoke_user_block_path(block) %><% end %>
    @@ -13,9 +13,6 @@ - <% if can?(:revoke, UserBlock) %> - - <% end %> <%= render :partial => "block", :collection => @user_blocks %> diff --git a/app/views/user_blocks/revoke.html.erb b/app/views/user_blocks/revoke.html.erb deleted file mode 100644 index 224e1e4bb..000000000 --- a/app/views/user_blocks/revoke.html.erb +++ /dev/null @@ -1,31 +0,0 @@ -<% @title = t(".title", - :block_on => @user_block.user.display_name, - :block_by => @user_block.creator.display_name) %> - -<% content_for :heading do %> -

    <%= t(".heading_html", - :block_on => link_to(@user_block.user.display_name, @user_block.user), - :block_by => link_to(@user_block.creator.display_name, @user_block.creator)) %>

    -<% end %> - -<% if @user_block.ends_at > Time.now %> -

    - <%= t(".time_future_html", :time => friendly_date(@user_block.ends_at)) %> -

    - - <%= bootstrap_form_for :revoke, :url => { :action => "revoke" } do |f| %> -
    -
    - <%= check_box_tag "confirm", "yes", false, { :class => "form-check-input" } %> - <%= label_tag "confirm", t(".confirm"), { :class => "form-check-label" } %> -
    -
    - - <%= f.submit t(".revoke"), :class => "btn btn-danger" %> - <% end %> - -<% else %> -

    - <%= t(".past_html", :time => friendly_date_ago(@user_block.ends_at)) %> -

    -<% end %> diff --git a/app/views/user_blocks/show.html.erb b/app/views/user_blocks/show.html.erb index 06275c3f0..180406c74 100644 --- a/app/views/user_blocks/show.html.erb +++ b/app/views/user_blocks/show.html.erb @@ -26,15 +26,8 @@
    <%= @user_block.reason.to_html %>
    -<% if current_user && (current_user.id == @user_block.creator_id || - current_user.id == @user_block.revoker_id) || - can?(:revoke, UserBlock) && @user_block.active? %> +<% if can?(:edit, @user_block) %>
    - <% if can?(:edit, @user_block) %> - <%= link_to t(".edit"), edit_user_block_path(@user_block), :class => "btn btn-outline-primary" %> - <% end %> - <% if can?(:revoke, UserBlock) && @user_block.active? %> - <%= link_to t(".revoke"), revoke_user_block_path(@user_block), :class => "btn btn-outline-danger" %> - <% end %> + <%= link_to t(".edit"), edit_user_block_path(@user_block), :class => "btn btn-outline-primary" %>
    <% end %> diff --git a/app/views/users/_page.html.erb b/app/views/users/_page.html.erb index 3307c7b11..8a58a29b7 100644 --- a/app/views/users/_page.html.erb +++ b/app/views/users/_page.html.erb @@ -1,4 +1,4 @@ - + <%= form_tag do %>
    diff --git a/config/locales/en.yml b/config/locales/en.yml index 80811cd1f..36698f02c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2958,14 +2958,6 @@ en: title: "User blocks" heading: "List of user blocks" empty: "No blocks have been made yet." - revoke: - title: "Revoking block on %{block_on}" - heading_html: "Revoking block on %{block_on} by %{block_by}" - time_future_html: "This block will end in %{time}." - past_html: "This block ended %{time} and cannot be revoked now." - confirm: "Are you sure you wish to revoke this block?" - revoke: "Revoke!" - flash: "This block has been revoked." revoke_all: title: "Revoking all blocks on %{block_on}" heading_html: "Revoking all blocks on %{block_on}" @@ -3013,7 +3005,6 @@ en: status: "Status:" show: "Show" edit: "Edit" - revoke: "Revoke!" confirm: "Are you sure?" reason: "Reason for block:" revoker: "Revoker:" @@ -3022,7 +3013,6 @@ en: not_revoked: "(not revoked)" show: "Show" edit: "Edit" - revoke: "Revoke!" blocks: display_name: "Blocked User" creator_name: "Creator" diff --git a/config/routes.rb b/config/routes.rb index 125d6f810..b0e23301e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -334,7 +334,6 @@ OpenStreetMap::Application.routes.draw do get "/user/:display_name/blocks_by" => "user_blocks#blocks_by", :as => "user_blocks_by" get "/blocks/new/:display_name" => "user_blocks#new", :as => "new_user_block" resources :user_blocks, :except => :new - match "/blocks/:id/revoke" => "user_blocks#revoke", :via => [:get, :post], :as => "revoke_user_block" match "/user/:display_name/blocks/revoke_all" => "user_blocks#revoke_all", :via => [:get, :post], :as => "revoke_all_user_blocks" # issues and reports diff --git a/test/controllers/dashboards_controller_test.rb b/test/controllers/dashboards_controller_test.rb index 84f9610e5..0adf58a9e 100644 --- a/test/controllers/dashboards_controller_test.rb +++ b/test/controllers/dashboards_controller_test.rb @@ -9,28 +9,4 @@ class DashboardsControllerTest < ActionDispatch::IntegrationTest { :controller => "dashboards", :action => "show" } ) end - - def test_show_no_friends - user = create(:user) - session_for(user) - - get dashboard_path - end - - def test_show_with_friends - user = create(:user, :home_lon => 1.1, :home_lat => 1.1) - friend_user = create(:user, :home_lon => 1.2, :home_lat => 1.2) - create(:friendship, :befriender => user, :befriendee => friend_user) - create(:changeset, :user => friend_user) - session_for(user) - - get dashboard_path - - # Friends should be visible as we're now logged in - assert_select "div#friends-container" do - assert_select "div" do - assert_select "a[href='/user/#{ERB::Util.u(friend_user.display_name)}']", :count => 1 - end - end - end end diff --git a/test/controllers/user_blocks_controller_test.rb b/test/controllers/user_blocks_controller_test.rb index 61440ae56..ed310f52e 100644 --- a/test/controllers/user_blocks_controller_test.rb +++ b/test/controllers/user_blocks_controller_test.rb @@ -33,14 +33,6 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest { :path => "/user_blocks/1", :method => :delete }, { :controller => "user_blocks", :action => "destroy", :id => "1" } ) - assert_routing( - { :path => "/blocks/1/revoke", :method => :get }, - { :controller => "user_blocks", :action => "revoke", :id => "1" } - ) - assert_routing( - { :path => "/blocks/1/revoke", :method => :post }, - { :controller => "user_blocks", :action => "revoke", :id => "1" } - ) assert_routing( { :path => "/user/username/blocks", :method => :get }, @@ -173,10 +165,10 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest block = create(:user_block, :creator => creator_user) session_for(other_moderator_user) - check_block_buttons block, :edit => 1, :revoke => 1 + check_block_buttons block, :edit => 1 session_for(creator_user) - check_block_buttons block, :edit => 1, :revoke => 1 + check_block_buttons block, :edit => 1 end ## @@ -553,55 +545,6 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest assert_equal other_moderator_user, block.revoker end - ## - # test the revoke action - def test_revoke - active_block = create(:user_block) - - # Check that the block revoke page requires us to login - get revoke_user_block_path(:id => active_block) - assert_redirected_to login_path(:referer => revoke_user_block_path(:id => active_block)) - - # Login as a normal user - session_for(create(:user)) - - # Check that normal users can't load the block revoke page - get revoke_user_block_path(:id => active_block) - assert_redirected_to :controller => "errors", :action => "forbidden" - - # Login as a moderator - session_for(create(:moderator_user)) - - # Check that the block revoke page loads for moderators - get revoke_user_block_path(:id => active_block) - assert_response :success - assert_template "revoke" - assert_select "h1 a[href='#{user_path active_block.user}']", :text => active_block.user.display_name - assert_select "form", :count => 1 do - assert_select "input#confirm[type='checkbox']", :count => 1 - assert_select "input[type='submit'][value='Revoke!']", :count => 1 - end - - # Check that revoking a block using GET should fail - get revoke_user_block_path(:id => active_block, :confirm => true) - assert_response :success - assert_template "revoke" - b = UserBlock.find(active_block.id) - assert_operator b.ends_at - Time.now.utc, :>, 100 - - # Check that revoking a block works using POST - post revoke_user_block_path(:id => active_block, :confirm => true) - assert_redirected_to user_block_path(active_block) - b = UserBlock.find(active_block.id) - assert_in_delta Time.now.utc, b.ends_at, 1 - - # We should get an error if the block doesn't exist - get revoke_user_block_path(:id => 99999) - assert_response :not_found - assert_template "not_found" - assert_select "p", "Sorry, the user block with ID 99999 could not be found." - end - ## # test the revoke all page def test_revoke_all_page @@ -973,12 +916,11 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest private - def check_block_buttons(block, edit: 0, revoke: 0) + def check_block_buttons(block, edit: 0) [user_blocks_path, user_block_path(block)].each do |path| get path assert_response :success assert_select "a[href='#{edit_user_block_path block}']", :count => edit - assert_select "a[href='#{revoke_user_block_path block}']", :count => revoke end end diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index cff52cff2..4f4edf10b 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -325,9 +325,6 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_select "a[href='/blocks/new/#{ERB::Util.u(user.display_name)}']", 0 end - # Friends shouldn't be visible as we're not logged in - assert_select "div#friends-container", :count => 0 - # Test a user who has been blocked blocked_user = create(:user) create(:user_block, :user => blocked_user) diff --git a/test/integration/user_blocks_test.rb b/test/integration/user_blocks_test.rb index 13db86e28..96717e092 100644 --- a/test/integration/user_blocks_test.rb +++ b/test/integration/user_blocks_test.rb @@ -39,12 +39,13 @@ class UserBlocksTest < ActionDispatch::IntegrationTest # revoke the ban get "/login" assert_response :success - post "/login", :params => { "username" => moderator.email, "password" => "test", :referer => "/blocks/#{block.id}/revoke" } + post "/login", :params => { "username" => moderator.email, "password" => "test", :referer => "/user_blocks/#{block.id}/edit" } assert_response :redirect follow_redirect! assert_response :success - assert_template "user_blocks/revoke" - post "/blocks/#{block.id}/revoke", :params => { "confirm" => "yes" } + assert_template "user_blocks/edit" + put "/user_blocks/#{block.id}", :params => { :user_block_period => "0", + :user_block => { :needs_view => false, :reason => "Unblocked" } } assert_response :redirect follow_redirect! assert_response :success diff --git a/test/system/dashboard_test.rb b/test/system/dashboard_test.rb new file mode 100644 index 000000000..bc2e3b4e9 --- /dev/null +++ b/test/system/dashboard_test.rb @@ -0,0 +1,27 @@ +require "application_system_test_case" + +class DashboardSystemTest < ApplicationSystemTestCase + test "show no users if have no friends" do + user = create(:user) + sign_in_as(user) + + visit dashboard_path + assert_text "You have not added any friends yet." + end + + test "show users if have friends" do + user = create(:user, :home_lon => 1.1, :home_lat => 1.1) + friend_user = create(:user, :home_lon => 1.2, :home_lat => 1.2) + create(:friendship, :befriender => user, :befriendee => friend_user) + create(:changeset, :user => friend_user) + sign_in_as(user) + + visit dashboard_path + assert_no_text "You have not added any friends yet." + + friends_heading = find :element, "h2", :text => "My friends" + others_heading = find :element, "h2", :text => "Other nearby users" + + assert_link friend_user.display_name, :below => friends_heading, :above => others_heading + end +end
    <%= t ".revoker_name" %>