Skip to content

Commit

Permalink
Merge pull request #1 from AcclaroInc/develop
Browse files Browse the repository at this point in the history
🐛 Fixed issue with deeply nested Super Table fields
  • Loading branch information
sidedwards authored Mar 25, 2019
2 parents 4ae7db5 + 27587ff commit 78edb14
Showing 1 changed file with 40 additions and 12 deletions.
52 changes: 40 additions & 12 deletions src/services/fieldtranslator/SuperTableFieldTranslator.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,22 @@ public function toTranslationSource(ElementTranslator $elementTranslator, Elemen
if ($blocks) {
foreach ($blocks as $block) {
if (!$block instanceof ElementQuery) {
$blockSource = $elementTranslator->toTranslationSource($block);
foreach ($blockSource as $key => $value) {
$key = sprintf('%s.%s.%s', $field->handle, $block->id, $key);

$source[$key] = $value;
if (is_array($block)) {
foreach ($block as $key => $elem) {
$blockSource = $elementTranslator->toTranslationSource($elem);
foreach ($blockSource as $key => $value) {
$key = sprintf('%s.%s.%s', $field->handle, $elem->id, $key);

$source[$key] = $value;
}
}
} else {
$blockSource = $elementTranslator->toTranslationSource($block);
foreach ($blockSource as $key => $value) {
$key = sprintf('%s.%s.%s', $field->handle, $block->id, $key);

$source[$key] = $value;
}
}
} else {
$blockElem = $element->getFieldValue($fieldHandle);
Expand Down Expand Up @@ -96,12 +107,23 @@ public function toPostArrayFromTranslationTarget(ElementTranslator $elementTrans
$j = 0;
foreach ($blocks as $i => $block) {
if (!$block instanceof ElementQuery) {
$blockData = isset($fieldData[$j]) ? $fieldData[$j] : array();
$post[$fieldHandle]['new'.($j+1)] = array(
'type' => $blockType->id,
'fields' => $elementTranslator->toPostArrayFromTranslationTarget($block, $sourceLanguage, $targetLanguage, $blockData, true),
);
$j++;
if (is_array($block)) {
foreach ($block as $key => $elem) {
$blockData = isset($fieldData[$j]) ? $fieldData[$j] : array();
$post[$fieldHandle]['new'.($j+1)] = array(
'type' => $blockType->id,
'fields' => $elementTranslator->toPostArrayFromTranslationTarget($elem, $sourceLanguage, $targetLanguage, $blockData, true),
);
$j++;
}
} else {
$blockData = isset($fieldData[$j]) ? $fieldData[$j] : array();
$post[$fieldHandle]['new'.($j+1)] = array(
'type' => $blockType->id,
'fields' => $elementTranslator->toPostArrayFromTranslationTarget($block, $sourceLanguage, $targetLanguage, $blockData, true),
);
$j++;
}
} else {
$blockElem = $element->getFieldValue($fieldHandle);
foreach ($blockElem as $key => $block) {
Expand Down Expand Up @@ -135,7 +157,13 @@ public function getWordCount(ElementTranslator $elementTranslator, Element $elem
if ($blocks) {
foreach ($blocks as $i => $block) {
if (!$block instanceof ElementQuery) {
$wordCount += $elementTranslator->getWordCount($block);
if (is_array($block)) {
foreach ($block as $key => $elem) {
$wordCount += $elementTranslator->getWordCount($elem);
}
} else {
$wordCount += $elementTranslator->getWordCount($block);
}
} else {
$blockElem = $element->getFieldValue($field->handle)->all();
foreach ($blockElem as $key => $block) {
Expand Down

0 comments on commit 78edb14

Please sign in to comment.