* Sidebar-Suchmaske
* Letzter Breadcrum-Eintrag ist kein Link * Sonstige Links im Layout (Impressum, etc.) * Vorschaubox-Anpassungen: page.box_body wurde nicht berücksichtigt; page.box_image_url wird jetzt gegenüber travelProgram.previewImage bevorzugt; Standard-Vorschaubild geändert * page.pagetitle gegenüber page.title als Seitenüberschrift bevorzugen * Fertigstellung Reiseprogrammseite; zu Tab-Inhalt scrollen; Bei Klick auf Buchen-Knopf zu Termintabelle scrollen (auch von der Suchseite aus) * Aufteilung der Vorschau-Boxen in vermittelte und nicht-vermittelte Reisen, falls es beide gibt * Falls page.real_path_url gesetzt wird => Eine Seite kann nicht mehr über den slug-Pfad (<eltern-seite>/<seite>) aufgerufen werden (Sonst gäbe es mehrere URLs für die gleiche Seite) git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3295 f459cee4-fb09-11de-96c3-f9c5f16c3c76
This commit is contained in:
parent
4c2fb2fd08
commit
20beca7c4d
25 changed files with 564 additions and 112 deletions
|
|
@ -2,8 +2,10 @@
|
|||
|
||||
namespace AppBundle\Controller;
|
||||
|
||||
use AppBundle\Entity\BreadcrumbEntry;
|
||||
use AppBundle\Entity\Page;
|
||||
use AppBundle\Entity\TravelProgram;
|
||||
use AppBundle\Form\SearchRequestType;
|
||||
use AppBundle\Util;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Doctrine\ORM\Query\Expr;
|
||||
|
|
@ -74,10 +76,35 @@ class DefaultController extends Controller
|
|||
$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
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'page' => $page,
|
||||
'child_pages' => $childPages,
|
||||
'mediated_child_pages' => $mediated,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -98,28 +125,38 @@ class DefaultController extends Controller
|
|||
*/
|
||||
public function searchAction(Request $request)
|
||||
{
|
||||
$stopwatch = $this->get('debug.stopwatch');
|
||||
$em = $this->getEntityManager();
|
||||
|
||||
$destinationIds = null;
|
||||
$destination = $em->getRepository('AppBundle:TravelCountry')->find($request->query->get('c'));
|
||||
if ($destination)
|
||||
{
|
||||
$destinationsIds = [$destination->getId()];
|
||||
}
|
||||
$startDate = $request->query->has('b')
|
||||
? \DateTime::createFromFormat('d.m.Y', $request->query->get('b'))
|
||||
: new \DateTime();
|
||||
$endDate = \DateTime::createFromFormat('d.m.Y', $request->query->get('e'));
|
||||
$form = $this->createForm(SearchRequestType::class);
|
||||
$form->handleRequest($request);
|
||||
|
||||
$stopwatch->start('search');
|
||||
$r = $this->getDoctrine()->getRepository('AppBundle:TravelPeriod')->getTravelProgramsWithTravelDatesForTimePeriod(
|
||||
$startDate, $endDate, $destinationIds, true);
|
||||
$stopwatch->stop('search');
|
||||
if ($form->isValid())
|
||||
{
|
||||
$data = $form->getData();
|
||||
|
||||
$destinationIds = [];
|
||||
if (!empty($data['c']))
|
||||
{
|
||||
$destinationIds = [$data['c']->getId()];
|
||||
}
|
||||
if (!empty($destinationIds) && !empty($data['c2']))
|
||||
{
|
||||
$destinationIds[] = $data['c2']->getId();
|
||||
}
|
||||
|
||||
$r = $this->getDoctrine()->getRepository('AppBundle:TravelPeriod')->getTravelProgramsWithTravelDatesForTimePeriod(
|
||||
$data['b'], $data['e'], $destinationIds, count($destinationIds) > 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
$r = [];
|
||||
}
|
||||
|
||||
return $this->render('default/pages/search.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'travel_programs' => $r
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'breadcrumb_entries' => [new BreadcrumbEntry('Suchen')],
|
||||
'search_form' => $form->createView(),
|
||||
'travel_programs' => $r,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -139,8 +176,8 @@ class DefaultController extends Controller
|
|||
->execute()
|
||||
;
|
||||
return $this->render('default/components/header.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'nav_pages' => $navPages
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'nav_pages' => $navPages,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -148,7 +185,7 @@ class DefaultController extends Controller
|
|||
{
|
||||
return $this->render('default/components/breadcrumb.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'breadcrumb_entries' => Util::createBreadcrumb($page)
|
||||
'breadcrumb_entries' => Util::createBreadcrumb($page),
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -200,6 +237,32 @@ class DefaultController extends Controller
|
|||
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, [
|
||||
'b' => new \DateTime('+5 day'),
|
||||
'e' => new \DateTime('+19 day'),
|
||||
'c' => $destination,
|
||||
'c2' => $combinedDestination,
|
||||
])->createView()
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
Suche Kindknoten
|
||||
Für jeden Kindknoten
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue