diff --git a/Block/Adminhtml/Edit/Tab/Nodes.php b/Block/Adminhtml/Edit/Tab/Nodes.php index 2b8dbeaa..8e02af69 100644 --- a/Block/Adminhtml/Edit/Tab/Nodes.php +++ b/Block/Adminhtml/Edit/Tab/Nodes.php @@ -7,6 +7,7 @@ use Magento\Framework\Registry; use Snowdog\Menu\Api\NodeRepositoryInterface; use Snowdog\Menu\Controller\Adminhtml\Menu\Edit; +use Snowdog\Menu\Helper\MenuHelper; use Snowdog\Menu\Model\Menu\Node\Image\File as ImageFile; use Snowdog\Menu\Model\NodeTypeProvider; use Snowdog\Menu\Model\VueProvider; @@ -45,7 +46,13 @@ class Nodes extends Template implements TabInterface */ private $vueProvider; + /** + * @var MenuHelper + */ + private $menuHelper; + public function __construct( + MenuHelper $menuHelper, Template\Context $context, NodeRepositoryInterface $nodeRepository, ImageFile $imageFile, @@ -60,6 +67,7 @@ public function __construct( $this->nodeTypeProvider = $nodeTypeProvider; $this->imageFile = $imageFile; $this->vueProvider = $vueProvider; + $this->menuHelper = $menuHelper; } public function renderNodes() @@ -67,7 +75,7 @@ public function renderNodes() $menu = $this->registry->registry(Edit::REGISTRY_CODE); $data = []; if ($menu) { - $nodes = $this->nodeRepository->getByMenu($menu->getId()); + $nodes = $this->nodeRepository->getByMenu($this->menuHelper->getLinkValue($menu)); if (!empty($nodes)) { foreach ($nodes as $node) { $level = $node->getLevel(); @@ -206,4 +214,13 @@ public function getVueComponents(): array { return $this->vueProvider->getComponents(); } + + /** + * @throws LocalizedException + */ + public function getBlockHtmlId(): string + { + $uuid = $this->mathRandom->getRandomString(5); + return '"snowdog-menu-' . $uuid . '"'; + } } diff --git a/Controller/Adminhtml/Menu/Delete.php b/Controller/Adminhtml/Menu/Delete.php index c767f6fe..7fe2dfce 100644 --- a/Controller/Adminhtml/Menu/Delete.php +++ b/Controller/Adminhtml/Menu/Delete.php @@ -16,6 +16,7 @@ use Magento\Framework\Controller\ResultInterface; use Magento\Framework\Exception\NotFoundException; use Snowdog\Menu\Controller\Adminhtml\MenuAction; +use Snowdog\Menu\Helper\MenuHelper; use Snowdog\Menu\Model\MenuFactory; /** @@ -46,6 +47,12 @@ class Delete extends MenuAction private $searchCriteriaBuilderFactory; /** + * @var MenuHelper + */ + private $menuHelper; + + /** + * @param MenuHelper $menuHelper * @param Action\Context $context * @param MenuRepositoryInterface $menuRepository * @param NodeRepositoryInterface $nodeRepository @@ -55,6 +62,7 @@ class Delete extends MenuAction * @param MenuFactory $menuFactory */ public function __construct( + MenuHelper $menuHelper, Action\Context $context, MenuRepositoryInterface $menuRepository, NodeRepositoryInterface $nodeRepository, @@ -64,6 +72,7 @@ public function __construct( MenuFactory $menuFactory ) { parent::__construct($context, $menuRepository, $menuFactory); + $this->menuHelper = $menuHelper; $this->nodeRepository = $nodeRepository; $this->filterBuilderFactory = $filterBuilderFactory; $this->filterGroupBuilderFactory = $filterGroupBuilderFactory; @@ -87,8 +96,8 @@ public function execute() $this->menuRepository->delete($menu); $filterBuilder = $this->filterBuilderFactory->create(); - $filter = $filterBuilder->setField('menu_id') - ->setValue($menu->getMenuId()) + $filter = $filterBuilder->setField($this->menuHelper->getLinkField()) + ->setValue($this->menuHelper->getLinkValue($menu)) ->setConditionType('eq') ->create(); diff --git a/Helper/MenuHelper.php b/Helper/MenuHelper.php new file mode 100644 index 00000000..9392cc75 --- /dev/null +++ b/Helper/MenuHelper.php @@ -0,0 +1,32 @@ +metadataPool = $metadataPool; + parent::__construct($context); + } + + public function getLinkField(): string + { + $metadata = $this->metadataPool->getMetadata(MenuInterface::class); + return $metadata->getLinkField(); + } + + public function getLinkValue(MenuInterface $menu): string + { + return (string) $menu->getData($this->getLinkField()); + } +} diff --git a/Model/ImportExport/Processor/Export.php b/Model/ImportExport/Processor/Export.php index 6eb36716..833d7690 100644 --- a/Model/ImportExport/Processor/Export.php +++ b/Model/ImportExport/Processor/Export.php @@ -4,6 +4,7 @@ namespace Snowdog\Menu\Model\ImportExport\Processor; +use Snowdog\Menu\Helper\MenuHelper; use Snowdog\Menu\Model\ImportExport\Processor\Export\Menu; use Snowdog\Menu\Model\ImportExport\Processor\Export\Node; use Snowdog\Menu\Model\ImportExport\Processor\ExtendedFields; @@ -20,16 +21,22 @@ class Export */ private $node; - public function __construct(Menu $menu, Node $node) + /** + * @var MenuHelper + */ + private $menuHelper; + + public function __construct(Menu $menu, Node $node, MenuHelper $menuHelper) { $this->menu = $menu; $this->node = $node; + $this->menuHelper = $menuHelper; } public function getExportData(int $menuId): array { $data = $this->menu->getData($menuId); - $nodes = $this->node->getList($menuId); + $nodes = $this->node->getList((int) $data[$this->menuHelper->getLinkField()]); if ($nodes) { $data[ExtendedFields::NODES] = $nodes; diff --git a/Model/ImportExport/Processor/Export/Node.php b/Model/ImportExport/Processor/Export/Node.php index 77b51209..681100c0 100644 --- a/Model/ImportExport/Processor/Export/Node.php +++ b/Model/ImportExport/Processor/Export/Node.php @@ -7,8 +7,10 @@ use Magento\Framework\Api\SearchCriteriaBuilder; use Magento\Framework\Api\SortOrder; use Magento\Framework\Api\SortOrderBuilder; +use Snowdog\Menu\Api\Data\MenuInterface; use Snowdog\Menu\Api\Data\NodeInterface; use Snowdog\Menu\Api\NodeRepositoryInterface; +use Snowdog\Menu\Helper\MenuHelper; use Snowdog\Menu\Model\ImportExport\Processor\Export\Node\Tree as NodeTree; class Node @@ -40,7 +42,13 @@ class Node */ private $nodeTree; + /** + * @var MenuHelper + */ + private $menuHelper; + public function __construct( + MenuHelper $menuHelper, SearchCriteriaBuilder $searchCriteriaBuilder, SortOrderBuilder $sortOrderBuilder, NodeRepositoryInterface $nodeRepository, @@ -50,6 +58,7 @@ public function __construct( $this->sortOrderBuilder = $sortOrderBuilder; $this->nodeRepository = $nodeRepository; $this->nodeTree = $nodeTree; + $this->menuHelper = $menuHelper; } public function getList(int $menuId): array @@ -60,7 +69,7 @@ public function getList(int $menuId): array ->create(); $searchCriteria = $this->searchCriteriaBuilder - ->addFilter(NodeInterface::MENU_ID, $menuId) + ->addFilter($this->menuHelper->getLinkField(), $menuId) ->setSortOrders([$sortOrder]) ->create(); diff --git a/Model/ImportExport/Processor/Import.php b/Model/ImportExport/Processor/Import.php index 1d2c021f..406e3532 100644 --- a/Model/ImportExport/Processor/Import.php +++ b/Model/ImportExport/Processor/Import.php @@ -6,6 +6,7 @@ use Magento\Framework\App\Config\ScopeConfigInterface; use Snowdog\Menu\Api\Data\MenuInterface; +use Snowdog\Menu\Helper\MenuHelper; use Snowdog\Menu\Model\ImportExport\Processor\Import\InvalidNodes as InvalidNodesProcessor; use Snowdog\Menu\Model\ImportExport\Processor\Import\Menu as MenuProcessor; use Snowdog\Menu\Model\ImportExport\Processor\Import\Node as NodeProcessor; @@ -33,23 +34,31 @@ class Import * @var InvalidNodesProcessor */ private $invalidNodesProcessor; + /** * @var ScopeConfigInterface */ private $scopeConfig; + /** + * @var MenuHelper + */ + private $menuHelper; + public function __construct( MenuProcessor $menuProcessor, NodeProcessor $nodeProcessor, ValidationAggregateError $validationAggregateError, InvalidNodesProcessor $invalidNodesProcessor, - ScopeConfigInterface $scopeConfig + ScopeConfigInterface $scopeConfig, + MenuHelper $menuHelper ) { $this->menuProcessor = $menuProcessor; $this->nodeProcessor = $nodeProcessor; $this->validationAggregateError = $validationAggregateError; $this->invalidNodesProcessor = $invalidNodesProcessor; $this->scopeConfig = $scopeConfig; + $this->menuHelper = $menuHelper; } /** @@ -60,9 +69,9 @@ public function importData(array $data): string $this->validateData($data); $menu = $this->createMenu($data); - + $menuId = $menu->getData($this->menuHelper->getLinkField()); if (isset($data[ExtendedFields::NODES])) { - $this->nodeProcessor->createNodes($data[ExtendedFields::NODES], (int) $menu->getId()); + $this->nodeProcessor->createNodes($data[ExtendedFields::NODES], (int) $menuId); } return $menu->getIdentifier(); diff --git a/Model/ImportExport/Processor/Import/Node/DataProcessor.php b/Model/ImportExport/Processor/Import/Node/DataProcessor.php index f74e3d10..33fd657e 100644 --- a/Model/ImportExport/Processor/Import/Node/DataProcessor.php +++ b/Model/ImportExport/Processor/Import/Node/DataProcessor.php @@ -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; @@ -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( @@ -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; diff --git a/Model/Menu.php b/Model/Menu.php index 886f0c59..6afc6689 100644 --- a/Model/Menu.php +++ b/Model/Menu.php @@ -1,9 +1,15 @@ menuHelper = $menuHelper; + parent::__construct($context, $registry, $resource, $resourceCollection, $data); + } + protected function _construct() { $this->_init(\Snowdog\Menu\Model\ResourceModel\Menu::class); @@ -28,8 +51,8 @@ public function getStores() { $connection = $this->getResource()->getConnection(); $select = $connection->select()->from($this->getResource()->getTable('snowmenu_store'), ['store_id'])->where( - 'menu_id = ?', - $this->getId() + $this->menuHelper->getLinkField() . ' = ?', + $this->menuHelper->getLinkValue($this) ); return $connection->fetchCol($select); } @@ -46,9 +69,9 @@ public function saveStores(array $stores) $connection = $this->getResource()->getConnection(); $connection->beginTransaction(); $table = $this->getResource()->getTable('snowmenu_store'); - $connection->delete($table, ['menu_id = ?' => $this->getId()]); + $connection->delete($table, [$this->menuHelper->getLinkField() . ' = ?' => $this->menuHelper->getLinkValue($this)]); foreach ($stores as $store) { - $connection->insert($table, ['menu_id' => $this->getId(), 'store_id' => $store]); + $connection->insert($table, [$this->menuHelper->getLinkField() => $this->menuHelper->getLinkValue($this), 'store_id' => $store]); } $connection->commit(); diff --git a/Model/Menu/NodeRepository.php b/Model/Menu/NodeRepository.php index dc69be42..4791c0e7 100644 --- a/Model/Menu/NodeRepository.php +++ b/Model/Menu/NodeRepository.php @@ -8,16 +8,24 @@ use Magento\Framework\Exception\NoSuchEntityException; use Magento\Framework\Exception\CouldNotDeleteException; use Magento\Framework\Api\SearchResultsInterfaceFactory; -use Magento\Framework\Api\SearchResultsInterface; use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection; +use Snowdog\Menu\Api\Data\MenuInterface; use Snowdog\Menu\Api\Data\NodeInterface; use Snowdog\Menu\Api\NodeRepositoryInterface; -use Snowdog\Menu\Model\Menu\NodeFactory; +use Snowdog\Menu\Helper\MenuHelper; use Snowdog\Menu\Model\ResourceModel\Menu\Node\CollectionFactory; use Magento\Framework\Api\SortOrder; +/** + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ class NodeRepository implements NodeRepositoryInterface { + /** + * @var MenuHelper + */ + protected $menuHelper; + /** * @var NodeFactory */ @@ -36,8 +44,10 @@ class NodeRepository implements NodeRepositoryInterface public function __construct( NodeFactory $objectFactory, CollectionFactory $collectionFactory, - SearchResultsInterfaceFactory $searchResultsFactory + SearchResultsInterfaceFactory $searchResultsFactory, + MenuHelper $menuHelper ) { + $this->menuHelper = $menuHelper; $this->objectFactory = $objectFactory; $this->collectionFactory = $collectionFactory; $this->searchResultsFactory = $searchResultsFactory; @@ -139,7 +149,7 @@ public function getList(SearchCriteriaInterface $criteria) public function getByMenu($menuId) { $collection = $this->collectionFactory->create(); - $collection->addFilter('menu_id', $menuId); + $collection->addFilter($this->menuHelper->getLinkField(), $menuId); $collection->addOrder('level', AbstractCollection::SORT_ORDER_ASC); $collection->addOrder('parent_id', AbstractCollection::SORT_ORDER_ASC); $collection->addOrder('position', AbstractCollection::SORT_ORDER_ASC); diff --git a/Model/MenuRepository.php b/Model/MenuRepository.php index 420874cf..5ade19a3 100644 --- a/Model/MenuRepository.php +++ b/Model/MenuRepository.php @@ -10,6 +10,8 @@ use Snowdog\Menu\Api\Data\MenuInterface; use Snowdog\Menu\Api\Data\MenuSearchResultsInterfaceFactory; use Snowdog\Menu\Api\MenuRepositoryInterface; +use Snowdog\Menu\Helper\MenuHelper; +use Snowdog\Menu\Model\ResourceModel\Menu; use Snowdog\Menu\Model\ResourceModel\Menu\Collection; use Snowdog\Menu\Model\ResourceModel\Menu\CollectionFactory; @@ -18,6 +20,9 @@ */ class MenuRepository implements MenuRepositoryInterface { + /** @var MenuHelper */ + protected $menuHelper; + /** @var MenuFactory */ protected $menuFactory; @@ -34,14 +39,17 @@ class MenuRepository implements MenuRepositoryInterface * @param MenuFactory $menuFactory * @param CollectionFactory $menuCollectionFactory * @param MenuSearchResultsInterfaceFactory $menuSearchResults - * @param ResourceModel\Menu|null $menuResourceModel + * @param MenuHelper $menuHelper + * @param Menu|null $menuResourceModel */ public function __construct( MenuFactory $menuFactory, CollectionFactory $menuCollectionFactory, MenuSearchResultsInterfaceFactory $menuSearchResults, + MenuHelper $menuHelper, ResourceModel\Menu $menuResourceModel = null ) { + $this->menuHelper = $menuHelper; $this->menuFactory = $menuFactory; $this->collectionFactory = $menuCollectionFactory; $this->menuSearchResultsFactory = $menuSearchResults; @@ -167,7 +175,11 @@ public function get($identifier, $storeId) $collection = $this->collectionFactory->create(); $collection->addFilter(new \Zend_Db_Expr('BINARY `identifier`'), $identifier); $collection->addFilter('is_active', 1); - $collection->join(['stores' => 'snowmenu_store'], 'main_table.menu_id = stores.menu_id', 'store_id'); + $collection->join( + ['stores' => 'snowmenu_store'], + 'main_table.' . $this->menuHelper->getLinkField() . ' = stores.' . $this->menuHelper->getLinkField(), + 'store_id' + ); $collection->addFilter('store_id', $storeId); return $collection->getFirstItem(); } diff --git a/Service/Menu/Cloner.php b/Service/Menu/Cloner.php index 269e54b2..70776f3b 100644 --- a/Service/Menu/Cloner.php +++ b/Service/Menu/Cloner.php @@ -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; @@ -57,6 +58,11 @@ class Cloner */ private $menuNodes; + /** + * @var MenuHelper + */ + private $menuHelper; + public function __construct( ResourceConnection $resource, MenuInterfaceFactory $menuFactory, @@ -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; @@ -75,6 +82,7 @@ public function __construct( $this->menuIdentifierProcessor = $menuIdentifierProcessor; $this->nodeTypeProvider = $nodeTypeProvider; $this->menuNodes = $menuNodes; + $this->menuHelper = $menuHelper; } /** @@ -98,7 +106,7 @@ 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) { @@ -106,7 +114,7 @@ public function clone(MenuInterface $menu): MenuInterface $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()]); diff --git a/Service/Menu/Nodes.php b/Service/Menu/Nodes.php index 02f90761..eeb84a5e 100644 --- a/Service/Menu/Nodes.php +++ b/Service/Menu/Nodes.php @@ -10,6 +10,7 @@ use Magento\Framework\Api\SortOrderBuilder; use Snowdog\Menu\Api\Data\MenuInterface; use Snowdog\Menu\Api\NodeRepositoryInterface; +use Snowdog\Menu\Helper\MenuHelper; class Nodes { @@ -38,25 +39,32 @@ class Nodes */ private $sortOrderBuilder; + /** + * @var MenuHelper + */ + private $menuHelper; + public function __construct( FilterBuilderFactory $filterBuilderFactory, FilterGroupBuilderFactory $filterGroupBuilderFactory, SearchCriteriaBuilderFactory $searchCriteriaBuilderFactory, NodeRepositoryInterface $nodeRepository, - SortOrderBuilder $sortOrderBuilder + SortOrderBuilder $sortOrderBuilder, + MenuHelper $menuHelper ) { $this->filterBuilderFactory = $filterBuilderFactory; $this->filterGroupBuilderFactory = $filterGroupBuilderFactory; $this->searchCriteriaBuilderFactory = $searchCriteriaBuilderFactory; $this->nodeRepository = $nodeRepository; $this->sortOrderBuilder = $sortOrderBuilder; + $this->menuHelper = $menuHelper; } public function getList(MenuInterface $menu): array { $filterBuilder = $this->filterBuilderFactory->create(); - $filter = $filterBuilder->setField('menu_id') - ->setValue($menu->getMenuId()) + $filter = $filterBuilder->setField($this->menuHelper->getLinkField()) + ->setValue($this->menuHelper->getLinkValue($menu)) ->setConditionType('eq') ->create(); diff --git a/Service/Menu/SaveRequestProcessor.php b/Service/Menu/SaveRequestProcessor.php index 546feec8..990ce5d2 100644 --- a/Service/Menu/SaveRequestProcessor.php +++ b/Service/Menu/SaveRequestProcessor.php @@ -9,6 +9,7 @@ use Snowdog\Menu\Api\Data\MenuInterface; use Snowdog\Menu\Api\Data\NodeInterface; use Snowdog\Menu\Api\NodeRepositoryInterface; +use Snowdog\Menu\Helper\MenuHelper; use Snowdog\Menu\Model\Menu\Node\Image\File as NodeImageFile; use Snowdog\Menu\Model\Menu\Node\Image\Node as ImageNode; use Snowdog\Menu\Model\Menu\Node\Validator as NodeValidator; @@ -52,6 +53,11 @@ class SaveRequestProcessor */ private $menuNodes; + /** + * @var MenuHelper + */ + private $menuHelper; + public function __construct( ManagerInterface $messageManager, NodeRepositoryInterface $nodeRepository, @@ -59,7 +65,8 @@ public function __construct( ImageNode $imageNode, NodeValidator $nodeValidator, NodeFactory $nodeFactory, - MenuNodes $menuNodes + MenuNodes $menuNodes, + MenuHelper $menuHelper ) { $this->messageManager = $messageManager; $this->nodeRepository = $nodeRepository; @@ -68,6 +75,7 @@ public function __construct( $this->nodeValidator = $nodeValidator; $this->nodeFactory = $nodeFactory; $this->menuNodes = $menuNodes; + $this->menuHelper = $menuHelper; } /** @@ -106,7 +114,7 @@ public function saveData(MenuInterface $menu, array $nodes = []): void if (!isset($invalidNodes[$nodeId])) { $nodeObject = $this->nodeFactory->create(); - $nodeObject->setMenuId($menu->getMenuId()); + $nodeObject->setData($this->menuHelper->getLinkField(), $this->menuHelper->getLinkValue($menu)); $nodeObject = $this->nodeRepository->save($nodeObject); $nodeMap[$nodeId] = $nodeObject; } diff --git a/etc/di.xml b/etc/di.xml index bf2f437f..87455444 100644 --- a/etc/di.xml +++ b/etc/di.xml @@ -74,4 +74,15 @@ Snowdog\Menu\Model\ImportExport\Processor\Import\Node\Validator\Proxy + + + + + + snowmenu_menu + menu_id + + + + diff --git a/view/adminhtml/templates/menu/nodes.phtml b/view/adminhtml/templates/menu/nodes.phtml index e4a61867..89b5b03f 100644 --- a/view/adminhtml/templates/menu/nodes.phtml +++ b/view/adminhtml/templates/menu/nodes.phtml @@ -7,9 +7,10 @@ foreach ($block->getNodeForms() as $form) { $fieldData[$form->getNodeType()] = $form->getJsonConfig(); } $vueComponents = $block->getVueComponents(); +$blockHtmlId = $block->getBlockHtmlId(); ?> -
+
> getVueComponents(); "*": { "menuNodes": { "vueComponents": , + "blockHtmlId": , "data": { "nodes" : renderNodes()) ?>, "config": { @@ -44,6 +46,7 @@ $vueComponents = $block->getVueComponents(); "imageDeleteUrl" : "getImageDeleteUrl() ?>", "imageUploadFileId": "getImageUploadFileId() ?>", "lazyMinItemsCount": "1000", + "serializedNodesElementName": "serialized_nodes", "translation": { "nodes" : "", "click" : "", diff --git a/view/adminhtml/web/js/nodes.js b/view/adminhtml/web/js/nodes.js index a5fb696c..06ce0c57 100644 --- a/view/adminhtml/web/js/nodes.js +++ b/view/adminhtml/web/js/nodes.js @@ -29,7 +29,7 @@ define([ Vue.component('treeselect', vueTreeselect.Treeselect); var app = new Vue({ - el: config.el || "#snowdog-menu", + el: '#' + config.blockHtmlId, data: config.data }); diff --git a/view/adminhtml/web/vue/app.vue b/view/adminhtml/web/vue/app.vue index 3e5494de..1bfbeafe 100644 --- a/view/adminhtml/web/vue/app.vue +++ b/view/adminhtml/web/vue/app.vue @@ -90,7 +90,7 @@ }, watch: { jsonList: function (newValue) { - this.updateSerializedNodes(newValue) + this.updateSerializedNodes(newValue); } }, mounted () { @@ -109,8 +109,8 @@ }; // while loaded set JSON list as a value - checkElement('[name="serialized_nodes"]').then(() => { - this.list = this.nodes.map(item => setUuidRecursive(item)) + checkElement(`[name='${this.config.serializedNodesElementName}']`).then(() => { + this.list = this.nodes.map(item => setUuidRecursive(item)); this.updateSerializedNodes(this.jsonList); }); }, @@ -143,12 +143,12 @@ }, updateSerializedNodes(value) { const updateEvent = new Event('change'); - const serializedNodeInput = document.querySelector('[name="serialized_nodes"]'); + const serializedNodeInput = document.querySelector(`[name='${this.config.serializedNodesElementName}']`); // update serialized_nodes input value serializedNodeInput.value = value; // trigger change event to set value serializedNodeInput.dispatchEvent(updateEvent); - } + }, }, template: template });