public function testLanguageAlternatives() { $site = $this->getMockSite('CM_Site_Abstract', null, array('url' => 'http://www.example.com')); $language1 = CMTest_TH::createLanguage('en'); $language2 = CMTest_TH::createLanguage('de'); $environment = new CM_Frontend_Environment($site, null, $language2, null, true); $render = new CM_Frontend_Render($environment, true); $this->getMockForAbstractClass('CM_Layout_Abstract', array(), 'CM_Layout_Default'); $page = new CM_Page_Example(); $renderAdapter = new CM_RenderAdapter_Layout($render, $page); $html = $renderAdapter->fetch(); $this->assertContains('<link rel="alternate" href="http://www.example.com/example" hreflang="x-default">', $html); $this->assertContains('<link rel="alternate" href="http://www.example.com/en/example" hreflang="en">', $html); $this->assertContains('<link rel="alternate" href="http://www.example.com/de/example" hreflang="de">', $html); }
/** * @return string */ public function fetch() { $render = $this->getRender(); $page = $this->_getPage(); $layoutClass = $page->getLayout($render->getEnvironment()); $layout = new $layoutClass(['page' => $page]); $document = $this->_getDocument(); $renderAdapterPage = new CM_RenderAdapter_Page($render, $page); $renderAdapterLayout = new CM_RenderAdapter_Layout($render, $layout); $page->checkAccessible($render->getEnvironment()); $viewResponse = new CM_Frontend_ViewResponse($document); $frontend = $render->getGlobalResponse(); $frontend->treeExpand($viewResponse); $viewResponse->setTemplateName('default'); $document->prepare($render->getEnvironment(), $viewResponse); $viewResponse->set('viewResponse', $viewResponse); $viewResponse->set('page', $page); $viewResponse->set('layoutContent', $renderAdapterLayout->fetch()); $viewResponse->set('title', $renderAdapterPage->fetchTitleWithBranding()); $viewResponse->set('metaDescription', $renderAdapterPage->fetchDescription()); $viewResponse->set('metaKeywords', $renderAdapterPage->fetchKeywords()); $webFontLoaderConfig = $render->getSite()->getWebFontLoaderConfig(); if ($webFontLoaderConfig) { $viewResponse->set('webFontLoaderConfig', CM_Params::encode($webFontLoaderConfig, true)); } $environmentDefault = new CM_Frontend_Environment($render->getEnvironment()->getSite()); $renderDefault = new CM_Frontend_Render($environmentDefault); $viewResponse->set('renderDefault', $renderDefault); $viewResponse->set('languageList', new CM_Paging_Language_Enabled()); $frontend->getOnloadHeaderJs()->append('cm.options = ' . CM_Params::encode($this->_getOptions(), true)); if ($viewer = $render->getViewer()) { $frontend->getOnloadHeaderJs()->append('cm.viewer = ' . CM_Params::encode($viewer, true)); } $frontend->getOnloadReadyJs()->append('cm.getLayout()._ready();'); $frontend->getOnloadHeaderJs()->append('cm.ready();'); $html = $render->fetchViewResponse($viewResponse); $frontend->treeCollapse(); return $html; }
/** * @param CM_Page_Abstract $page * @return string */ protected function _renderPage(CM_Page_Abstract $page) { $renderAdapterLayout = new CM_RenderAdapter_Layout($this->getRender(), $page); return $renderAdapterLayout->fetch(); }