src/Controller/ArticleController.php line 19

Open in your IDE?
  1. <?php
  2.     namespace App\Controller;
  3.     use App\Website\Tool\Image;
  4.     use Devkitchen\DocumentIndexingBundle\Annotations\IndexingDocumentType;
  5.     use Devkitchen\DocumentIndexingBundle\Controller\DocumentTypeAwareController;
  6.     use Devkitchen\DocumentIndexingBundle\IndexingService\IndexingService;
  7.     use Pimcore\Model\Asset;
  8.     use Pimcore\Model\DataObject\Location;
  9.     use Pimcore\Model\Document\Page;
  10.     use Pimcore\Model\Document\Service;
  11.     use Pimcore\Translation\Translator;
  12.     use Symfony\Component\DomCrawler\Crawler;
  13.     use Symfony\Component\HttpFoundation\Request;
  14.     use Symfony\Component\HttpFoundation\Response;
  15.     use Symfony\Component\Routing\Annotation\Route;
  16.     class ArticleController extends BaseController implements DocumentTypeAwareController {
  17.         /**
  18.          * @Route({
  19.          *         "de": "/{_locale}/entdecken/news-presse",
  20.          *         "en": "/{_locale}/entdecken/news-presse"
  21.          * }, name="article_not_filtered", methods={"GET"})
  22.          *
  23.          * @Route({
  24.          *         "de": "/{_locale}/entdecken/news-presse/typ/{key}",
  25.          *         "en": "/{_locale}/entdecken/news-presse/typ/{key}"
  26.          * }, name="article_filtered_by_key", methods={"GET"})
  27.          *
  28.          * @param Request $request
  29.          *
  30.          * @return Response
  31.          */
  32.         public function listingAction(Request $requestIndexingService $indexingServiceTranslator $translator): Response {
  33.             $filterActive $request->get('key''default');
  34.             $aggregatedFilter $indexingService->getFieldAggregated'article''documentSubtype' );
  35.             //$listing = $indexingService->listing( 'article', [ $filterActive ], 'default', $request->get('_locale', 'de'), 'documentDate', 'desc');
  36.             $listing $indexingService->setOrderBy'documentDate')
  37.                                        ->setOrderDirection'desc')
  38.                                        ->listing'article', [ $filterActive ], 'default'$request->get('_locale''de'));
  39.             $listingCount 0;
  40.             if ($listing) {
  41.                 $listingCount count$listing );
  42.             }
  43.             //list view = 1;
  44.             $columnCount 1;
  45.             //grid view
  46.             //$columnCount = 3;
  47.             $rows = [];
  48.             if ($listingCount 0) {
  49.                 $rowCount ceil$listingCount $columnCount );
  50.                 $contentIndex 0;
  51.                 for ($i 0$i $rowCount$i++) {
  52.                     $content = [];
  53.                     for($c 0$c $columnCount$c++) {
  54.                         if (isset($listing[$contentIndex])) {
  55.                             $item $listing[$contentIndex];
  56.                             $teaserImageId $item->teaserAssetId;
  57.                             if ($teaserImageId) {
  58.                                 $teaserImage Asset::getById$teaserImageId );
  59.                             }
  60.                             else {
  61.                                 $teaserImage $this->document->getProperty'document-teaser-image-fallback' );
  62.                             }
  63.                             if ($teaserImage) {
  64.                                 $gridImageData   Image::getGridThumbnailMetaData$teaserImage4$this->editmode'teaser-default' );
  65.                                 $teaserThumbnail $teaserImage->getThumbnail$gridImageData->thumbnail );
  66.                                 $teaserSubtitle null;
  67.                                 if ($item->documentSubtype) {
  68.                                     foreach($item->documentSubtype as $key) {
  69.                                         $teaserSubtitle[] = $translator->trans('filter.value.'.$key);
  70.                                     }
  71.                                     $teaserSubtitle implode(', '$teaserSubtitle);
  72.                                 }
  73.                                 //list view
  74.                                 $content[] = $this->renderView'includes/partials/stuff/document-list-item.html.twig', [
  75.                                     'url'   => Page::getById$item->documentId ),
  76.                                     'title' => $item->teaserTitle,
  77.                                     'subtitle' => null//$teaserSubtitle,
  78.                                     'text' => $item->teaserContent,
  79.                                     'image' => $teaserThumbnail->getHtml()
  80.                                 ] );
  81.                                 //grid view
  82.                                 //$content[] = $this->renderView( 'includes/partials/teaser/teaser-image-title.html.twig', [
  83.                                 //    'url'   => Page::getById( $item->documentId ),
  84.                                 //    'title' => $item->teaserTitle,
  85.                                 //    'subtitle' => $teaserSubtitle,
  86.                                 //    'image' => $teaserThumbnail->getHtml()
  87.                                 //] );
  88.                                 $contentIndex ++;
  89.                             }
  90.                         }
  91.                     }
  92.                     //list view
  93.                     $rows[] = $this->renderView'includes/partials/stuff/div.html.twig', [
  94.                         'content' => implode(''$content),
  95.                         'classes' => 'grid grid--t50 grid--50-4-5 grid--vc document-list'
  96.                     ]);
  97.                     //grid view
  98.                     //$rows[] = $this->renderView( 'includes/partials/stuff/grid-row.html.twig', [
  99.                     //    'columns' => $content,
  100.                     //    'classes' => 'grid--t33 grid--4-4-4'
  101.                     //]);
  102.                 //endfor
  103.                 $request->getSession()->set('article-listing'$listing);
  104.                 $request->getSession()->set('article-listing-route', [
  105.                     'route' => $request->get('_route'),
  106.                     'params' => $request->get('_route_params')
  107.                 ]);
  108.             }
  109.             return $this->render'article/listing.html.twig', [
  110.                 'layoutClass' => 'layout--listing layout--article',
  111.                 'filter' => $aggregatedFilter,
  112.                 'filterActive' => $filterActive,
  113.                 'listing' => $listing,
  114.                 'listingRows' => $rows
  115.             ]);
  116.         }
  117.         /**
  118.          * @param Request         $request
  119.          * @param IndexingService $indexingService
  120.          *
  121.          * @return Response
  122.          *
  123.          * @IndexingDocumentType(type="article", tagIdForSubtype="6")
  124.          */
  125.         public function detailAction(Request $requestIndexingService $indexingService): Response {
  126.             $prevItem null;
  127.             $nextItem null;
  128.             $overview null;
  129.             if ($listing $request->getSession()->get'article-listing')) {
  130.                 $item $indexingService->get$this->document );
  131.                 if ($item) {
  132.                     foreach($listing as $key => $listingItem) {
  133.                         if ($listingItem->id == $item->id) {
  134.                             if (isset($listing[$key 1])) {
  135.                                 $prevItem $listing[$key 1];
  136.                             }
  137.                             if (isset($listing[$key 1])) {
  138.                                 $nextItem $listing[$key 1];
  139.                             }
  140.                         }
  141.                     }
  142.                 }
  143.                 $overview $request->headers->get'referer');
  144.                 if ($overviewRouteInfo $request->getSession()->get('article-listing-route')) {
  145.                     $overview $this->generateUrl$overviewRouteInfo['route'], $overviewRouteInfo['params'] ?: []);
  146.                 }
  147.                 //p_r($request->get('_route'));
  148.                 //p_r($request->get('_route_params'));
  149.             }
  150.             return $this->render('article/detail.html.twig', [
  151.                 'layoutClass' => 'layout--article',
  152.                 'overview' => $overview,
  153.                 'prev' => $prevItem,
  154.                 'next' => $nextItem
  155.             ]);
  156.         }
  157.     }