Passed
Branch ops-updates (277b44)
by Björn
05:09
created

Menu::renderNormalMenu()   F

Complexity

Conditions 35
Paths > 20000

Size

Total Lines 135
Code Lines 74

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 35
eloc 74
c 1
b 0
f 0
nc 124472
nop 9
dl 0
loc 135
rs 0

How to fix   Long Method    Complexity    Many Parameters   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
/**
3
 * BB's Zend Framework 2 Components
4
 * 
5
 * UI Components
6
 *
7
 * @package     [MyApplication]
8
 * @subpackage  BB's Zend Framework 2 Components
9
 * @subpackage  UI Components
10
 * @author      Björn Bartels <[email protected]>
11
 * @link        https://gitlab.bjoernbartels.earth/groups/zf2
12
 * @license     http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
13
 * @copyright   copyright (c) 2016 Björn Bartels <[email protected]>
14
 */
15
16
namespace UIComponents\View\Helper\Navigation;
17
18
use \RecursiveIteratorIterator;
0 ignored issues
show
Bug introduced by
The type \RecursiveIteratorIterator was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
19
use \Zend\Navigation\AbstractContainer;
0 ignored issues
show
Bug introduced by
The type \Zend\Navigation\AbstractContainer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
20
use \Zend\Navigation\Page\AbstractPage;
0 ignored issues
show
Bug introduced by
The type \Zend\Navigation\Page\AbstractPage was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
21
use \Zend\View\Exception;
0 ignored issues
show
Bug introduced by
The type \Zend\View\Exception was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
22
use \UIComponents\View\Helper\Traits\ComponentClassnamesTrait;
0 ignored issues
show
Bug introduced by
The type \UIComponents\View\Helpe...omponentClassnamesTrait was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
23
use \UIComponents\View\Helper\Traits\ComponentAttributesTrait;
0 ignored issues
show
Bug introduced by
The type \UIComponents\View\Helpe...omponentAttributesTrait was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
24
25
/**
26
 *
27
 * Helper for recursively rendering 'Bootstrap' compatible multi-level menus
28
 *
29
 */
30
class Menu extends \Zend\View\Helper\Navigation\Menu
31
{
32
	use ComponentClassnamesTrait;
33
	use ComponentAttributesTrait;
34
35
    /**
36
     * default CSS class to use for li elements
37
     *
38
     * @var string
39
     */
40
    protected $defaultLiClass = '';
41
42
    /**
43
     * CSS class to use for the ul sub-menu element
44
     *
45
     * @var string
46
     */
47
    protected $subUlClass = 'dropdown-menu';
48
49
    /**
50
     * CSS class to use for the 1. level (NOT root level!) ul sub-menu element
51
     *
52
     * @var string
53
     */
54
    protected $subUlClassLevel1 = 'dropdown-menu';
55
56
    /**
57
     * CSS class to use for the active li sub-menu element
58
     *
59
     * @var string
60
     */
61
    protected $subLiClass = 'dropdown-submenu';
62
63
    /**
64
     * CSS class to use for the active li sub-menu element
65
     *
66
     * @var string
67
     */
68
    protected $subLiClassLevel0 = 'dropdown';
69
70
    /**
71
     * CSS class prefix to use for the menu element's icon class
72
     *
73
     * @var string
74
     */
75
    protected $iconPrefixClass = 'icon-';
76
77
    /**
78
     * HREF string to use for the sub-menu toggle element's HREF attribute, 
79
     * to override current page's href/'htmlify' setting
80
     *
81
     * @var string
82
     */
83
    protected $hrefSubToggleOverride = null;
84
85
    /**
86
     * Partial view script to use for rendering menu link/item
87
     *
88
     * @var string|array
89
     */
90
    protected $htmlifyPartial = null;
91
    
92
    
93
94
    /**
95
     * View helper entry point:
96
     * Retrieves helper and optionally sets container to operate on
97
     *
98
     * @param    AbstractContainer $container [optional] container to operate on
99
     * @return self
100
     */
101
    public function __invoke($container = null)
102
    {
103
        if (null !== $container) {
104
            $this->setContainer($container);
105
        }
106
107
        return $this;
108
    }
109
    
110
    /**
111
     * Returns the navigation container helper operates on by default
112
     *
113
     * Implements {@link HelperInterface::getContainer()}.
114
     *
115
     * If no container is set, a new container will be instantiated and
116
     * stored in the helper.
117
     *
118
     * @return Navigation\AbstractContainer    navigation container
0 ignored issues
show
Bug introduced by
The type UIComponents\View\Helper...ation\AbstractContainer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
119
     */
120
    public function getContainer()
121
    {
122
        if (null === $this->container) {
123
            $this->container = new \UIComponents\Navigation\Navigation();
124
        }
125
126
        return $this->container;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->container returns the type UIComponents\Navigation\...ation\AbstractContainer which is incompatible with the documented return type UIComponents\View\Helper...ation\AbstractContainer.
Loading history...
127
    }
128
129
    /**
130
     * Renders helper
131
     *
132
     * Renders a HTML 'ul' for the given $container. If $container is not given,
133
     * the container registered in the helper will be used.
134
     *
135
     * Available $options:
136
     *
137
     *
138
     * @param    AbstractContainer $container [optional] container to create menu from.
139
     *                                        Default is to use the container retrieved
140
     *                                        from {@link getContainer()}.
141
     * @param    array             $options    [optional] options for controlling rendering
142
     * @return string
143
     */
144
    public function renderMenu($container = null, array $options = [])
145
    {
146
        $this->parseContainer($container);
147
        if (null === $container) {
148
            $container = $this->getContainer();
149
        }
150
151
152
        $options = $this->normalizeOptions($options);
153
154
        if ($options['onlyActiveBranch'] && !$options['renderParents']) {
155
            $html = $this->renderDeepestMenu(
156
                $container,
157
                $options['ulClass'],
158
                $options['indent'],
159
                $options['minDepth'],
160
                $options['maxDepth'],
161
                $options['escapeLabels'],
162
                $options['addClassToListItem'],
163
                $options['liActiveClass']
164
            );
165
        } else {
166
            $html = $this->renderNormalMenu(
167
                $container,
168
                $options['ulClass'],
169
                $options['indent'],
170
                $options['minDepth'],
171
                $options['maxDepth'],
172
                $options['onlyActiveBranch'],
173
                $options['escapeLabels'],
174
                $options['addClassToListItem'],
175
                $options['liActiveClass']
176
            );
177
        }
178
179
        return $html;
180
    }
181
182
    /**
183
     * Renders a normal menu (called from {@link renderMenu()})
184
     *
185
     * @param    AbstractContainer $container            container to render
186
     * @param    string            $ulClass            CSS class for first UL
187
     * @param    string            $indent             initial indentation
188
     * @param    int|null            $minDepth            minimum depth
189
     * @param    int|null            $maxDepth            maximum depth
190
     * @param    bool                $onlyActive         render only active branch?
191
     * @param    bool                $escapeLabels        Whether or not to escape the labels
192
     * @param    bool                $addClassToListItem Whether or not page class applied to <li> element
193
     * @param    string            $liActiveClass        CSS class for active LI
194
     * @return string
195
     */
196
    protected function renderNormalMenu(
197
        AbstractContainer $container,
198
        $ulClass,
199
        $indent,
200
        $minDepth,
201
        $maxDepth,
202
        $onlyActive,
203
        $escapeLabels,
204
        $addClassToListItem,
205
        $liActiveClass
206
    ) {
207
        $html = '';
208
209
        // find deepest active
210
        $found = $this->findActive($container, $minDepth, $maxDepth);
211
        /* @var $escaper \Zend\View\Helper\EscapeHtmlAttr */
212
        $escaper = $this->view->plugin('escapeHtmlAttr');
0 ignored issues
show
Bug introduced by
The method plugin() does not exist on Zend\View\Renderer\RendererInterface. It seems like you code against a sub-type of Zend\View\Renderer\RendererInterface such as Zend\View\Renderer\PhpRenderer. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

212
        /** @scrutinizer ignore-call */ 
213
        $escaper = $this->view->plugin('escapeHtmlAttr');
Loading history...
213
214
        if ($found) {
215
            $foundPage    = $found['page'];
216
            $foundDepth = $found['depth'];
217
        } else {
218
            $foundPage = null;
219
        }
220
221
        // create iterator
222
        $iterator = new RecursiveIteratorIterator(
223
            $container,
224
            RecursiveIteratorIterator::SELF_FIRST
225
        );
226
        if (is_int($maxDepth)) {
227
            $iterator->setMaxDepth($maxDepth);
228
        }
229
230
        // iterate container
231
        $prevDepth = -1;
232
        foreach ($iterator as $page) {
233
            $depth = $iterator->getDepth();
234
            $page->set('level', $depth);
235
            $isActive = $page->isActive(true);
236
            if ($depth < $minDepth || !$this->accept($page)) {
237
                // page is below minDepth or not accepted by acl/visibility
238
                continue;
239
            } elseif ($onlyActive && !$isActive) {
240
                // page is not active itself, but might be in the active branch
241
                $accept = false;
242
                if ($foundPage) {
243
                    if ($foundPage->hasPage($page)) {
244
                        // accept if page is a direct child of the active page
245
                        $accept = true;
246
                    } elseif ($foundPage->getParent()->hasPage($page)) {
247
                        // page is a sibling of the active page...
248
                        if (!$foundPage->hasPages(!$this->renderInvisible) ||
249
                            is_int($maxDepth) && $foundDepth + 1 > $maxDepth) {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $foundDepth does not seem to be defined for all execution paths leading up to this point.
Loading history...
250
                            // accept if active page has no children, or the
251
                            // children are too deep to be rendered
252
                            $accept = true;
253
                        }
254
                    }
255
                }
256
257
                if (!$accept) {
258
                    continue;
259
                }
260
            }
261
262
            // make sure indentation is correct
263
            $depth -= $minDepth;
264
            $myIndent = $indent . str_repeat('    ', $depth);
265
            $attributes = $this->getAttributes();
266
            if ($depth > $prevDepth) {
267
                // start new ul tag
268
                $ulClass = '' . 
269
                    ($depth == 0 ? $this->getUlClass() : 
270
                            ($depth == 1 ? $this->getSubUlClassLevel1() : $this->getSubUlClass())
271
                    ) . 
272
                    ' level_' . $depth . 
273
                '';
274
                if ($ulClass && $depth ==    0) {
275
                    $ulClass = ' class="' . $escaper($ulClass) . '"';
276
                } else {
277
                    $ulClass = ' class="' . $escaper($ulClass) . '"';
278
                }
279
                $html .= $myIndent . '<ul' . $ulClass . ' '.($depth == 0 ? $this->htmlAttribs($attributes) : '').'>' . PHP_EOL;
280
            } elseif ($prevDepth > $depth) {
281
                // close li/ul tags until we're at current depth
282
                for ($i = $prevDepth; $i > $depth; $i--) {
283
                    $ind = $indent . str_repeat('        ', $i);
284
                    $html .= $ind . '    </li>' . PHP_EOL;
285
                    $html .= $ind . '</ul>' . PHP_EOL;
286
                }
287
                // close previous li tag
288
                $html .= $myIndent . '    </li>' . PHP_EOL;
289
            } else {
290
                // close previous li tag
291
                $html .= $myIndent . '    </li>' . PHP_EOL;
292
            }
293
294
            // render li tag and page
295
            $liClasses = [];
296
            // Is page active?
297
            if ($isActive) {
298
                $liClasses[] = $liActiveClass;
299
            }
300
            if (!empty($this->getDefaultLiClass())) {
301
                $liClasses[] = $this->getDefaultLiClass();
302
            }
303
            $isBelowMaxLevel = ($maxDepth > $depth) || ($maxDepth === null) || ($maxDepth === false);
304
            if (!empty($page->pages) && $isBelowMaxLevel) {
305
                $liClasses[] = ($depth == 0 ? $this->getSubLiClassLevel0() : $this->getSubLiClass());
306
            }
307
            // Add CSS class from page to <li>
308
            if ($addClassToListItem && $page->getClass()) {
309
                $liClasses[] = $page->getClass();
310
            }
311
            $liClass = empty($liClasses) ? '' : ' class="' . $escaper(implode(' ', $liClasses)) . '"';
312
313
            $html .= $myIndent . '    <li' . $liClass . '>' . PHP_EOL
314
                . $myIndent . '        ' . $this->htmlify($page, $escapeLabels, $addClassToListItem) . PHP_EOL;
315
316
            // store as previous depth for next iteration
317
            $prevDepth = $depth;
318
        }
319
320
        if ($html) {
321
            // done iterating container; close open ul/li tags
322
            for ($i = $prevDepth+1; $i > 0; $i--) {
323
                $myIndent = $indent . str_repeat('        ', $i-1);
324
                $html .= $myIndent . '    </li>' . PHP_EOL
325
                    . $myIndent . '</ul>' . PHP_EOL;
326
            }
327
            $html = rtrim($html, PHP_EOL);
328
        }
329
330
        return $html;
331
    }
332
333
    /**
334
     * Finds the deepest active page in the given container
335
     *
336
     * @param  Navigation\AbstractContainer $container  container to search
337
     * @param  int|null             $minDepth   [optional] minimum depth
338
     *                                          required for page to be
339
     *                                          valid. Default is to use
340
     *                                          {@link getMinDepth()}. A
341
     *                                          null value means no minimum
342
     *                                          depth required.
343
     * @param  int|null             $maxDepth   [optional] maximum depth
344
     *                                          a page can have to be
345
     *                                          valid. Default is to use
346
     *                                          {@link getMaxDepth()}. A
347
     *                                          null value means no maximum
348
     *                                          depth required.
349
     * @return array                            an associative array with
350
     *                                          the values 'depth' and
351
     *                                          'page', or an empty array
352
     *                                          if not found
353
     */
354
    public function findActive($container = null, $minDepth = null, $maxDepth = -1)
355
    {
356
    	if ( null == $container ) {
357
    		$container = $this->getContainer();
358
    	}
359
    	return parent::findActive($container, $minDepth, $maxDepth);
360
    }
361
    
362
    /**
363
     * Returns an HTML string containing an 'a' element for the given page if
364
     * the page's href is not empty, and a 'span' element if it is empty
365
     *
366
     * Overrides {@link AbstractHelper::htmlify()}.
367
     *
368
     * @param    AbstractPage $page                page to generate HTML for
369
     * @param    bool         $escapeLabel        Whether or not to escape the label
370
     * @param    bool         $addClassToListItem Whether or not to add the page class to the list item
371
     * @return string
372
     */
373
    public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false, $extraAttributes = [] )
374
    {
375
        $partial = $this->getHtmlifyPartial();
376
        if ($partial) {
377
            return $this->renderHtmlifyPartial($page, $escapeLabel, $addClassToListItem, $partial);
378
        }
379
        // get attribs for element
380
        $attribs = array_merge([
381
                'id'     => $page->getId(),
382
                'title'    => $this->translate($page->getTitle(), $page->getTextDomain()),
383
                'data-test'    => 'cta-nav-' . $this->slugify($page->getLabel()),
384
        ], $extraAttributes);
385
        
386
        $classnames = array();
387
        if ( $addClassToListItem === false ) {
388
            $class = $page->getClass();
389
            if (!empty($class)) {
390
                $classnames[] = $page->getClass();
391
            }
392
        }
393
        $maxDepth = $this->getMaxDepth();
394
        $depth = $page->get('level');
395
        $isBelowMaxLevel = ($maxDepth > $depth) || ($maxDepth === null) || ($maxDepth === false);
396
        if ( !empty($page->pages) && $isBelowMaxLevel ) {
397
            $classnames[] = 'dropdown-toggle';
398
            $attribs['data-toggle'] = (($depth == 0) ? $this->getSubLiClassLevel0() : $this->getSubLiClass());
399
        }
400
        $attribs['class'] = implode(" ", $classnames);
401
        
402
        // does page have a href?
403
        $href = (
404
            !empty($page->pages) && !empty($this->getHrefSubToggleOverride()) ?
405
                $this->getHrefSubToggleOverride() : $page->getHref()
406
        );
407
        $element = 'a';
408
        if ($href) {
409
            $attribs['href'] = $href;
410
            $attribs['target'] = $page->getTarget();
411
        } else {
412
            $attribs['href'] = '#';
413
        }
414
        
415
        $html    = '<' . $element . $this->htmlAttribs($attribs) . '>';
416
        $html .= ($page->get('icon') ? '<span class="' . $this->getIconPrefixClass() . '' . $page->get('icon') . '"></span> ' : '' );
417
        $label = $this->translate($page->getLabel(), $page->getTextDomain());
418
        if ($escapeLabel === true) {
419
            /** @var \Zend\View\Helper\EscapeHtml $escaper */
420
            $escaper = $this->view->plugin('escapeHtml');
421
            $html .= $escaper($label);
422
        } else {
423
            $html .= $label;
424
        }
425
        $html .= '</' . $element . '>';
426
    
427
        return $html;
428
    }
429
430
    /**
431
     * Renders the given $page by invoking the partial view helper
432
     *
433
     * The container will simply be passed on as a model to the view script
434
     * as-is, and will be available in the partial script as 'container', e.g.
435
     * <code>echo 'Number of pages: ', count($this->container);</code>.
436
     *
437
     * @param    string|array    $partial    [optional] partial view script to use.
438
     *                                    Default is to use the partial
439
     *                                    registered in the helper. If an array
440
     *                                    is given, it is expected to contain two
441
     *                                    values; the partial view script to use,
442
     *                                    and the module where the script can be
443
     *                                    found.
444
     * @return string
445
     * @throws Exception\RuntimeException if no partial provided
446
     * @throws Exception\InvalidArgumentException if partial is invalid array
447
     */
448
    public function renderHtmlifyPartial(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false, $partial = null)
449
    {
450
        if (null === $partial) {
451
            $partial = $this->getPartial();
452
        }
453
    
454
        if (empty($partial)) {
455
            throw new Exception\RuntimeException(
0 ignored issues
show
Bug introduced by
The type \Zend\View\Exception\RuntimeException was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
456
                    'Unable to render menu: No partial view script provided'
457
                    );
458
        }
459
        $model = [
460
            'page' => $page,
461
            'escapeLabel' => $escapeLabel,
462
            'addClassToListItem' => $addClassToListItem,
463
            'menu' => (clone $this),
464
            
465
        ];
466
    
467
        /** @var \Zend\View\Helper\Partial $partialHelper */
468
        $partialHelper = $this->view->plugin('partial');
469
    
470
        if (is_array($partial)) {
471
            if (count($partial) != 2) {
472
                throw new Exception\InvalidArgumentException(
0 ignored issues
show
Bug introduced by
The type \Zend\View\Exception\InvalidArgumentException was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
473
                        'Unable to render menu: A view partial supplied as '
474
                        .    'an array must contain two values: partial view '
475
                        .    'script and module where script can be found'
476
                        );
477
            }
478
    
479
            return $partialHelper($partial[0], $model);
480
        }
481
    
482
        return $partialHelper($partial, $model);
483
    }
484
    
485
    /**
486
     * @return the $defaultLiClass
0 ignored issues
show
Bug introduced by
The type UIComponents\View\Helper\Navigation\the was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
487
     */
488
    public function getDefaultLiClass() {
489
        return $this->defaultLiClass;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->defaultLiClass returns the type string which is incompatible with the documented return type UIComponents\View\Helper\Navigation\the.
Loading history...
490
    }
491
492
    /**
493
     * @param string $defaultLiClass
494
     */
495
    public function setDefaultLiClass($defaultLiClass) {
496
        $this->defaultLiClass = $defaultLiClass;
497
        return $this;
498
    }
499
500
    /**
501
     * @return the $subUlClass
502
     */
503
    public function getSubUlClass() {
504
        return $this->subUlClass;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->subUlClass returns the type string which is incompatible with the documented return type UIComponents\View\Helper\Navigation\the.
Loading history...
505
    }
506
507
    /**
508
     * @param string $subUlClass
509
     */
510
    public function setSubUlClass($subUlClass) {
511
        $this->subUlClass = $subUlClass;
512
        return $this;
513
    }
514
515
    /**
516
     * @return the $subUlClassLevel1
517
     */
518
    public function getSubUlClassLevel1() {
519
        return $this->subUlClassLevel1;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->subUlClassLevel1 returns the type string which is incompatible with the documented return type UIComponents\View\Helper\Navigation\the.
Loading history...
520
    }
521
522
    /**
523
     * @param string $subUlClassLevel1
524
     */
525
    public function setSubUlClassLevel1($subUlClassLevel1) {
526
        $this->subUlClassLevel1 = $subUlClassLevel1;
527
        return $this;
528
    }
529
530
    /**
531
     * @return the $subLiClass
532
     */
533
    public function getSubLiClass() {
534
        return $this->subLiClass;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->subLiClass returns the type string which is incompatible with the documented return type UIComponents\View\Helper\Navigation\the.
Loading history...
535
    }
536
537
    /**
538
     * @param string $subLiClass
539
     */
540
    public function setSubLiClass($subLiClass) {
541
        $this->subLiClass = $subLiClass;
542
        return $this;
543
    }
544
545
    /**
546
     * @return the $subLiClassLevel0
547
     */
548
    public function getSubLiClassLevel0() {
549
        return $this->subLiClassLevel0;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->subLiClassLevel0 returns the type string which is incompatible with the documented return type UIComponents\View\Helper\Navigation\the.
Loading history...
550
    }
551
    
552
    /**
553
     * @param string $subLiClassLevel0
554
     */
555
    public function setSubLiClassLevel0($subLiClassLevel0) {
556
        $this->subLiClassLevel0 = $subLiClassLevel0;
557
        return $this;
558
    }
559
    
560
    /**
561
     * @return the $iconPrefixClass
562
     */
563
    public function getIconPrefixClass() {
564
        return $this->iconPrefixClass;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->iconPrefixClass returns the type string which is incompatible with the documented return type UIComponents\View\Helper\Navigation\the.
Loading history...
565
    }
566
567
    /**
568
     * @param string $iconPrefixClass
569
     */
570
    public function setIconPrefixClass($iconPrefixClass) {
571
        $this->iconPrefixClass = $iconPrefixClass;
572
        return $this;
573
    }
574
    
575
    /**
576
     * @return the $hrefSubToggleOverride
577
     */
578
    public function getHrefSubToggleOverride() {
579
        return $this->hrefSubToggleOverride;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->hrefSubToggleOverride returns the type string which is incompatible with the documented return type UIComponents\View\Helper\Navigation\the.
Loading history...
580
    }
581
582
    /**
583
     * @param string $hrefSubToggleOverride
584
     */
585
    public function setHrefSubToggleOverride($hrefSubToggleOverride) {
586
        $this->hrefSubToggleOverride = $hrefSubToggleOverride;
587
        return $this;
588
    }
589
590
    /**
591
     * Sets which partial view script to use for rendering menu
592
     *
593
     * @param    string|array $partial partial view script or null. If an array is
594
     *                                given, it is expected to contain two
595
     *                                values; the partial view script to use,
596
     *                                and the module where the script can be
597
     *                                found.
598
     * @return self
599
     */
600
    public function setHtmlifyPartial($partial)
601
    {
602
        if (null === $partial || is_string($partial) || is_array($partial)) {
0 ignored issues
show
introduced by
The condition is_array($partial) is always true.
Loading history...
603
            $this->htmlifyPartial = $partial;
604
        }
605
    
606
        return $this;
607
    }
608
    
609
    /**
610
     * Returns partial view script to use for rendering menu
611
     *
612
     * @return string|array|null
613
     */
614
    public function getHtmlifyPartial()
615
    {
616
        return $this->htmlifyPartial;
617
    }
618
    
619
    /**
620
     * Translate a message (for label, title, …)
621
     *
622
     * @param    string $message    ID of the message to translate
623
     * @param    string $textDomain Text domain (category name for the translations)
624
     * @return string             Translated message
625
     */
626
    public function translate($message, $textDomain = null)
627
    {
628
        return parent::translate($message, $textDomain);
629
    }
630
    
631
632
}