@@ -38,7 +38,7 @@ class Menu extends \Magento\Backend\Block\Template
38
38
/**
39
39
* Current selected item
40
40
*
41
- * @var \Magento\Backend\Model\Menu\Item|null|bool
41
+ * @var \Magento\Backend\Model\Menu\Item|false|null
42
42
*/
43
43
protected $ _activeItemModel = null ;
44
44
@@ -62,6 +62,16 @@ class Menu extends \Magento\Backend\Block\Template
62
62
*/
63
63
protected $ _localeResolver ;
64
64
65
+ /**
66
+ * @var MenuItemChecker
67
+ */
68
+ private $ menuItemChecker ;
69
+
70
+ /**
71
+ * @var AnchorRenderer
72
+ */
73
+ private $ anchorRenderer ;
74
+
65
75
/**
66
76
* @param Template\Context $context
67
77
* @param \Magento\Backend\Model\UrlInterface $url
@@ -70,6 +80,8 @@ class Menu extends \Magento\Backend\Block\Template
70
80
* @param \Magento\Backend\Model\Menu\Config $menuConfig
71
81
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
72
82
* @param array $data
83
+ * @param MenuItemChecker|null $menuItemChecker
84
+ * @param AnchorRenderer|null $anchorRenderer
73
85
*/
74
86
public function __construct (
75
87
\Magento \Backend \Block \Template \Context $ context ,
@@ -78,13 +90,17 @@ public function __construct(
78
90
\Magento \Backend \Model \Auth \Session $ authSession ,
79
91
\Magento \Backend \Model \Menu \Config $ menuConfig ,
80
92
\Magento \Framework \Locale \ResolverInterface $ localeResolver ,
81
- array $ data = []
93
+ array $ data = [],
94
+ MenuItemChecker $ menuItemChecker = null ,
95
+ AnchorRenderer $ anchorRenderer = null
82
96
) {
83
97
$ this ->_url = $ url ;
84
98
$ this ->_iteratorFactory = $ iteratorFactory ;
85
99
$ this ->_authSession = $ authSession ;
86
100
$ this ->_menuConfig = $ menuConfig ;
87
101
$ this ->_localeResolver = $ localeResolver ;
102
+ $ this ->menuItemChecker = $ menuItemChecker ;
103
+ $ this ->anchorRenderer = $ anchorRenderer ;
88
104
parent ::__construct ($ context , $ data );
89
105
}
90
106
@@ -99,30 +115,6 @@ protected function _construct()
99
115
$ this ->setCacheTags ([self ::CACHE_TAGS ]);
100
116
}
101
117
102
- /**
103
- * Check whether given item is currently selected
104
- *
105
- * @param \Magento\Backend\Model\Menu\Item $item
106
- * @param int $level
107
- * @return bool
108
- */
109
- protected function _isItemActive (\Magento \Backend \Model \Menu \Item $ item , $ level )
110
- {
111
- $ itemModel = $ this ->getActiveItemModel ();
112
- $ output = false ;
113
-
114
- if ($ level == 0 &&
115
- $ itemModel instanceof \Magento \Backend \Model \Menu \Item &&
116
- ($ itemModel ->getId () == $ item ->getId () ||
117
- $ item ->getChildren ()->get (
118
- $ itemModel ->getId ()
119
- ) !== null )
120
- ) {
121
- $ output = true ;
122
- }
123
- return $ output ;
124
- }
125
-
126
118
/**
127
119
* Render menu item anchor label
128
120
*
@@ -134,40 +126,6 @@ protected function _getAnchorLabel($menuItem)
134
126
return $ this ->escapeHtml (__ ($ menuItem ->getTitle ()));
135
127
}
136
128
137
- /**
138
- * Render menu item anchor title
139
- *
140
- * @param \Magento\Backend\Model\Menu\Item $menuItem
141
- * @return string
142
- */
143
- protected function _renderItemAnchorTitle ($ menuItem )
144
- {
145
- return $ menuItem ->hasTooltip () ? 'title=" ' . __ ($ menuItem ->getTooltip ()) . '" ' : '' ;
146
- }
147
-
148
- /**
149
- * Render menu item onclick function
150
- *
151
- * @param \Magento\Backend\Model\Menu\Item $menuItem
152
- * @return string
153
- */
154
- protected function _renderItemOnclickFunction ($ menuItem )
155
- {
156
- return $ menuItem ->hasClickCallback () ? ' onclick=" ' . $ menuItem ->getClickCallback () . '" ' : '' ;
157
- }
158
-
159
- /**
160
- * Render menu item anchor css class
161
- *
162
- * @param \Magento\Backend\Model\Menu\Item $menuItem
163
- * @param int $level
164
- * @return string
165
- */
166
- protected function _renderAnchorCssClass ($ menuItem , $ level )
167
- {
168
- return $ this ->_isItemActive ($ menuItem , $ level ) ? '_active ' : '' ;
169
- }
170
-
171
129
/**
172
130
* Render menu item mouse events
173
131
* @param \Magento\Backend\Model\Menu\Item $menuItem
@@ -188,10 +146,11 @@ protected function _renderMouseEvent($menuItem)
188
146
protected function _renderItemCssClass ($ menuItem , $ level )
189
147
{
190
148
$ isLast = 0 == $ level && (bool )$ this ->getMenuModel ()->isLast ($ menuItem ) ? 'last ' : '' ;
191
- $ output = ($ this ->_isItemActive (
192
- $ menuItem ,
193
- $ level
194
- ) ? '_current _active ' : '' ) .
149
+ $ output = ($ this ->menuItemChecker ->isItemActive (
150
+ $ this ->getActiveItemModel (),
151
+ $ menuItem ,
152
+ $ level
153
+ ) ? '_current _active ' : '' ) .
195
154
' ' .
196
155
($ menuItem ->hasChildren () ? 'parent ' : '' ) .
197
156
' ' .
@@ -202,34 +161,6 @@ protected function _renderItemCssClass($menuItem, $level)
202
161
return $ output ;
203
162
}
204
163
205
- /**
206
- * Render menu item anchor
207
- * @param \Magento\Backend\Model\Menu\Item $menuItem
208
- * @param int $level
209
- * @return string
210
- */
211
- protected function _renderAnchor ($ menuItem , $ level )
212
- {
213
- if ($ level == 1 && $ menuItem ->getUrl () == '# ' ) {
214
- $ output = '<strong class="submenu-group-title" role="presentation"> '
215
- . '<span> ' . $ this ->_getAnchorLabel ($ menuItem ) . '</span> '
216
- . '</strong> ' ;
217
- } else {
218
- $ output = '<a href=" ' . $ menuItem ->getUrl () . '" ' . $ this ->_renderItemAnchorTitle (
219
- $ menuItem
220
- ) . $ this ->_renderItemOnclickFunction (
221
- $ menuItem
222
- ) . ' class=" ' . $ this ->_renderAnchorCssClass (
223
- $ menuItem ,
224
- $ level
225
- ) . '"> ' . '<span> ' . $ this ->_getAnchorLabel (
226
- $ menuItem
227
- ) . '</span> ' . '</a> ' ;
228
- }
229
-
230
- return $ output ;
231
- }
232
-
233
164
/**
234
165
* Get menu filter iterator
235
166
*
@@ -336,7 +267,7 @@ public function renderMenu($menu, $level = 0)
336
267
$ menuItem ->getId ()
337
268
) . 'role="menuitem"> ' ;
338
269
339
- $ output .= $ this ->_renderAnchor ( $ menuItem , $ level );
270
+ $ output .= $ this ->anchorRenderer -> renderAnchor ( $ this -> getActiveItemModel (), $ menuItem , $ level );
340
271
341
272
if ($ menuItem ->hasChildren ()) {
342
273
$ output .= $ this ->renderMenu ($ menuItem ->getChildren (), $ level + 1 );
@@ -456,7 +387,7 @@ public function renderNavigation($menu, $level = 0, $limit = 0, $colBrakes = [])
456
387
457
388
$ id = $ this ->getJsId ($ menuItem ->getId ());
458
389
$ subMenu = $ this ->_addSubMenu ($ menuItem , $ level , $ limit , $ id );
459
- $ anchor = $ this ->_renderAnchor ( $ menuItem , $ level );
390
+ $ anchor = $ this ->anchorRenderer -> renderAnchor ( $ this -> getActiveItemModel (), $ menuItem , $ level );
460
391
$ output .= '<li ' . $ this ->getUiId ($ menuItem ->getId ())
461
392
. ' class="item- ' . $ itemClass . ' ' . $ this ->_renderItemCssClass ($ menuItem , $ level )
462
393
. ($ level == 0 ? '" id=" ' . $ id . '" aria-haspopup="true ' : '' )
@@ -474,7 +405,7 @@ public function renderNavigation($menu, $level = 0, $limit = 0, $colBrakes = [])
474
405
/**
475
406
* Get current selected menu item
476
407
*
477
- * @return \Magento\Backend\Model\Menu\Item|null|bool
408
+ * @return \Magento\Backend\Model\Menu\Item|false
478
409
*/
479
410
public function getActiveItemModel ()
480
411
{
0 commit comments