Menu   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 11
eloc 27
dl 0
loc 49
c 0
b 0
f 0
ccs 0
cts 36
cp 0
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B renderItems() 0 39 11
1
<?php
2
/**
3
 * Flat Theme for Yii2 projects
4
 *
5
 * @link      https://github.com/hiqdev/yii2-theme-flat
6
 * @package   yii2-theme-flat
7
 * @license   BSD-3-Clause
8
 * @copyright Copyright (c) 2016-2018, HiQDev (http://hiqdev.com/)
9
 */
10
11
namespace hiqdev\themes\flat\widgets;
12
13
use yii\helpers\ArrayHelper;
14
use yii\helpers\Html;
15
16
/**
17
 * Class Menu.
18
 */
19
class Menu extends \yii\widgets\Menu
20
{
21
    /**
22
     * {@inheritdoc}
23
     */
24
    public $submenuTemplate = "\n<ul class='dropdown-menu'>\n{items}\n</ul>\n";
25
26
    /**
27
     * {@inheritdoc}
28
     */
29
    protected function renderItems($items)
30
    {
31
        $n = count($items);
32
        $lines = [];
33
        foreach ($items as $i => $item) {
34
            $options = array_merge($this->itemOptions, ArrayHelper::getValue($item, 'options', []));
35
            $tag = ArrayHelper::remove($options, 'tag', 'li');
36
            $class = [];
37
            if ($item['active']) {
38
                $class[] = $this->activeCssClass;
39
            }
40
            if ($i === 0 && $this->firstItemCssClass !== null) {
41
                $class[] = $this->firstItemCssClass;
42
            }
43
            if ($i === $n - 1 && $this->lastItemCssClass !== null) {
44
                $class[] = $this->lastItemCssClass;
45
            }
46
            if (!empty($item['items'])) {
47
                $class[] = 'dropdown';
48
            }
49
            if (!empty($class)) {
50
                if (empty($options['class'])) {
51
                    $options['class'] = implode(' ', $class);
52
                } else {
53
                    $options['class'] .= ' ' . implode(' ', $class);
54
                }
55
            }
56
57
            $menu = $this->renderItem($item);
58
            if (!empty($item['items'])) {
59
                $menu .= strtr($this->submenuTemplate, [
60
                    '{items}' => $this->renderItems($item['items']),
61
                ]);
62
            }
63
64
            $lines[] = Html::tag($tag, $menu, $options);
65
        }
66
67
        return implode("\n", $lines);
68
    }
69
}
70