]> git.openstreetmap.org Git - rails.git/commitdiff
Merge branch 'pull/5182'
authorAnton Khorev <tony29@yandex.ru>
Thu, 12 Sep 2024 06:43:56 +0000 (09:43 +0300)
committerAnton Khorev <tony29@yandex.ru>
Thu, 12 Sep 2024 06:43:56 +0000 (09:43 +0300)
13 files changed:
app/abilities/ability.rb
app/controllers/user_blocks_controller.rb
app/controllers/users_controller.rb
app/views/changesets/index.html.erb
app/views/redactions/index.html.erb
app/views/redactions/show.html.erb
app/views/user_blocks/_page.html.erb [moved from app/views/user_blocks/_blocks.html.erb with 100% similarity]
app/views/user_blocks/blocks_by.html.erb
app/views/user_blocks/blocks_on.html.erb
app/views/user_blocks/index.html.erb
config/locales/en.yml
test/controllers/redactions_controller_test.rb
test/system/redaction_destroy_test.rb [new file with mode: 0644]

index d6584f364bd8e24f859486960e6fc69e9c7d14ce..9a8f193a1b5164ce1eea0e09cd583338729f6bd7 100644 (file)
@@ -7,7 +7,7 @@ class Ability
     can :query, :browse
     can :show, [Node, Way, Relation]
     can [:index, :show], [OldNode, OldWay, OldRelation]
-    can [:show, :new], Note
+    can [:show, :create], Note
     can :search, :direction
     can [:index, :permalink, :edit, :help, :fixthemap, :offline, :export, :about, :communities, :preview, :copyright, :key, :id], :site
     can [:finish, :embed], :export
@@ -20,11 +20,11 @@ class Ability
       can [:index, :rss, :show], DiaryEntry
       can :index, DiaryComment
       can [:index], Note
-      can [:new, :create, :update], :password
+      can [:create, :update], :password
       can [:index, :show], Redaction
-      can [:new, :create, :destroy], :session
+      can [:create, :destroy], :session
       can [:index, :show, :data, :georss], Trace
-      can [:terms, :new, :create, :save, :suspended, :show, :auth_success, :auth_failure], User
+      can [:terms, :create, :save, :suspended, :show, :auth_success, :auth_failure], User
       can [:index, :show, :blocks_on, :blocks_by], UserBlock
     end
 
@@ -34,21 +34,21 @@ class Ability
 
       if Settings.status != "database_offline"
         can [:subscribe, :unsubscribe], Changeset
-        can [:index, :new, :create, :show, :update, :destroy], :oauth2_application
+        can [:index, :create, :show, :update, :destroy], :oauth2_application
         can [:index, :destroy], :oauth2_authorized_application
-        can [:new, :show, :create, :destroy], :oauth2_authorization
+        can [:show, :create, :destroy], :oauth2_authorization
         can [:update, :destroy], :account
         can [:show], :dashboard
-        can [:new, :create, :subscribe, :unsubscribe], DiaryEntry
+        can [:create, :subscribe, :unsubscribe], DiaryEntry
         can :update, DiaryEntry, :user => user
         can [:create], DiaryComment
         can [:make_friend, :remove_friend], Friendship
-        can [:new, :create, :reply, :show, :inbox, :outbox, :muted, :mark, :unmute, :destroy], Message
+        can [:create, :reply, :show, :inbox, :outbox, :muted, :mark, :unmute, :destroy], Message
         can [:close, :reopen], Note
         can [:show, :update], :preference
         can :update, :profile
-        can [:new, :create], Report
-        can [:mine, :new, :create, :update, :destroy], Trace
+        can :create, Report
+        can [:mine, :create, :update, :destroy], Trace
         can [:account, :go_public], User
         can [:index, :create, :destroy], UserMute
 
@@ -56,8 +56,8 @@ class Ability
           can [:hide, :unhide], [DiaryEntry, DiaryComment]
           can [:index, :show, :resolve, :ignore, :reopen], Issue
           can :create, IssueComment
-          can [:new, :create, :update, :destroy], Redaction
-          can [:new, :create, :revoke_all], UserBlock
+          can [:create, :update, :destroy], Redaction
+          can [:create, :revoke_all], UserBlock
           can :update, UserBlock, :creator => user
           can :update, UserBlock, :revoker => user
           can :update, UserBlock, :active? => true
index 7d61366be9e071f0cd0360d48bf00ba22b968635..c42c2659db0b09aae46b17430b3cac0e25283790 100644 (file)
@@ -25,7 +25,7 @@ class UserBlocksController < ApplicationController
     @show_user_name = true
     @show_creator_name = true
 
-    render :partial => "blocks" if turbo_frame_request_id == "pagination"
+    render :partial => "page" if turbo_frame_request_id == "pagination"
   end
 
   def show
@@ -127,7 +127,7 @@ class UserBlocksController < ApplicationController
     @show_user_name = false
     @show_creator_name = true
 
-    render :partial => "blocks" if turbo_frame_request_id == "pagination"
+    render :partial => "page" if turbo_frame_request_id == "pagination"
   end
 
   ##
@@ -142,7 +142,7 @@ class UserBlocksController < ApplicationController
     @show_user_name = true
     @show_creator_name = false
 
-    render :partial => "blocks" if turbo_frame_request_id == "pagination"
+    render :partial => "page" if turbo_frame_request_id == "pagination"
   end
 
   private
index 3ba914210edd50fbbb4989ae24d65373f8f94804..fc893c9c3194f6c40a65ce61e1d73e9824ba0747 100644 (file)
@@ -38,7 +38,9 @@ class UsersController < ApplicationController
       users = users.where(:status => @params[:status]) if @params[:status]
       users = users.where(:creation_ip => @params[:ip]) if @params[:ip]
 
-      @users_count = users.count
+      @users_count = users.limit(501).count
+      @users_count = I18n.t("count.at_least_pattern", :count => 500) if @users_count > 500
+
       @users, @newer_users_id, @older_users_id = get_page_items(users, :limit => 50)
 
       render :partial => "page" if turbo_frame_request_id == "pagination"
index 97e6351a0a108561ac495534a8e30c75ab13cb11..fc5f7cbbc85bfaeb57c78d71a383aea88d73125d 100644 (file)
@@ -13,9 +13,9 @@
   </div>
 <% end -%>
 <% elsif params[:bbox] %>
-  <p class="mx-3"><%= t(params[:max_id] ? ".no_more_area" : ".empty_area") %></p>
+  <p class="mx-3"><%= params[:max_id] ? t(".no_more_area") : t(".empty_area") %></p>
 <% elsif params[:display_name] %>
-  <p class="mx-3"><%= t(params[:max_id] ? ".no_more_user" : ".empty_user") %></p>
+  <p class="mx-3"><%= params[:max_id] ? t(".no_more_user") : t(".empty_user") %></p>
 <% else %>
-  <p class="mx-3"><%= t(params[:max_id] ? ".no_more" : ".empty") %></p>
+  <p class="mx-3"><%= params[:max_id] ? t(".no_more") : t(".empty") %></p>
 <% end %>
index b6b6ef46e063e8f358eac3c64dc6ad8a440a918f..26dad64cfe1907eb415acb84f3880be59abdc8e5 100644 (file)
@@ -10,3 +10,9 @@
 <% else %>
   <p><%= t ".empty" %></p>
 <% end %>
+
+<% if can?(:create, Redaction) %>
+  <div>
+    <%= link_to t(".new"), new_redaction_path, :class => "btn btn-outline-primary" %>
+  </div>
+<% end %>
index 5b9749a5113b7f2c3caa686b98c84b7b3103c75a..fe073d123752ffbfeadf6e6fb23c6699d54a78ec 100644 (file)
@@ -18,7 +18,7 @@
     <%= link_to t(".edit"), edit_redaction_path(@redaction), :class => "btn btn-outline-primary" %>
   <% end %>
   <% if can?(:destroy, Redaction) %>
-    <%= link_to t(".destroy"), @redaction, :method => "delete", :class => "btn btn-outline-danger", :remote => true, :data => { :confirm => t(".confirm") } %>
+    <%= link_to t(".destroy"), @redaction, :class => "btn btn-outline-danger", :data => { :turbo => true, :turbo_method => "DELETE", :turbo_confirm => t(".confirm") } %>
   <% end %>
 </div>
 <% end %>
index 38254a5a3d166781f1e3e80bfadb5c932c0c2b9f..73748e5570757fffcdf16294fbf781bbcfb2f6d1 100644 (file)
@@ -7,7 +7,7 @@
 <% end %>
 
 <% unless @user_blocks.empty? %>
-<%= render :partial => "blocks" %>
+<%= render :partial => "page" %>
 <% else %>
 <p><%= t ".empty", :name => @user.display_name %></p>
 <% end %>
index 38254a5a3d166781f1e3e80bfadb5c932c0c2b9f..73748e5570757fffcdf16294fbf781bbcfb2f6d1 100644 (file)
@@ -7,7 +7,7 @@
 <% end %>
 
 <% unless @user_blocks.empty? %>
-<%= render :partial => "blocks" %>
+<%= render :partial => "page" %>
 <% else %>
 <p><%= t ".empty", :name => @user.display_name %></p>
 <% end %>
index 854d62037f4ace3e7e7a9f76398235a20867fb6a..5b040e2b5630cbef31f9c051c68015a3e4c019e2 100644 (file)
@@ -7,7 +7,7 @@
 <% end %>
 
 <% unless @user_blocks.empty? %>
-<%= render :partial => "blocks" %>
+<%= render :partial => "page" %>
 <% else %>
 <p><%= t ".empty" %></p>
 <% end %>
index 9a383569ee3ce97241b24b4dcdf5c612e3a6c5f4..16015d92c33ac5c40feee67686c7d3a18ec5d3c2 100644 (file)
@@ -2833,15 +2833,9 @@ en:
       doesnt_have_role: "The user does not have role %{role}."
       not_revoke_admin_current_user: "Cannot revoke administrator role from current user."
     grant:
-      title: Confirm role granting
-      heading: Confirm role granting
       are_you_sure: "Are you sure you want to grant the role `%{role}' to the user `%{name}'?"
-      confirm: "Confirm"
     revoke:
-      title: Confirm role revoking
-      heading: Confirm role revoking
       are_you_sure: "Are you sure you want to revoke the role `%{role}' from the user `%{name}'?"
-      confirm: "Confirm"
   user_blocks:
     model:
       non_moderator_update: "Must be a moderator to create or update a block."
@@ -2927,7 +2921,7 @@ en:
       not_revoked: "(not revoked)"
       show: "Show"
       edit: "Edit"
-    blocks:
+    page:
       display_name: "Blocked User"
       creator_name: "Creator"
       reason: "Reason for block"
@@ -3204,6 +3198,7 @@ en:
       empty: "No redactions to show."
       heading: "List of Redactions"
       title: "List of Redactions"
+      new: "New Redaction"
     new:
       heading: "Enter Information for New Redaction"
       title: "Creating New Redaction"
index 5ca72fe478263bde3b0234638990f1fc13ad8d92..b3bc4cf16f92900218605d4276b5141d18b76e8f 100644 (file)
@@ -102,7 +102,7 @@ class RedactionsControllerTest < ActionDispatch::IntegrationTest
     # create an empty redaction
     redaction = create(:redaction)
 
-    delete redaction_path(:id => redaction)
+    delete redaction_path(redaction)
     assert_redirected_to(redactions_path)
   end
 
@@ -113,7 +113,7 @@ class RedactionsControllerTest < ActionDispatch::IntegrationTest
     redaction = create(:redaction)
     create(:old_node, :redaction => redaction)
 
-    delete redaction_path(:id => redaction)
+    delete redaction_path(redaction)
     assert_redirected_to(redaction_path(redaction))
     assert_match(/^Redaction is not empty/, flash[:error])
   end
@@ -121,28 +121,28 @@ class RedactionsControllerTest < ActionDispatch::IntegrationTest
   def test_delete_non_moderator
     session_for(create(:user))
 
-    delete redaction_path(:id => create(:redaction))
+    delete redaction_path(create(:redaction))
     assert_redirected_to :controller => "errors", :action => "forbidden"
   end
 
   def test_edit
     redaction = create(:redaction)
 
-    get edit_redaction_path(:id => redaction)
+    get edit_redaction_path(redaction)
     assert_redirected_to login_path(:referer => edit_redaction_path(redaction))
   end
 
   def test_edit_moderator
     session_for(create(:moderator_user))
 
-    get edit_redaction_path(:id => create(:redaction))
+    get edit_redaction_path(create(:redaction))
     assert_response :success
   end
 
   def test_edit_non_moderator
     session_for(create(:user))
 
-    get edit_redaction_path(:id => create(:redaction))
+    get edit_redaction_path(create(:redaction))
     assert_redirected_to :controller => "errors", :action => "forbidden"
   end
 
@@ -151,7 +151,7 @@ class RedactionsControllerTest < ActionDispatch::IntegrationTest
 
     redaction = create(:redaction)
 
-    put redaction_path(:id => redaction, :redaction => { :title => "Foo", :description => "Description here." })
+    put redaction_path(redaction, :redaction => { :title => "Foo", :description => "Description here." })
     assert_redirected_to(redaction_path(redaction))
   end
 
@@ -160,7 +160,7 @@ class RedactionsControllerTest < ActionDispatch::IntegrationTest
 
     redaction = create(:redaction)
 
-    put redaction_path(:id => redaction, :redaction => { :title => "Foo", :description => "" })
+    put redaction_path(redaction, :redaction => { :title => "Foo", :description => "" })
     assert_response :success
     assert_template :edit
   end
@@ -170,7 +170,7 @@ class RedactionsControllerTest < ActionDispatch::IntegrationTest
 
     redaction = create(:redaction)
 
-    put redaction_path(:id => redaction, :redaction => { :title => "Foo", :description => "Description here." })
+    put redaction_path(redaction, :redaction => { :title => "Foo", :description => "Description here." })
     assert_redirected_to :controller => "errors", :action => "forbidden"
   end
 end
diff --git a/test/system/redaction_destroy_test.rb b/test/system/redaction_destroy_test.rb
new file mode 100644 (file)
index 0000000..db0b016
--- /dev/null
@@ -0,0 +1,33 @@
+require "application_system_test_case"
+
+class RedactionDestroyTest < ApplicationSystemTestCase
+  test "fails to delete nonempty redaction" do
+    redaction = create(:redaction, :title => "Some-unwanted-data-redaction")
+    create(:old_node, :redaction => redaction)
+
+    sign_in_as create(:moderator_user)
+    visit redaction_path(redaction)
+    assert_text "Some-unwanted-data-redaction"
+
+    accept_alert do
+      click_on "Remove this redaction"
+    end
+    assert_text "Redaction is not empty"
+    assert_text "Some-unwanted-data-redaction"
+  end
+
+  test "deletes empty redaction" do
+    redaction = create(:redaction, :title => "No-unwanted-data-redaction")
+
+    sign_in_as create(:moderator_user)
+    visit redaction_path(redaction)
+    assert_text "No-unwanted-data-redaction"
+
+    accept_alert do
+      click_on "Remove this redaction"
+    end
+    assert_text "Redaction destroyed"
+    assert_text "List of Redactions"
+    assert_no_text "No-unwanted-data-redaction"
+  end
+end