public function renderItem($navItemId, $appendix = null) { $model = NavItem::findOne($navItemId); if (!$model) { throw new NotFoundHttpException('The requested nav item could not found.'); } Yii::$app->urlManager->contextNavItemId = $navItemId; Yii::$app->set('page', ['class' => 'cms\\components\\Page', 'model' => $model]); $event = new \cms\events\BeforeRenderEvent(); foreach ($model->getNav()->getProperties() as $property) { $object = $model->getNav()->getProperty($property['var_name']); $object->trigger($object::EVENT_BEFORE_RENDER, $event); if (!$event->isValid) { Yii::$app->end(); } } $typeModel = $model->getType(); $typeModel->setOptions(['cmsControllerObject' => $this, 'navItemId' => $navItemId, 'restString' => $appendix]); $content = $typeModel->getContent(); if ($this->view->title === null) { $this->view->title = $model->title; } $this->view->registerMetaTag(['name' => 'og:title', 'content' => $this->view->title], 'fbTitle'); if (!empty($model->description)) { $this->view->registerMetaTag(['name' => 'description', 'content' => $model->description], 'metaDescription'); $this->view->registerMetaTag(['name' => 'og:description', 'content' => $model->description], 'fbDescription'); } if ($this->module->enableTagParsing) { $content = Parser::encode($content); } return $content; }
/** * returns all the PAGE type specific informations. */ public function actionTypePageContainer($navItemId) { $navItem = NavItem::findOne($navItemId); $type = $navItem->getType(); $layout = \cmsadmin\models\Layout::findOne($type->layout_id); if (!empty($layout)) { $layout->json_config = json_decode($layout->json_config, true); } return ['layout' => $layout, 'type_container' => $type]; }
public function renderItem($navItemId, $appendix = null) { $model = NavItem::findOne($navItemId); $typeModel = $model->getType(); $typeModel->setOptions(['navItemId' => $navItemId, 'restString' => $appendix]); $content = $typeModel->getContent(); if ($this->view->title === null) { $this->view->title = $model->title; } return $content; }
public function actionIndex($itemId) { if (Yii::$app->adminuser->isGuest) { throw new ForbiddenHttpException('Unable to see the preview page, session expired or not logged in.'); } $langShortCode = NavItem::findOne($itemId)->lang->short_code; Yii::$app->composition['langShortCode'] = $langShortCode; $item = Yii::$app->menu->find()->where(['id' => $itemId])->with('hidden')->lang($langShortCode)->one(); if (!$item) { throw new NotFoundHttpException("Unable to find item id {$itemId}"); } return $this->render('index', ['pageContent' => $this->renderItem($itemId)]); }
private function getBlock($blockId) { $blockItem = (new \yii\db\Query())->select('*')->from('cms_nav_item_page_block_item')->where(['id' => $blockId])->one(); $blockObject = \cmsadmin\models\Block::objectId($blockItem['block_id'], $blockItem['id'], 'admin', NavItem::findOne($blockItem['nav_item_page_id'])); if ($blockObject === false) { return false; } $blockItem['json_config_values'] = json_decode($blockItem['json_config_values'], true); $blockItem['json_config_cfg_values'] = json_decode($blockItem['json_config_cfg_values'], true); $blockValue = $blockItem['json_config_values']; $blockCfgValue = $blockItem['json_config_cfg_values']; $blockObject->setVarValues(empty($blockValue) ? [] : $blockValue); $blockObject->setCfgValues(empty($blockCfgValue) ? [] : $blockCfgValue); $placeholders = []; foreach ($blockObject->getPlaceholders() as $pk => $pv) { $pv['nav_item_page_id'] = $blockItem['nav_item_page_id']; $pv['prev_id'] = $blockItem['id']; $placeholderVar = $pv['var']; $pv['__nav_item_page_block_items'] = $this->getSub($placeholderVar, $blockItem['nav_item_page_id'], $blockItem['id']); $placeholder = $pv; $placeholders[] = $placeholder; } if (empty($blockItem['json_config_values'])) { $blockItem['json_config_values'] = new \stdClass(); } if (empty($blockItem['json_config_cfg_values'])) { $blockItem['json_config_cfg_values'] = new \stdClass(); } return ['is_dirty' => (int) $blockItem['is_dirty'], 'is_container' => (int) $blockObject->isContainer, 'id' => $blockItem['id'], 'is_hidden' => $blockItem['is_hidden'], 'name' => $blockObject->name(), 'icon' => $blockObject->icon(), 'full_name' => $blockObject->getFullName(), 'twig_admin' => $blockObject->twigAdmin(), 'vars' => $blockObject->getVars(), 'cfgs' => $blockObject->getCfgs(), 'extras' => $blockObject->extraVars(), 'values' => $blockItem['json_config_values'], 'field_help' => $blockObject->getFieldHelp(), 'cfgvalues' => $blockItem['json_config_cfg_values'], '__placeholders' => $placeholders]; }
public function createPageFromDraft($parentNavId, $navContainerId, $langId, $title, $alias, $description, $fromDraftNavId, $isDraft = false) { if (!$isDraft && empty($isDraft) && !is_numeric($isDraft)) { $isDraft = 0; } $errors = []; // nav $nav = $this; $nav->attributes = ['parent_nav_id' => $parentNavId, 'nav_container_id' => $navContainerId, 'is_hidden' => 1, 'is_offline' => 1, 'is_draft' => $isDraft]; // nav item $navItem = new NavItem(); $navItem->parent_nav_id = $parentNavId; $navItem->attributes = ['lang_id' => $langId, 'title' => $title, 'alias' => $alias, 'description' => $description, 'nav_item_type' => 1]; if (!$nav->validate()) { $errors = ArrayHelper::merge($nav->getErrors(), $errors); } if (!$navItem->validate()) { $errors = ArrayHelper::merge($navItem->getErrors(), $errors); } if (!empty($errors)) { return $errors; } // get draft nav item data $draftNavItem = NavItem::findOne(['nav_id' => $fromDraftNavId]); $navItemPageId = $draftNavItem->type->id; $layoutId = $draftNavItem->type->layout_id; $pageBlocks = NavItemPageBlockItem::findAll(['nav_item_page_id' => $navItemPageId]); // proceed save process $nav->save(); $navItemPage = new NavItemPage(); $navItemPage->layout_id = $layoutId; $navItemPage->save(); foreach ($pageBlocks as $block) { $i = new NavItemPageBlockItem(); $i->attributes = $block->toArray(); $i->nav_item_page_id = $navItemPage->id; $i->insert(); } $navItem->nav_id = $nav->id; $navItem->nav_item_type_id = $navItemPage->id; return $navItem->save(); }