예제 #1
0
 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;
 }
예제 #2
0
 public function getChildren()
 {
     return $this->hasMany(Navigation::className(), ['parent_id' => 'id'])->orderBy(['sort_order' => SORT_ASC]);
 }
예제 #3
0
 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()]];
 }
예제 #4
0
 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']);
 }