From ed39a2b29f0472f3091fe3657230592e9236db7a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com>
Date: Fri, 8 Dec 2023 13:51:05 +0100
Subject: [PATCH] kwargs

---
 .../communication/blocks/headings_controller.rb    |  7 ++++++-
 .../admin/communication/blocks_controller.rb       | 14 ++++++++++++--
 .../admin/communication/contents_controller.rb     |  7 ++++++-
 .../communication/extranets/contacts_controller.rb |  7 ++++++-
 .../communication/websites/pages_controller.rb     |  7 ++++++-
 .../websites/permalinks_controller.rb              |  7 ++++++-
 app/controllers/admin/users_controller.rb          |  7 ++++++-
 app/services/polymorphic_object_finder.rb          |  9 +++++++--
 8 files changed, 55 insertions(+), 10 deletions(-)

diff --git a/app/controllers/admin/communication/blocks/headings_controller.rb b/app/controllers/admin/communication/blocks/headings_controller.rb
index 2374f946d..d1983eb11 100644
--- a/app/controllers/admin/communication/blocks/headings_controller.rb
+++ b/app/controllers/admin/communication/blocks/headings_controller.rb
@@ -20,7 +20,12 @@ class Admin::Communication::Blocks::HeadingsController < Admin::Communication::B
   end
 
   def new
-    @heading.about = PolymorphicObjectFinder.find(params, :about, current_university, only: Communication::Block::Heading.permitted_about_types)
+    @heading.about = PolymorphicObjectFinder.find(
+      params,
+      key: :about,
+      university: current_university,
+      only: Communication::Block::Heading.permitted_about_types
+    )
     breadcrumb
   end
 
diff --git a/app/controllers/admin/communication/blocks_controller.rb b/app/controllers/admin/communication/blocks_controller.rb
index a83687a49..2e745313d 100644
--- a/app/controllers/admin/communication/blocks_controller.rb
+++ b/app/controllers/admin/communication/blocks_controller.rb
@@ -18,7 +18,12 @@ class Admin::Communication::BlocksController < Admin::Communication::Application
   end
 
   def new
-    @block.about = PolymorphicObjectFinder.find(params, :about, current_university, only: Communication::Block.permitted_about_types)
+    @block.about = PolymorphicObjectFinder.find(
+      params,
+      key: :about,
+      university: current_university,
+      only: Communication::Block.permitted_about_types
+    )
     breadcrumb
   end
 
@@ -66,7 +71,12 @@ class Admin::Communication::BlocksController < Admin::Communication::Application
   end
 
   def paste
-    about = PolymorphicObjectFinder.find(params, :about, current_university, only: Communication::Block.permitted_about_types)
+    about = PolymorphicObjectFinder.find(
+      params,
+      key: :about,
+      university: current_university,
+      only: Communication::Block.permitted_about_types
+    )
     # On réattribue à @block pour bénéficier du calcul dans about_path
     @block = @block.paste(about)
     cookies.delete(Communication::Block::BLOCK_COPY_COOKIE, path: '/admin')
diff --git a/app/controllers/admin/communication/contents_controller.rb b/app/controllers/admin/communication/contents_controller.rb
index da8990934..17f13e68c 100644
--- a/app/controllers/admin/communication/contents_controller.rb
+++ b/app/controllers/admin/communication/contents_controller.rb
@@ -13,7 +13,12 @@ class Admin::Communication::ContentsController < Admin::Communication::Applicati
   protected
 
   def load_about
-    @about = PolymorphicObjectFinder.find(params, :about, current_university, only: Communication::Block.permitted_about_types)
+    @about = PolymorphicObjectFinder.find(
+      params,
+      key: :about,
+      university: current_university,
+      only: Communication::Block.permitted_about_types
+    )
     raise_403_unless can?(:edit, @about)
   end
 end
\ No newline at end of file
diff --git a/app/controllers/admin/communication/extranets/contacts_controller.rb b/app/controllers/admin/communication/extranets/contacts_controller.rb
index ef4c5facb..322316301 100644
--- a/app/controllers/admin/communication/extranets/contacts_controller.rb
+++ b/app/controllers/admin/communication/extranets/contacts_controller.rb
@@ -53,6 +53,11 @@ class Admin::Communication::Extranets::ContactsController < Admin::Communication
   protected
 
   def load_object
-    @object = PolymorphicObjectFinder.find(params, :object, current_university, only: Communication::Extranet::Connection.permitted_about_types)
+    @object = PolymorphicObjectFinder.find(
+      params,
+      key: :object,
+      university: current_university,
+      only: Communication::Extranet::Connection.permitted_about_types
+    )
   end
 end
diff --git a/app/controllers/admin/communication/websites/pages_controller.rb b/app/controllers/admin/communication/websites/pages_controller.rb
index 62d30afac..d50f72ac0 100644
--- a/app/controllers/admin/communication/websites/pages_controller.rb
+++ b/app/controllers/admin/communication/websites/pages_controller.rb
@@ -134,7 +134,12 @@ class Admin::Communication::Websites::PagesController < Admin::Communication::We
   protected
 
   def load_object
-    @object = PolymorphicObjectFinder.find(params, :object, current_university, only: [@page.class.direct_connection_permitted_about_type])
+    @object = PolymorphicObjectFinder.find(
+      params,
+      key: :object,
+      university: current_university,
+      only: [@page.class.direct_connection_permitted_about_type]
+    )
   end
 
   def breadcrumb
diff --git a/app/controllers/admin/communication/websites/permalinks_controller.rb b/app/controllers/admin/communication/websites/permalinks_controller.rb
index 0cc701056..7ca26206d 100644
--- a/app/controllers/admin/communication/websites/permalinks_controller.rb
+++ b/app/controllers/admin/communication/websites/permalinks_controller.rb
@@ -2,7 +2,12 @@ class Admin::Communication::Websites::PermalinksController < Admin::Communicatio
 
   def create
     @path = params['communication_website_permalink']['path']
-    @about = PolymorphicObjectFinder.find(params, :about, current_university, only: Communication::Website::Permalink.permitted_about_types)
+    @about = PolymorphicObjectFinder.find(
+      params,
+      key: :about,
+      university: current_university,
+      only: Communication::Website::Permalink.permitted_about_types
+    )
     @permalink = @about.add_redirection(@path)
   end
 end
\ No newline at end of file
diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb
index 2c5250e37..4dc7f7af9 100644
--- a/app/controllers/admin/users_controller.rb
+++ b/app/controllers/admin/users_controller.rb
@@ -21,7 +21,12 @@ class Admin::UsersController < Admin::ApplicationController
 
   def favorite
     operation = params[:operation]
-    about = PolymorphicObjectFinder.find(params, :about, current_university, only: User::Favorite.permitted_about_types)
+    about = PolymorphicObjectFinder.find(
+      params,
+      key: :about,
+      university: current_university,
+      only: User::Favorite.permitted_about_types
+    )
     if operation == 'add'
       current_user.add_favorite(about)
     else
diff --git a/app/services/polymorphic_object_finder.rb b/app/services/polymorphic_object_finder.rb
index 51517d8d0..214cc5522 100644
--- a/app/services/polymorphic_object_finder.rb
+++ b/app/services/polymorphic_object_finder.rb
@@ -1,8 +1,13 @@
 class PolymorphicObjectFinder
-  # @block.about = Polymorphic.find params, :about, current_university, only: ["Communication::Website::Page"]
+  # @block.about = Polymorphic.find(
+  #   params,
+  #   key: :about,
+  #   university: current_university,
+  #   only: ["Communication::Website::Page"]
+  # )
   # Rails uses ActiveRecord::Inheritance#polymorphic_name to hydrate the about_type.
   # Example: A Block for a Communication::Website::Page::Home will have about_type = "Communication::Website::Page"
-  def self.find(params, key, university, only: [])
+  def self.find(params, key:, university:, only: [])
     key_id = "#{key}_id".to_sym
     key_type = "#{key}_type".to_sym
     model_name = only.any? ? only.detect { |item| item == params[key_type] } : params[key_type]
-- 
GitLab