NavBar.php 12.4 KB
<?php

namespace backend\themes\defaults\widgets\navbar;

use Yii;
use yii\helpers\{
    ArrayHelper, Html
};
use yii\i18n\PhpMessageSource;
//
use backend\themes\defaults\widgets\menu\Menu;

/**
 * Class NavBar
 *
 * @author FilamentV <vortex.filament@gmail.com>
 * @copyright (c), Thread
 */
class NavBar extends \yii\bootstrap\NavBar
{

    public $name = 'navbar';
    public $translationsBasePath = __DIR__ . '/messages';

    /**
     * Registers translations
     */
    public function registerTranslations()
    {

        Yii::$app->i18n->translations[$this->name] = [
            'class' => PhpMessageSource::class,
            'basePath' => $this->translationsBasePath,
            'fileMap' => [
                $this->name => 'navbar.php',
            ],
        ];

    }

    /**
     * @var array
     */
    public $options = [
        'class' => 'navbar-default navbar-static-side',
        'role' => 'navigation'
    ];
    /**
     * @var bool
     */
    public $renderInnerContainer = true;
    /**
     * @var array
     */
    public $innerContainerOptions = [
        'class' => 'sidebar-collapse'
    ];
    /**
     * @var array
     */
    public $containerOptions = [
        'tag' => 'ul',
        'id' => 'side-menu'
    ];

    /**
     * Assets bundle
     * @var string
     */
    public $bundle;

    /**
     * Initializes the widget.
     */
    public function init()
    {
        $this->registerTranslations();
        $this->clientOptions = false;
        $options = $this->options;
        $tag = ArrayHelper::remove($options, 'tag', 'nav');
        echo Html::beginTag($tag, $options)
            . Html::beginTag('div', $this->innerContainerOptions);
        Html::addCssClass($this->containerOptions, ['nav' => 'nav', 'metismenu' => 'metismenu']);
        $options = $this->containerOptions;
        $tag = ArrayHelper::remove($options, 'tag', 'div');
        echo Html::beginTag($tag, $options);

    }

    public function run()
    {
        echo $this->render('parts/_navbarHeader', ['bundle' => $this->bundle]);
        echo Menu::widget([
            'items' => $this->menuItems(),
        ]);
        parent::run();
    }

    /**
     * @return array
     */
    public function menuItems()
    {
        return [
            // STRUCTURE
            [
                'label' => '<i class="fa fa-sitemap"></i><span class="nav-label">' . Yii::t('navbar',
                        'Structure') . '</span><span class="fa arrow"></span>',
                'items' => [
                    [
                        'label' => '<i class="fa fa-tasks"></i><span class="nav-label">' . Yii::t('menu',
                                'Menu') . '</span>',
                        'url' => ['/menu/menu/list'],
                    ],
                    [
                        'label' => '<i class="fa fa-file-text"></i> <span class="nav-label">' . Yii::t('page',
                                'Pages') . '</span>',
                        'url' => ['/page/page/list']
                    ],
                    [
                        'label' => '<i class="fa fa-sitemap"></i><span class="nav-label">' . Yii::t('news',
                                'News') . '</span><span class="fa arrow"></span>',
                        'items' => [
                            [
                                'label' => '<span class="nav-label">' . Yii::t('news',
                                        'Articles') . '</span>',
                                'url' => ['/news/article/list'],
                            ],
                            [
                                'label' => '<span class="nav-label">' . Yii::t('news',
                                        'Group') . '</span>',
                                'url' => ['/news/group/list'],
                            ],
                        ],
                        'options' => ['class' => 'nav-third-level'],

                    ],
                    [
                        'label' => '<i class="fa fa-sitemap"></i><span class="nav-label">' . Yii::t('calendar',
                                'Calendar') . '</span><span class="fa arrow"></span>',
                        'items' => [
                            [
                                'label' => '<span class="nav-label">' . Yii::t('calendar',
                                        'Articles') . '</span>',
                                'url' => ['/calendar/article/list'],
                            ],
                        ],
                        'options' => ['class' => 'nav-third-level'],

                    ],
                    [
                        'label' => '<i class="fa fa-newspaper-o"></i><span class="nav-label">' . Yii::t('page',
                                'StaticTextBlock') . '</span>',
                        'url' => ['/page/static-text-block/list'],
                    ],
                ]
            ],
            //FORMS
            [
                'label' => '<i class="fa fa-sitemap"></i><span class="nav-label">' . Yii::t('navbar',
                        'Forms') . '</span><span class="fa arrow"></span>',
                'items' => [
                    [
                        'label' => '<i class="fa fa-newspaper-o"></i><span class="nav-label">' . Yii::t('form',
                                'Feedback') . '</span><span class="fa arrow"></span>',
                        'items' => [
                            [
                                'label' => '<span class="nav-label">' . Yii::t('form',
                                        'Question') . '</span>',
                                'url' => ['/form/feedback/question/list'],
                            ],
                            [
                                'label' => '<span class="nav-label">' . Yii::t('app',
                                        'Group') . '</span>',
                                'url' => ['/form/feedback/group/list'],
                            ],
                        ],
                        'options' => ['class' => 'nav-third-level'],
                    ],
                ]
            ],
            // USER
            [
                'label' => '<i class="fa fa-users"></i><span class="nav-label">' . Yii::t('navbar',
                        'Users') . '</span> <span class="fa arrow"></span></a>',
                'url' => ['/user/user/list']
            ],
            // LOCATION
            [
                'label' => '<i class="fa fa-map-marker"></i><span class="nav-label">' . Yii::t('navbar',
                        'Location') . '</span><span class="fa arrow"></span>',
                'items' => [
                    [
                        'label' => Yii::t('navbar', 'Region'),
                        'url' => ['/location/region/list']
                    ],
                    /*[
                        'label' => Yii::t('navbar', 'Country'),
                        'url' => ['/location/country/list']
                    ],
                    [
                        'label' => Yii::t('navbar', 'City'),
                        'url' => ['/location/city/list']
                    ],*/
//                    [
//                        'label' => Yii::t('navbar', 'Currency'),
//                        'url' => ['/location/currency/list']
//                    ],
                ],
            ],
            // SYSTEM
            [
                'label' => '<i class="fa fa-map-marker"></i><span class="nav-label">' . Yii::t('navbar',
                        'System') . '</span><span class="fa arrow"></span>',
                'items' => [
                    [
                        'label' => Yii::t('navbar', 'Configs'),
                        'url' => ['/sys/configs/params/list']
                    ],
//                    [
//                        'label' => Yii::t('navbar', 'Growl'),
//                        'url' => ['/sys/growl/growl/list']
//                    ],
//                    [
//                        'label' => Yii::t('navbar', 'Cron'),
//                        'url' => ['/sys/crontab/job/list']
//                    ],
//                    [
//                        'label' => Yii::t('navbar', 'Role of User'),
//                        'url' => ['/sys/user/role/list']
//                    ],
//                    [
//                        'label' => Yii::t('navbar', 'Messages'),
//                        'url' => ['/sys/messages/file/list']
//                    ],
                    [
                        'label' => Yii::t('navbar', 'Languages'),
                        'url' => ['/sys/language/list']
                    ],
                    [
                        'label' => Yii::t('sys', 'MailCarrier'),
                        'url' => ['/sys/mail-carrier/mail-carrier/list']
                    ],
//                    [
//                        'label' => Yii::t('sys', 'Logbook'),
//                        'url' => ['/sys/logbook/logbook/list']
//                    ],
                    [
                        'label' => Yii::t('sys', 'Filemanager'),
                        'url' => ['/sys/filemanager/filemanager']
                    ],
                ],
            ],
            // FAQ
//            [
//                'label' => '<i class="fa fa-sitemap"></i><span class="nav-label">' . Yii::t('faq',
//                        'Faq') . '</span><span class="fa arrow"></span>',
//                'items' => [
//                    [
//                        'label' => '<i class="fa fa-tasks"></i><span class="nav-label">' . Yii::t('faq',
//                                'Article') . '</span>',
//                        'url' => ['/faq/article/list'],
//                    ],
//                    [
//                        'label' => '<i class="fa fa-tasks"></i><span class="nav-label">' . Yii::t('faq',
//                                'Question') . '</span>',
//                        'url' => ['/faq/question/list'],
//                    ],
//                    [
//                        'label' => '<i class="fa fa-tasks"></i><span class="nav-label">' . Yii::t('app',
//                                'Group') . '</span>',
//                        'url' => ['/faq/group/list'],
//                    ],
//                ]
//            ],
            // SEO
            [
                'label' => '<i class="fa fa-sitemap"></i><span class="nav-label">' . Yii::t('seo',
                        'Seo') . '</span><span class="fa arrow"></span>',
                'items' => [
                    [
                        'label' => '<i class="fa fa-tasks"></i><span class="nav-label">Robots.txt</span>',
                        'url' => ['/seo/robots/update'],
                    ],
                    [
                        'label' => '<i class="fa fa-tasks"></i><span class="nav-label">' . Yii::t('seo', 'Direct Link') . '</span>',
                        'url' => ['/seo/directlink/directlink/list'],
                    ],
                    [
                        'label' => '<i class="fa fa-tasks"></i><span class="nav-label">' . Yii::t('seo', 'Base Info') . '</span>',
                        'url' => ['/seo/info/info/list'],
                    ],
                ]
            ],
            // Map
            [
                'label' => '<i class="fa fa-sitemap"></i><span class="nav-label">' . Yii::t('map',
                        'Map') . '</span><span class="fa arrow"></span>',
                'items' => [
                    [
                        'label' => '<i class="fa fa-tasks"></i><span class="nav-label">' . Yii::t('map',
                                'Objects') . '</span>',
                        'url' => ['/map/item/list'],
                    ],
                    [
                        'label' => '<i class="fa fa-tasks"></i><span class="nav-label">' . Yii::t('map',
                                'type') . '</span>',
                        'url' => ['/map/type/list'],
                    ],
                    [
                        'label' => '<i class="fa fa-tasks"></i><span class="nav-label">' . Yii::t('map',
                                'area') . '</span>',
                        'url' => ['/map/area/list'],
                    ]
                ]
            ],
            // USER
            [
                'label' => '<i class="fa fa-users"></i><span class="nav-label">' . Yii::t('navbar',
                        'Partners') . '</span> <span class="fa arrow"></span></a>',
                'url' => ['/partners/item/list']
            ],
        ];
    }
}