public function run() { Yii::beginProfile("NavigationWidget for " . $this->rootId); $items = null; $cacheKey = implode(':', ['Navigation', $this->rootId, $this->depth, $this->viewFile]); if ($this->useCache) { if (false === ($items = \Yii::$app->cache->get($cacheKey))) { $items = null; } } if (null === $items) { $root = Navigation::find()->where(['id' => $this->rootId])->with('children')->orderBy(['sort_order' => SORT_ASC])->one(); $items = []; if ($this->depth > 0) { foreach ($root->children as $child) { $items[] = self::getTree($child, $this->depth - 1); } } if (count($items) > 0) { \Yii::$app->cache->set($cacheKey, $items, 86400, new TagDependency(['tags' => [\devgroup\TagDependencyHelper\ActiveRecordHelper::getCommonTag(Navigation::className())]])); } } $items = ArrayHelper::merge((array) $this->prependItems, $items, (array) $this->appendItems); $currentUri = Yii::$app->request->url; array_walk($items, function (&$item) use($currentUri) { if ($item['url'] === $currentUri) { $item['active'] = true; } }); $result = $this->render($this->viewFile, ['widget' => $this->widget, 'items' => $items, 'options' => $this->options, 'linkTemplate' => $this->linkTemplate, 'submenuTemplate' => $this->submenuTemplate]); Yii::endProfile("NavigationWidget for " . $this->rootId); return $result; }
public function getChildren() { return $this->hasMany(Navigation::className(), ['parent_id' => 'id'])->orderBy(['sort_order' => SORT_ASC]); }
public function actions() { return ['getTree' => ['class' => AdjacencyFullTreeDataAction::className(), 'class_name' => Navigation::className(), 'model_label_attribute' => 'name'], 'move' => ['class' => TreeNodeMoveAction::className(), 'className' => Navigation::className()], 'reorder' => ['class' => TreeNodesReorderAction::className(), 'className' => Navigation::className()]]; }
public function actions() { return ['getTree' => ['class' => AdjacencyFullTreeDataAction::className(), 'class_name' => Navigation::className(), 'model_label_attribute' => 'name'], 'move' => ['class' => TreeNodeMoveAction::className(), 'className' => Navigation::className()], 'reorder' => ['class' => TreeNodesReorderAction::className(), 'className' => Navigation::className()], 'addImage' => ['class' => AddImageAction::className()], 'upload' => ['class' => UploadAction::className()], 'remove' => ['class' => RemoveAction::className()], 'save-info' => ['class' => SaveInfoAction::className()]]; }
public function up() { $this->insert(Object::tableName(), ['name' => 'Navigation', 'object_class' => Navigation::className(), 'object_table_name' => Yii::$app->db->schema->getRawTableName(Navigation::tableName()), 'column_properties_table_name' => Yii::$app->db->schema->getRawTableName('{{%navigation_property}}'), 'eav_table_name' => Yii::$app->db->schema->getRawTableName('{{%navigation_eav}}'), 'categories_table_name' => Yii::$app->db->schema->getRawTableName('{{%navigation_category}}'), 'link_slug_category' => Yii::$app->db->schema->getRawTableName('{{%navigation_category_full_slug}}'), 'link_slug_static_value' => Yii::$app->db->schema->getRawTableName('{{%navigation_static_value_category}}'), 'object_slug_attribute' => 'slug']); }