public function getDataForEditmode($data, $object = null, $params = [])
{
$editmodeData = [];
$idx = -1;
if ($data instanceof Object\Fieldcollection) {
foreach ($data as $item) {
$idx++;
if (!$item instanceof Object\Fieldcollection\Data\AbstractData) {
continue;
}
try {
$collectionDef = Object\Fieldcollection\Definition::getByKey($item->getType());
} catch (\Exception $e) {
continue;
}
$collectionData = [];
foreach ($collectionDef->getFieldDefinitions() as $fd) {
if (!$fd instanceof CalculatedValue) {
$collectionData[$fd->getName()] = $fd->getDataForEditmode($item->{$fd->getName()}, $object, $params);
}
}
$calculatedChilds = [];
self::collectCalculatedValueItems($collectionDef->getFieldDefinitions(), $calculatedChilds);
if ($calculatedChilds) {
foreach ($calculatedChilds as $fd) {
$data = new Object\Data\CalculatedValue($fd->getName());
$data->setContextualData("fieldcollection", $this->getName(), $idx, null, null, null, $fd);
$data = $fd->getDataForEditmode($data, $object, $params);
$collectionData[$fd->getName()] = $data;
}
}
$editmodeData[] = ["data" => $collectionData, "type" => $item->getType(), "oIndex" => $idx];
}
}
return $editmodeData;
}