diff --git a/Api/MenuLinkManagementInterface.php b/Api/MenuLinkManagementInterface.php index a6d3a16..2fa1059 100755 --- a/Api/MenuLinkManagementInterface.php +++ b/Api/MenuLinkManagementInterface.php @@ -1,15 +1,14 @@ cmsPages = $cmsPages; } - + private function getCmsPagesRenderer() { if (!$this->cmsPagesRenderer) { diff --git a/Block/Adminhtml/Form/Field/LinkTypes.php b/Block/Adminhtml/Form/Field/LinkTypes.php index 5d4a065..7dc5841 100755 --- a/Block/Adminhtml/Form/Field/LinkTypes.php +++ b/Block/Adminhtml/Form/Field/LinkTypes.php @@ -1,13 +1,12 @@ menuLinkManagement = $menuLinkManagement; + $this->jsonEncoder = $jsonEncoder; + } + + /** + * Get List of External Link list + * + * @return bool|false|string + */ + public function getJsonLinks() + { + return $this->jsonEncoder->serialize($this->menuLinkManagement->getTargetBlanksLinks()); + } + + /** + * Target Blank flag + * @return int + */ + public function isOpenInNewTab() + { + return $this->menuLinkManagement->isOpenInTab(); + } +} diff --git a/Model/Config/Source/LinkTypes.php b/Model/Config/Source/LinkTypes.php index 095288b..cb082fb 100755 --- a/Model/Config/Source/LinkTypes.php +++ b/Model/Config/Source/LinkTypes.php @@ -1,13 +1,12 @@ scopeConfig->getValue( - self::XML_PATH_PRE_CMS_CUSTOM_LINKS . '/' . $position, - ScopeInterface::SCOPE_STORE - ); - + $fieldValue = $this->getMenuConfigValue($position); $menuItems = $this->getLinksWithSortOrder($fieldValue); if (!empty($menuItems) && is_array($menuItems)) { @@ -282,4 +278,65 @@ private function getCmsPageUrl($page) } return $this->urlBuilder->getUrl(null, ['_direct' => $page->getIdentifier()]); } + + private function getMenuConfigValue($position = 'left') + { + return $this->scopeConfig->getValue( + self::XML_PATH_PRE_CMS_CUSTOM_LINKS . '/' . $position, + ScopeInterface::SCOPE_STORE + ); + } + + /** + * @return array + */ + public function getTargetBlanksLinks() + { + $leftMenuItems = []; + $rightMenuItems = []; + + $leftMenuItems = $this->getLinksWithSortOrder( + $this->getMenuConfigValue(LinkTypes::TYPE_LEFT) + ); + $rightMenuItems = $this->getLinksWithSortOrder( + $this->getMenuConfigValue(LinkTypes::TYPE_RIGHT) + ); + $leftMenuItems = (!empty($leftMenuItems) && is_array($leftMenuItems))? + $leftMenuItems:[]; + + $rightMenuItems = (!empty($rightMenuItems) && is_array($rightMenuItems))? + $rightMenuItems:[]; + $result = []; + $result = $this->getOnlyLinks(array_merge($leftMenuItems, $rightMenuItems)); + + return $result; + } + + /** + * @param array $links + * @return array + * + */ + private function getOnlyLinks($links = []) + { + $result = []; + foreach ($links as $link) { + if ($link['link_type'] == 3) { + $result[] = $link; + } + } + return $result; + } + + /** + * get open tab + * @return int + */ + public function isOpenInTab() + { + return (int) $this->scopeConfig->isSetFlag( + self::XML_PATH_PRE_CMS_CUSTOM_LINKS . '/open_in_new_tab', + ScopeInterface::SCOPE_STORE + ); + } } diff --git a/Model/System/Config/Backend/CmsPageCustomLinker.php b/Model/System/Config/Backend/CmsPageCustomLinker.php index b724a5c..536cead 100755 --- a/Model/System/Config/Backend/CmsPageCustomLinker.php +++ b/Model/System/Config/Backend/CmsPageCustomLinker.php @@ -1,13 +1,12 @@ processor = $processor; parent::__construct( $context, @@ -44,10 +43,10 @@ public function __construct( $data ); } - + public function beforeSave() { - + $value = $this->getValue(); $value = $this->processor->buildValueForSave($value); $this->setValue($value); diff --git a/Model/System/Config/Backend/CmsPageCustomLinker/Processor.php b/Model/System/Config/Backend/CmsPageCustomLinker/Processor.php index c77d7cd..2a2a05f 100755 --- a/Model/System/Config/Backend/CmsPageCustomLinker/Processor.php +++ b/Model/System/Config/Backend/CmsPageCustomLinker/Processor.php @@ -1,13 +1,12 @@ logger = $logger; $this->scopeConfig = $scopeConfig; $this->menuLinkManagement = $menuLinkManagement; @@ -50,13 +50,13 @@ public function beforeGetHtml( $childrenWrapClass = '', $outermostClass = '' ) { - + if ($this->isEnabled()) { $this->menuLinkManagement->addLinks($subject, 'left'); return [$limit, $childrenWrapClass, $outermostClass]; } } - + private function isEnabled() { return $this->scopeConfig->getValue( diff --git a/Plugin/Magento/Theme/Block/Html/RightTopmenu.php b/Plugin/Magento/Theme/Block/Html/RightTopmenu.php index 8881e61..69231bc 100755 --- a/Plugin/Magento/Theme/Block/Html/RightTopmenu.php +++ b/Plugin/Magento/Theme/Block/Html/RightTopmenu.php @@ -1,12 +1,12 @@ logger = $logger; $this->scopeConfig = $scopeConfig; $this->menuLinkManagement = $menuLinkManagement; @@ -50,13 +50,13 @@ public function beforeGetHtml( $childrenWrapClass = '', $outermostClass = '' ) { - + if ($this->isEnabled()) { $this->menuLinkManagement->addLinks($subject, 'right'); return [$limit, $childrenWrapClass, $outermostClass]; } } - + private function isEnabled() { return $this->scopeConfig->getValue( @@ -64,4 +64,17 @@ private function isEnabled() ScopeInterface::SCOPE_STORE ); } + public function afterToHtml( + \Magento\Theme\Block\Html\Topmenu $subject, + $html + ) { + $jsBlockOutPut =$subject->getLayout() + ->createBlock( + \DevBera\CmsLinkToMenu\Block\Html\Topmenu\Js::class, + 'cms.link.to.menu.js' + ) + ->setTemplate('DevBera_CmsLinkToMenu::html/topmenu/js.phtml') + ->toHtml(); + return $html.$jsBlockOutPut; + } } diff --git a/README.md b/README.md index f41e299..adbc811 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ Built by Amit Bera, [Magento StackExchange Moderator](https://magento.stackexcha # Admin Setting : Add Cms Pages & static links from admin - - **Ability manahe sort Order from Admin System Configuration.** + - **Ability manage sort Order from Admin System Configuration.** ![Admin Setting](docs/static/version-1-3-0-admin-setting.png) @@ -85,11 +85,11 @@ Built by Amit Bera, [Magento StackExchange Moderator](https://magento.stackexcha - Admin Setting Demo https://www.youtube.com/watch?v=jIWpNxtaPUw - Frontend View Demo https://www.youtube.com/watch?v=sW7EJG2ld8k -**Comming Soon** +**Coming Soon** ## 4. User Guide -**Comming Soon** +**Coming Soon** ## Standards & Code Quality diff --git a/etc/acl.xml b/etc/acl.xml index f7f4d7c..d359607 100755 --- a/etc/acl.xml +++ b/etc/acl.xml @@ -1,4 +1,15 @@ + diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml index 7579f3a..ea27475 100755 --- a/etc/adminhtml/system.xml +++ b/etc/adminhtml/system.xml @@ -1,4 +1,15 @@ +
@@ -13,20 +24,23 @@ Magento\Config\Model\Config\Source\Yesno - + cms-page-links-list DevBera\CmsLinkToMenu\Block\Adminhtml\Form\Field\CmsPageCustomLinker DevBera\CmsLinkToMenu\Model\System\Config\Backend\CmsPageCustomLinker - + DevBera\CmsLinkToMenu\Block\Adminhtml\Form\Field\CmsPageCustomLinker DevBera\CmsLinkToMenu\Model\System\Config\Backend\CmsPageCustomLinker - - - + + + + Magento\Config\Model\Config\Source\Yesno + +
diff --git a/etc/config.xml b/etc/config.xml index 16555dd..0fd6c7f 100755 --- a/etc/config.xml +++ b/etc/config.xml @@ -1,13 +1,26 @@ - + + 0 - - 1 - + + 0 + 1 + diff --git a/etc/di.xml b/etc/di.xml index 62308b2..17c7515 100755 --- a/etc/di.xml +++ b/etc/di.xml @@ -1,17 +1,28 @@ + - - - - + + + - + diff --git a/etc/module.xml b/etc/module.xml index fb661be..b25f452 100755 --- a/etc/module.xml +++ b/etc/module.xml @@ -1,4 +1,15 @@ + diff --git a/view/adminhtml/templates/system/config/form/field/array.phtml b/view/adminhtml/templates/system/config/form/field/array.phtml index 7d584fe..abe4429 100755 --- a/view/adminhtml/templates/system/config/form/field/array.phtml +++ b/view/adminhtml/templates/system/config/form/field/array.phtml @@ -24,7 +24,7 @@ $linkUrlExtraHtmlClass = $block->getLinkUrlExtraHtmlClass(); - getColumns() as $columnName => $column) : ?> + getColumns() as $columnName => $column): ?> @@ -55,13 +55,13 @@ $linkUrlExtraHtmlClass = $block->getLinkUrlExtraHtmlClass(); // define row prototypeJS template template: mageTemplate( '' - getColumns() as $columnName => $column) : ?> + getColumns() as $columnName => $column): ?> + '
escapeHtml($column['label']) ?> escapeHtml(__('Action')) ?>
' + 'escapeJs($block->renderCellTemplate($columnName)) ?>' + '<\/td>' - isAddAfter()) : ?> + isAddAfter()): ?> + '