Skip to content
Snippets Groups Projects
Unverified Commit ebe92a69 authored by Sébastien Gaya's avatar Sébastien Gaya Committed by GitHub
Browse files

Merge pull request #1150 from noesya/fix-duplicate-blocks

Correction de la duplication d'un objet ayant des blocs et des headings
parents 0459f484 fa09591e
No related branches found
No related tags found
No related merge requests found
......@@ -54,6 +54,12 @@ class Communication::Block::Heading < ApplicationRecord
[about]
end
def duplicate
heading = self.dup
heading.save
heading
end
def translate!(about_translation, parent_id = nil)
translation = self.dup
translation.about = about_translation
......
......@@ -3,7 +3,7 @@ module WithDuplication
def duplicate
instance = duplicate_instance
duplicate_blocks_to(instance)
duplicate_contents_to(instance)
duplicate_featured_image_to(instance)
instance
end
......@@ -18,13 +18,36 @@ module WithDuplication
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
def duplicate_contents_to(instance)
return unless respond_to?(:contents)
blocks.without_heading.ordered.each do |block|
duplicate_block(instance, block)
end
headings.root.ordered.each do |heading|
duplicate_heading(instance, heading)
end
end
def duplicate_block(instance, block, heading_id = nil)
duplicated_block = block.duplicate
duplicated_block.about = instance
duplicated_block.position = block.position
duplicated_block.heading_id = heading_id
duplicated_block.save
end
def duplicate_heading(instance, heading, parent_id = nil)
duplicated_heading = heading.duplicate
duplicated_heading.about = instance
duplicated_heading.position = heading.position
duplicated_heading.parent_id = parent_id
duplicated_heading.save
heading.blocks.ordered.each do |block|
duplicate_block(instance, block, duplicated_heading.id)
end
heading.children.ordered.each do |child|
duplicate_heading(instance, child, duplicated_heading.id)
end
end
......
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