Beispiel #1
0
 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;
 }
Beispiel #2
0
 /**
  * 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];
 }
Beispiel #3
0
 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];
 }
Beispiel #6
0
 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();
 }