From 673fca0f20e59231cdfab33dc0980ffd187c92dd Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Fri, 2 Dec 2022 18:01:28 +0100
Subject: [PATCH] same concern with better name

---
 app/models/communication/website/category.rb  |  3 +-
 app/models/communication/website/page.rb      |  3 +-
 app/models/communication/website/post.rb      |  3 +-
 .../concerns/with_permalink_in_website.rb     | 52 +++++++++++++++++++
 app/models/concerns/with_website_permalink.rb | 35 -------------
 .../concerns/with_website_previous_links.rb   | 24 ---------
 app/models/university/person.rb               |  3 +-
 7 files changed, 56 insertions(+), 67 deletions(-)
 create mode 100644 app/models/concerns/with_permalink_in_website.rb
 delete mode 100644 app/models/concerns/with_website_permalink.rb
 delete mode 100644 app/models/concerns/with_website_previous_links.rb

diff --git a/app/models/communication/website/category.rb b/app/models/communication/website/category.rb
index 677e7f8cc..f6d210fb5 100644
--- a/app/models/communication/website/category.rb
+++ b/app/models/communication/website/category.rb
@@ -44,9 +44,8 @@ class Communication::Website::Category < ApplicationRecord
   include WithMenuItemTarget
   include WithSlug # We override slug_unavailable? method
   include WithTree
+  include WithPermalinkInWebsite
   include WithPosition
-  include WithWebsitePermalink
-  include WithWebsitePreviousLinks
 
   has_one                 :imported_category,
                           class_name: 'Communication::Website::Imported::Category',
diff --git a/app/models/communication/website/page.rb b/app/models/communication/website/page.rb
index 3c57eba39..b07d183eb 100644
--- a/app/models/communication/website/page.rb
+++ b/app/models/communication/website/page.rb
@@ -53,8 +53,7 @@ class Communication::Website::Page < ApplicationRecord
   include WithPosition
   include WithTree
   include WithPath
-  include WithWebsitePermalink
-  include WithWebsitePreviousLinks
+  include WithPermalinkInWebsite
 
   has_summernote :text
 
diff --git a/app/models/communication/website/post.rb b/app/models/communication/website/post.rb
index 06f2653eb..5bebc101d 100644
--- a/app/models/communication/website/post.rb
+++ b/app/models/communication/website/post.rb
@@ -42,9 +42,8 @@ class Communication::Website::Post < ApplicationRecord
   include WithBlobs
   include WithBlocks
   include WithMenuItemTarget
+  include WithPermalinkInWebsite
   include WithSlug # We override slug_unavailable? method
-  include WithWebsitePermalink
-  include WithWebsitePreviousLinks
 
   has_summernote :text
 
diff --git a/app/models/concerns/with_permalink_in_website.rb b/app/models/concerns/with_permalink_in_website.rb
new file mode 100644
index 000000000..78e107e43
--- /dev/null
+++ b/app/models/concerns/with_permalink_in_website.rb
@@ -0,0 +1,52 @@
+module WithPermalinkInWebsite
+  extend ActiveSupport::Concern
+
+  included do
+
+    has_many  :previous_links,
+              class_name: "Communication::Website::PreviousLink",
+              as: :about,
+              dependent: :destroy
+
+    after_validation :manage_previous_links, on: [:create, :update]
+
+  end
+
+  def permalink_in_website(website)
+    computed_permalink = computed_permalink_in_website(website)
+    computed_permalink.present? ? Static.clean_path(computed_permalink) : nil
+  end
+
+  def previous_permalink_in_website(website)
+    computed_permalink = previous_computed_permalink_in_website(website)
+    computed_permalink.present? ? Static.clean_path(computed_permalink) : nil
+  end
+
+  def computed_permalink_in_website(website)
+    raw_permalink_in_website(website)&.gsub(':slug', self.slug)
+  end
+
+  def previous_computed_permalink_in_website(website)
+    raw_permalink_in_website(website)&.gsub(':slug', self.slug_was)
+  end
+
+  def manage_previous_links
+    websites_for_self.each do |website|
+      old_permalink = previous_permalink_in_website(website)
+      new_permalink = permalink_in_website(website)
+
+      # If the object had a permalink and now is different, we create a previous link
+      previous_links.create(website: website, link: old_permalink) if old_permalink.present? && new_permalink != old_permalink
+    end
+  end
+
+  protected
+
+  def raw_permalink_in_website(website)
+    website.config_permalinks.permalinks_data[permalink_config_key]
+  end
+
+  def permalink_config_key
+    raise NotImplementedError
+  end
+end
diff --git a/app/models/concerns/with_website_permalink.rb b/app/models/concerns/with_website_permalink.rb
deleted file mode 100644
index 69eb50b8d..000000000
--- a/app/models/concerns/with_website_permalink.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-module WithWebsitePermalink
-  extend ActiveSupport::Concern
-
-  included do
-
-    def permalink_in_website(website)
-      computed_permalink = computed_permalink_in_website(website)
-      computed_permalink.present? ? Static.clean_path(computed_permalink) : nil
-    end
-
-    def previous_permalink_in_website(website)
-      computed_permalink = previous_computed_permalink_in_website(website)
-      computed_permalink.present? ? Static.clean_path(computed_permalink) : nil
-    end
-
-    def computed_permalink_in_website(website)
-      raw_permalink_in_website(website)&.gsub(':slug', self.slug)
-    end
-
-    def previous_computed_permalink_in_website(website)
-      raw_permalink_in_website(website)&.gsub(':slug', self.slug_was)
-    end
-
-    protected
-
-    def raw_permalink_in_website(website)
-      website.config_permalinks.permalinks_data[permalink_config_key]
-    end
-
-    def permalink_config_key
-      raise NotImplementedError
-    end
-
-  end
-end
diff --git a/app/models/concerns/with_website_previous_links.rb b/app/models/concerns/with_website_previous_links.rb
deleted file mode 100644
index 42a343448..000000000
--- a/app/models/concerns/with_website_previous_links.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-module WithWebsitePreviousLinks
-  extend ActiveSupport::Concern
-
-  included do
-
-    has_many  :previous_links,
-              class_name: "Communication::Website::PreviousLink",
-              as: :about,
-              dependent: :destroy
-
-    after_validation :manage_previous_links, on: [:create, :update]
-
-    def manage_previous_links
-      websites_for_self.each do |website|
-        old_permalink = previous_permalink_in_website(website)
-        new_permalink = permalink_in_website(website)
-
-        # If the object had a permalink and now is different, we create a previous link
-        previous_links.create(website: website, link: old_permalink) if old_permalink.present? && new_permalink != old_permalink
-      end
-    end
-
-  end
-end
diff --git a/app/models/university/person.rb b/app/models/university/person.rb
index 0585737af..7310fc80e 100644
--- a/app/models/university/person.rb
+++ b/app/models/university/person.rb
@@ -56,8 +56,7 @@ class University::Person < ApplicationRecord
   include WithPicture
   include WithRoles
   include WithBlocks
-  include WithWebsitePermalink
-  include WithWebsitePreviousLinks
+  include WithPermalinkInWebsite
 
   LIST_OF_ROLES = [
     :administration,
-- 
GitLab