/** * 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; }
/** * 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); }
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); }
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()); }
function getPagesImageURL(Page $page) { return call_user_func(f\pipeline(getUrl, f\bind(toDomDoc), Either\toMaybe, f\bind(pageImageURL)), $page->getUrl()); }
/** * 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; }
/** * 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); } } }