* Feedbacks in der Sidebar

* Status 1 (gelb) bei Reiseprogrammen, falls der Starttermin innerhalb der nächsten 4 Wochen liegt
* Sidebar-Boxen auf Reiseprogramm- und Buchungsseiten ausblenden; Suchfilter auf Buchungsseiten ausblenden
* Vorauswahl der Destination bei Traveltainment-CMS-Seiten
* Vorauswahl von Start- und Enddatum in den Suchmasken entfernen, da Zweck des Feldes (durch Platzhalter) nicht mehr erkennbar

git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3317 f459cee4-fb09-11de-96c3-f9c5f16c3c76
This commit is contained in:
uli 2017-03-14 12:19:59 +00:00
parent 30b80d660a
commit 76da75e891
13 changed files with 75 additions and 15 deletions

View file

@ -135,6 +135,7 @@
travel_guide_sidebar_widget_block: block('travel_guide_sidebar_widget') ?? null, travel_guide_sidebar_widget_block: block('travel_guide_sidebar_widget') ?? null,
travel_magazine_sidebar_widget_block: block('travel_magazine_sidebar_widget') ?? null, travel_magazine_sidebar_widget_block: block('travel_magazine_sidebar_widget') ?? null,
offers_sidebar_widget_block: block('offers_sidebar_widget') ?? null, offers_sidebar_widget_block: block('offers_sidebar_widget') ?? null,
feedbacks_sidebar_widget_block: block('feedbacks_sidebar_widget') ?? null,
} %} } %}
<div id="content" class="col-md-9 col-sm-8 col-xs-12"> <div id="content" class="col-md-9 col-sm-8 col-xs-12">

View file

@ -78,4 +78,14 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if (show_feedbacks_sidebar_widget ?? true) and page is defined and page.effectiveCountry is not empty
and page.effectiveCountry.feedbackPage is not empty
%}
{% if feedbacks_sidebar_widget_block is null %}
{{ render(controller('AppBundle:Component:feedbacksSidebarWidget', {country: page.effectiveCountry ?? null})) }}
{% else %}
{{ feedbacks_sidebar_widget_block|raw }}
{% endif %}
{% endif %}
</div><!-- end col --> </div><!-- end col -->

View file

@ -5,7 +5,7 @@
{{ slider_title }} {{ slider_title }}
</div><!-- end title --> </div><!-- end title -->
<div class="box-slider newswidget clearfix"> <div class="box-slider newswidget clearfix{{ theme|default('normal') == 'gray-box' ? ' gray-box' }}">
{% for slide in slides %} {% for slide in slides %}
<a href="{{ slide.urlPath|default('javascript:void(0);') }}" class="slide{{ loop.first ? ' active' }}"> <a href="{{ slide.urlPath|default('javascript:void(0);') }}" class="slide{{ loop.first ? ' active' }}">

View file

@ -254,7 +254,7 @@
} %} } %}
</td> </td>
<td data-title="Verfügbarkeit"> <td data-title="Verfügbarkeit">
<img src="/images/icons/available-{{ travel_date.status }}.png" <img src="/images/icons/available-{{ travel_date.effectiveStatus }}.png"
alt="Verfügbarkeit"> alt="Verfügbarkeit">
</td> </td>
<td data-title=""> <td data-title="">

View file

@ -94,7 +94,7 @@
</td> </td>
<td data-title="Verfügbarkeit"> <td data-title="Verfügbarkeit">
<img src="/images/icons/available-{{ travel_date.status }}.png" <img src="/images/icons/available-{{ travel_date.effectiveStatus }}.png"
alt="Verfügbarkeit"> alt="Verfügbarkeit">
</td> </td>

View file

@ -14,7 +14,6 @@ TODO: This doesn't work. Form labels are rendered, but widgets themselves not. S
#} #}
{% block body %} {% block body %}
{% include 'default/components/sidebar/ttSearchSidebarWidget.html.twig' %}
{% if tt_url is defined %} {% if tt_url is defined %}
<iframe src="{{ tt_url }}" scrolling="no" width="100%" height="13500" <iframe src="{{ tt_url }}" scrolling="no" width="100%" height="13500"
onload="window.parent.parent.scrollTo(0,0);" onload="window.parent.parent.scrollTo(0,0);"

View file

@ -138,6 +138,11 @@ class BookingController extends Controller
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'page' => $travelProgramPage, 'page' => $travelProgramPage,
'breadcrumb_entries' => $breadcrumbEntries, 'breadcrumb_entries' => $breadcrumbEntries,
'show_travel_guide_sidebar_widget' => false,
'show_travel_magazine_sidebar_widget' => false,
'show_offers_sidebar_widget' => false,
'show_search_sidebar_widget' => false,
'show_feedbacks_sidebar_widget' => false,
'booking' => $booking, 'booking' => $booking,
'travel_program' => $travelProgram, 'travel_program' => $travelProgram,
'summary' => $htmlSummary, 'summary' => $htmlSummary,
@ -148,11 +153,16 @@ class BookingController extends Controller
return $this->render('default/pages/booking.html.twig', [ return $this->render('default/pages/booking.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'page' => $travelProgramPage, 'page' => $travelProgramPage,
'breadcrumb_entries' => $breadcrumbEntries,
'show_travel_guide_sidebar_widget' => false,
'show_travel_magazine_sidebar_widget' => false,
'show_offers_sidebar_widget' => false,
'show_search_sidebar_widget' => false,
'show_feedbacks_sidebar_widget' => false,
'travel_program' => $travelProgram, 'travel_program' => $travelProgram,
'travel_date' => $travelDate, 'travel_date' => $travelDate,
'form' => $form->createView(), 'form' => $form->createView(),
'price_type_by_id' => $this->priceTypeById, 'price_type_by_id' => $this->priceTypeById,
'breadcrumb_entries' => $breadcrumbEntries,
'summary' => $htmlSummary, 'summary' => $htmlSummary,
'total_price' => $totalPrice, 'total_price' => $totalPrice,
'mediator_terms_filename' => $travelProgram->getIsMediated() 'mediator_terms_filename' => $travelProgram->getIsMediated()

View file

@ -91,13 +91,17 @@ class CmsController extends Controller
public function traveltainmentAction(Page $page) public function traveltainmentAction(Page $page)
{ {
$form = $this->createForm(TtSearchRequestType::class, null, [ $destination = array_search($page->getBumaDestination(), TtSearchRequestType::$DESTINATION_CHOICES);
$form = $this->createForm(TtSearchRequestType::class, [
'topRegion' => $destination ? $destination : null,
], [
'country' => $page->getCountry(), 'country' => $page->getCountry(),
]); ]);
return $this->render('default/pages/cms/traveltainment.html.twig', [ return $this->render('default/pages/cms/traveltainment.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'page' => $page, 'page' => $page,
'show_search_sidebar_widget' => false,
'tt_search_form' => $form->createView(), 'tt_search_form' => $form->createView(),
]); ]);
} }
@ -110,7 +114,11 @@ class CmsController extends Controller
return $this->render('default/pages/cms/travelProgram.html.twig', [ return $this->render('default/pages/cms/travelProgram.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'page' => $page, 'page' => $page,
'travel_program' => $page->getTravelProgram() 'show_travel_guide_sidebar_widget' => false,
'show_travel_magazine_sidebar_widget' => false,
'show_offers_sidebar_widget' => false,
'show_feedbacks_sidebar_widget' => false,
'travel_program' => $page->getTravelProgram(),
]); ]);
} }
} }

View file

@ -168,4 +168,14 @@ class ComponentController extends Controller
: $repo->findWithTravelProgramsOfCountry($country) : $repo->findWithTravelProgramsOfCountry($country)
; ;
} }
public function feedbacksSidebarWidgetAction(TravelCountry $country)
{
return $this->render(':default/components/sidebar:textSliderSidebarWidget.html.twig', [
'slider_title' => 'Kundenfeedback',
'slides' => $this->getDoctrine()->getRepository('AppBundle:Page')->findFeedbacks(
$country->getFeedbackPage()->getId()),
'theme' => 'gray-box',
]);
}
} }

View file

@ -112,6 +112,19 @@ class PageRepository extends NestedTreeRepository
; ;
} }
public function findFeedbacks($rootPageId)
{
$qb = $this->createQueryBuilder('node');
return $qb
->where($qb->expr()->eq('node.parent', $rootPageId))
->andWhere('node.showInNavi = 1')
->andWhere('node.status = 1')
->orderBy('node.date')
->getQuery()
->execute()
;
}
/** /**
* @param Page $page * @param Page $page
* *

View file

@ -174,6 +174,15 @@ final class TravelDate
return $this->travelPeriod->getStatus(); return $this->travelPeriod->getStatus();
} }
public function getEffectiveStatus()
{
if ($this->getStatus() == 2 && $this->getStart()->getTimestamp() < time() + 2419200)
{
return 1;
}
return $this->getStatus();
}
public function getDepartures() public function getDepartures()
{ {
if ($this->departures === null) if ($this->departures === null)

View file

@ -24,11 +24,11 @@ class SearchRequestType extends AbstractType
$builder $builder
->add('b', StDateType::class, [ ->add('b', StDateType::class, [
'required' => false, 'required' => false,
'data' => new \DateTime('+5 day'), //'data' => new \DateTime('+5 day'),
]) ])
->add('e', StDateType::class, [ ->add('e', StDateType::class, [
'required' => false, 'required' => false,
'data' => new \DateTime('+19 day'), //'data' => new \DateTime('+19 day'),
]) ])
->add('c', EntityType::class, [ ->add('c', EntityType::class, [
'required' => false, 'required' => false,

View file

@ -100,20 +100,20 @@ class TtSearchRequestType extends AbstractType
{ {
$childChoices[$i .' Jahre'] = $i; $childChoices[$i .' Jahre'] = $i;
} }
$defaultStartDate = new \DateTime('+5 day'); //$defaultStartDate = new \DateTime('+5 day');
$defaultEndDate = new \DateTime('+19 day'); //$defaultEndDate = new \DateTime('+19 day');
$builder->setMethod('GET'); $builder->setMethod('GET');
$builder $builder
->add('termin', StDateType::class, [ ->add('termin', StDateType::class, [
'required' => false, 'required' => false,
'empty_data' => $defaultStartDate->format('d.m.Y'), //'empty_data' => $defaultStartDate->format('d.m.Y'),
'data' => $defaultStartDate, //'data' => $defaultStartDate,
]) ])
->add('ruecktermin', StDateType::class, [ ->add('ruecktermin', StDateType::class, [
'required' => false, 'required' => false,
'empty_data' => $defaultEndDate->format('d.m.Y'), //'empty_data' => $defaultEndDate->format('d.m.Y'),
'data' => $defaultEndDate, //'data' => $defaultEndDate,
]) ])
->add('dauer', ChoiceType::class, [ ->add('dauer', ChoiceType::class, [
'required' => false, 'required' => false,