Skip to content

Commit 06f5284

Browse files
committed
release version 1.4 for css fixed
1 parent ba67f8f commit 06f5284

File tree

9 files changed

+183
-60
lines changed

9 files changed

+183
-60
lines changed

Block/Adminhtml/Form/Field/CmsPageCustomLinker.php

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,12 @@
1515

1616
class CmsPageCustomLinker extends AbstractFieldArray
1717
{
18-
1918
const FIELDS_EXTRA_CLASS_PREFIX = 'devbera-cpcl-';
20-
19+
2120
const FIELD_TEMPLATE = 'DevBera_CmsLinkToMenu::system/config/form/field/array.phtml';
22-
21+
2322
private $linkTypesRenderer;
24-
23+
2524
private $cmsPagesRenderer;
2625
/**
2726
* @var \DevBera\CmsLinkToMenu\Model\Config\Source\Pages
@@ -36,8 +35,8 @@ public function __construct(
3635
parent::__construct($context, $data);
3736
$this->cmsPages = $cmsPages;
3837
}
39-
40-
protected function _prepareToRender(): void
38+
39+
protected function _prepareToRender()
4140
{
4241
$this->addColumn(
4342
'link_type',
@@ -47,13 +46,13 @@ protected function _prepareToRender(): void
4746
'page_id',
4847
['label' => __('Cms Pages'), 'renderer' => $this->getCmsPagesRenderer()]
4948
);
50-
$this->addColumn('link_text', ['label' => __('Text')]);
49+
$this->addColumn('link_text', ['label' => __('Text'),'class' =>$this->getFieldExtraClassName('link_text')]);
5150
$this->addColumn('link_url', ['label' => __('Url'),'class' => $this->getLinkUrlExtraHtmlClass()]);
5251
$this->addColumn('position', ['label' => __('Sort Order')]);
5352
$this->_addAfter = false;
5453
$this->_addButtonLabel = __('Add Cms Page / Custom link');
5554
}
56-
55+
5756
private function getCmsPagesRenderer()
5857
{
5958
if (!$this->cmsPagesRenderer) {
@@ -62,11 +61,11 @@ private function getCmsPagesRenderer()
6261
'',
6362
['data' => ['is_render_to_js_template' => true]]
6463
);
65-
$this->cmsPagesRenderer->setClass('customer_group_select '.$this->getPageIdExtraHtmlClass());
64+
$this->cmsPagesRenderer->setClass('customer_group_select ' . $this->getPageIdExtraHtmlClass());
6665
}
67-
return $this->cmsPagesRenderer ;
66+
return $this->cmsPagesRenderer;
6867
}
69-
68+
7069
private function getLinkTypesRenderer()
7170
{
7271
if (!$this->linkTypesRenderer) {
@@ -75,11 +74,11 @@ private function getLinkTypesRenderer()
7574
'',
7675
['data' => ['is_render_to_js_template' => true]]
7776
);
78-
$this->linkTypesRenderer->setClass('customer_group_select '.$this->getLinkTypeExtraHtmlClass());
77+
$this->linkTypesRenderer->setClass('customer_group_select ' . $this->getLinkTypeExtraHtmlClass());
7978
}
8079
return $this->linkTypesRenderer;
8180
}
82-
81+
8382
/**
8483
* Prepare existing row data object
8584
*
@@ -94,28 +93,28 @@ protected function _prepareArrayRow(\Magento\Framework\DataObject $row)
9493
'selected="selected"';
9594
$optionExtraAttr['option_' . $this->getCmsPagesRenderer()->calcOptionHash($row->getData('page_id'))] =
9695
'selected="selected"';
97-
96+
9897
$row->setData(
9998
'option_extra_attrs',
10099
$optionExtraAttr
101100
);
102101
}
103-
102+
104103
public function getTemplate()
105104
{
106105
return self::FIELD_TEMPLATE;
107106
}
108-
107+
109108
public function getInputFieldHtmlId()
110109
{
111110
return $this->getHtmlId();
112111
}
113-
112+
114113
private function getFieldExtraClassName($fieldName)
115114
{
116-
return self::FIELDS_EXTRA_CLASS_PREFIX.$fieldName;
115+
return self::FIELDS_EXTRA_CLASS_PREFIX . $fieldName;
117116
}
118-
117+
119118
public function getLinkTypeExtraHtmlClass()
120119
{
121120
return $this->getFieldExtraClassName('link_type');
@@ -124,7 +123,7 @@ public function getPageIdExtraHtmlClass()
124123
{
125124
return $this->getFieldExtraClassName('page_id');
126125
}
127-
126+
128127
public function getLinkUrlExtraHtmlClass()
129128
{
130129
return $this->getFieldExtraClassName('link_url');
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?php
2+
3+
namespace DevBera\CmsLinkToMenu\Block\Adminhtml\System\Config\Form\Fieldset;
4+
5+
use Magento\Framework\Data\Form\Element\Renderer\RendererInterface;
6+
7+
class Support extends \Magento\Backend\Block\Template implements RendererInterface
8+
{
9+
/**
10+
* @var string
11+
*/
12+
protected $_template = 'DevBera_CmsLinkToMenu::system/config/form/fieldset/support.phtml';
13+
14+
/**
15+
* @var \Magento\Framework\App\ProductMetadataInterface
16+
*/
17+
protected $metaData;
18+
19+
/**
20+
* @var \Magento\Framework\Module\ModuleList\Loader
21+
*/
22+
protected $loader;
23+
24+
/**
25+
* @param \Magento\Backend\Block\Template\Context $context
26+
* @param \Magento\Framework\App\ProductMetadataInterface $productMetaData
27+
* @param \Magento\Framework\Module\ModuleList\Loader $loader
28+
* @param array $data
29+
*/
30+
public function __construct(
31+
\Magento\Backend\Block\Template\Context $context,
32+
\Magento\Framework\App\ProductMetadataInterface $productMetaData,
33+
\Magento\Framework\Module\ModuleList\Loader $loader,
34+
array $data = []
35+
) {
36+
parent::__construct($context, $data);
37+
$this->metaData = $productMetaData;
38+
$this->loader = $loader;
39+
}
40+
41+
/**
42+
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
43+
* @return mixed
44+
*/
45+
public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element)
46+
{
47+
return $this->toHtml();
48+
}
49+
50+
public function getMageVersion()
51+
{
52+
$mageVersion = $this->metaData->getVersion();
53+
$mageEdition = $this->metaData->getEdition();
54+
switch ($mageEdition) {
55+
case 'Community':
56+
$mageEdition = 'CE';
57+
break;
58+
case 'Enterprise':
59+
$mageEdition = 'EE';
60+
break;
61+
}
62+
63+
return $mageEdition . ' ' . $mageVersion;
64+
}
65+
66+
public function getModuleVersion()
67+
{
68+
$modules = $this->loader->load();
69+
$v = "";
70+
if (isset($modules['DevBera_CmsLinkToMenu'])) {
71+
$v = $modules['DevBera_CmsLinkToMenu']['setup_version'];
72+
}
73+
return $v;
74+
}
75+
}

Model/MenuLinkManagement.php

Lines changed: 28 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,29 @@
1212

1313
namespace DevBera\CmsLinkToMenu\Model;
1414

15-
use Magento\Store\Model\ScopeInterface;
15+
use DevBera\CmsLinkToMenu\Api\MenuLinkManagementInterface;
1616

17-
use Magento\Framework\UrlInterface;
18-
use Magento\Framework\Api\FilterBuilder;
17+
use DevBera\CmsLinkToMenu\Model\System\Config\Backend\CmsPageCustomLinker\Processor;
1918
use Magento\Cms\Api\PageRepositoryInterface;
20-
use Magento\Framework\Data\Tree\NodeFactory;
19+
use Magento\Framework\Api\FilterBuilder;
2120
use Magento\Framework\Api\SearchCriteriaBuilder;
22-
use Magento\Store\Model\StoreManagerInterface;
2321
use Magento\Framework\App\Config\ScopeConfigInterface;
24-
use DevBera\CmsLinkToMenu\Model\System\Config\Backend\CmsPageCustomLinker\Processor;
25-
use DevBera\CmsLinkToMenu\Api\MenuLinkManagementInterface;
22+
use Magento\Framework\Data\Tree\NodeFactory;
23+
use Magento\Framework\UrlInterface;
24+
use Magento\Store\Model\ScopeInterface;
25+
use Magento\Store\Model\StoreManagerInterface;
2626

2727
class MenuLinkManagement implements MenuLinkManagementInterface
2828
{
29-
3029
private $homePageIdentifier;
31-
30+
3231
/**
3332
* @var Processor
3433
*/
3534
private $processor;
3635

3736
const XML_PATH_PRE_CMS_CUSTOM_LINKS = 'cmslinktomenu/cms_custom_links';
38-
37+
3938
/**
4039
* @var \Magento\Cms\Api\PageRepositoryInterface
4140
*/
@@ -87,7 +86,6 @@ public function __construct(
8786
Processor $processor,
8887
\Psr\Log\LoggerInterface $logger
8988
) {
90-
9189
$this->logger = $logger;
9290
$this->filterBuilder = $filterBuilder;
9391
$this->scopeConfig = $scopeConfig;
@@ -98,57 +96,52 @@ public function __construct(
9896
$this->pageRepository = $pageRepository;
9997
$this->processor = $processor;
10098
}
101-
99+
102100
public function addLinks($subject, $position = 'left')
103101
{
104102
$fieldValue = $this->scopeConfig->getValue(
105-
self::XML_PATH_PRE_CMS_CUSTOM_LINKS.'/'.$position,
103+
self::XML_PATH_PRE_CMS_CUSTOM_LINKS . '/' . $position,
106104
ScopeInterface::SCOPE_STORE
107105
);
108-
106+
109107
$menuItems = $this->getLinksWithSortOrder($fieldValue);
110-
108+
111109
if (!empty($menuItems) && is_array($menuItems)) {
112110
$this->buildMenuItems($subject, $menuItems);
113111
}
114112
}
115-
113+
116114
private function getLinksWithSortOrder($fieldValue)
117115
{
118-
119116
$result = $this->processor->getFieldValueInArrayType($fieldValue);
120-
117+
121118
if (is_array($result) && !empty($result)) {
122-
123119
usort($result, function ($a, $b) {
124120
return $a['position'] <=> $b['position'];
125121
});
126-
122+
127123
return $result;
128124
}
129125
return false;
130126
}
131-
127+
132128
private function buildMenuItems($subject, $menuItems)
133129
{
134-
135130
$cmsPages = $this->getFindCmsPageList($menuItems);
136131

137132
foreach ($menuItems as $menuItem) {
138-
139133
if ($menuItem['link_type'] === 1 && (empty($cmsPages) ||
140134
!array_key_exists($menuItem['page_id'], $cmsPages))
141135
) {
142136
continue;
143137
}
144-
145-
if ($menuItem['link_type'] === 1) {
146138

139+
if ($menuItem['link_type'] === 1) {
147140
$subject->getMenu()->addChild(
148141
$this->addCmsPageToMenu($subject, $menuItem, $cmsPages)
149142
);
150143
}
151-
144+
152145
if ($menuItem['link_type'] === 2) {
153146
$subject->getMenu()->addChild(
154147
$this->addStaticLinkToMenu($subject, $menuItem)
@@ -159,14 +152,13 @@ private function buildMenuItems($subject, $menuItems)
159152

160153
private function addCmsPageToMenu($subject, $menuItem, $cmsPages)
161154
{
162-
163155
$page = $cmsPages[$menuItem['page_id']];
164156

165157
$node = $this->nodeFactory->create(
166158
[
167159
'data' => [
168160
'name' => $menuItem['link_text'],
169-
'id' => 'cms-page-'.$menuItem['position'].'-'.$page->getIdentifier(),
161+
'id' => 'cms-page-' . $menuItem['position'] . '-' . $page->getIdentifier(),
170162
'url' => $this->getCmsPageUrl($page),
171163
'has_active' => false,
172164
'is_active' => false
@@ -177,14 +169,14 @@ private function addCmsPageToMenu($subject, $menuItem, $cmsPages)
177169
);
178170
return $node;
179171
}
180-
172+
181173
private function addStaticLinkToMenu($subject, $menuItem)
182174
{
183175
$node = $this->nodeFactory->create(
184176
[
185177
'data' => [
186178
'name' => $menuItem['link_text'],
187-
'id' => 'static-links-'.$menuItem['position'],
179+
'id' => 'static-links-' . $menuItem['position'],
188180
'url' => $this->getLinkUrl($menuItem),
189181
'has_active' => false,
190182
'is_active' => false
@@ -195,20 +187,19 @@ private function addStaticLinkToMenu($subject, $menuItem)
195187
);
196188
return $node;
197189
}
198-
190+
199191
private function getFindCmsPageList($links)
200192
{
201-
202193
$cmsPagesIdentifier = [];
203194
$result = [];
204-
195+
205196
foreach ($links as $link) {
206197
if ($link['link_type'] == 1) {
207198
$cmsPagesIdentifier[] = $link['page_id'];
208199
}
209200
}
210201
array_unique($cmsPagesIdentifier);
211-
202+
212203
$this->searchCriteriaBuilder->addFilters(
213204
[
214205
$this->filterBuilder
@@ -228,16 +219,16 @@ private function getFindCmsPageList($links)
228219
->create(),
229220
]
230221
);
231-
222+
232223
$this->searchCriteriaBuilder->setCurrentPage(1)->setPageSize(count($cmsPagesIdentifier));
233-
224+
234225
$searchCriteria = $this->searchCriteriaBuilder->create();
235226
$pages = $this->pageRepository->getList($searchCriteria);
236227

237228
if ($pages->getTotalCount() >0) {
238229
$items = $pages->getItems();
239230
foreach ($items as $page) {
240-
$result[$page->getIdentifier()] = $page;
231+
$result[$page->getIdentifier()] = $page;
241232
}
242233
}
243234
return $result;
@@ -254,7 +245,6 @@ private function getLinkUrl($data)
254245
private function getHomePageIdentifier()
255246
{
256247
if (!$this->homePageIdentifier) {
257-
258248
$this->homePageIdentifier = $this->scopeConfig->getValue(
259249
'web/default/cms_home_page',
260250
ScopeInterface::SCOPE_STORE

0 commit comments

Comments
 (0)