public function createTagItems($requestInfo) { if ($path = $requestInfo->menuMap->getMenuPathByRoute('grom/tag/default/index')) { $path .= '/' . (isset($requestInfo->requestParams['alias']) ? $requestInfo->requestParams['alias'] : $requestInfo->requestParams['id']); unset($requestInfo->requestParams['id'], $requestInfo->requestParams['alias']); return MenuItem::toRoute($path, $requestInfo->requestParams); } }
public function createSearch($requestInfo) { if ($path = $requestInfo->menuMap->getMenuPathByRoute('grom/search/default/index')) { return MenuItem::toRoute($path, $requestInfo->requestParams); } }
* @var string $route */ $this->title = Yii::t('gromver.platform', 'Select Page'); $this->params['breadcrumbs'][] = $this->title; ?> <div class="page-index"> <?php /*<h1><?= Html::encode($this->title) ?></h1>*/ ?> <?php // echo $this->render('_search', ['model' => $searchModel]); ?> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'id' => 'grid', 'pjax' => true, 'pjaxSettings' => ['neverTimeout' => true], 'columns' => [['attribute' => 'id', 'width' => '50px'], ['attribute' => 'language', 'width' => '50px', 'filter' => Yii::$app->getLanguagesList()], ['attribute' => 'title', 'value' => function ($model) { /** @var $model \gromver\platform\common\models\Page */ return $model->title . '<br/>' . Html::tag('small', $model->alias, ['class' => 'text-muted']); }, 'format' => 'html'], ['attribute' => 'status', 'value' => function ($model, $index, $widget) { /** @var $model \gromver\platform\common\models\Page */ return $model->getStatusLabel(); }, 'filter' => \gromver\platform\common\models\Page::statusLabels()], ['attribute' => 'tags', 'value' => function ($model) { /** @var $model \gromver\platform\common\models\Page */ return implode(', ', \yii\helpers\ArrayHelper::map($model->tags, 'id', 'title')); }, 'filterType' => \dosamigos\selectize\Selectize::className(), 'filterWidgetOptions' => ['items' => \yii\helpers\ArrayHelper::map(\gromver\platform\common\models\Tag::find()->where(['id' => $searchModel->tags])->all(), 'id', 'title', 'group'), 'clientOptions' => ['maxItems' => 1], 'url' => ['/grom/default/tag-list']]], ['value' => function ($model) use($route) { return Html::a(Yii::t('gromver.platform', 'Select'), '#', ['class' => 'btn btn-primary btn-xs', 'onclick' => \gromver\widgets\ModalIFrame::emitDataJs(['id' => $model->id, 'description' => Yii::t('gromver.platform', 'Page: {title}', ['title' => $model->title]), 'link' => \gromver\platform\common\models\MenuItem::toRoute($route, ['id' => $model->id]), 'value' => $model->id . ':' . $model->alias])]); }, 'format' => 'raw']], 'responsive' => true, 'hover' => true, 'condensed' => true, 'floatHeader' => true, 'floatHeaderOptions' => ['scrollingTop' => 0], 'bordered' => false, 'panel' => ['heading' => '<h3 class="panel-title"><i class="glyphicon glyphicon-th-list"></i> ' . Html::encode($this->title) . '</h3>', 'type' => 'info', 'after' => Html::a('<i class="glyphicon glyphicon-repeat"></i> ' . Yii::t('gromver.platform', 'Reset List'), [null], ['class' => 'btn btn-info']), 'showFooter' => false]]); ?> </div>
/** * Renders the content of a menu item. * Note that the container and the sub-menus are not rendered here. * @param array $item the menu item to be rendered. Please refer to [[items]] to see what data might be in the item. * @return string the rendering result */ protected function renderItem($item) { $routers = ''; $header = ''; if (isset($item['label'])) { $template = ArrayHelper::getValue($item, 'headerTemplate', $this->headerTemplate); $header = strtr($template, ['{icon}' => $item['icon'], '{label}' => $item['label']]); } foreach ($item['routers'] as $router) { $template = ArrayHelper::getValue($router, 'template', $this->routerTemplate); $routerContent = strtr($template, ['{icon}' => $router['icon'], '{link}' => isset($router['url']) ? Html::a($router['label'], $router['url']) : Html::a($router['label'], '#', ['onclick' => ModalIFrame::emitDataJs(['link' => MenuItem::toRoute($router['route'])])])]); $routerOptions = array_merge($this->routerOptions, $router['options']); $routers .= Html::tag(ArrayHelper::remove($routerOptions, 'tag', 'div'), $routerContent, $routerOptions); } $template = ArrayHelper::getValue($item, 'template', $this->itemTemplate); return strtr($template, ['{header}' => $header, '{routers}' => $routers]); }
/** * Находит путь к пункту меню ссылающемуся на категорию $categoryId, либо ее предка * Если путь ведет к предку, то достраиваем путь категории $categoryId * @param $categoryId * @param $menuMap \gromver\platform\frontend\components\MenuMap * @return null|string */ private function findCategoryMenuPath($categoryId, $menuMap) { if (!isset($this->_categoryPaths[$menuMap->language][$categoryId])) { if ($path = $menuMap->getMenuPathByRoute(MenuItem::toRoute('grom/news/category/view', ['id' => $categoryId]))) { $this->_categoryPaths[$menuMap->language][$categoryId] = $path; } elseif (($category = Category::findOne($categoryId)) && !$category->isRoot() && ($path = $this->findCategoryMenuPath($category->parent_id, $menuMap))) { $this->_categoryPaths[$menuMap->language][$categoryId] = $path . '/' . $category->alias; } else { $this->_categoryPaths[$menuMap->language][$categoryId] = false; } } return $this->_categoryPaths[$menuMap->language][$categoryId]; }
/** * Creates a URL according to the given route and parameters. * @param UrlManager $manager the URL manager * @param string $route the route. It should not have slashes at the beginning or the end. * @param array $params the parameters * @return string|boolean the created URL, or false if this rule cannot be used for creating this URL. */ public function createUrl($manager, $route, $params) { $language = $manager->getLanguageContext(); if ($path = $this->getMenuMap($language)->getMenuPathByRoute(MenuItem::toRoute($route, $params))) { return $path; } $requestInfo = new MenuRequest(['menuMap' => $this->getMenuMap($language), 'requestRoute' => $route, 'requestParams' => $params]); foreach ($this->_createUrlRules as $rule) { if ($result = $rule->process($requestInfo, $this)) { return $result; } } return false; }