예제 #1
0
 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);
 }
예제 #2
0
파일: Document.php 프로젝트: cargomedia/cm
 /**
  * @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;
 }
예제 #3
0
파일: Embed.php 프로젝트: NicolasSchmutz/cm
 /**
  * @param CM_Page_Abstract $page
  * @return string
  */
 protected function _renderPage(CM_Page_Abstract $page)
 {
     $renderAdapterLayout = new CM_RenderAdapter_Layout($this->getRender(), $page);
     $this->_title = $renderAdapterLayout->fetchTitle();
     return $renderAdapterLayout->fetchPage();
 }