openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

PageShowAction.class.php (1908B)


      1 <?php
      2 namespace cms\action\page;
      3 use cms\action\Method;
      4 use cms\action\PageAction;
      5 use cms\base\Configuration;
      6 use cms\generator\PageGenerator;
      7 use cms\generator\Producer;
      8 use cms\model\Language;
      9 use cms\model\Template;
     10 use configuration\Config;
     11 use logger\Logger;
     12 
     13 class PageShowAction extends PageAction implements Method {
     14     public function view() {
     15 	    // We must overwrite the CSP here.
     16         // The output is only shown in an iframe, so there is no security impact to the CMS.
     17         // But if the template is using inline JS or CSS, we would break this with a CSP-header.
     18 		$pageSettingsConfig =  new Config( $this->page->getTotalSettings() );
     19         $this->setContentSecurityPolicy($pageSettingsConfig->get('content-security-policy',[]) );
     20 
     21 		$this->page->load();
     22 
     23 
     24 		Logger::debug("Preview page: ".$this->page->__toString() );
     25 
     26 		$pageContext = $this->createPageContext( Producer::SCHEME_PREVIEW );
     27 
     28 		// HTTP-Header mit Sprachinformation setzen.
     29 		$language = new Language( $pageContext->languageId);
     30 		$language->load();
     31 		$this->addHeader('Content-Language',$language->isoCode);
     32 
     33 		$generator = new PageGenerator( $pageContext );
     34 
     35 		$this->setContentType( $generator->getMimeType() );
     36 
     37 
     38 		$template = new Template( $this->page->templateid );
     39 		$templateModel = $template->loadTemplateModelFor( $pageContext->modelId );
     40 		$templateModel->load();
     41 
     42 		// Executing PHP in Pages.
     43 		$enablePHP = Configuration::subset('publish')->get('enable_php_in_page_content');
     44 		if	( ( $enablePHP=='auto' && $templateModel->extension == 'php') ||
     45 		        $enablePHP===true )
     46         {
     47             ob_start();
     48             require( $generator->getCache()->load()->getFilename() );
     49             $this->setTemplateVar('value',ob_get_contents() );
     50             ob_end_clean();
     51         }
     52 		else
     53             $this->setTemplateVar('value',$generator->getCache()->get());
     54     }
     55 
     56     public function post() {
     57     }
     58 }