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