Skip to content

Commit 3554e20

Browse files
committed
Fix: nested repeaters
1 parent 7033088 commit 3554e20

File tree

4 files changed

+23
-12
lines changed

4 files changed

+23
-12
lines changed

frontend/js/components/Repeater.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,11 @@
123123
handle: '.block__handle' // drag handle
124124
}
125125
},
126+
provide() {
127+
return {
128+
nested_block_name: this.name + '|',
129+
}
130+
},
126131
computed: {
127132
triggerVariant: function () {
128133
if (this.buttonAsLink) {

frontend/js/components/blocks/Blocks.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,11 @@
171171
handle: '.block__handle' // drag handle
172172
}
173173
},
174+
provide() {
175+
return {
176+
nested_block_name: this.name + '|',
177+
}
178+
},
174179
computed: {
175180
...mapState({
176181
editor: state => state.blocks.editor,

frontend/js/mixins/block.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export default {
1414
opened: this.isOpen
1515
}
1616
},
17+
inject: {nested_block_name: {default: ''}},
1718
methods: {
1819
open: function () {
1920
this.opened = true
@@ -22,10 +23,10 @@ export default {
2223
return this.name + '[' + id + ']' // output : nameOfBlock[UniqID][name]
2324
},
2425
repeaterName: function (id) {
25-
return this.name.replace('[', '-').replace(']', '') + '|' + id // nameOfBlock-UniqID|name
26+
return this.nested_block_name + this.name.replace('[', '-').replace(']', '') + '|' + id // nameOfBlock-UniqID|name
2627
},
2728
nestedEditorName: function (id) {
28-
return this.name.replace('[', '-').replace(']', '') + '|' + id // nameOfBlock-UniqID|name
29+
return this.repeaterName(id)
2930
}
3031
}
3132
}

src/Repositories/Behaviors/HandleRepeaters.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -474,22 +474,22 @@ function ($files, $role) use ($locale, $relation, $relationItem) {
474474
// @todo: Can we make this work without custom pivot tables?
475475
if (isset($relatedItemFormFields['repeaters'])) {
476476
foreach ($relatedItemFormFields['repeaters'] as $childRepeaterName => $childRepeaterItems) {
477-
$fields['repeaters']["blocks-$relation-{$relationItem->id}_$childRepeaterName"] = $childRepeaterItems;
477+
$fields['repeaters']["$repeaterName|blocks-$relation-{$relationItem->id}|$childRepeaterName"] = $childRepeaterItems;
478478
$repeatersFields = array_merge(
479479
$repeatersFields,
480-
$relatedItemFormFields['repeaterFields'][$childRepeaterName]
480+
$relatedItemFormFields['repeaterFields'][$childRepeaterName] ?? []
481481
);
482482
$repeatersMedias = array_merge(
483483
$repeatersMedias,
484-
$relatedItemFormFields['repeaterMedias'][$childRepeaterName]
484+
$relatedItemFormFields['repeaterMedias'][$childRepeaterName] ?? []
485485
);
486486
$repeatersFiles = array_merge(
487487
$repeatersFiles,
488-
$relatedItemFormFields['repeaterFiles'][$childRepeaterName]
488+
$relatedItemFormFields['repeaterFiles'][$childRepeaterName] ?? []
489489
);
490490
$repeatersBrowsers = array_merge(
491491
$repeatersBrowsers,
492-
$relatedItemFormFields['repeaterBrowsers'][$childRepeaterName]
492+
$relatedItemFormFields['repeaterBrowsers'][$childRepeaterName] ?? []
493493
);
494494
}
495495
}
@@ -613,22 +613,22 @@ function ($files, $role) use ($locale, $relation, $relationItem) {
613613

614614
if (isset($relatedItemFormFields['repeaters'])) {
615615
foreach ($relatedItemFormFields['repeaters'] as $childRepeaterName => $childRepeaterItems) {
616-
$fields['repeaters']["blocks-$relation-{$relationItem->id}_$childRepeaterName"] = $childRepeaterItems;
616+
$fields['repeaters']["$repeaterName|blocks-$relation-{$relationItem->id}|$childRepeaterName"] = $childRepeaterItems;
617617
$repeatersFields = array_merge(
618618
$repeatersFields,
619-
$relatedItemFormFields['repeaterFields'][$childRepeaterName]
619+
$relatedItemFormFields['repeaterFields'][$childRepeaterName] ?? []
620620
);
621621
$repeatersMedias = array_merge(
622622
$repeatersMedias,
623-
$relatedItemFormFields['repeaterMedias'][$childRepeaterName]
623+
$relatedItemFormFields['repeaterMedias'][$childRepeaterName] ?? []
624624
);
625625
$repeatersFiles = array_merge(
626626
$repeatersFiles,
627-
$relatedItemFormFields['repeaterFiles'][$childRepeaterName]
627+
$relatedItemFormFields['repeaterFiles'][$childRepeaterName] ?? []
628628
);
629629
$repeatersBrowsers = array_merge(
630630
$repeatersBrowsers,
631-
$relatedItemFormFields['repeaterBrowsers'][$childRepeaterName]
631+
$relatedItemFormFields['repeaterBrowsers'][$childRepeaterName] ?? []
632632
);
633633
}
634634
}

0 commit comments

Comments
 (0)