/**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  *
  * @return void
  *
  * @throws CDbException
  */
 public function actionCreate()
 {
     $model = new Page();
     $menuId = null;
     $menuParentId = 0;
     if (($data = Yii::app()->getRequest()->getPost('Page')) !== null) {
         $model->setAttributes($data);
         $transaction = Yii::app()->db->beginTransaction();
         try {
             if ($model->save()) {
                 // если активен модуль "Меню" - сохраним в меню
                 if (Yii::app()->hasModule('menu')) {
                     $menuId = (int) Yii::app()->getRequest()->getPost('menu_id');
                     $parentId = (int) Yii::app()->getRequest()->getPost('parent_id');
                     $menu = Menu::model()->findByPk($menuId);
                     if ($menu) {
                         if (!$menu->addItem($model->title, $model->getUrl(), $parentId, true)) {
                             throw new CDbException(Yii::t('PageModule.page', 'There is an error when connecting page to menu...'));
                         }
                     }
                 }
                 Yii::app()->getUser()->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('PageModule.page', 'Page was created'));
                 $transaction->commit();
                 $this->redirect((array) Yii::app()->getRequest()->getPost('submit-type', ['create']));
             }
         } catch (Exception $e) {
             $transaction->rollback();
             $model->addError(false, $e->getMessage());
         }
     }
     $languages = $this->yupe->getLanguagesList();
     //если добавляем перевод
     $id = (int) Yii::app()->getRequest()->getQuery('id');
     $lang = Yii::app()->getRequest()->getQuery('lang');
     if (!empty($id) && !empty($lang)) {
         $page = Page::model()->findByPk($id);
         if (null === $page) {
             Yii::app()->getUser()->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('PageModule.page', 'Targeting page was not found!'));
             $this->redirect(['index']);
         }
         if (!array_key_exists($lang, $languages)) {
             Yii::app()->getUser()->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('PageModule.page', 'Language was not found!'));
             $this->redirect(['index']);
         }
         Yii::app()->getUser()->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('PageModule.page', 'You add translation for {lang}', ['{lang}' => $languages[$lang]]));
         $model->lang = $lang;
         $model->slug = $page->slug;
         $model->category_id = $page->category_id;
         $model->title = $page->title;
         $model->title_short = $page->title_short;
         $model->parent_id = $page->parent_id;
         $model->order = $page->order;
         $model->layout = $page->layout;
     } else {
         $model->lang = Yii::app()->getLanguage();
     }
     $this->render('create', ['model' => $model, 'pages' => Page::model()->getFormattedList(), 'languages' => $languages, 'menuId' => $menuId, 'menuParentId' => $menuParentId]);
 }
 /**
  * Рекурсивно возвращает пригодный для zii.widgets.CBreadcrumbs массив, начиная со страницы $page
  * @param  Page $page
  * @return array
  * @internal param int $pageId
  */
 private function getBreadCrumbsRecursively(Page $page)
 {
     $pages = [];
     $pages[$page->title] = $page->getUrl();
     $pp = $page->parent;
     if ($pp) {
         $pages += $this->getBreadCrumbsRecursively($pp);
     }
     return $pages;
 }
Example #3
0
 /**
  * Get "copy code" for page.
  *
  * @param Page $page
  * @return array
  */
 public static function getPageCode(Page $page)
 {
     $pages = array();
     foreach ($page->getChildren() as $child) {
         $pages[] = self::getPageCode($child);
     }
     return array("id" => $page->getPageId(), "uid" => $page->getUid(), "name" => $page->getName(), "url" => $page->getUrl(), "visible" => $page->getVisible(), "enabled" => $page->getEnabled(), "include_in_index" => $page->getIncludeInIndex(), "redirect_method" => $page->getRedirectMethod(), "redirect_page" => $page->getRedirectPage() ? $page->getRedirectPage()->getUrl() : null, "redirect_url" => $page->getRedirectUrl(), "model_route" => $page->getModelRoute(), "meta" => self::getMetadataCode($page), "image" => $page->getImage(), "langcode" => $page->getLangcode(), "generator" => $page->getGenerator(), "encoding" => $page->getEncoding(), "revision" => $page->getActivePageRevision() ? self::getPageRevisionCode($page->getActivePageRevision()) : null, "modified" => $page->getLastModified(), "pages" => $pages);
 }
Example #4
0
 protected function generateCanonicalUrl(Page $model)
 {
     $url = $model->getUrl();
     $urlOne = $url[0];
     unset($url[0]);
     if (isset($_GET['Comment_page'])) {
         $url['Comment_page'] = $_GET['Comment_page'];
     }
     if (isset($_GET['ajax'])) {
         $url['ajax'] = $_GET['ajax'];
     }
     $this->canonicalUrl = $this->createAbsoluteUrl($urlOne, $url);
 }
Example #5
0
 public function testGetUrlShouldNotDoSubstitutionWithEmptyParameters()
 {
     // prepare
     $page = new Page();
     $page->setUrl($url = 'http://host/admin/user/%name%/type/%type%/id/%id%');
     // act & assert
     $this->assertEquals($url, $page->getUrl());
 }
Example #6
0
function getPagesImageURL(Page $page)
{
    return call_user_func(f\pipeline(getUrl, f\bind(toDomDoc), Either\toMaybe, f\bind(pageImageURL)), $page->getUrl());
}
Example #7
0
 /**
  * Twig callback to decide if a page is the active page or below it.
  *
  * @param \Page $page
  * @param \Page $activePage
  * @return bool
  */
 public function twigGetActiveSubpage(\Page $page, \Page $activePage)
 {
     while ($activePage) {
         if ($activePage->getUrl() == $page->getUrl()) {
             return true;
         }
         $activePage = $activePage->getParent();
     }
     return false;
 }
Example #8
0
 /**
  * Save page properties.
  *
  * @param Page $page
  * @param array $values
  */
 public static function savePageProperties(Page $page, array $values)
 {
     $urlChanged = $page->getUrl() != $values['url'];
     $page->setAutoName($values['name']);
     $page->setEnabled($values['enabled']);
     $page->setVisible($values['visible']);
     $page->setIncludeInIndex($values['index']);
     // Redirection
     $v = $values['redirect'];
     $page->setRedirectMethod($v['method'] ? $v['method'] : null);
     if ($v['page_id'] == 'external') {
         $page->setRedirectUrl($v['url']);
     } else {
         $redirectPageId = (int) $v['page_id'];
         $page->setRedirectPageId($redirectPageId ? $redirectPageId : null);
         $page->setRedirectUrl(null);
     }
     // Base page and template
     $v = $values['base_page'];
     $pageRevision = $page->getPageRevision();
     $pageRevision->setBasePageId($v['base_page_id'] ? (int) $v['base_page_id'] : null);
     // Advanced
     $v = $values['advanced'];
     $page->setImage($v['image']);
     $pageRevision->setTemplate($v['template'] ? $v['template'] : null);
     $page->setLangcode(strlen($v['langcode']) ? $v['langcode'] : null);
     $page->setModelRoute($v['model_route'] ? $v['model_route'] : null);
     $page->setCacheLifetime((int) $v['cache_lifetime']);
     $page->setGenerator(strlen($v['generator']) ? $v['generator'] : null);
     $page->setEncoding(strlen($v['encoding']) ? $v['encoding'] : null);
     // Save page/revision
     $pageRevision->save();
     $page->save();
     // Update url recursively
     if (empty($values['url'])) {
         // reset url
         $page->setUrlRecurse($page->getExpectedUrl());
     } else {
         if ($urlChanged) {
             // set new url
             $url = $values['url'];
             if (substr($url, -1) != '/') {
                 $url .= '/';
             }
             if ($url != '/' && substr($url, 0, 1) == '/') {
                 $url = substr($url, 1);
             }
             $page->setUrlRecurse($url);
         }
     }
 }