diff --git a/trunk/app/Resources/views/base.html.twig b/trunk/app/Resources/views/base.html.twig index e2fb3444..8799382a 100644 --- a/trunk/app/Resources/views/base.html.twig +++ b/trunk/app/Resources/views/base.html.twig @@ -62,7 +62,7 @@
- {{ render(controller('AppBundle:Default:header')) }} + {{ render(controller('AppBundle:Component:header')) }} {% block header2 %}
@@ -96,7 +96,7 @@ {% block breadcrumb %} {% if page is defined %} - {{ render(controller('AppBundle:Default:breadcrumb', {'page': page})) }} + {{ render(controller('AppBundle:Component:breadcrumb', {'page': page})) }} {% elseif breadcrumb_entries is defined %} {{ include('default/components/breadcrumb.html.twig') }} {% endif %} diff --git a/trunk/app/Resources/views/default/components/sidebar.html.twig b/trunk/app/Resources/views/default/components/sidebar.html.twig index 36618857..5b03ec13 100644 --- a/trunk/app/Resources/views/default/components/sidebar.html.twig +++ b/trunk/app/Resources/views/default/components/sidebar.html.twig @@ -5,7 +5,7 @@ {% if search_form is defined %} {{ include('default/components/sidebar/searchSidebarWidget.html.twig') }} {% elseif page is defined %} - {{ render(controller('AppBundle:Default:searchSidebarWidget', {page: page})) }} + {{ render(controller('AppBundle:Component:searchSidebarWidget', {page: page})) }} {% endif %} {% else %} {{ search_sidebar_widget_block|raw }} @@ -14,7 +14,7 @@ {% if show_nav_sidebar_widget ?? true and page is defined %} {% if nav_sidebar_widget_block is empty %} - {{ render(controller('AppBundle:Default:navSidebarWidget', {page: page})) }} + {{ render(controller('AppBundle:Component:navSidebarWidget', {page: page})) }} {% else %} {{ nav_sidebar_widget_block|raw }} {% endif %} @@ -48,15 +48,15 @@
{% if (show_travel_guide_sidebar_widget ?? true) and page is defined and page.country is not empty %} - {{ render(controller('AppBundle:Default:travelGuideSidebarWidget', {country: page.country})) }} + {{ render(controller('AppBundle:Component:travelGuideSidebarWidget', {country: page.country})) }} {% endif %} {% if (show_travel_magazine_sidebar_widget ?? true) and page is defined and page.country is not empty %} - {{ render(controller('AppBundle:Default:travelMagazineSidebarWidget', {country: page.country})) }} + {{ render(controller('AppBundle:Component:travelMagazineSidebarWidget', {country: page.country})) }} {% endif %} {% if (show_offers_sidebar_widget ?? true) and page is defined and page.country is not empty %} - {{ render(controller('AppBundle:Default:offersSidebarWidget', {country: page.country})) }} + {{ render(controller('AppBundle:Component:offersSidebarWidget', {country: page.country})) }} {% endif %} \ No newline at end of file diff --git a/trunk/app/Resources/views/default/components/sidebar/pageSliderSidebarWidget.html.twig b/trunk/app/Resources/views/default/components/sidebar/pageSliderSidebarWidget.html.twig index abbbdd1b..14242fb0 100644 --- a/trunk/app/Resources/views/default/components/sidebar/pageSliderSidebarWidget.html.twig +++ b/trunk/app/Resources/views/default/components/sidebar/pageSliderSidebarWidget.html.twig @@ -22,7 +22,7 @@ {% if page.travelProgram is not empty and page.travelProgram.lowestPrice > 0 %}
- Für {{ child_page.travelProgram.lowestPrice|number_format }},- € p.P. + Für {{ page.travelProgram.lowestPrice|number_format }},- € p.P.
{% endif %} diff --git a/trunk/app/Resources/views/default/pages/default.html.twig b/trunk/app/Resources/views/default/pages/cms/default.html.twig similarity index 100% rename from trunk/app/Resources/views/default/pages/default.html.twig rename to trunk/app/Resources/views/default/pages/cms/default.html.twig diff --git a/trunk/app/Resources/views/default/pages/overview.html.twig b/trunk/app/Resources/views/default/pages/cms/overview.html.twig similarity index 100% rename from trunk/app/Resources/views/default/pages/overview.html.twig rename to trunk/app/Resources/views/default/pages/cms/overview.html.twig diff --git a/trunk/app/Resources/views/default/pages/travelProgram.html.twig b/trunk/app/Resources/views/default/pages/cms/travelProgram.html.twig similarity index 100% rename from trunk/app/Resources/views/default/pages/travelProgram.html.twig rename to trunk/app/Resources/views/default/pages/cms/travelProgram.html.twig diff --git a/trunk/app/Resources/views/default/pages/travelProgramOverview.html.twig b/trunk/app/Resources/views/default/pages/cms/travelProgramOverview.html.twig similarity index 100% rename from trunk/app/Resources/views/default/pages/travelProgramOverview.html.twig rename to trunk/app/Resources/views/default/pages/cms/travelProgramOverview.html.twig diff --git a/trunk/app/Resources/views/default/pages/traveltainment.html.twig b/trunk/app/Resources/views/default/pages/cms/traveltainment.html.twig similarity index 100% rename from trunk/app/Resources/views/default/pages/traveltainment.html.twig rename to trunk/app/Resources/views/default/pages/cms/traveltainment.html.twig diff --git a/trunk/src/AppBundle/Controller/CmsController.php b/trunk/src/AppBundle/Controller/CmsController.php new file mode 100644 index 00000000..6bab93c0 --- /dev/null +++ b/trunk/src/AppBundle/Controller/CmsController.php @@ -0,0 +1,112 @@ + + * @date 02/22/2017 + */ + +namespace AppBundle\Controller; + + +use AppBundle\Entity\Page; +use AppBundle\Form\TtSearchRequestType; +use AppBundle\Listener\KernelControllerListener; +use Doctrine\ORM\EntityManager; +use Symfony\Bundle\FrameworkBundle\Controller\Controller; + +/** + * Controller for CMS pages. CMS pages are represented by Page instances (i.e. entries of the page database table). + * The template property of a Page object defines the action method below. If a travel program is assigned then the + * travelProgramAction is used. If no template is specified, then the defaultAction is used. + * + * The view templates can be found pages/cms. + * + * Also see {@link KernelControllerListener}, which handles routing. + * + * @package AppBundle\Controller + */ +class CmsController extends Controller +{ + /** + * @return EntityManager + */ + private function getEntityManager() + { + return $this->getDoctrine()->getManager(); + } + + public function defaultAction(Page $page) + { + return $this->render('default/pages/cms/default.html.twig', [ + 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, + 'page' => $page, + ]); + } + + public function overviewAction(Page $page) + { + return $this->render('default/pages/cms/overview.html.twig', [ + 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, + 'page' => $page, + ]); + } + + public function travelProgramOverviewAction(Page $page) + { + $childPages = + $this->getEntityManager()->getRepository('AppBundle:Page')->getChildrenWithTravelProgramsAndDates($page); + + $nonMediated = []; + $mediated = []; + foreach ($childPages as $childPage) + { + if ($childPage->getStatus() == 1 && $childPage->getTravelProgram() && + $childPage->getTravelProgram()->getIsMediated()) + { + $mediated[] = $childPage; + } + else + { + $nonMediated[] = $childPage; + } + } + // We only need a separation if there are mediated AND non mediated travel programs + if (empty($nonMediated) && !empty($mediated)) + { + $childPages = $mediated; + } + else + { + $childPages = $nonMediated; + } + + return $this->render('default/pages/cms/travelProgramOverview.html.twig', [ + 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, + 'page' => $page, + 'child_pages' => $childPages, + 'mediated_child_pages' => $mediated, + ]); + } + + public function traveltainmentAction(Page $page) + { + $form = $this->createForm(TtSearchRequestType::class); + + return $this->render('default/pages/cms/traveltainment.html.twig', [ + 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, + 'page' => $page, + 'tt_search_form' => $form->createView(), + ]); + } + + public function travelProgramAction(Page $page) + { + $this->getDoctrine()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($page->getTravelProgram()); + + // replace this example code with whatever you need + return $this->render('default/pages/cms/travelProgram.html.twig', [ + 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, + 'page' => $page, + 'travel_program' => $page->getTravelProgram() + ]); + } +} \ No newline at end of file diff --git a/trunk/src/AppBundle/Controller/ComponentController.php b/trunk/src/AppBundle/Controller/ComponentController.php new file mode 100644 index 00000000..53b06e65 --- /dev/null +++ b/trunk/src/AppBundle/Controller/ComponentController.php @@ -0,0 +1,163 @@ +{{ render(controller('AppBundle:Component:travelGuideSidebarWidget', {country: page.country})) }} + */ +class ComponentController extends Controller +{ + /** + * @return EntityManager + */ + public function getEntityManager() + { + return $this->getDoctrine()->getManager(); + } + + public function headerAction() + { + $navPages = $this->getEntityManager()->getRepository('AppBundle:Page')->findTopCountryNavPages(); + return $this->render('default/components/header.html.twig', [ + 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, + 'nav_pages' => $navPages, + ]); + } + + public function breadcrumbAction(Page $page) + { + return $this->render('default/components/breadcrumb.html.twig', [ + 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, + 'breadcrumb_entries' => Util::createBreadcrumb($page), + ]); + } + + public function navSidebarWidgetAction(Page $page) + { + $pageRepo = $this->getEntityManager()->getRepository('AppBundle:Page'); + $view = [ + 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, + 'page' => $page, + ]; + + if ($page->getHasChildren()) + { + if ($page->getLvl() == 0) + { + $view['nav_pages'] = $page->getChildren(); + $view['nav_child_pages'] = []; + } + else + { + $view['nav_pages'] = $pageRepo->getSiblings($page); + $view['nav_child_pages'] = $page->getChildren(); + } + $view['nav_open_node'] = $page; + } + else + { + $parent = $page->getParent(); + if ($parent) + { + $view['nav_pages'] = $pageRepo->getSiblings($parent); + if (empty($view['nav_pages'])) + { + $view['nav_pages'] = $pageRepo->getSiblings($page); + } + else + { + $view['nav_child_pages'] = $pageRepo->getSiblings($page); + } + $view['nav_open_node'] = $parent; + } + else + { + $view['nav_pages'] = $pageRepo->getSiblings($page); + $view['nav_child_pages'] = []; + $view['nav_open_node'] = null; + } + } + return $this->render('default/components/sidebar/navSidebarWidget.html.twig', $view); + } + + public function searchSidebarWidgetAction(Page $page) + { + $combinedDestination = null; + if ($page->getTravelProgram()) + { + $countries = $page->getTravelProgram()->getCountries(); + $destination = $countries->first(); + if (count($countries) > 1) + { + $combinedDestination = $countries[1]; + } + } + else + { + $destination = $page->getCountry(); + } + return $this->render('default/components/sidebar/searchSidebarWidget.html.twig', [ + 'search_form' => $this->createForm(SearchRequestType::class, [ + 'c' => $destination, + 'c2' => $combinedDestination, + ])->createView() + ]); + } + + public function travelGuideSidebarWidgetAction(TravelCountry $country) + { + $repo = $this->getEntityManager()->getRepository('AppBundle:Page'); + $rootPage = $repo->find(13); + $pages = $repo->getChildrenQueryBuilder($rootPage) + ->andWhere('IDENTITY(node.country) = '. $country->getId()) + ->setMaxResults(3) + ->getQuery() + ->execute() + ; + return $this->render('default/components/sidebar/textSliderSidebarWidget.html.twig', [ + 'slider_title' => 'Reiseführer', + 'slides' => $pages + ]); + } + + public function travelMagazineSidebarWidgetAction(TravelCountry $country) + { + $repo = $this->getEntityManager()->getRepository('AppBundle:Page'); + $rootPage = $repo->find(2803); + $pages = $repo->getChildrenQueryBuilder($rootPage) + ->andWhere('IDENTITY(node.country) = '. $country->getId()) + ->setMaxResults(3) + ->getQuery() + ->execute() + ; + return $this->render('default/components/sidebar/textSliderSidebarWidget.html.twig', [ + 'slider_title' => 'Reisemagazin', + 'slides' => $pages + ]); + } + + public function offersSidebarWidgetAction(TravelCountry $country) + { + $pages = $this->getEntityManager()->getRepository('AppBundle:Page')->findWithTravelProgramsOfCountry($country); + return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [ + 'slider_title' => 'Angebote', + 'pages' => $pages + ]); + } +} diff --git a/trunk/src/AppBundle/Controller/DefaultController.php b/trunk/src/AppBundle/Controller/DefaultController.php index d62d8838..a85b05b3 100644 --- a/trunk/src/AppBundle/Controller/DefaultController.php +++ b/trunk/src/AppBundle/Controller/DefaultController.php @@ -11,7 +11,6 @@ use AppBundle\Form\SearchRequestType; use AppBundle\Form\TtSearchRequestType; use AppBundle\Util; use Doctrine\ORM\EntityManager; -use Doctrine\ORM\Query\Expr; use Gedmo\Tree\TreeListener; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; @@ -29,7 +28,7 @@ class DefaultController extends Controller public function defaultAction(Request $request) { - throw new $this->createNotFoundException(); + throw $this->createNotFoundException(); } /** @@ -48,82 +47,6 @@ class DefaultController extends Controller ]); } - public function cmsDefaultAction(Page $page) - { - return $this->render('default/pages/default.html.twig', [ - 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, - 'page' => $page, - ]); - } - - public function cmsOverviewAction(Page $page) - { - return $this->render('default/pages/overview.html.twig', [ - 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, - 'page' => $page, - ]); - } - - public function cmsTravelProgramOverviewAction(Page $page) - { - $childPages = - $this->getEntityManager()->getRepository('AppBundle:Page')->getChildrenWithTravelProgramsAndDates($page); - - $nonMediated = []; - $mediated = []; - foreach ($childPages as $childPage) - { - if ($childPage->getStatus() == 1 && $childPage->getTravelProgram() && - $childPage->getTravelProgram()->getIsMediated()) - { - $mediated[] = $childPage; - } - else - { - $nonMediated[] = $childPage; - } - } - // We only need a separation if there are mediated AND non mediated travel programs - if (empty($nonMediated) && !empty($mediated)) - { - $childPages = $mediated; - } - else - { - $childPages = $nonMediated; - } - - return $this->render('default/pages/travelProgramOverview.html.twig', [ - 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, - 'page' => $page, - 'child_pages' => $childPages, - 'mediated_child_pages' => $mediated, - ]); - } - - public function cmsTraveltainmentAction(Page $page) - { - $form = $this->createForm(TtSearchRequestType::class); - - return $this->render('default/pages/traveltainment.html.twig', [ - 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, - 'page' => $page, - 'tt_search_form' => $form->createView(), - ]); - } - - public function cmsTravelProgramAction(Page $page) - { - $this->getDoctrine()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($page->getTravelProgram()); - - // replace this example code with whatever you need - return $this->render('default/pages/travelProgram.html.twig', [ - 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, - 'page' => $page, - 'travel_program' => $page->getTravelProgram() - ]); - } - /** * @Route("/suche") */ @@ -213,10 +136,6 @@ class DefaultController extends Controller if ($data['wellness'] ?? false) $ttUrl .= '&wellness=0'; if ($data['typ'] ?? false) $ttUrl .= '&typ=0'; if (!empty($data['sportangebot'])) $ttUrl .= '&sportangebot='. $data['sportangebot']; - - //die($ttUrl); - //http://www.vidado.com/booking/ibe_bp2/index.php?CID=8ce65750ce5af9d9a6b22c9b04772ea7&formular=4&engine=pauschal&detail=hotel&showresult=1&termin=26.02.2017&ruecktermin=12.03.2017&dauer=6_14&personen=25;25&abflughafen=-1&topRegion=727 - //http://www.vidado.com/booking/ibe_bp2/index.php?CID=8ce65750ce5af9d9a6b22c9b04772ea7&formular=4&engine=pauschal&detail=zielgebiet&showresult=1&termin=26.02.2017&ruecktermin=12.03.2017&dauer=6_14&personen=25;25&abflughafen=-1&topRegion= } return $this->render('default/pages/ttSearch.html.twig', [ @@ -283,136 +202,6 @@ class DefaultController extends Controller ]); } - public function headerAction() - { - $navPages = $this->getEntityManager()->getRepository('AppBundle:Page')->findTopCountryNavPages(); - return $this->render('default/components/header.html.twig', [ - 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, - 'nav_pages' => $navPages, - ]); - } - - public function breadcrumbAction(Page $page) - { - return $this->render('default/components/breadcrumb.html.twig', [ - 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, - 'breadcrumb_entries' => Util::createBreadcrumb($page), - ]); - } - - public function navSidebarWidgetAction(Page $page) - { - $pageRepo = $this->getEntityManager()->getRepository('AppBundle:Page'); - $view = [ - 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, - 'page' => $page, - ]; - - if ($page->getHasChildren()) - { - if ($page->getLvl() == 0) - { - $view['nav_pages'] = $page->getChildren(); - $view['nav_child_pages'] = []; - } - else - { - $view['nav_pages'] = $pageRepo->getSiblings($page); - $view['nav_child_pages'] = $page->getChildren(); - } - $view['nav_open_node'] = $page; - } - else - { - $parent = $page->getParent(); - if ($parent) - { - $view['nav_pages'] = $pageRepo->getSiblings($parent); - if (empty($view['nav_pages'])) - { - $view['nav_pages'] = $pageRepo->getSiblings($page); - } - else - { - $view['nav_child_pages'] = $pageRepo->getSiblings($page); - } - $view['nav_open_node'] = $parent; - } - else - { - $view['nav_pages'] = $pageRepo->getSiblings($page); - $view['nav_child_pages'] = []; - $view['nav_open_node'] = null; - } - } - return $this->render('default/components/sidebar/navSidebarWidget.html.twig', $view); - } - - public function searchSidebarWidgetAction(Page $page) - { - $combinedDestination = null; - if ($page->getTravelProgram()) - { - $countries = $page->getTravelProgram()->getCountries(); - $destination = $countries->first(); - if (count($countries) > 1) - { - $combinedDestination = $countries[1]; - } - } - else - { - $destination = $page->getCountry(); - } - return $this->render('default/components/sidebar/searchSidebarWidget.html.twig', [ - 'search_form' => $this->createForm(SearchRequestType::class, [ - 'c' => $destination, - 'c2' => $combinedDestination, - ])->createView() - ]); - } - - public function travelGuideSidebarWidgetAction(TravelCountry $country) - { - $repo = $this->getEntityManager()->getRepository('AppBundle:Page'); - $rootPage = $repo->find(13); - $pages = $repo->getChildrenQueryBuilder($rootPage) - ->andWhere('IDENTITY(node.country) = '. $country->getId()) - ->setMaxResults(3) - ->getQuery() - ->execute() - ; - return $this->render('default/components/sidebar/textSliderSidebarWidget.html.twig', [ - 'slider_title' => 'Reiseführer', - 'slides' => $pages - ]); - } - - public function travelMagazineSidebarWidgetAction(TravelCountry $country) - { - $repo = $this->getEntityManager()->getRepository('AppBundle:Page'); - $rootPage = $repo->find(2803); - $pages = $repo->getChildrenQueryBuilder($rootPage) - ->andWhere('IDENTITY(node.country) = '. $country->getId()) - ->setMaxResults(3) - ->getQuery() - ->execute() - ; - return $this->render('default/components/sidebar/textSliderSidebarWidget.html.twig', [ - 'slider_title' => 'Reisemagazin', - 'slides' => $pages - ]); - } - - public function offersSidebarWidgetAction(TravelCountry $country) - { - $pages = $this->getEntityManager()->getRepository('AppBundle:Page')->findWithTravelProgramsOfCountry($country); - return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [ - 'slider_title' => 'Angebote', - 'pages' => $pages - ]); - } - /* Suche Kindknoten Für jeden Kindknoten diff --git a/trunk/src/AppBundle/Listener/KernelControllerListener.php b/trunk/src/AppBundle/Listener/KernelControllerListener.php index aa451e62..ee024747 100644 --- a/trunk/src/AppBundle/Listener/KernelControllerListener.php +++ b/trunk/src/AppBundle/Listener/KernelControllerListener.php @@ -129,12 +129,12 @@ class KernelControllerListener } elseif ($node->getTravelProgram() != null) { - $request->attributes->set('_controller', 'AppBundle:Default:cmsTravelProgram'); + $request->attributes->set('_controller', 'AppBundle:Cms:travelProgram'); } else { - $handler = 'cms'. ($node->getTemplate() ? ucfirst($node->getTemplate()) : 'Default'); - $request->attributes->set('_controller', 'AppBundle:Default:'. $handler); + $handler = $node->getTemplate() ? ucfirst($node->getTemplate()) : 'Default'; + $request->attributes->set('_controller', 'AppBundle:Cms:'. $handler); } } else