Skip to content

Commit

Permalink
Updated actions to duplicate, export and import menus
Browse files Browse the repository at this point in the history
  • Loading branch information
Martyna Maciejewska committed Feb 6, 2024
1 parent 1081f08 commit f3f6fcd
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
1 change: 1 addition & 0 deletions Model/ImportExport/Processor/Import.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public function importData(array $data): string
$this->validateData($data);

$menu = $this->createMenu($data);
$menuId = $menu->getId();

if (isset($data[ExtendedFields::NODES])) {
$this->nodeProcessor->createNodes($data[ExtendedFields::NODES], (int) $menu->getId());
Expand Down
11 changes: 9 additions & 2 deletions Model/ImportExport/Processor/Import/Node/DataProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace Snowdog\Menu\Model\ImportExport\Processor\Import\Node;

use Snowdog\Menu\Api\Data\NodeInterface;
use Snowdog\Menu\Helper\MenuHelper;
use Snowdog\Menu\Model\ImportExport\Processor\ExtendedFields;
use Snowdog\Menu\Model\ImportExport\Processor\Import\FieldProcessor\Boolean as BooleanField;
use Snowdog\Menu\Model\ImportExport\Processor\Import\Node\TypeContent;
Expand All @@ -21,10 +22,16 @@ class DataProcessor
*/
private $typeContent;

public function __construct(BooleanField $booleanField, TypeContent $typeContent)
/**
* @var MenuHelper
*/
private $menuHelper;

public function __construct(BooleanField $booleanField, TypeContent $typeContent, MenuHelper $menuHelper)
{
$this->booleanField = $booleanField;
$this->typeContent = $typeContent;
$this->menuHelper = $menuHelper;
}

public function getData(
Expand All @@ -34,7 +41,7 @@ public function getData(
int $position = 0,
?int $parentId = null
): array {
$data[NodeInterface::MENU_ID] = $menuId;
$data[$this->menuHelper->getLinkField()] = $menuId;
$data[NodeInterface::PARENT_ID] = $parentId;
$data[NodeInterface::LEVEL] = $level;
$data[NodeInterface::POSITION] = $position;
Expand Down
14 changes: 11 additions & 3 deletions Service/Menu/Cloner.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use Snowdog\Menu\Api\Data\NodeInterfaceFactory;
use Snowdog\Menu\Api\MenuRepositoryInterface;
use Snowdog\Menu\Api\NodeRepositoryInterface;
use Snowdog\Menu\Helper\MenuHelper;
use Snowdog\Menu\Model\ImportExport\Processor\Import\Menu\Identifier as MenuIdentifierProcessor;
use Snowdog\Menu\Model\NodeTypeProvider;
use Snowdog\Menu\Service\Menu\Nodes as MenuNodes;
Expand Down Expand Up @@ -57,6 +58,11 @@ class Cloner
*/
private $menuNodes;

/**
* @var MenuHelper
*/
private $menuHelper;

public function __construct(
ResourceConnection $resource,
MenuInterfaceFactory $menuFactory,
Expand All @@ -65,7 +71,8 @@ public function __construct(
NodeRepositoryInterface $nodeRepository,
MenuIdentifierProcessor $menuIdentifierProcessor,
NodeTypeProvider $nodeTypeProvider,
MenuNodes $menuNodes
MenuNodes $menuNodes,
MenuHelper $menuHelper
) {
$this->resource = $resource;
$this->menuFactory = $menuFactory;
Expand All @@ -75,6 +82,7 @@ public function __construct(
$this->menuIdentifierProcessor = $menuIdentifierProcessor;
$this->nodeTypeProvider = $nodeTypeProvider;
$this->menuNodes = $menuNodes;
$this->menuHelper = $menuHelper;
}

/**
Expand All @@ -98,15 +106,15 @@ public function clone(MenuInterface $menu): MenuInterface
$this->menuRepository->save($menuClone);
$menuClone->saveStores($menu->getStores());

$menuCloneId = $menuClone->getId();
$menuCloneId = $this->menuHelper->getLinkValue($menuClone);
$nodeIdMap = [];

foreach ($this->menuNodes->getList($menu) as $node) {
$nodeClone = $this->nodeFactory->create();

$nodeClone->setData($node->getData());
$nodeClone->setId(null);
$nodeClone->setMenuId($menuCloneId);
$nodeClone->setData($this->menuHelper->getLinkField(), $menuCloneId);

if (isset($nodeIdMap[$node->getParentId()])) {
$nodeClone->setParentId($nodeIdMap[$node->getParentId()]);
Expand Down

0 comments on commit f3f6fcd

Please sign in to comment.