]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/5106'
authorTom Hughes <tom@compton.nu>
Fri, 23 Aug 2024 17:27:10 +0000 (18:27 +0100)
committerTom Hughes <tom@compton.nu>
Fri, 23 Aug 2024 17:27:10 +0000 (18:27 +0100)
19 files changed:
app/abilities/ability.rb
app/controllers/user_blocks_controller.rb
app/views/dashboards/show.html.erb
app/views/diary_comments/_page.html.erb
app/views/diary_entries/_page.html.erb
app/views/shared/_pagination.html.erb
app/views/traces/_page.html.erb
app/views/user_blocks/_block.html.erb
app/views/user_blocks/_blocks.html.erb
app/views/user_blocks/revoke.html.erb [deleted file]
app/views/user_blocks/show.html.erb
app/views/users/_page.html.erb
config/locales/en.yml
config/routes.rb
test/controllers/dashboards_controller_test.rb
test/controllers/user_blocks_controller_test.rb
test/controllers/users_controller_test.rb
test/integration/user_blocks_test.rb
test/system/dashboard_test.rb [new file with mode: 0644]

index 6baa67be570fc950a70eeadf1e31cecdf0e05a63..7ee75f3bc4aa913b4291f92012f51093b14b32e1 100644 (file)
@@ -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
index 7027359ccad24c86c724814f9d22f20cbca90bd7..6bf86de3fa6b0387379923aa7efce96cadd14cd1 100644 (file)
@@ -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
index a65597fefc4b732b7a80e60af4fd0d46ed29228d..c4b595e9b931dc6ba5e79be030105f082433a3d3 100644 (file)
@@ -27,7 +27,7 @@
     </div>
 
     <div class="col-md">
-      <h3><%= t ".my friends" %></h3>
+      <h2><%= t ".my friends" %></h2>
 
       <% if friends.empty? %>
         <%= t ".no friends" %>
             <li><%= link_to t(".friends_diaries"), friends_diary_entries_path %></li>
           </ul>
         </nav>
-        <div id="friends-container">
+        <div>
           <%= render :partial => "contact", :collection => friends, :locals => { :type => "friend" } %>
         </div>
       <% end %>
 
       <hr>
 
-      <h3><%= t ".nearby users" %></h3>
+      <h2><%= t ".nearby users" %></h2>
 
       <% if nearby.empty? %>
         <%= t ".no nearby users" %>
index 53472e3ea1854e4582db68e39194e1593e030db1..66e40cd805733223825fc3bd731cd4ac297bb481 100644 (file)
@@ -1,4 +1,4 @@
-<turbo-frame id="pagination" target="_top">
+<turbo-frame id="pagination" target="_top" data-turbo="false">
   <table class="table table-striped" width="100%">
     <thead>
       <tr>
index 34f364ac4694a816d04dfd9d96ca21a00fbdde0e..f07db9b6c73c953f0172f28b202e3b4a2b6f8f6f 100644 (file)
@@ -1,4 +1,4 @@
-<turbo-frame id="pagination" target="_top">
+<turbo-frame id="pagination" target="_top" data-turbo="false">
   <h4><%= t ".recent_entries" %></h4>
 
   <%= render @entries %>
index 67b69e8645f0134cd975b228598ed29a358f7961..c8eddcd379b9ca414d44f24b45ffdee99b0f901a 100644 (file)
@@ -7,7 +7,7 @@
     <% end %>
     <% if newer_id -%>
       <li class="page-item d-flex">
-        <%= 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" } %>
       </li>
     <% else -%>
       <li class="page-item d-flex disabled">
@@ -21,7 +21,7 @@
     <% end %>
     <% if older_id -%>
       <li class="page-item d-flex">
-        <%= 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" } %>
       </li>
     <% else -%>
       <li class="page-item d-flex disabled">
index 38cdc734188078e02069a61c113ee652c3331a8d..e1ce3fe48604a897b201f1beeb40837ad9a8b982 100644 (file)
@@ -1,4 +1,4 @@
-<turbo-frame id="pagination" target="_top">
+<turbo-frame id="pagination" target="_top" data-turbo="false">
   <%= render "shared/pagination",
              :newer_key => "traces.page.newer",
              :older_key => "traces.page.older",
index b464b4ccdb3f6ef2d8c609ebe800650bdf6c346a..1eb38f93fc50b285b7a6a66a335de94a5bded882 100644 (file)
@@ -16,7 +16,4 @@
   </td>
   <td><%= link_to t(".show"), block %></td>
   <td><% if can?(:edit, block) %><%= link_to t(".edit"), edit_user_block_path(block) %><% end %></td>
-  <% if can?(:revoke, UserBlock) %>
-  <td><% if block.active? %><%= link_to t(".revoke"), revoke_user_block_path(block) %><% end %></td>
-  <% end %>
 </tr>
index 8816acb1565a5dfb1a2c9dddb4abbc7f144715b7..de6feafa1e4d6ee695cedd90741ee9a34f67520a 100644 (file)
@@ -1,4 +1,4 @@
-<turbo-frame id="pagination" target="_top">
+<turbo-frame id="pagination" target="_top" data-turbo="false">
   <table id="block_list" class="table table-borderless table-striped table-sm">
     <thead>
       <tr>
@@ -13,9 +13,6 @@
         <th><%= t ".revoker_name" %></th>
         <th></th>
         <th></th>
-        <% if can?(:revoke, UserBlock) %>
-        <th></th>
-        <% end %>
       </tr>
     </thead>
     <%= 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 (file)
index 224e1e4..0000000
+++ /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 %>
-  <h1><%= 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)) %></h1>
-<% end %>
-
-<% if @user_block.ends_at > Time.now %>
-  <p>
-    <%= t(".time_future_html", :time => friendly_date(@user_block.ends_at)) %>
-  </p>
-
-  <%= bootstrap_form_for :revoke, :url => { :action => "revoke" } do |f| %>
-    <div class="mb-3">
-      <div class="form-check">
-        <%= check_box_tag "confirm", "yes", false, { :class => "form-check-input" } %>
-        <%= label_tag "confirm", t(".confirm"), { :class => "form-check-label" } %>
-      </div>
-    </div>
-
-    <%= f.submit t(".revoke"), :class => "btn btn-danger" %>
-  <% end %>
-
-<% else %>
-  <p>
-    <%= t(".past_html", :time => friendly_date_ago(@user_block.ends_at)) %>
-  </p>
-<% end %>
index 06275c3f0f94c255b8250351415f8f7bdec6483e..180406c747863f89701ac8e2e282b57fa1e09358 100644 (file)
   <dd class="col-sm-9"><div class="richtext text-break"><%= @user_block.reason.to_html %></div></dd>
 </dl>
 
-<% 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) %>
   <div>
-    <% 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" %>
   </div>
 <% end %>
index 3307c7b111c108b566bbd9e4f974a2ce09d33253..8a58a29b7f0d0204cf0cd5f8479fc7815d6c26d8 100644 (file)
@@ -1,4 +1,4 @@
-<turbo-frame id="pagination" target="_top">
+<turbo-frame id="pagination" target="_top" data-turbo="false">
   <%= form_tag do %>
     <div class="row">
       <div class="col">
index 80811cd1ff7e23177d759769e9d96d38666c28a2..36698f02ce024e27dadba4f9699dbf3225b8023a 100644 (file)
@@ -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"
index 125d6f8109ffac8f13b34079c89ec4059cab3ff7..b0e23301e998bd42e7f945df18b22357f9057021 100644 (file)
@@ -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
index 84f9610e5f3ac7a583a3ee6a513f3f3304585cb9..0adf58a9e4b4cb368c3758a074eba24c83d5541e 100644 (file)
@@ -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
index 61440ae56ad9e7e4f545f5b837b26b406ba581b1..ed310f52ea43239540bbea701b5bc66f48c15db2 100644 (file)
@@ -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
 
index cff52cff25a24fc2ff3ccf251c3b533b6ba94ce5..4f4edf10b034a82ad562b995bbb5328ab6db0382 100644 (file)
@@ -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)
index 13db86e28134ecf899e19d21a147dfac5fc90d8c..96717e092a79e4ae2dc3e5383aa5b8d83e7393e5 100644 (file)
@@ -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 (file)
index 0000000..bc2e3b4
--- /dev/null
@@ -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