Beispiel #1
0
 /**
  * Use case:
  * \dmstr\helpers\Html::a("test link", ['create'])
  *
  * @param string $text
  * @param null $url
  * @param array $options
  * @return string|null
  */
 public static function a($text, $url = null, $options = [])
 {
     return RouteAccess::can($url, function () use($text, $url, $options) {
         return parent::a($text, $url, $options);
     }, function () {
         return null;
     }, [$text, $options]);
 }
Beispiel #2
0
<!-- /.search form -->


<?php 
// prepare menu items, get all modules
$menuItems = [];
$favouriteMenuItems[] = ['label' => 'MAIN NAVIGATION', 'options' => ['class' => 'header']];
$developerMenuItems = [];
foreach (\dmstr\helpers\Metadata::getModules() as $name => $module) {
    $role = $name;
    $defaultItem = ['icon' => 'fa fa-cube', 'label' => $name, 'url' => ['/' . $name], 'visible' => Yii::$app->user->can($role) || Yii::$app->user->identity && Yii::$app->user->identity->isAdmin, 'items' => []];
    // check for module configuration and assign to favourites
    $moduleConfigItem = is_object($module) ? isset($module->params['menuItems']) ? $module->params['menuItems'] : [] : (isset($module['params']['menuItems']) ? $module['params']['menuItems'] : []);
    switch (true) {
        case !empty($moduleConfigItem):
            $moduleConfigItem = array_merge($defaultItem, $moduleConfigItem);
            $moduleConfigItem['visible'] = \dmstr\helpers\RouteAccess::can($moduleConfigItem['url']);
            $favouriteMenuItems[] = $moduleConfigItem;
            continue 2;
            break;
        default:
            $defaultItem['icon'] = 'fa fa-circle-o';
            $developerMenuItems[] = $defaultItem;
            break;
    }
}
// create developer menu, when user is admin
if (Yii::$app->user->identity && Yii::$app->user->identity->isAdmin) {
    $menuItems[] = ['url' => '#', 'icon' => 'fa fa-cube', 'label' => 'Modules', 'items' => $developerMenuItems, 'options' => ['class' => 'treeview'], 'visible' => Yii::$app->user->identity->isAdmin];
}
echo dmstr\widgets\Menu::widget(['options' => ['class' => 'sidebar-menu'], 'items' => \yii\helpers\ArrayHelper::merge($favouriteMenuItems, $menuItems)]);