Skip to content
Snippets Groups Projects
Commit d84c8e04 authored by Arnaud Levy's avatar Arnaud Levy
Browse files

Factor

parent e09cba58
No related branches found
No related tags found
No related merge requests found
......@@ -48,18 +48,19 @@ class Communication::Website::Page < ApplicationRecord
include Accessible
include Sanitizable
include WithUniversity
include WithBlobs
include WithBlocks
include WithDuplication
include WithFeaturedImage
include WithGit
include WithMenuItemTarget
include WithPosition
include WithTree
include WithPath
include WithType
include WithPermalink
include WithType
include WithTranslations
include WithUniversity
has_summernote :text # TODO: Remove text attribute
......@@ -110,19 +111,6 @@ class Communication::Website::Page < ApplicationRecord
active_storage_blobs
end
def duplicate
page = self.dup
page.published = false
page.save
blocks.ordered.each do |block|
b = block.duplicate
b.about = page
b.position = block.position
b.save
end
page
end
def to_s
"#{title}"
end
......
......@@ -39,15 +39,16 @@
#
class Communication::Website::Post < ApplicationRecord
include Sanitizable
include WithUniversity
include WithGit
include WithFeaturedImage
include WithBlobs
include WithBlocks
include WithDuplication
include WithFeaturedImage
include WithGit
include WithMenuItemTarget
include WithPermalink
include WithSlug # We override slug_unavailable? method
include WithTranslations
include WithUniversity
has_summernote :text # TODO: Remove text attribute
......@@ -145,20 +146,6 @@ class Communication::Website::Post < ApplicationRecord
"#{Static.remove_trailing_slash website.url}#{Static.clean_path current_permalink_in_website(website).path}"
end
def duplicate
post = self.dup
post.published = false
post.published_at = nil
post.save
blocks.ordered.each do |block|
b = block.duplicate
b.about = post
b.position = block.position
b.save
end
post
end
def translated_author
@translated_author ||= author.find_or_translate!(language)
end
......
module WithDuplication
extend ActiveSupport::Concern
def duplicate
instance = duplicate_instance
duplicate_blocks_to(instance)
duplicate_featured_image_to(instance)
instance
end
protected
def duplicate_instance
instance = self.dup
instance.published = false if respond_to?(:published)
instance.published_at = nil if respond_to?(:published_at)
instance.save
instance
end
def duplicate_blocks_to(instance)
return unless respond_to?(:blocks)
blocks.ordered.each do |block|
b = block.duplicate
b.about = instance
b.position = block.position
b.save
end
end
def duplicate_featured_image_to(instance)
return unless respond_to?(:featured_image) && featured_image.attached?
instance.featured_image.attach(
io: URI.open(featured_image.url),
filename: featured_image.filename.to_s,
content_type: featured_image.content_type
)
end
end
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment