system/modules/pct_theme_settings/PCT/ThemeSettings/PageImage/Module.php line 55

Open in your IDE?
  1. <?php
  2. /**
  3.  * Contao Open Source CMS
  4.  *
  5.  * Copyright (C) 2005-2013 Leo Feyer
  6.  *
  7.  * @copyright Tim Gatzky 2019
  8.  * @author  Tim Gatzky <info@tim-gatzky.de>
  9.  * @package  pct_theme_settings
  10.  * @link  http://contao.org
  11.  */
  12. /**
  13.  * Namespace
  14.  */
  15. namespace PCT\ThemeSettings\PageImage;
  16. /**
  17.  * Class file
  18.  * Module
  19.  */
  20. class Module extends \Contao\Module
  21. {
  22.     /**
  23.      * Template
  24.      * @var string
  25.      */
  26.     protected $strTemplate 'mod_pageimage';
  27.     /**
  28.      * Display a wildcard in the back end
  29.      *
  30.      * @return string
  31.      */
  32.     public function generate()
  33.     {
  34.         if (TL_MODE == 'BE')
  35.         {
  36.             /** @var \BackendTemplate|object $objTemplate */
  37.             $objTemplate = new \Contao\BackendTemplate('be_wildcard');
  38.             $objTemplate->wildcard '### ' utf8_strtoupper($GLOBALS['TL_LANG']['FMD']['pageimage'][0]) . ' ###';
  39.             $objTemplate->title $this->headline;
  40.             $objTemplate->id $this->id;
  41.             $objTemplate->link $this->name;
  42.             $objTemplate->href 'contao/main.php?do=themes&amp;table=tl_module&amp;act=edit&amp;id=' $this->id;
  43.             return $objTemplate->parse();
  44.         }
  45.         
  46.         return parent::generate();
  47.     }
  48.     /**
  49.      * Generate the module
  50.      */
  51.     protected function compile()
  52.     {
  53.         global $objPage;
  54.         $_objPage = clone($objPage);
  55.         
  56.         // no image on current page, check for inheritance
  57.         if( (boolean)$objPage->addImage === false )
  58.         {
  59.             $arrPages = array();
  60.             $objParents \Contao\PageModel::findParentsById($objPage->id);
  61.             if($objParents !== null)
  62.             {
  63.                 $intLevel = (int)$this->showLevel;
  64.                 foreach($objParents as $i => $pageModel)
  65.                 {
  66.                     // stop level out of scope or no image selected
  67.                     if( ($i >= $intLevel && $intLevel 0) || (boolean)$pageModel->addImage === false )
  68.                     {
  69.                         continue;
  70.                     }
  71.                 
  72.                     // collect page models
  73.                     $arrPages[] = $pageModel;
  74.                 }
  75.             }
  76.                 
  77.             $arrPages array_reversearray_filter($arrPages) );
  78.             
  79.             $i count($arrPages) - 1;
  80.             if( isset($arrPages[$i]) )
  81.             {
  82.                 $_objPage $arrPages[$i];
  83.             }
  84.         }
  85.         
  86.         $objFile \Contao\FilesModel::findByPk$_objPage->singleSRC );
  87.         if( $objFile !== null && (boolean)$_objPage->addImage === true  )
  88.         {
  89.             $arrData array_merge$this->getModel()->row() ,$_objPage->row() );
  90.             
  91.             $arrData['singleSRC'] = $objFile->path;
  92.             $arrData['size'] = $arrData['imgSize'];
  93.             
  94.             if( empty($_objPage->pageTitle) === false )
  95.             {
  96.                 $arrData['title'] = $_objPage->pageTitle;
  97.             }
  98.             
  99.             $this->addImageToTemplate($this->Template$arrData);
  100.             $arrMediaQueries = array();
  101.             foreach($this->Template->picture['sources'] ?: array() as $data)
  102.             {
  103.                 if( \strlen($data['media']) < )
  104.                 {
  105.                     continue;
  106.                 }
  107.                 $arrMediaQueries[] = '@media '.$data['media'].' { .resp_pageimage_'.$this->id.' .inside { background-image:url('.$data['src'].') !important; }';
  108.             }
  109.             $this->Template->hasResponsiveImage true;
  110.             $this->Template->hasMediaQueries true;
  111.             $this->Template->mediaqueries \implode('',$arrMediaQueries);
  112.             
  113.             $arrCssId $this->cssID;
  114.             $arrCssId[1] .= ' resp_pageimage_'.$this->id;
  115.             $this->cssID $arrCssId;
  116.         }
  117.         
  118.         // source page object to template
  119.         $this->Template->Page $_objPage;
  120.     }
  121. }