On master: Safety backup before git cleanup 2026-05-28 sterntours.de

This commit is contained in:
git stash 2026-05-28 08:00:24 +00:00
commit 31e616c189
49 changed files with 29999 additions and 4275 deletions

View file

@ -118,7 +118,7 @@
<div class="home-message text-center small"> <div class="home-message text-center small">
<div class="home-info-box"> <div class="home-info-box">
<div id="eKomiSeal_default" class="eKomi-header" style="padding-top: 5px;padding-left: 2px;"> <div id="eKomiSeal_default" class="eKomi-header" style="padding-top: 5px;padding-left: 2px;">
<img class="lozad" border="0" src="{{ asset('images/dummy.png') }}" data-src="/bundles/app/images/logo-qualitaet-22.png" alt="Top Kundenservice" height="78"> <img class="lozad" border="0" src="{{ asset('images/dummy.png') }}" data-src="/bundles/app/images/logo-qualitaet.png" alt="Top Kundenservice" height="78">
</div> </div>
<ul class="c4"> <ul class="c4">
<li>Spezialist für Kulturreisen </li> <li>Spezialist für Kulturreisen </li>

View file

@ -88,6 +88,17 @@
gtag('config', 'G-Y1Y779PDME'); gtag('config', 'G-Y1Y779PDME');
</script> </script>
<script>
(function (c, s, q, u, a, r, e) {
c.hj=c.hj||function(){(c.hj.q=c.hj.q||[]).push(arguments)};
c._hjSettings = { hjid: a };
r = s.getElementsByTagName('head')[0];
e = s.createElement('script');
e.async = true;
e.src = q + c._hjSettings.hjid + u;
r.appendChild(e);
})(window, document, 'https://static.hj.contentsquare.net/c/csq-', '.js', 5350061);
</script>
{% block stylesheets %} {% block stylesheets %}
{% endblock stylesheets %} {% endblock stylesheets %}
@ -99,7 +110,12 @@
</head> </head>
<style> <style>
@media (min-width: 992px) and (max-width: 1200px ) {
.topMain.nav-pills>li>a {
padding: .5rem .8rem;
margin-right: .4rem;
}
}
</style> </style>
<body class="no-js"> <body class="no-js">
<div id="wrapper"> <div id="wrapper">
@ -116,7 +132,7 @@
<div class="home-message text-center small"> <div class="home-message text-center small">
<div class="home-info-box"> <div class="home-info-box">
<div id="eKomiSeal_default" class="eKomi-header" style="padding-top: 5px;padding-left: 2px;"> <div id="eKomiSeal_default" class="eKomi-header" style="padding-top: 5px;padding-left: 2px;">
<img class="lozad" border="0" src="{{ asset('images/dummy.png') }}" data-src="{{ asset('images/logo-qualitaet-22.png') }}" alt="Top Kundenservice" height="78"> <img class="lozad" border="0" src="{{ asset('images/dummy.png') }}" data-src="{{ asset('images/logo-qualitaet.png') }}" alt="Top Kundenservice" height="78">
</div> </div>
<ul class="c4"> <ul class="c4">
<li>Spezialist für Kulturreisen </li> <li>Spezialist für Kulturreisen </li>
@ -164,14 +180,7 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
<div class="clearfix" style="margin-bottom: 10px; margin-top: 0;">
<div id="auorg-bg">
<a href="https://www.ausgezeichnet.org" target="_blank" title="Unabh&auml;ngige Bewertungen, Kundenbewertungen und G&uuml;tesiegel von AUSGEZEICHNET.ORG" class="auorg-br">
<span style="font-size:8px;font-weight:normal;text-transform:uppercase;">AUSGEZEICHNET.ORG</span>
</a>
</div>
</div>
</div><!-- end row --> </div><!-- end row -->
@ -184,7 +193,7 @@
{{ render(controller('AppBundle:Component:footer')) }} {{ render(controller('AppBundle:Component:footer')) }}
<a class="js-go-to u-go-to-v1 animated" href="#!" data-type="fixed" data-offset-top="400" data-show-effect="zoomIn" data-hide-effect="zoomOut" data-position='{"bottom": 15, "right": 15 }'> <a class="js-go-to u-go-to-v1 animated" href="#!" data-type="fixed" data-offset-top="400" data-show-effect="zoomIn" data-hide-effect="zoomOut" data-position='{"bottom": 65, "left": 12 }'>
<i class="icon-up-open-big"></i> <i class="icon-up-open-big"></i>
</a> </a>
</div><!-- end wrapper --> </div><!-- end wrapper -->
@ -206,7 +215,6 @@
}); });
}); });
</script> </script>
<script type="text/javascript" src="https://siegel.ausgezeichnet.org/widgets/js/55b648290cf257aef3483d90/widget.js" data-cookieconsent="marketing"></script><!-- Ausgezeichnet.org-Siegel: End -->
{% endblock javascripts %} {% endblock javascripts %}
</body> </body>

View file

@ -39,12 +39,12 @@
<footer class="footer clearfix"> <footer class="footer clearfix">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-6 col-sm-6 col-xs-12"> <div class="col-md-5 col-sm-6 col-xs-12">
<p class="hl4">Ihre Vorteile bei STERN TOURS</p> <p class="hl4">Ihre Vorteile bei STERN TOURS</p>
<p>Unsere Produktauswahl ist vielfältig. Neben dem Pauschaltourismus und Jugendreisen sind wir auf individuelle Kulturreisen spezialisiert.</p> <p>Unsere Produktauswahl ist vielfältig. Neben dem Pauschaltourismus sind wir auf individuelle Kulturreisen spezialisiert.</p>
<img class="left-img lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset('/images/STERN_22-Jahre.png') }}" alt="Stern Tours 20 Jahre"> <img class="left-img lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset('/images/STERN_1998.png') }}" alt="Stern Tours seit 1998">
<ul class="c4"> <ul class="c4">
<li>Spezialist seit 1998</li> <li>Spezialist seit 1998</li>
<li>Top Service</li> <li>Top Service</li>
@ -53,20 +53,25 @@
</ul> </ul>
</div><!-- end col --> </div><!-- end col -->
<div class="col-md-6 col-sm-6 col-xs-12"> <div class="col-md-7 col-sm-6 col-xs-12">
<div class="row"> <div class="row">
<div class="col-md-6" style="margin-bottom: 1rem;"> <div class="col-md-6 col-xs-12" style="margin-bottom: 1rem;">
<p class="hl4">Reiseversicherung</p> <p class="hl4">Reiseversicherung</p>
{% image '@AppBundle/Resources/public/images/logos/rundv.png' %} {% image '@AppBundle/Resources/public/images/logos/rundv.png' %}
<img class="img-responsive lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset_url }}" alt="R + V"> <img class="img-responsive lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset_url }}" alt="R + V">
{% endimage %} {% endimage %}
</div>
<div class="col-md-6">
<p class="hl4">Sicherheit</p> <p class="hl4">Sicherheit</p>
{% image '@AppBundle/Resources/public/images/logos/ssl.png' %} {% image '@AppBundle/Resources/public/images/logos/ssl.png' %}
<img class="left-img lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset_url }}" alt="SSL" style="margin-top: 0.3rem;"> <img class="left-img lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset_url }}" alt="SSL" style="margin-top: 0.3rem;">
{% endimage %} {% endimage %}
</div> </div>
<div class="col-md-6 col-xs-12">
<div style="padding: 20px 0 0 0;"> </div>
<a href="/ueber-uns#atmosfair"><img class="img-responsive lozad" src="{{ asset('/images/dummy.png') }}" style="max-width: 300px;" data-src="/docs/images/logo_atmosfair_blue.png" alt="atmosfair"></a>
<div style="padding: 20px 0 0 0;"> </div>
<a href="/ueber-uns#atmosfair" style="color: #fff; text-decoration: none; font-size: 1.2rem;">&gt; mehr erfahren</a>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -92,4 +97,10 @@
</div><!-- end col --> </div><!-- end col -->
</div><!-- end row --> </div><!-- end row -->
</div><!-- end container --> </div><!-- end container -->
</div><!-- end copyrights --> </div><!-- end copyrights -->
<!-- Ausgezeichnet.org-Dynamic-Seal: Begin -->
<div class="auorgDynamicSeal" auorg-data-type="rounded"></div>
<script src="https://siegel.ausgezeichnet.org/widgets/55b648290cf257aef3483d90/dynamic-seal.js?lang=de_DE" defer> </script> <!-- Ausgezeichnet.org-Dynamic-Seal: End -->

View file

@ -187,7 +187,7 @@
{# @var nav_page \AppBundle\Entity\Page #} {# @var nav_page \AppBundle\Entity\Page #}
<li class="dropdown"> <li class="dropdown">
<a class="dropdown-toggle" href="{{ nav_page.urlPath }}"> <a class="dropdown-toggle" href="{{ nav_page.urlPath }}">
<i class="fa fa-star"></i> {{ nav_page.title|replace({'Reisen': ''}) }} <span class="hidden-md">Reisen</span> <i class="fa fa-star"></i> {{ nav_page.title|replace({'Reisen': ''}) }} <span class="hidden-md hidden-lg">Reisen</span>
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
@ -278,12 +278,17 @@
<li role="menuitem" itemprop="name"> <li role="menuitem" itemprop="name">
<a itemprop="url" href="/tuerkei-reisen" title="Türkei Reisen"><i class="fa fa-star"></i> Türkei Reisen </a> <a itemprop="url" href="/tuerkei-reisen" title="Türkei Reisen"><i class="fa fa-star"></i> Türkei Reisen </a>
</li> </li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/israel-reisen" title="Israel Reisen"><i class="fa fa-star"></i> Israel Reisen </a>
</li>
<!--
<li role="menuitem" itemprop="name"> <li role="menuitem" itemprop="name">
<a itemprop="url" href="/usbekistan-reisen" title="Usbekistan Reisen"><i class="fa fa-star"></i> Usbekistan Reisen </a> <a itemprop="url" href="/usbekistan-reisen" title="Usbekistan Reisen"><i class="fa fa-star"></i> Usbekistan Reisen </a>
</li> </li>
<li role="menuitem" itemprop="name"> <li role="menuitem" itemprop="name">
<a itemprop="url" href="/marokko-urlaub" title="Marokko Reisen"><i class="fa fa-star"></i> Marokko Reisen</a> <a itemprop="url" href="/marokko-urlaub" title="Marokko Reisen"><i class="fa fa-star"></i> Marokko Reisen</a>
</li> </li>
-->
<li class="divider"></li> <li class="divider"></li>
<li role="menuitem" itemprop="name"> <li role="menuitem" itemprop="name">
@ -305,6 +310,11 @@
<i class="fa fa-book"></i> Reisemagazin <i class="fa fa-book"></i> Reisemagazin
</a> </a>
</li> </li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisenews" title="Reisenews">
<i class="fa fa-newspaper-o"></i> Reisenews
</a>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>

View file

@ -8,7 +8,7 @@
<div class="home-message text-center"> <div class="home-message text-center">
<div class="home-info-box"> <div class="home-info-box">
<div id="eKomiSeal_default" class="eKomi-header" style="padding-top: 5px;padding-left: 2px;"> <div id="eKomiSeal_default" class="eKomi-header" style="padding-top: 5px;padding-left: 2px;">
<img class="lozad" border="0" src="{{ asset('images/dummy.png') }}" data-src="/bundles/app/images/logo-qualitaet-22.png" alt="Top Kundenservice" height="78"> <img class="lozad" border="0" src="{{ asset('images/dummy.png') }}" data-src="/bundles/app/images/logo-qualitaet.png" alt="Top Kundenservice" height="78">
</div> </div>
<ul class="c4"> <ul class="c4">
<li>Spezialist für Kulturreisen </li> <li>Spezialist für Kulturreisen </li>

View file

@ -8,7 +8,7 @@
<div class="home-message text-center"> <div class="home-message text-center">
<div class="home-info-box"> <div class="home-info-box">
<div id="eKomiSeal_default" class="eKomi-header" style="padding-top: 5px;padding-left: 2px;"> <div id="eKomiSeal_default" class="eKomi-header" style="padding-top: 5px;padding-left: 2px;">
<img class="lozad" border="0" src="{{ asset('images/dummy.png') }}" data-src="{{ asset('images/logo-qualitaet-22.png') }}" alt="Top Kundenservice" height="78"> <img class="lozad" border="0" src="{{ asset('images/dummy.png') }}" data-src="{{ asset('images/logo-qualitaet.png') }}" alt="Top Kundenservice" height="78">
</div> </div>
<ul class="c4"> <ul class="c4">
<li>Spezialist für Kulturreisen </li> <li>Spezialist für Kulturreisen </li>

View file

@ -1,32 +1,37 @@
{# @var child_page \AppBundle\Entity\Page #} {# @var child_page \AppBundle\Entity\Page #}
<div class="col-md-4 col-sm-6"> <div class="col-md-4 col-sm-6">
<div class="travel-wrapper get-box-link"> <div class="travel-wrapper get-box-link">
<div class="item text-left">
<div class="item-img">
<div class="lb">
{% if child_page.boxStar is not empty %} <div class="item text-left">
<div class="cstar_left">{{ child_page.boxStar|raw }}</div> <div class="item-img">
{% endif %} <div class="lb">
{% if child_page.travelProgram is not empty and child_page.travelProgram.lowestPrice > 0 %} {% if child_page.boxStar is not empty %}
<div class="cprice">ab {{ child_page.travelProgram.lowestPrice|number_format }} € p.P.</div> <div class="cstar_left">{{ child_page.boxStar|raw }}</div>
{% endif %} {% endif %}
{% if child_page.boxDiscount is not empty %} {% if child_page.travelProgram is not empty and child_page.travelProgram.lowestPrice > 0 %}
<div class="cdiscount">{{ child_page.boxDiscount|raw }}</div> <div class="cprice">ab {{ child_page.travelProgram.lowestPrice|number_format }} € p.P.</div>
{% endif %} {% endif %}
{% if child_page.model == 'feedback'%} {% if child_page.boxDiscount is not empty %}
<div class="cdiscount">{{ child_page.date|date }}</div> <div class="cdiscount">{{ child_page.boxDiscount|raw }}</div>
{% endif %} {% endif %}
{% if child_page.model == 'feedback'%}
<div class="cdiscount">{{ child_page.date|date }}</div>
{% endif %}
</div>
{% include 'default/components/pageBoxImage.html.twig' with {page: child_page} %}
</div> </div>
{% include 'default/components/pageBoxImage.html.twig' with {page: child_page} %}
<div class="box_mid">
<div class="hl5">{{ child_page.title }}</div>
<p>{{ child_page.description }}</p>
</div>
<a class="item-button is-box-link dobble_line" href="{{ child_page.urlPath }}" title="{{ child_page.title }}">
<span>{{ child_page.title }}</span>
</a>
</div> </div>
<div class="box_mid">
<div class="hl5">{{ child_page.title }}</div>
<p>{{ child_page.boxBody ?? child_page.description }}</p>
</div>
<a class="item-button is-box-link dobble_line" href="{{ child_page.urlPath }}" title="{{ child_page.title }}">
<span>{{ child_page.title }}</span>
</a>
</div>
</div> </div>
</div> </div>

View file

@ -1,17 +1,27 @@
{% if page.boxImageUrl is not empty %} {% if page.boxBody is not empty and page.boxBodyImage %}
{% set image_url = page.boxImageUrl %} {% set image_url = page.boxBodyImage['thumb_url'] %}
{% set image_alt = page.travelProgram.title|default(page.title) %} {% set image_alt = page.boxBodyImage['title'] %}
{% elseif page.travelProgram is not empty and page.travelProgram.previewImage is not empty %} <div class="img-background lozad" data-real-url="{{ box_image_url }}" data-background-image="{{ image_url }}" style="background-image:url({{ asset('images/placeholder-image.png') }});"></div>
{% set image_url = 'uploads/travel_program/' ~ page.travelProgram.previewImage.fileNameWithExtension %}
{% set image_alt = page.title %}
{% elseif page.fewoLodging is not empty and page.fewoLodging.images is not empty and page.fewoLodging.images[0] is not empty %}
{% set image_url = '_uploads/images/' ~ page.fewoLodging.images[0].file %}
{% set image_alt = page.title %}
{% else %} {% else %}
{% set image_url = asset('/bundles/app/images/no-picture.png')%} {% if page.boxImageUrl is not empty %}
{% set image_alt = 'Kein Vorschaubild vorhanden' %} {% set image_url = page.boxImageUrl %}
{% endif %} {% set image_alt = page.travelProgram.title|default(page.title) %}
<div class="img-background lozad" data-background-image="{{ image(image_url|trim('/')).cropResize(360).guess(70) }}" style="background-image:url({{ asset('images/placeholder-image.png') }})"></div> {% elseif page.travelProgram is not empty and page.travelProgram.previewImage is not empty %}
<noscript> {% set image_url = 'uploads/travel_program/' ~ page.travelProgram.previewImage.fileNameWithExtension %}
<img width="234" data-url="{{ image_url }}" height="180" src="{{ image(image_url|trim('/')).cropResize(360).guess(70) }}" class="img-responsiv img-responsiv-item" style=""> {% set image_alt = page.title %}
</noscript> {% elseif page.fewoLodging is not empty and page.fewoLodging.images is not empty and page.fewoLodging.images[0] is not empty %}
{% set image_url = '_uploads/images/' ~ page.fewoLodging.images[0].file %}
{% set image_alt = page.title %}
{% elseif page.boxBody is not empty and page.boxBodyImage %}
{% set image_url = page.boxBodyImage['thumb_url'] %}
{% set image_alt = page.boxBodyImage['title'] %}
{% else %}
{% set image_url = asset('/bundles/app/images/no-picture.png')%}
{% set image_alt = 'Kein Vorschaubild vorhanden' %}
{% endif %}
<div class="img-background lozad" data-background-image="{{ image(image_url|trim('/')).cropResize(360).guess(70) }}" style="background-image:url({{ asset('images/placeholder-image.png') }})"></div>
<noscript>
<img width="234" data-url="{{ image_url }}" height="180" src="{{ image(image_url|trim('/')).cropResize(360).guess(70) }}" class="img-responsiv img-responsiv-item" style="">
</noscript>
{% endif %}

View file

@ -7,5 +7,6 @@
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,
news_sidebar_widget_block: block('news_sidebar_widget') ?? null,
feedbacks_sidebar_widget_block: block('feedbacks_sidebar_widget') ?? null, feedbacks_sidebar_widget_block: block('feedbacks_sidebar_widget') ?? null,
} %} } %}

View file

@ -8,7 +8,6 @@
<div class="box-slider"> <div class="box-slider">
{% for page in pages %} {% for page in pages %}
<div class="travel-wrapper slide{{ loop.first ? ' active' }}"> <div class="travel-wrapper slide{{ loop.first ? ' active' }}">
<a href="{{ page.urlPath|default('javascript:void(0);') }}" class="item text-center"> <a href="{{ page.urlPath|default('javascript:void(0);') }}" class="item text-center">
@ -17,21 +16,22 @@
</div> </div>
<div class="box_mid"> <div class="box_mid">
<div class="hl5">{{ page.title }}</div> {% if target_widget == 'news-widget' and page.date is not empty %}
<div class="text-muted text-center">Vom: {{ page.date|date('d.m.Y') }}</div>
<p>{{ page.boxBody ?? page.description }}</p> {% endif %}
<div class="hl5">{{ page.title }} </div>
<p>{{ page.description }}</p>
{% if page.travelProgram is not empty and page.travelProgram.lowestPrice > 0 %} {% if page.travelProgram is not empty and page.travelProgram.lowestPrice > 0 %}
<div class="price"> <div class="price">
Für {{ page.travelProgram.lowestPrice|number_format }},- € p.P. Für {{ page.travelProgram.lowestPrice|number_format }},- € p.P.
</div> </div>
{% endif %} {% endif %}
</div> </div>
</a> </a>
</div><!-- end travel-wrapper --> </div><!-- end travel-wrapper -->
{% endfor %} {% endfor %}
<div class="item-switch clearfix"> <div class="item-switch clearfix">
<a href="javascript:void(0);" class="item-button-prev">zurück</a> <a href="javascript:void(0);" class="item-button-prev">zurück</a>
<a href="javascript:void(0);" class="item-button-next">weiter</a> <a href="javascript:void(0);" class="item-button-next">weiter</a>

View file

@ -10,8 +10,12 @@
{% 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' }}">
<div class="hl5">{{ slide.title }}</div>
<p>{{ slide.boxBody|default(slide.description) }}</p>
<div class="box_mid">
<div class="hl5">{{ slide.title }}</div>
<p>{{ slide.description }}</p>
</div>
</a> </a>
{% endfor %} {% endfor %}

View file

@ -71,30 +71,18 @@ Nr., Zimmertyp, Geschlecht, Vorname, Nachname, Geburtsdatum
{% set travelerIndex = 0 %} {% set travelerIndex = 0 %}
{% set travelerCollection = booking_request.travelers|slice(0, (booking_request.travelerCount + booking_request.childrenCount)) %} {% set travelerCollection = booking_request.travelers|slice(0, (booking_request.travelerCount + booking_request.childrenCount)) %}
{% for room in booking_request.occupiedRooms %} {% for room in booking_request.occupiedRooms %}
{% if(room.type == 1) %} {% if room.type == 1 %}
{{ loop.index }}. Einzelzimmer Erwachsener, {{ travelerCollection[travelerIndex].sexName }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }} {{ loop.index }}. Einzelzimmer Erwachsener, {{ travelerCollection[travelerIndex].sexName }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName }}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{% set travelerIndex = travelerIndex + 1 %} {% set travelerIndex = travelerIndex + 1 %}
{% if(room.child == 1) %}
{{ loop.index }}. Einzelzimmer Kind, {{ travelerCollection[travelerIndex].sexName }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{% set travelerIndex = travelerIndex + 1 %}
{% endif %}
{% elseif (room.type == 2) %} {% elseif (room.type == 2) %}
{{ loop.index }}. Doppelzimmer Erwachsener, {{ travelerCollection[travelerIndex].sexName }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }} {{ loop.index }}. Doppelzimmer Erwachsener, {{ travelerCollection[travelerIndex].sexName }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName }}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{{ loop.index }}. Doppelzimmer Erwachsener, {{ travelerCollection[travelerIndex+1].sexName }}, {{ travelerCollection[travelerIndex+1].firstName }}, {{ travelerCollection[travelerIndex+1].lastName -}}, {{ travelerCollection[travelerIndex+1].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }} {{ loop.index }}. Doppelzimmer Erwachsener, {{ travelerCollection[travelerIndex+1].sexName }}, {{ travelerCollection[travelerIndex+1].firstName }}, {{ travelerCollection[travelerIndex+1].lastName }}, {{ travelerCollection[travelerIndex+1].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{% set travelerIndex = travelerIndex + 2 %} {% set travelerIndex = travelerIndex + 2 %}
{% if(room.child == 1) %}
{{ loop.index }}. Doppelzimmer Kind, {{ travelerCollection[travelerIndex].sexName }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{% set travelerIndex = travelerIndex + 1 %}
{% endif %}
{% elseif (room.type == 3) %} {% elseif (room.type == 3) %}
{{ loop.index }}. Dreibettzimmer Erwachsener, {{ travelerCollection[travelerIndex].sexName }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }} {{ loop.index }}. Dreibettzimmer Erwachsener, {{ travelerCollection[travelerIndex].sexName }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName }}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{{ loop.index }}. Dreibettzimmer Erwachsener, {{ travelerCollection[travelerIndex+1].sexName }}, {{ travelerCollection[travelerIndex+1].firstName }}, {{ travelerCollection[travelerIndex+1].lastName -}}, {{ travelerCollection[travelerIndex+1].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }} {{ loop.index }}. Dreibettzimmer Erwachsener, {{ travelerCollection[travelerIndex+1].sexName }}, {{ travelerCollection[travelerIndex+1].firstName }}, {{ travelerCollection[travelerIndex+1].lastName }}, {{ travelerCollection[travelerIndex+1].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{{ loop.index }}. Dreibettzimmer Erwachsener, {{ travelerCollection[travelerIndex+2].sexName }}, {{ travelerCollection[travelerIndex+2].firstName }}, {{ travelerCollection[travelerIndex+2].lastName -}}, {{ travelerCollection[travelerIndex+2].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }} {{ loop.index }}. Dreibettzimmer Erwachsener, {{ travelerCollection[travelerIndex+2].sexName }}, {{ travelerCollection[travelerIndex+2].firstName }}, {{ travelerCollection[travelerIndex+2].lastName }}, {{ travelerCollection[travelerIndex+2].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{% set travelerIndex = travelerIndex + 3 %} {% set travelerIndex = travelerIndex + 3 %}
{% if(room.child == 1) %}
{{ loop.index }}. Dreibettzimmer Kind, {{ travelerCollection[travelerIndex].sexName }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{% set travelerIndex = travelerIndex + 1 %}
{% endif %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}

View file

@ -26,21 +26,37 @@
<form class="st-booking-form" method="post" data-toggle="validator"> <form class="st-booking-form" method="post" data-toggle="validator">
<div class="alert alert-danger hide" id="form-alert-error" style="margin-bottom:10px; padding: 10px 15px;">
Das Buchungsformular wurde nicht abgeschickt, da noch nicht alle Pflichtfelder ausgefüllt wurden.<br>
Bitte pürfen Sie Ihre Eingaben und versuchen Sie es erneut.
</div>
{% if errors %}
<div class="alert alert-danger" id="form-alert-form-errors" style="margin-bottom:10px; padding: 10px 15px;">
<ul style="list-style: none;">
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
{#
{{ form_errors(form) }} {{ form_errors(form) }}
{% spaceless %} {% spaceless %}
{% if not form.vars.valid %} {% if not form.vars.valid %}
<div class="alert alert-danger" style="margin-bottom:10px; padding: 10px 15px;">
<ul> <ul style="list-style: none;">
{% for error in form.vars.errors.form.getErrors(true) %} {% for error in form.vars.errors.form.getErrors(true) %}
<li>{{ error.message }}</li> <li>{{ error.message }}</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div>
{% endif %} {% endif %}
{% endspaceless %} {% endspaceless %}
{{ form_errors(form.email) }} {{ form_errors(form.email) }}
#}
<div id="message"></div> <div id="message"></div>
@ -275,7 +291,6 @@
</p> </p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@ -346,6 +361,7 @@
<div class="form-box"> <div class="form-box">
<div class=""> <div class="">
<div class="col-md-12 col-sm-12 col-xs-12"> <div class="col-md-12 col-sm-12 col-xs-12">
<h5>Reiseprogramm mit Anzeige der Reisetage</h5> <h5>Reiseprogramm mit Anzeige der Reisetage</h5>
</div> </div>
@ -385,7 +401,7 @@
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion_pd" href="#collapse_pd" aria-expanded="true"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion_pd" href="#collapse_pd" aria-expanded="true">
<h3><span>Reiseablauf mit Reisetagen einblenden</span><i class="indicator pull-right icon-plus"></i></h3> <h3><span>Reiseablauf mit Reisetagen einblenden</span><i class="indicator pull-right icon-plus"></i></h3>
</a> </a>
<div id="collapse_pd" class="panel-collapse collapse" aria-expanded="true" style=""> <div id="collapse_pd" class="panel-collapse collapse" aria-expanded="true">
<div class="panel-body"> <div class="panel-body">
{% for travel_program_date in travel_program_dates if travel_program_date.count > 0 %} {% for travel_program_date in travel_program_dates if travel_program_date.count > 0 %}
{% if travel_program_dates|length != travel_program_date.count +1 %} {% if travel_program_dates|length != travel_program_date.count +1 %}
@ -425,6 +441,8 @@
</div><!-- accordion --> </div><!-- accordion -->
</div> </div>
</div> </div>
<div class="form-box"> <div class="form-box">
<div class=""> <div class="">
@ -485,6 +503,7 @@
<div class="form-group col-md-12 col-sm-12 col-xs-12"> <div class="form-group col-md-12 col-sm-12 col-xs-12">
{{ form_field_pho(form.salutation, 'Anrede', {'label_attr': {class: 'sr-only'}}) }} {{ form_field_pho(form.salutation, 'Anrede', {'label_attr': {class: 'sr-only'}}) }}
<div class="help-block with-errors"></div>
</div> </div>
<div class="col-md-6 col-sm-6 col-xs-12"> <div class="col-md-6 col-sm-6 col-xs-12">
@ -598,12 +617,12 @@
{#{{ dump(room.vars.value.roomType) }}#} {#{{ dump(room.vars.value.roomType) }}#}
{% set currentIndex = currentIndex + 1 %} {% set currentIndex = currentIndex + 1 %}
<div class="row st-traveler st-traveler-{{ currentIndex }}" <div class="st-traveler st-traveler-{{ currentIndex }}"
data-st-traveler-index="{{ currentIndex }}" data-st-traveler-index="{{ currentIndex }}"
data-room-index="{{ loop.parent.loop.index }}" data-room-index="{{ loop.parent.loop.index }}"
data-room-type="{{ room.vars.value.type }}" data-room-type="{{ room.vars.value.type }}">
style="display: ; border-bottom:2px solid #ffc926; margin-bottom: 20px; padding-bottom: 10px;">
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12" style="margin-bottom:10px; padding-bottom:10px; border-bottom:1px solid #fff;"> <div class="col-md-12 col-sm-12 col-xs-12" style="margin-bottom:10px; padding-bottom:10px; border-bottom:1px solid #fff;">
<button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button"> <button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button">
{% set roomType = "" %} {% set roomType = "" %}
@ -624,12 +643,10 @@
</div> </div>
<div class="col-md-3 col-sm-12 col-xs-12"> <div class="col-md-4 col-sm-12 col-xs-12">
<div class="form-group" style="margin-top:0px;"> <div class="form-group" style="margin-top:0px;">
<div class=""> <div class="">
{{ form_field_pho(traveler.sex, 'Geschlecht', { {{ form_field_pho(traveler.sex, 'Geschlecht', { required: true }) }}
required: false
}) }}
</div> </div>
<div class="help-block with-errors"></div> <div class="help-block with-errors"></div>
</div> </div>
@ -643,8 +660,8 @@
<div class="help-block with-errors"></div> <div class="help-block with-errors"></div>
</div> </div>
</div> </div>
<div class="col-md-5 col-sm-12 col-xs-12"> <div class="col-md-4 col-sm-12 col-xs-12">
<div class="form-group"> <div class="form-group">
<div class=""> <div class="">
{{ form_field_pho(traveler.lastName, 'Nachname') }} {{ form_field_pho(traveler.lastName, 'Nachname') }}
@ -652,24 +669,27 @@
<div class="help-block with-errors"></div> <div class="help-block with-errors"></div>
</div> </div>
</div> </div>
</div>
<div class="col-md-offset-3 col-md-4 col-sm-12 col-xs-12"> <div class="row">
<div class="form-group" style="margin-top:0px;">
<div class="nationality_select" data-toggle="#nationality_entry_{{ currentIndex }}"> <div class="col-md-offset-4 col-md-4 col-sm-6 col-xs-12">
{{ form_field_pho(traveler.nationality, 'Nationalität') }} <div class="form-group" style="margin-top:0px;">
<div class="nationality_select" data-toggle="#nationality_entry_{{ currentIndex }}">
{{ form_field_pho(traveler.nationality, 'Nationalität') }}
</div>
<div class="help-block with-errors"></div>
</div> </div>
<div class="help-block with-errors"></div> </div>
</div> <div class="col-md-4 col-sm-6 col-xs-12">
</div> <div class="form-group">
<div class="">
<div class="col-md-5 col-sm-12 col-xs-12"> {{ form_field_pho(traveler.birthDate, 'Geburtsdatum (04.01.1964)') }}
<div class="form-group"> </div>
<div class=""> <div class="help-block with-errors"></div>
{{ form_field_pho(traveler.birthDate, 'Geburtsdatum (04.01.1964)') }}
</div> </div>
<div class="help-block with-errors"></div> </div>
</div> </div>
</div> <div class="row" style="display: block; border-top:2px solid #ffc926; margin-top: 20px; padding-top: 10px;">
<div class="col-md-12 col-sm-12 col-xs-12"> <div class="col-md-12 col-sm-12 col-xs-12">
@ -701,9 +721,8 @@
</div> </div>
</div> </div>
</div> </div>
</div> <!-- row --> </div> <!-- row -->
</div> <!-- st traveler -->
{% endfor %} {% endfor %}
{% endfor %} {% endfor %}

View file

@ -11,7 +11,7 @@
content: '-'; content: '-';
} }
</style> </style>
<section class="clearfix"> <section class="clearfix" id="bookingConfirmationSent">
<div class="content-copy"> <div class="content-copy">
@ -169,10 +169,6 @@
<td>Nachname</td> <td>Nachname</td>
<td>{{ booking.lastName }}</td> <td>{{ booking.lastName }}</td>
</tr> </tr>
<tr>
<td>Vorname</td>
<td>{{ booking.firstName }}</td>
</tr>
<tr> <tr>
<td>Straße, Hausnummer</td> <td>Straße, Hausnummer</td>
<td>{{ booking.street }}</td> <td>{{ booking.street }}</td>
@ -184,10 +180,6 @@
<tr> <tr>
<td>Ort</td> <td>Ort</td>
<td>{{ booking.city }}</td> <td>{{ booking.city }}</td>
</tr>
<tr>
<td>Land</td>
<td>{{ booking.countryId }}</td>
</tr> </tr>
<tr> <tr>
<td>Telefon tagsüber</td> <td>Telefon tagsüber</td>
@ -255,7 +247,7 @@
<td style="text-align: left;">{{ travelerCollection[travelerIndex].firstName }}</td> <td style="text-align: left;">{{ travelerCollection[travelerIndex].firstName }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].lastName -}}</td> <td style="text-align: left;">{{ travelerCollection[travelerIndex].lastName -}}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].birthDate }}</td> <td style="text-align: left;">{{ travelerCollection[travelerIndex].birthDate }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td <td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td>
</tr> </tr>
{% set travelerIndex = travelerIndex + 1 %} {% set travelerIndex = travelerIndex + 1 %}
{% endif %} {% endif %}

View file

@ -2,6 +2,14 @@
{% block body %} {% block body %}
<section class="clearfix"> <section class="clearfix">
{% if page.model == "news" %}
{% if page.date is not empty %}
<div class="text-muted text-left mb-3">News vom: {{ page.date|date('d.m.Y') }}</div>
{% endif %}
<h1>{{ page.title }}</h1>
{% endif %}
{{ page.content|raw|keywords|lozad }} {{ page.content|raw|keywords|lozad }}
</section> </section>
{% endblock %} {% endblock %}

View file

@ -107,7 +107,7 @@
{% if(api.faqs is defined) %} {% if(api.faqs is defined) %}
<section class="stern-faq" itemscope itemtype="https://schema.org/FAQPage"> <section class="stern-faq" itemscope itemtype="https://schema.org/FAQPage">
<h2 class="h3 h3l">Häufige Fragen zu Urlaubsreisen in Ägypten</h2> <h2 class="h3 h3l">Häufige Fragen (FAQ)</h2>
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
{% for faq in api.faqs %} {% for faq in api.faqs %}
<div class="panel panel-default" itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> <div class="panel panel-default" itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">
@ -146,11 +146,14 @@
<div class="item-img item-absolute"> <div class="item-img item-absolute">
<div class="img-background lozad" data-real-url="{{ child_page.box_image_url }}" data-background-image="{{ child_page.box_image_url }}" style="background-image:url({{ asset('images/placeholder-image.png') }});"></div> <div class="img-background lozad" data-real-url="{{ child_page.box_image_url }}" data-background-image="{{ child_page.box_image_url }}" style="background-image:url({{ asset('images/placeholder-image.png') }});"></div>
</div> </div>
<div class="box_mid">
</div>
{% else %}
<div class="box_mid">
<div class="hl5">{{ child_page.name }} </div>
</div>
{% endif %} {% endif %}
<div class="box_mid"> {# #}
<div class="hl5">{{ child_page.name }}</div>
</div>
<a class="item-button is-box-link dobble_line" href="{{ child_page.url }}" title="{{ child_page.name }}"> <a class="item-button is-box-link dobble_line" href="{{ child_page.url }}" title="{{ child_page.name }}">
<span>{{ child_page.name }}</span> <span>{{ child_page.name }}</span>
</a> </a>

View file

@ -72,7 +72,7 @@
{% endif %} {% endif %}
<div class="box_mid"> <div class="box_mid">
<div class="hl5">{{ child_page.title }}</div> <div class="hl5">{{ child_page.title }}</div>
<p>{{ child_page.boxBody ?? child_page.description }}</p>1 <p>{{ child_page.boxBody ?? child_page.description }}</p>
</div> </div>
<a class="item-button is-box-link dobble_line" href="{{ child_page.urlPath }}" title="{{ child_page.title }}"> <a class="item-button is-box-link dobble_line" href="{{ child_page.urlPath }}" title="{{ child_page.title }}">
<span>{{ child_page.title }}</span> <span>{{ child_page.title }}</span>

View file

@ -208,7 +208,7 @@
{% set has_three_bed_room = (travel_program.travelDates|first).prices[5] is defined %} {% set has_three_bed_room = (travel_program.travelDates|first).prices[5] is defined %}
{% set has_double_bed_room = (travel_program.travelDates|first).prices[3] is defined %} {% set has_double_bed_room = (travel_program.travelDates|first).prices[3] is defined %}
{% set has_singel_bed_room = (travel_program.travelDates|first).prices[1] is defined %} {% set has_singel_bed_room = (travel_program.travelDates|first).prices[1] is defined %}
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>

View file

@ -70,12 +70,15 @@
<div class="col-md-6 col-sm-6 col-xs-12">{{ form_field_pho(contact_form.zipCode, 'Postleitzahl') }}</div> <div class="col-md-6 col-sm-6 col-xs-12">{{ form_field_pho(contact_form.zipCode, 'Postleitzahl') }}</div>
<div class="col-md-6 col-sm-6 col-xs-12">{{ form_field_pho(contact_form.city, 'Ort') }}</div> <div class="col-md-6 col-sm-6 col-xs-12">{{ form_field_pho(contact_form.city, 'Ort') }}</div>
<div class="form-group col-md-12 col-sm-12 col-xs-12">{{ form_field_pho(contact_form.nation) }}</div> <div class="form-group col-md-12 col-sm-12 col-xs-12">{{ form_field_pho(contact_form.nation) }}</div>
<div class="form-group col-md-6 col-sm-6 col-xs-12"> <div class="form-group col-md-12 col-sm-12 col-xs-12">
{{ form_field_pho(contact_form.phone, 'Telefon tagsüber') }} <div class="required">
{{ form_field_pho(contact_form.phone, 'Telefon (Pflichtfeld)') }}
</div>
</div> </div>
<div class="col-md-6 col-sm-6 col-xs-12">{{ form_field_pho(contact_form.mobilePhone, 'Telefon mobil') }}</div>
<div class="form-group col-md-12 col-sm-12 col-xs-12"> <div class="form-group col-md-12 col-sm-12 col-xs-12">
<div class="required">
{{ form_field_pho(contact_form.email, 'E-Mail-Adresse') }} {{ form_field_pho(contact_form.email, 'E-Mail-Adresse') }}
</div>
</div> </div>
<div class="form-group col-md-12 col-sm-12 col-xs-12"> <div class="form-group col-md-12 col-sm-12 col-xs-12">
{{ form_field_pho(contact_form.travelerCount) }} {{ form_field_pho(contact_form.travelerCount) }}
@ -114,28 +117,21 @@
</div> </div>
</div> </div>
<div class="col-md-12 col-sm-12 col-xs-12"> <div class="col-md-12 col-sm-12 col-xs-12">
{% if re_error != "" %} {% if re_error != "" %}
<div class="alert alert-danger" style="margin-bottom: 0px;padding: 10px 15px;"> <div class="alert alert-danger" style="margin-bottom: 0px;padding: 10px 15px;">
{{ re_error }} {{ re_error }}
</div> </div>
<br> <br>
{% endif %} {% endif %}
<div class="g-recaptcha" data-sitekey="6LfjBm8UAAAAAIN68ozw90OctADqjXSv7O-E_epJ"></div> <div class="g-recaptcha" data-sitekey="6LfjBm8UAAAAAIN68ozw90OctADqjXSv7O-E_epJ"></div>
<br clear="all"> <br clear="all">
</div> </div>
<div class="col-md-12 col-sm-12 col-xs-12"> <div class="col-md-12 col-sm-12 col-xs-12">
<button type="submit" value="SEND" id="submit" class="aligncenter btn btn-primary btn-lg border-radius">Anfrage absenden</button> <button type="submit" value="SEND" id="submit" class="aligncenter btn btn-primary btn-lg border-radius">Anfrage absenden</button>
</div> </div>
</div><!-- end form-box --> </div><!-- end form-box -->
{{ form_rest(contact_form) }} {{ form_rest(contact_form) }}
</form> </form>
</div><!-- end contact-form --> </div><!-- end contact-form -->
</section> </section>
{% endblock body %} {% endblock body %}

View file

@ -3,9 +3,11 @@
{% block canonical_tag %}{% endblock %} {% block canonical_tag %}{% endblock %}
{% block body %} {% block body %}
<h1>Vielen Dank, wir haben Ihre Anfrage erhalten!</h1> <section class="clearfix" id="contactConfirmationSent">
<h1>Vielen Dank, wir haben Ihre Anfrage erhalten!</h1>
<p> <p>
<a href="/">Zurück zur Startseite</a> <a href="/">Zurück zur Startseite</a>
</p> </p>
</section>
{% endblock %} {% endblock %}

View file

@ -4,7 +4,7 @@
{% block body %} {% block body %}
<section class="clearfix"> <section class="clearfix" id="fewoBookingConfirmationSent">
<div class="content-copy"> <div class="content-copy">

View file

@ -13,6 +13,7 @@ monolog:
type: fingers_crossed type: fingers_crossed
action_level: error action_level: error
handler: nested handler: nested
excluded_404s: [ ]
nested: nested:
type: stream type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log" path: "%kernel.logs_dir%/%kernel.environment%.log"

View file

@ -2,6 +2,9 @@
app: app:
resource: "@AppBundle/Controller/" resource: "@AppBundle/Controller/"
type: annotation type: annotation
route2:
path: /testpage
defaults: { _controller: 'AppBundle:Default:testpage' }
route1: route1:
path: /{req} path: /{req}
defaults: { _controller: 'AppBundle:Default:default' } defaults: { _controller: 'AppBundle:Default:default' }

View file

@ -479,10 +479,14 @@ class AdminController extends Controller
) )
); );
$mailto = 'stern@stern-tours.de';
if(Util::isLocal()) {
$mailto = 'kevin.adametz@me.com';
}
$this->get('mailer')->send(\Swift_Message::newInstance() $this->get('mailer')->send(\Swift_Message::newInstance()
->setSubject('FEWO-BUCHUNG: '. $lodging->getName())//$travelProgram->getTitle() .'('. $travelDate->getName() .')') //TODO !!! allein hierfür braucht man mehr infos in $fewoBookingRequest ->setSubject('FEWO-BUCHUNG: '. $lodging->getName())//$travelProgram->getTitle() .'('. $travelDate->getName() .')') //TODO !!! allein hierfür braucht man mehr infos in $fewoBookingRequest
->setFrom('stern@stern-tours.de', 'STERN TOURS') ->setFrom('stern@stern-tours.de', 'STERN TOURS')
->setTo('stern@stern-tours.de') ->setTo($mailto)
->setBody( ->setBody(
$this->renderView('default/email/fewoBookingServiceEmail.txt.twig', [ $this->renderView('default/email/fewoBookingServiceEmail.txt.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,

View file

@ -149,6 +149,8 @@ class BookingController extends Controller
$htmlSummary = []; $htmlSummary = [];
$bookingPriceInfo = []; $bookingPriceInfo = [];
$errors = [];
$totalPrice = $this->calculatePrice($travelDate, $bookingRequest, $travelProgram->getCategory()->getId(), $travelProgram->getDepositPercent(), $htmlSummary, $bookingPriceInfo); $totalPrice = $this->calculatePrice($travelDate, $bookingRequest, $travelProgram->getCategory()->getId(), $travelProgram->getDepositPercent(), $htmlSummary, $bookingPriceInfo);
if ($action == '/buchen') if ($action == '/buchen')
@ -156,25 +158,36 @@ class BookingController extends Controller
$breadcrumbEntries = Util::createBreadcrumb($travelProgramPage); $breadcrumbEntries = Util::createBreadcrumb($travelProgramPage);
$breadcrumbEntries[] = new BreadcrumbEntry('Buchen'); $breadcrumbEntries[] = new BreadcrumbEntry('Buchen');
if ($request->getMethod() === 'POST' && $form->isValid()) if ($request->getMethod() == 'POST')
{ {
$errors = array();
foreach ($form as $fieldName => $formField) { foreach ($form as $fieldName => $formField) {
foreach ($formField->getErrors(true) as $error) { foreach ($formField->getErrors(true) as $error) {
$errors[$fieldName] = $error->getMessage(); $errors[$fieldName] = $error->getMessage();
} }
} }
if(!$bookingRequest->checkIsRoomSelected()){
$errors['room'] = 'Bitte wählen Sie mindestens ein Zimmer aus.';
}
}
if ($request->getMethod() === 'POST' && $form->isValid() && count($errors) == 0)
{
$booking = $this->getDoctrine()->getRepository('AppBundle:TravelBooking')->createFromBookingRequest( $booking = $this->getDoctrine()->getRepository('AppBundle:TravelBooking')->createFromBookingRequest(
$bookingRequest, $travelDate, $bookingPriceInfo); $bookingRequest, $travelDate, $bookingPriceInfo);
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$em->persist($booking); $em->persist($booking);
$em->flush(); $em->flush();
$ret = Util::loadFromApi('booking/import', ['travel_booking_id' => $booking->getId()]); $ret = Util::loadFromApi('booking/import', ['travel_booking_id' => $booking->getId()]);
$error_crm = 'CRM Fehler: | interne travel_booking ID: '.$booking->getId(); $error_crm = 'CRM Fehler: | interne travel_booking ID: '.$booking->getId();
/*var_dump($bookingRequest->getTravelerCount());
var_dump($bookingRequest->getChildrenCount());
var_dump($bookingRequest->getTravelers());
var_dump($bookingRequest->getOccupiedRooms());
die();*/
$this->get('mailer')->send(\Swift_Message::newInstance() $this->get('mailer')->send(\Swift_Message::newInstance()
->setSubject('Ihr Buchungsauftrag bei STERN TOURS') ->setSubject('Ihr Buchungsauftrag bei STERN TOURS')
->setFrom('stern@stern-tours.de', 'STERN TOURS') ->setFrom('stern@stern-tours.de', 'STERN TOURS')
@ -194,10 +207,14 @@ class BookingController extends Controller
) )
); );
$mailto = 'stern@stern-tours.de';
if(Util::isLocal()) {
$mailto = 'kevin.adametz@me.com';
}
$this->get('mailer')->send(\Swift_Message::newInstance() $this->get('mailer')->send(\Swift_Message::newInstance()
->setSubject('BUCHUNG: '. $travelProgram->getTitle() .'('. $travelDate->getName() .')') ->setSubject('BUCHUNG: '. $travelProgram->getTitle() .'('. $travelDate->getName() .')')
->setFrom('stern@stern-tours.de', 'STERN TOURS') ->setFrom('stern@stern-tours.de', 'STERN TOURS')
->setTo("stern@stern-tours.de") ->setTo($mailto)
->setBody( ->setBody(
$this->renderView('default/email/bookingServiceEmail.txt.twig', [ $this->renderView('default/email/bookingServiceEmail.txt.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
@ -263,6 +280,7 @@ class BookingController extends Controller
'total_price' => $totalPrice, 'total_price' => $totalPrice,
'nationalities' => $nationalities, 'nationalities' => $nationalities,
'booking_price_info' => $bookingPriceInfo, 'booking_price_info' => $bookingPriceInfo,
'errors' => count($errors) ? $errors : null,
'mediator_terms_filename' => $travelProgram->getIsMediated() 'mediator_terms_filename' => $travelProgram->getIsMediated()
? $this->getDoctrine()->getRepository('AppBundle:TravelOrganizer')->find(1)->getFileName() ? $this->getDoctrine()->getRepository('AppBundle:TravelOrganizer')->find(1)->getFileName()
: null : null

View file

@ -27,17 +27,18 @@ class ComponentController extends Controller
} }
public function getHeaderContent(){ public function getHeaderContent()
{
if(!$this->headerContent){ if (!$this->headerContent) {
$this->headerContent = Util::loadFromApi('cms/header/info', ['url'=>""]); $this->headerContent = Util::loadFromApi('cms/header/info', ['url' => ""]);
} }
return $this->headerContent; return $this->headerContent;
} }
public function getHeaderTravelProgram($page){ public function getHeaderTravelProgram($page)
{
$programmes = [ $programmes = [
'aegypten-reisen' => 1, 'aegypten-reisen' => 1,
'israel-reisen' => 22, 'israel-reisen' => 22,
@ -45,33 +46,33 @@ class ComponentController extends Controller
'oman-reisen' => 194 'oman-reisen' => 194
]; ];
$p_id = null; $p_id = null;
foreach($programmes as $key=>$id){ foreach ($programmes as $key => $id) {
if(strpos($_SERVER['REQUEST_URI'], $key) !== false){ if (strpos($_SERVER['REQUEST_URI'], $key) !== false) {
$p_id = $id; $p_id = $id;
} }
} }
if($p_id === null){ if ($p_id === null) {
if($page){ if ($page) {
$p_id = $page->getId()%2 ? 1 : 22; $p_id = $page->getId() % 2 ? 1 : 22;
} }
$p_id = 1; $p_id = 1;
} }
$em = $this->getEntityManager(); $em = $this->getEntityManager();
// $em->flush(); // $em->flush();
$TravelProgramRepo = $em->getRepository('AppBundle:TravelProgram'); $TravelProgramRepo = $em->getRepository('AppBundle:TravelProgram');
$TravelProgram = $TravelProgramRepo->find($p_id); $TravelProgram = $TravelProgramRepo->find($p_id);
$em->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($TravelProgram, false, 1, 'start_week'); $em->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($TravelProgram, false, 1, 'start_week');
/*foreach($TravelProgram->getTravelDates('header') as $travelDate){ /*foreach($TravelProgram->getTravelDates('header') as $travelDate){
var_dump($travelDate->getStart()->format("d.m.Y")); var_dump($travelDate->getStart()->format("d.m.Y"));
echo "<br>"; echo "<br>";
}*/ }*/
// $em->persist($TravelProgram); // $em->persist($TravelProgram);
// $em->flush(); // $em->flush();
return $TravelProgram; return $TravelProgram;
} }
@ -83,16 +84,16 @@ class ComponentController extends Controller
$header_travel_program = $this->getHeaderTravelProgram($page); $header_travel_program = $this->getHeaderTravelProgram($page);
$local = []; $local = [];
foreach ($content->local as $key=>$value){ foreach ($content->local as $key => $value) {
$local[$key] = $value; $local[$key] = $value;
} }
$phone = []; $phone = [];
foreach ($content->phone as $key=>$value){ foreach ($content->phone as $key => $value) {
$phone[$key] = $value; $phone[$key] = $value;
} }
return $this->render('default/components/header.html.twig', [ return $this->render('default/components/header.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir') . '/..') . DIRECTORY_SEPARATOR,
'nav_pages' => $navPages, 'nav_pages' => $navPages,
'content' => $content, 'content' => $content,
'local' => $local, 'local' => $local,
@ -114,8 +115,8 @@ class ComponentController extends Controller
public function breadcrumbAction(Page $page) public function breadcrumbAction(Page $page)
{ {
return $this->render('default/components/breadcrumb.html.twig', [ return $this->render('default/components/breadcrumb.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir') . '/..') . DIRECTORY_SEPARATOR,
'breadcrumb_entries' => Util::createBreadcrumb($page), 'breadcrumb_entries' => Util::createBreadcrumb($page),
]); ]);
} }
@ -124,57 +125,45 @@ class ComponentController extends Controller
{ {
return $this->render('default/components/sidebar/navSidebarApiWidgetInner.html.twig', [ return $this->render('default/components/sidebar/navSidebarApiWidgetInner.html.twig', [
'api'=>$api, 'api' => $api,
'title' => "Reiseführer", 'title' => "Reiseführer",
]); ]);
} }
public function navSidebarWidgetAction(Page $page, $title = 'Reiseprogramme') public function navSidebarWidgetAction(Page $page, $title = 'Reiseprogramme')
{ {
if(!empty($page->getTitle())){ if (!empty($page->getTitle())) {
$title = $page->getTitle(); $title = $page->getTitle();
} }
$pageRepo = $this->getEntityManager()->getRepository('AppBundle:Page'); $pageRepo = $this->getEntityManager()->getRepository('AppBundle:Page');
$view = [ $view = [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir') . '/..') . DIRECTORY_SEPARATOR,
'page' => $page, 'page' => $page,
'slider_title' => $title, 'slider_title' => $title,
]; ];
if ($page->getHasChildren()) if ($page->getHasChildren()) {
{ if ($page->getLvl() == 0) {
if ($page->getLvl() == 0)
{
$view['nav_pages'] = $page->getChildren(); $view['nav_pages'] = $page->getChildren();
$view['nav_child_pages'] = []; $view['nav_child_pages'] = [];
} } else {
else
{
$view['nav_pages'] = $pageRepo->getSiblings($page); $view['nav_pages'] = $pageRepo->getSiblings($page);
$view['nav_child_pages'] = $page->getChildren(); $view['nav_child_pages'] = $page->getChildren();
} }
$view['nav_open_node'] = $page; $view['nav_open_node'] = $page;
} } else {
else
{
$parent = $page->getParent(); $parent = $page->getParent();
if ($parent) if ($parent) {
{
$view['nav_pages'] = $pageRepo->getSiblings($parent); $view['nav_pages'] = $pageRepo->getSiblings($parent);
if (empty($view['nav_pages'])) if (empty($view['nav_pages'])) {
{
$view['nav_pages'] = $pageRepo->getSiblings($page); $view['nav_pages'] = $pageRepo->getSiblings($page);
} } else {
else
{
$view['nav_child_pages'] = $pageRepo->getSiblings($page); $view['nav_child_pages'] = $pageRepo->getSiblings($page);
} }
$view['nav_open_node'] = $parent; $view['nav_open_node'] = $parent;
} } else {
else
{
$view['nav_pages'] = $pageRepo->getSiblings($page); $view['nav_pages'] = $pageRepo->getSiblings($page);
$view['nav_child_pages'] = []; $view['nav_child_pages'] = [];
$view['nav_open_node'] = null; $view['nav_open_node'] = null;
@ -189,7 +178,7 @@ class ComponentController extends Controller
$combinedDestination = null; $combinedDestination = null;
$destination = null; $destination = null;
//todo need Country by name //todo need Country by name
if(isset($api->country_id)){ if (isset($api->country_id)) {
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry'); $repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
$destination = $repo->find($api->country_id); $destination = $repo->find($api->country_id);
} }
@ -198,17 +187,17 @@ class ComponentController extends Controller
$search_request_e = Util::getMySession('search_request_e'); $search_request_e = Util::getMySession('search_request_e');
$search_request_c = Util::getMySession('search_request_c'); $search_request_c = Util::getMySession('search_request_c');
if($search_request_b){ if ($search_request_b) {
$timestap_b = strtotime($search_request_b); $timestap_b = strtotime($search_request_b);
$search_request_b = new \DateTime(); $search_request_b = new \DateTime();
$search_request_b->setTimestamp($timestap_b); $search_request_b->setTimestamp($timestap_b);
} }
if($search_request_e){ if ($search_request_e) {
$timestap_e = strtotime($search_request_e); $timestap_e = strtotime($search_request_e);
$search_request_e = new \DateTime(); $search_request_e = new \DateTime();
$search_request_e->setTimestamp($timestap_e); $search_request_e->setTimestamp($timestap_e);
} }
/*if($search_request_c){ /*if($search_request_c){
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry'); $repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
$destination = $repo->find($search_request_c); $destination = $repo->find($search_request_c);
@ -217,48 +206,43 @@ class ComponentController extends Controller
return $this->render('default/components/sidebar/searchSidebarWidgetInner.html.twig', [ return $this->render('default/components/sidebar/searchSidebarWidgetInner.html.twig', [
'slider_title' => "suche", 'slider_title' => "suche",
'search_form' => $this->createForm(SearchRequestType::class, [ 'search_form' => $this->createForm(SearchRequestType::class, [
'c' =>$destination, 'c' => $destination,
'b' => $search_request_b ? $search_request_b : null, 'b' => $search_request_b ? $search_request_b : null,
'e' => $search_request_e ? $search_request_e : null, 'e' => $search_request_e ? $search_request_e : null,
'c2' => $combinedDestination, 'c2' => $combinedDestination,
])->createView() ])->createView()
]); ]);
} }
public function searchSidebarWidgetAction(Page $page, $title = 'Suche') public function searchSidebarWidgetAction(Page $page, $title = 'Suche')
{ {
$combinedDestination = null; $combinedDestination = null;
if ($page->getTravelProgram()) if ($page->getTravelProgram()) {
{
$countries = $page->getTravelProgram()->getCountries(); $countries = $page->getTravelProgram()->getCountries();
$destination = $countries->first(); $destination = $countries->first();
if (count($countries) > 1) if (count($countries) > 1) {
{
$combinedDestination = $countries[1]; $combinedDestination = $countries[1];
} }
} } else {
else
{
$destination = $page->getCountry(); $destination = $page->getCountry();
} }
$search_request_b = Util::getMySession('search_request_b'); $search_request_b = Util::getMySession('search_request_b');
$search_request_e = Util::getMySession('search_request_e'); $search_request_e = Util::getMySession('search_request_e');
$search_request_c = Util::getMySession('search_request_c'); $search_request_c = Util::getMySession('search_request_c');
if($search_request_b){ if ($search_request_b) {
$timestap_b = strtotime($search_request_b); $timestap_b = strtotime($search_request_b);
$search_request_b = new \DateTime(); $search_request_b = new \DateTime();
$search_request_b->setTimestamp($timestap_b); $search_request_b->setTimestamp($timestap_b);
} }
if($search_request_e){ if ($search_request_e) {
$timestap_e = strtotime($search_request_e); $timestap_e = strtotime($search_request_e);
$search_request_e = new \DateTime(); $search_request_e = new \DateTime();
$search_request_e->setTimestamp($timestap_e); $search_request_e->setTimestamp($timestap_e);
} }
/*if($search_request_c){ /*if($search_request_c){
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry'); $repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
$destination = $repo->find($search_request_c); $destination = $repo->find($search_request_c);
@ -279,11 +263,10 @@ class ComponentController extends Controller
$repo = $this->getEntityManager()->getRepository('AppBundle:Page'); $repo = $this->getEntityManager()->getRepository('AppBundle:Page');
$rootPage = $repo->find(13); $rootPage = $repo->find(13);
$pages = $repo->getChildrenQueryBuilder($rootPage) $pages = $repo->getChildrenQueryBuilder($rootPage)
->andWhere('IDENTITY(node.country) = '. $country->getId()) ->andWhere('IDENTITY(node.country) = ' . $country->getId())
->andWhere('node.status > 0') ->andWhere('node.status > 0')
->getQuery() ->getQuery()
->execute() ->execute();
;
return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [ return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [
'slider_title' => $title, 'slider_title' => $title,
'target_widget' => 'travel-leader-widget', 'target_widget' => 'travel-leader-widget',
@ -296,11 +279,10 @@ class ComponentController extends Controller
$repo = $this->getEntityManager()->getRepository('AppBundle:Page'); $repo = $this->getEntityManager()->getRepository('AppBundle:Page');
$rootPage = $repo->find(2803); $rootPage = $repo->find(2803);
$pages = $repo->getChildrenQueryBuilder($rootPage) $pages = $repo->getChildrenQueryBuilder($rootPage)
->andWhere('IDENTITY(node.country) = '. $country->getId()) ->andWhere('IDENTITY(node.country) = ' . $country->getId())
->andWhere('node.status > 0') ->andWhere('node.status > 0')
->getQuery() ->getQuery()
->execute() ->execute();
;
return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [ return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [
'slider_title' => $title, 'slider_title' => $title,
'target_widget' => 'travel-magazine-widget', 'target_widget' => 'travel-magazine-widget',
@ -329,68 +311,80 @@ class ComponentController extends Controller
$repo = $this->getDoctrine()->getRepository('AppBundle:Page'); $repo = $this->getDoctrine()->getRepository('AppBundle:Page');
return $country === null return $country === null
? $repo->findOffers() ? $repo->findOffers()
: $repo->findWithTravelProgramsOfCountry($country) : $repo->findWithTravelProgramsOfCountry($country);
;
} }
public function feedbacksSidebarWidgetAction(TravelCountry $country, $title = 'Kundenfeedback') public function feedbacksSidebarWidgetAction(TravelCountry $country, $title = 'Kundenfeedback')
{ {
return $this->render(':default/components/sidebar:textSliderSidebarWidget.html.twig', [ return $this->render(':default/components/sidebar:pageSliderSidebarWidget.html.twig', [
'slider_title' => $title, 'slider_title' => $title,
'target_widget' => 'feedback-widget', 'target_widget' => 'feedback-widget',
'slides' => $this->getDoctrine()->getRepository('AppBundle:Page')->findFeedbacks( 'pages' => $this->getDoctrine()->getRepository('AppBundle:Page')->findFeedbacks(
$country->getFeedbackPage()->getId()), $country->getFeedbackPage()->getId()
),
'theme' => 'gray-box', 'theme' => 'gray-box',
]); ]);
} }
public function makeSidebarWidgetAction($site_loading = 'default', Page $page = null, $api=null, $search_form = null){ public function newsSidebarWidgetAction($title = 'News')
{
$repo = $this->getEntityManager()->getRepository('AppBundle:Page');
$rootPage = $repo->find(3153);
return $this->render(':default/components/sidebar:pageSliderSidebarWidget.html.twig', [
'slider_title' => $title,
'target_widget' => 'news-widget',
'pages' => $this->getDoctrine()->getRepository('AppBundle:Page')->findFeedbacks($rootPage->getId()),
'theme' => 'gray-box',
]);
}
public function makeSidebarWidgetAction($site_loading = 'default', Page $page = null, $api = null, $search_form = null)
{
$show_seal_of_approval = false; $show_seal_of_approval = false;
//default //default
switch ($site_loading){ switch ($site_loading) {
case 'home' : case 'home':
$site = 'home'; $site = 'home';
break; break;
case 'search' : case 'search':
$site = 'search'; $site = 'search';
break; break;
case 'default' : case 'default':
$site = 'default'; $site = 'default';
break; break;
case 'overview' : case 'overview':
$site = 'overview'; $site = 'overview';
break; break;
case 'program' : case 'program':
$site = 'program'; $site = 'program';
break; break;
case 'booking' : case 'booking':
$site = 'booking'; $site = 'booking';
$show_seal_of_approval = true; $show_seal_of_approval = true;
break; break;
case 'bookingconfirm' : case 'bookingconfirm':
$site = 'bookingconfirm'; $site = 'bookingconfirm';
$show_seal_of_approval = true; $show_seal_of_approval = true;
break; break;
default : default:
$site = 'default'; $site = 'default';
break; break;
} }
$sidebarRepo = $this->getEntityManager()->getRepository('AppBundle:SidebarWidget'); $sidebarRepo = $this->getEntityManager()->getRepository('AppBundle:SidebarWidget');
$widgets = $sidebarRepo->findWidgetsBy($site); $widgets = $sidebarRepo->findWidgetsBy($site);
$vars = [
$vars = [ 'page' => $page, 'page' => $page,
'api' => $api, 'api' => $api,
'site_loading' => $site_loading, 'site_loading' => $site_loading,
'widgets' => $widgets, 'widgets' => $widgets,
'show_seal_of_approval' => $show_seal_of_approval, 'show_seal_of_approval' => $show_seal_of_approval,
'loop_half' => ceil(count($widgets) / 2) 'loop_half' => ceil(count($widgets) / 2)
]; ];
if($search_form != null){ if ($search_form != null) {
$vars['search_form'] = $search_form; $vars['search_form'] = $search_form;
} }
return $this->render(':default/components/sidebar:sidebar.html.twig', $vars); return $this->render(':default/components/sidebar:sidebar.html.twig', $vars);
} }
} }

View file

@ -9,6 +9,7 @@ use AppBundle\Form\ContactRequestType;
use AppBundle\Form\SearchRequestType; use AppBundle\Form\SearchRequestType;
use AppBundle\Form\TtSearchRequestType; use AppBundle\Form\TtSearchRequestType;
use AppBundle\Util; use AppBundle\Util;
use Doctrine\Common\Util\Debug;
use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityManager;
use Gedmo\Tree\TreeListener; use Gedmo\Tree\TreeListener;
use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller;
@ -50,7 +51,7 @@ class DefaultController extends Controller
$search_request_e = new \DateTime(); $search_request_e = new \DateTime();
$search_request_e->setTimestamp($timestap_e); $search_request_e->setTimestamp($timestap_e);
} }
if($search_request_c){ if($search_request_c){
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry'); $repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
$search_request_c = $repo->find($search_request_c); $search_request_c = $repo->find($search_request_c);
@ -73,6 +74,140 @@ class DefaultController extends Controller
]); ]);
} }
/**
* @Route("/dev/seite/startseite")
*/
public function devHomepageAction()
{
$search_request_b = Util::getMySession('search_request_b');
$search_request_e = Util::getMySession('search_request_e');
$search_request_c = Util::getMySession('search_request_c');
if($search_request_b){
$timestap_b = strtotime($search_request_b);
$search_request_b = new \DateTime();
$search_request_b->setTimestamp($timestap_b);
}
if($search_request_e){
$timestap_e = strtotime($search_request_e);
$search_request_e = new \DateTime();
$search_request_e->setTimestamp($timestap_e);
}
if($search_request_c){
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
$search_request_c = $repo->find($search_request_c);
}
$pageRepo = $this->getEntityManager()->getRepository('AppBundle:Page');
$fewoLodgings = [];
$lodgingGroups = $this->getEntityManager()->getRepository('AppBundle:FewoLodgingGroup')->findAll();
foreach ($lodgingGroups as $lodgingGroup) {
foreach ($lodgingGroup->getLodgings() as $lodging) {
$fewoLodgings[] = $lodging;
if (count($fewoLodgings) >= 3) {
break 2;
}
}
}
return $this->render('default/pages/dev/home.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'site_loading' => 'home',
'show_search_sidebar_widget' => false,
'show_offers_sidebar_widget' => false,
'search_form' => $this->createForm(SearchRequestType::class, [
'c' => $search_request_c ? $search_request_c : null,
'b' => $search_request_b ? $search_request_b : null,
'e' => $search_request_e ? $search_request_e : null,
])->createView(),
'tt_search_form' => $this->createForm(TtSearchRequestType::class)->createView(),
'homepage_offer_pages' => $pageRepo->findHomepageOffers(),
'country_pages' => $pageRepo->findHomepageCountryPages(),
'fewo_lodgings' => $fewoLodgings,
]);
}
public function about()
{
die("asd");
$search_request_b = Util::getMySession('search_request_b');
$search_request_e = Util::getMySession('search_request_e');
$search_request_c = Util::getMySession('search_request_c');
if($search_request_b){
$timestap_b = strtotime($search_request_b);
$search_request_b = new \DateTime();
$search_request_b->setTimestamp($timestap_b);
}
if($search_request_e){
$timestap_e = strtotime($search_request_e);
$search_request_e = new \DateTime();
$search_request_e->setTimestamp($timestap_e);
}
if($search_request_c){
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
$search_request_c = $repo->find($search_request_c);
}
return $this->render('default/pages/about.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'site_loading' => 'home',
'canonical_url' => Util::getBaseUrl(),
'show_search_sidebar_widget' => false,
'show_offers_sidebar_widget' => false,
'search_form' => $this->createForm(SearchRequestType::class, [
'c' => $search_request_c ? $search_request_c : null,
'b' => $search_request_b ? $search_request_b : null,
'e' => $search_request_e ? $search_request_e : null,
])->createView(),
'tt_search_form' => $this->createForm(TtSearchRequestType::class)->createView(),
'country_pages' => $this->getEntityManager()->getRepository('AppBundle:Page')->findCountryPages(),
]);
}
public function testpageAction()
{
$search_request_b = Util::getMySession('search_request_b');
$search_request_e = Util::getMySession('search_request_e');
$search_request_c = Util::getMySession('search_request_c');
if($search_request_b){
$timestap_b = strtotime($search_request_b);
$search_request_b = new \DateTime();
$search_request_b->setTimestamp($timestap_b);
}
if($search_request_e){
$timestap_e = strtotime($search_request_e);
$search_request_e = new \DateTime();
$search_request_e->setTimestamp($timestap_e);
}
if($search_request_c){
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
$search_request_c = $repo->find($search_request_c);
}
return $this->render('default/pages/testpage.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'site_loading' => 'home',
'canonical_url' => Util::getBaseUrl(),
'show_search_sidebar_widget' => false,
'show_offers_sidebar_widget' => false,
'search_form' => $this->createForm(SearchRequestType::class, [
'c' => $search_request_c ? $search_request_c : null,
'b' => $search_request_b ? $search_request_b : null,
'e' => $search_request_e ? $search_request_e : null,
])->createView(),
'tt_search_form' => $this->createForm(TtSearchRequestType::class)->createView(),
'country_pages' => $this->getEntityManager()->getRepository('AppBundle:Page')->findCountryPages(),
]);
}
/** /**
* @Route("/suche") * @Route("/suche")
*/ */
@ -366,20 +501,21 @@ class DefaultController extends Controller
{ {
$error = false; $error = false;
if(empty($request->get('g-recaptcha-response'))){ if(!Util::isLocal()) {
$re_error = 'Bitte lösen Sie das reCAPTCHA.'; if(empty($request->get('g-recaptcha-response'))){
$error = true; $re_error = 'Bitte lösen Sie das reCAPTCHA.';
}
//your site secret key
$secret = '6LfjBm8UAAAAANKNzGhSiMaoEg9mUswlaZkOHgI4';
//get verify response data
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$request->get('g-recaptcha-response'));
$responseData = json_decode($verifyResponse);
if($responseData->success != true ){
$re_error = 'Bitte lösen Sie das reCAPTCHA';
$error = true; $error = true;
}
//your site secret key
$secret = '6LfjBm8UAAAAANKNzGhSiMaoEg9mUswlaZkOHgI4';
//get verify response data
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$request->get('g-recaptcha-response'));
$responseData = json_decode($verifyResponse);
if($responseData->success != true ){
$re_error = 'Bitte lösen Sie das reCAPTCHA';
$error = true;
}
} }
@ -390,13 +526,16 @@ class DefaultController extends Controller
/** @var ContactRequest $contactRequest */ /** @var ContactRequest $contactRequest */
$contactRequest = $form->getData(); $contactRequest = $form->getData();
$mailto = 'stern@stern-tours.de';
if(Util::isLocal()) {
$mailto = 'kevin.adametz@me.com';
}
$ret = $this->get('app.contact_exporter')->v3process($contactRequest); $ret = $this->get('app.contact_exporter')->v3process($contactRequest);
$error_crm = 'CRM Fehler'; $error_crm = 'CRM Fehler';
$this->get('mailer')->send(\Swift_Message::newInstance() $this->get('mailer')->send(\Swift_Message::newInstance()
->setSubject('Kontaktformular (stern-tours.de)') ->setSubject('Kontaktformular (stern-tours.de)')
->setFrom('stern@stern-tours.de', 'STERN TOURS') ->setFrom('stern@stern-tours.de', 'STERN TOURS')
->setTo('stern@stern-tours.de') ->setTo($mailto)
->setBody( ->setBody(
$this->renderView('default/email/contactServiceEmail.txt.twig', [ $this->renderView('default/email/contactServiceEmail.txt.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,

View file

@ -192,6 +192,9 @@ class FewoBookingController extends Controller
$fromDate = $request->query->get('fd'); $fromDate = $request->query->get('fd');
$priceId = $request->query->get('pnr'); $priceId = $request->query->get('pnr');
$price = $fewoPriceRepo->find($priceId); $price = $fewoPriceRepo->find($priceId);
if(!$price){
throw new \Exception('Price not found');
}
$season = $price->getSeason(); $season = $price->getSeason();
$minimumStay = $season->getMinimumStay(); $minimumStay = $season->getMinimumStay();
@ -299,12 +302,14 @@ class FewoBookingController extends Controller
) )
); );
$mailto = 'stern@stern-tours.de';
if(Util::isLocal()) {
$mailto = 'kevin.adametz@me.com';
}
$this->get('mailer')->send(\Swift_Message::newInstance() $this->get('mailer')->send(\Swift_Message::newInstance()
->setSubject('FEWO-BUCHUNG: ' . $lodging->getName()) ->setSubject('FEWO-BUCHUNG: ' . $lodging->getName())
->setFrom('stern@stern-tours.de', 'STERN TOURS') ->setFrom('stern@stern-tours.de', 'STERN TOURS')
->setTo('stern@stern-tours.de') ->setTo($mailto)
//->setTo('kevin@adametz.media')
->setBody( ->setBody(
$this->renderView('default/email/fewoBookingServiceEmail.txt.twig', [ $this->renderView('default/email/fewoBookingServiceEmail.txt.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir') . '/..') . DIRECTORY_SEPARATOR, 'base_dir' => realpath($this->getParameter('kernel.root_dir') . '/..') . DIRECTORY_SEPARATOR,

View file

@ -965,4 +965,28 @@ class BookingRequest
{ {
//$context-> //$context->
} }
public function checkIsRoomSelected(){
if($this->singleRoomCount > 0){
return true;
}
if($this->doubleRoomCount > 0){
return true;
}
if($this->tripleRoomCount > 0){
return true;
}
if($this->singleRoomChildCount > 0){
return true;
}
if($this->doubleRoomChildCount > 0){
return true;
}
if($this->tripleRoomChildCount > 0){
return true;
}
return false;
}
} }

View file

@ -1286,6 +1286,22 @@ class Page
return $this; return $this;
} }
/**
* Get boxBody / Image USED for Box Image by v3 CMS
*
* @return string
*/
public function getBoxBodyImage()
{
if($this->boxBody != ""){
$boxBodyImage = json_decode($this->boxBody, true);
return $boxBodyImage;
}
return false;
}
/** /**
* Get boxBody * Get boxBody
* *

View file

@ -32,12 +32,11 @@ class PageRepository extends NestedTreeRepository
->getQuery() ->getQuery()
->execute(); ->execute();
/** @var Page $childPage */ /** @var Page $childPage */
foreach ($pages as &$childPage) foreach ($pages as &$childPage) {
{ if ($childPage->getTravelProgram()) {
if ($childPage->getTravelProgram())
{
$this->getEntityManager()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods( $this->getEntityManager()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods(
$childPage->getTravelProgram()); $childPage->getTravelProgram()
);
} }
} }
return $pages; return $pages;
@ -48,12 +47,12 @@ class PageRepository extends NestedTreeRepository
return $this->createQueryBuilder('node') return $this->createQueryBuilder('node')
->innerJoin('node.travelProgram', 'tp') ->innerJoin('node.travelProgram', 'tp')
->innerJoin('tp.countries', 'c') ->innerJoin('tp.countries', 'c')
->where('c.id = '. $country->getId()) ->where('c.id = ' . $country->getId())
->andWhere('node.status = 1') ->andWhere('node.status = 1')
->andWhere('tp.status = 1') ->andWhere('tp.status = 1')
->getQuery() ->getQuery()
->execute() ->execute()
; ;
} }
/** /**
@ -63,27 +62,149 @@ class PageRepository extends NestedTreeRepository
{ {
$ret = []; $ret = [];
$countries = $this->getEntityManager()->getRepository('AppBundle:TravelCountry')->findAll(); $countries = $this->getEntityManager()->getRepository('AppBundle:TravelCountry')->findAll();
foreach ($countries as $country) foreach ($countries as $country) {
{ $ret = array_merge(
$ret = array_merge($ret, $this->createQueryBuilder('node') $ret,
->innerJoin('node.travelProgram', 'tp') $this->createQueryBuilder('node')
->addSelect('tp') ->innerJoin('node.travelProgram', 'tp')
->innerJoin('tp.countries', 'c') ->addSelect('tp')
->where('c.id = '. $country->getId()) ->innerJoin('tp.countries', 'c')
->andWhere('node.status = 1') ->where('c.id = ' . $country->getId())
->andWhere('tp.status = 1') ->andWhere('node.status = 1')
->orderBy('node.order') ->andWhere('tp.status = 1')
->addOrderBy('tp.position') ->orderBy('node.order')
->addOrderBy('node.title') ->addOrderBy('tp.position')
->setMaxResults(3) ->addOrderBy('node.title')
->getQuery() ->setMaxResults(3)
->execute() ->getQuery()
->execute()
); );
} }
shuffle($ret); shuffle($ret);
return $ret; return $ret;
} }
/**
* Curated offer selection for the start page test version.
*
* The existing findOffers() intentionally shuffles results. For the crisis
* communication start page we need a stable order with currently sellable
* destinations first.
*
* @param int $limit
* @return Page[]
*/
public function findHomepageOffers($limit = 12)
{
$pages = $this->createQueryBuilder('node')
->distinct()
->innerJoin('node.travelProgram', 'tp')
->addSelect('tp')
->innerJoin('tp.countries', 'c')
->addSelect('c')
->where('node.status = 1')
->andWhere('tp.status = 1')
->orderBy('node.order')
->addOrderBy('tp.position')
->addOrderBy('node.title')
->getQuery()
->execute();
$pages = array_values(array_filter($pages, function (Page $page) {
return $this->getHomepagePriority($page) <= 4;
}));
usort($pages, function (Page $a, Page $b) {
$priorityA = $this->getHomepagePriority($a);
$priorityB = $this->getHomepagePriority($b);
if ($priorityA !== $priorityB) {
return $priorityA - $priorityB;
}
$orderA = $a->getOrder() ?: 9999;
$orderB = $b->getOrder() ?: 9999;
if ($orderA !== $orderB) {
return $orderA - $orderB;
}
return strcasecmp($a->getTitle(), $b->getTitle());
});
return array_slice($pages, 0, $limit);
}
/**
* @return Page[]
*/
public function findHomepageCountryPages()
{
$pages = $this->findCountryPages();
usort($pages, function (Page $a, Page $b) {
$priorityA = $this->getHomepagePriority($a);
$priorityB = $this->getHomepagePriority($b);
if ($priorityA !== $priorityB) {
return $priorityA - $priorityB;
}
return strcasecmp($a->getTitle(), $b->getTitle());
});
return $pages;
}
private function getHomepagePriority(Page $page)
{
$haystack = $this->buildHomepageSortHaystack($page);
$priorities = [
0 => ['aegypt', 'agypt', 'egypt'],
1 => ['marokko'],
2 => ['usbek', 'uzbek'],
3 => ['oman'],
4 => ['jordan'],
6 => ['israel'],
7 => ['tuerkei', 'turkei'],
8 => ['iran'],
];
foreach ($priorities as $priority => $needles) {
foreach ($needles as $needle) {
if (strpos($haystack, $needle) !== false) {
return $priority;
}
}
}
return 99;
}
private function buildHomepageSortHaystack(Page $page)
{
$parts = [
$page->getSlug(),
$page->getTitle(),
$page->getTitleShort(),
$page->getRealUrlPath(),
];
if ($page->getCountry()) {
$parts[] = $page->getCountry()->getName();
$parts[] = $page->getCountry()->getSlug();
}
if ($page->getTravelProgram()) {
foreach ($page->getTravelProgram()->getCountries() as $country) {
$parts[] = $country->getName();
$parts[] = $country->getSlug();
}
}
return strtolower(implode(' ', array_filter($parts)));
}
public function findCountryPages() public function findCountryPages()
{ {
return $this->createQueryBuilder('node') return $this->createQueryBuilder('node')
@ -91,10 +212,11 @@ class PageRepository extends NestedTreeRepository
->where('node.status > 0') ->where('node.status > 0')
->andWhere('node.template = \'overview\'') ->andWhere('node.template = \'overview\'')
->andWhere('node.lvl = 0') ->andWhere('node.lvl = 0')
->orderBy('node.lft,node.title') ->andWhere('node.order > 0')
->orderBy('node.order,node.title')
->getQuery() ->getQuery()
->execute() ->execute()
; ;
} }
public function findTopCountryNavPages() public function findTopCountryNavPages()
@ -107,10 +229,10 @@ class PageRepository extends NestedTreeRepository
->andWhere('node.template = \'overview\'') ->andWhere('node.template = \'overview\'')
->andWhere('node.lvl = 0') ->andWhere('node.lvl = 0')
->andWhere('node.order > 0') ->andWhere('node.order > 0')
->orderBy('node.order,node.title, childPage.lft, childPage.title') ->orderBy('node.order,node.title, childPage.order, childPage.title')
->getQuery() ->getQuery()
->execute() ->execute()
; ;
} }
public function findFeedbacks($rootPageId) public function findFeedbacks($rootPageId)
@ -123,7 +245,7 @@ class PageRepository extends NestedTreeRepository
->orderBy('node.order') ->orderBy('node.order')
->getQuery() ->getQuery()
->execute() ->execute()
; ;
} }
public function findParentsWithShowNav($rootPageId) public function findParentsWithShowNav($rootPageId)
@ -138,15 +260,12 @@ class PageRepository extends NestedTreeRepository
->andWhere('tp.status > 0') ->andWhere('tp.status > 0')
->orderBy('node.order') ->orderBy('node.order')
->getQuery() ->getQuery()
->execute() ->execute();
;
foreach ($pages as &$childPage) foreach ($pages as &$childPage) {
{ if ($childPage->getTravelProgram()) {
if ($childPage->getTravelProgram()) // var_dump($childPage->getTravelProgram()->getId());
{ // $this->getEntityManager()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($childPage->getTravelProgram());
// var_dump($childPage->getTravelProgram()->getId());
// $this->getEntityManager()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($childPage->getTravelProgram());
} }
} }
return $pages; return $pages;
@ -160,23 +279,19 @@ class PageRepository extends NestedTreeRepository
public function getSiblings(Page $page) public function getSiblings(Page $page)
{ {
$parent = $page->getParent(); $parent = $page->getParent();
if (!$parent) if (!$parent) {
{
// On purpose, we don't treat root pages as if they were siblings // On purpose, we don't treat root pages as if they were siblings
return []; return [];
} }
$siblings = $parent->getChildren(); $siblings = $parent->getChildren();
foreach ($siblings as &$sibling) foreach ($siblings as &$sibling) {
{
$sibling->setParent($parent); $sibling->setParent($parent);
} }
// Da diese Methode nur für die Navigation verwendet wird, kann man hier vorfiltern // Da diese Methode nur für die Navigation verwendet wird, kann man hier vorfiltern
$filteredSiblings = []; $filteredSiblings = [];
foreach ($siblings as &$sibling) foreach ($siblings as &$sibling) {
{ if ($sibling->getStatus() == 1 && $sibling->getShowInNavi() == 1) {
if($sibling->getStatus() == 1 && $sibling->getShowInNavi() == 1)
{
$filteredSiblings[] = $sibling; $filteredSiblings[] = $sibling;
} }
} }

View file

@ -900,7 +900,7 @@ class TravelProgram
$v = explode(':', $val); $v = explode(':', $val);
$int = (int) filter_var($v[0], FILTER_SANITIZE_NUMBER_INT); $int = (int) filter_var($v[0], FILTER_SANITIZE_NUMBER_INT);
if($int) { if($int) {
$lines[$int] = array('count'=> $count, 'day' => trim($v[1]), 'date' => $startDate->format('d.m.Y')); $lines[$int] = array('count'=> $count, 'day' => strip_tags(trim($v[1])), 'date' => $startDate->format('d.m.Y'));
$startDate->modify('+1 day'); $startDate->modify('+1 day');
$count++; $count++;
} }
@ -921,7 +921,7 @@ class TravelProgram
$v = explode(':', $val); $v = explode(':', $val);
$int = (int) filter_var($v[0], FILTER_SANITIZE_NUMBER_INT); $int = (int) filter_var($v[0], FILTER_SANITIZE_NUMBER_INT);
if($int && isset($lines[$int])) { if($int && isset($lines[$int])) {
$lines[$int]['night'] = trim($v[1]); $lines[$int]['night'] = strip_tags(trim($v[1]));
} }
} }
} }

View file

@ -17,7 +17,7 @@ class Traveler
private $NATIONALITIES = []; private $nationalities = [];
/** /**
* @Assert\NotNull * @Assert\NotNull
@ -188,18 +188,18 @@ class Traveler
*/ */
public function getNationalityName($nat) public function getNationalityName($nat)
{ {
if(!count($this->NATIONALITIES)){ if(!count($this->nationalities)){
foreach ($nat as $na){ foreach ($nat as $na){
$this->NATIONALITIES[$na['id']] = $na['name']; $this->nationalities[$na['id']] = $na['name'];
} }
} }
if(isset($this->NATIONALITIES[$this->nationality])){ if(isset($this->nationalities[$this->nationality])){
return $this->NATIONALITIES[$this->nationality]; return $this->nationalities[$this->nationality];
} }
/* /*
if(isset($this->NATIONALITIES[$this->nationality])){ if(isset($this->nationalities[$this->nationality])){
return $this->NATIONALITIES[$this->nationality]; return $this->nationalities[$this->nationality];
}*/ }*/
return $this->nationality; return $this->nationality;
} }

View file

@ -97,14 +97,17 @@ class ContactSternToursCrmExporter extends SternToursCrmExporter
$resp = $this->httpPostAPIv3('lead/create_lead', $data); $resp = $this->httpPostAPIv3('lead/create_lead', $data);
if (!$resp) if (!$resp)
{ {
$this->warn('Failed retrieving newly created new draft object', $data); $this->warn('Failed retrieving newly created new lead object', $data);
return null; return null;
} }
if(!isset($resp->lead_id)){
$this->warn('Failed retrieving newly created new lead object', $data);
}
return $resp; return $resp;
} }
private function warn($msg, $data = null, $level = Logger::WARNING) private function warn($msg, $data = null, $level = Logger::ERROR)
{ {
$this->logger->log($level, 'ContactSternToursCrmExporter: '. $msg); $this->logger->log($level, 'ContactSternToursCrmExporter: '. $msg);
$this->logger->log($level, '*** Date: '. (new \DateTime())->format('d.m.Y')); $this->logger->log($level, '*** Date: '. (new \DateTime())->format('d.m.Y'));

View file

@ -15,8 +15,8 @@ abstract class SternToursCrmExporter
//auto //auto
const API_URL_LOCAL = 'http://cms-stern-tours.test/api'; const API_URL_LOCAL = 'https://cms-stern-tours.test/api';
const API_v3_URL_LOCAL = 'http://mein.sterntours.test/'; const API_v3_URL_LOCAL = 'https://mein.sterntours.test/';
const API_URL = 'https://cms.stern-tours.net/api'; const API_URL = 'https://cms.stern-tours.net/api';
const API_v3_URL = 'https://mein.sterntours.de/'; const API_v3_URL = 'https://mein.sterntours.de/';
@ -52,7 +52,7 @@ abstract class SternToursCrmExporter
protected final function httpPost($context, $postData = [], $isContextFullUrl = false) protected final function httpPost($context, $postData = [], $isContextFullUrl = false)
{ {
$baseUrl = self::API_URL; $baseUrl = self::API_URL;
if($_SERVER['HTTP_HOST'] == 'sterntours.test') { if(Util::isLocal()) {
$baseUrl = self::API_URL_LOCAL; $baseUrl = self::API_URL_LOCAL;
} }
@ -78,7 +78,7 @@ abstract class SternToursCrmExporter
//first - login and get token //first - login and get token
$baseUrl = self::API_v3_URL.'api/'; $baseUrl = self::API_v3_URL.'api/';
if($_SERVER['HTTP_HOST'] == 'sterntours.test') { if(Util::isLocal()) {
$baseUrl = self::API_v3_URL_LOCAL.'api/'; $baseUrl = self::API_v3_URL_LOCAL.'api/';
} }
@ -87,16 +87,26 @@ abstract class SternToursCrmExporter
'password' => self::API_v3_PASS, 'password' => self::API_v3_PASS,
); );
$ret = []; $ret = [];
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $baseUrl.'login'); curl_setopt($ch, CURLOPT_URL, $baseUrl.'login');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_TIMEOUT, 20);
if($_SERVER['HTTP_HOST'] == 'sterntours.test') {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
}
curl_setopt($ch, CURLOPT_POST, count($data)); curl_setopt($ch, CURLOPT_POST, count($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($ch); $result = curl_exec($ch);
if (curl_errno($ch)) {
$error_msg = curl_error($ch);
$this->logger->warn($error_msg);
}
$r = json_decode($result); $r = json_decode($result);
if($r->success) { if($r->success) {
//api URL //api URL
$data = json_encode($postData); $data = json_encode($postData);

View file

@ -150,7 +150,7 @@ class BookingRequestType extends AbstractType
$builder $builder
->add('salutation', ChoiceType::class, [ ->add('salutation', ChoiceType::class, [
//'placeholder' => 'Anrede (Bitte wählen) *', 'placeholder' => 'Anrede (Bitte wählen) *',
'choices' => self::$SALUTATION_CHOICES, 'choices' => self::$SALUTATION_CHOICES,
'constraints' => [ 'constraints' => [
new NotNull(), new NotNull(),

View file

@ -1,4 +1,5 @@
<?php <?php
/** /**
* @author Ulrich Hecht <ulrich.hecht@hecht-software.de> * @author Ulrich Hecht <ulrich.hecht@hecht-software.de>
* @date 02/21/2017 * @date 02/21/2017
@ -37,8 +38,7 @@ class ContactRequestType extends AbstractType
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$travelerCountChoices = []; $travelerCountChoices = [];
for ($i = 1; $i <= 20; ++$i) for ($i = 1; $i <= 20; ++$i) {
{
$travelerCountChoices[$i] = $i; $travelerCountChoices[$i] = $i;
} }
@ -65,8 +65,7 @@ class ContactRequestType extends AbstractType
], ],
'data' => BookingRequestType::$NATION_CHOICES['Deutschland'], 'data' => BookingRequestType::$NATION_CHOICES['Deutschland'],
]) ])
->add('phone', TextType::class, ['required' => false]) ->add('phone', TextType::class, ['required' => true])
->add('mobilePhone')
->add('email', EmailType::class, ['required' => true]) ->add('email', EmailType::class, ['required' => true])
->add('travelerCount', ChoiceType::class, [ ->add('travelerCount', ChoiceType::class, [
'placeholder' => 'Anzahl der Reisenden (Bitte wählen)', 'placeholder' => 'Anzahl der Reisenden (Bitte wählen)',
@ -85,6 +84,6 @@ class ContactRequestType extends AbstractType
->add('duration') ->add('duration')
->add('acceptPrivacy', CheckboxType::class, ['required' => true]) ->add('acceptPrivacy', CheckboxType::class, ['required' => true])
->add('acceptProcessing', CheckboxType::class, ['required' => true]) ->add('acceptProcessing', CheckboxType::class, ['required' => true])
; ;
} }
} }

View file

@ -66,7 +66,7 @@ class TravelerType extends AbstractType
/* @var TravelProgram $travelProgram */ /* @var TravelProgram $travelProgram */
$builder $builder
->add('sex', ChoiceType::class, [ ->add('sex', ChoiceType::class, [
//'placeholder' => 'Geschlecht (Bitte wählen) *', 'placeholder' => 'Geschlecht (Bitte wählen) *',
'choices' => self::$SEX_CHOICES, 'choices' => self::$SEX_CHOICES,
'constraints' => [ 'constraints' => [
new Choice(['choices' => self::$SEX_CHOICES]) new Choice(['choices' => self::$SEX_CHOICES])

View file

@ -1,288 +1,256 @@
<?php <?php
/**
* @author Ulrich Hecht <ulrich.hecht@hecht-software.de> /**
* @date 12/02/2016 * @author Ulrich Hecht <ulrich.hecht@hecht-software.de>
*/ * @date 12/02/2016
*/
namespace AppBundle\Listener;
namespace AppBundle\Listener;
use AppBundle\AppBundle;
use AppBundle\Controller\DefaultController; use AppBundle\AppBundle;
use AppBundle\Entity\Page; use AppBundle\Controller\DefaultController;
use AppBundle\Util; use AppBundle\Entity\Page;
use Doctrine\ORM\EntityManager; use AppBundle\Util;
use Doctrine\ORM\PersistentCollection; use Doctrine\ORM\EntityManager;
use Symfony\Bundle\FrameworkBundle\Routing\Router; use Doctrine\ORM\PersistentCollection;
use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface; use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent; use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class KernelControllerListener
{ class KernelControllerListener
private $em; {
private $controllerResolver; private $em;
private $controllerResolver;
public function __construct(EntityManager $entityManager, ControllerResolverInterface $controllerResolver)
{ public function __construct(EntityManager $entityManager, ControllerResolverInterface $controllerResolver)
$this->em = $entityManager; {
$this->controllerResolver = $controllerResolver; $this->em = $entityManager;
} $this->controllerResolver = $controllerResolver;
}
private function setSessionAttributeByTime($request, $key){
private function setSessionAttributeByTime($request, $key)
$session = $request->getSession(); {
$session->set('_open_side_about', '');
$session->set('_open_side_search', ''); $session = $request->getSession();
$session->set('_open_side_about', '');
if($key === 'default') {//is default visit $session->set('_open_side_search', '');
if (!$session->get('default_visit')) { //first visit
$session->set('default_visit', true); if ($key === 'default') { //is default visit
$session->set('_open_side_about', 'open'); if (!$session->get('default_visit')) { //first visit
$session->set('_open_side_search', 'open'); $session->set('default_visit', true);
} $session->set('_open_side_about', 'open');
} $session->set('_open_side_search', 'open');
}
if($key === 'api') {//is api = Reiseführer }
if (!$session->get('api_visit')) { //first visit
$session->set('api_visit', true); if ($key === 'api') { //is api = Reiseführer
$session->set('_open_side_about', 'open'); if (!$session->get('api_visit')) { //first visit
} $session->set('api_visit', true);
} $session->set('_open_side_about', 'open');
} }
public function onKernelController(FilterControllerEvent $event) }
{ }
$request = $event->getRequest(); public function onKernelController(FilterControllerEvent $event)
{
$session = $request->getSession(); $request = $event->getRequest();
Util::setMySession('search_request_b', $session->get('search_request_b'));
Util::setMySession('search_request_e', $session->get('search_request_e')); $session = $request->getSession();
Util::setMySession('search_request_c', $session->get('search_request_c')); Util::setMySession('search_request_b', $session->get('search_request_b'));
Util::setMySession('search_request_e', $session->get('search_request_e'));
if($request->get('_controller') === 'AppBundle\Controller\DefaultController::homeAction'){ Util::setMySession('search_request_c', $session->get('search_request_c'));
$this->setSessionAttributeByTime($request, "default");
} if ($request->get('_controller') === 'AppBundle\Controller\DefaultController::homeAction') {
if ($request->get('_controller') == 'AppBundle\Controller\DefaultController::defaultAction') $this->setSessionAttributeByTime($request, "default");
{ }
if ($request->get('_controller') == 'AppBundle\Controller\DefaultController::defaultAction') {
$repo = $this->em->getRepository('AppBundle:Page');
$path = preg_replace('/^\/?(.*?)\/?$/', '$1', $request->getPathInfo()); $repo = $this->em->getRepository('AppBundle:Page');
/** @var Page $node */ $path = preg_replace('/^\/?(.*?)\/?$/', '$1', $request->getPathInfo());
$node = null; /** @var Page $node */
$node = null;
// Try to find by url path. It's possible that the path consists of two parts:
// - the beginning part represents a node // Try to find by url path. It's possible that the path consists of two parts:
// - the ending part represents a handler // - the beginning part represents a node
// e.g. /path/to/travel/program/buchen ("buchen" is the handler part) // - the ending part represents a handler
$pathArray = explode('/', $path); // e.g. /path/to/travel/program/buchen ("buchen" is the handler part)
$restOfPath = ''; $pathArray = explode('/', $path);
$curPath = $path; $restOfPath = '';
//search for entry in new tree objects $curPath = $path;
$api = Util::loadFromApi('cms/search', ['url'=>$curPath]); //search for entry in new tree objects
$api = Util::loadFromApi('cms/search', ['url' => $curPath]);
while (!empty($pathArray)) while (!empty($pathArray)) {
{ if (!$api) {
if(!$api){ $node = $repo->findOneBy(['realUrlPath' => '/' . $curPath]);
$node = $repo->findOneBy(['realUrlPath' => '/'. $curPath]); if ($node) {
if ($node) break;
{ }
break; }
} $restOfPath = '/' . array_pop($pathArray) . $restOfPath;
} $curPath = implode('/', $pathArray);
$restOfPath = '/'. array_pop($pathArray) . $restOfPath; }
$curPath = implode('/', $pathArray); //find and try 301
} //find => to
//find and try 301 $redirects = [
//find => to '/reisefuehrer/tuerkei' => 'tuerkei-reisen/reisefuehrer',
$redirects = [ '/reisefuehrer/jordanien' => 'jordanien-reisen/reisefuehrer',
'/reisefuehrer/tuerkei' => 'tuerkei-reisen/reisefuehrer', '/reisefuehrer/oman' => 'oman-reisen/reisefuehrer',
'/reisefuehrer/jordanien' => 'jordanien-reisen/reisefuehrer', '/reisefuehrer/israel' => 'israel-reisen/israel-reisefuehrer',
'/reisefuehrer/oman' => 'oman-reisen/reisefuehrer', '/reisefuehrer/aegypten' => 'aegypten-reisen/aegypten-reisefuehrer',
'/reisefuehrer/israel' => 'israel-reisen/israel-reisefuehrer', '/reisemagazin/tuerkei-reisemagazin' => 'tuerkei-reisen/tuerkei-reisemagazin',
'/reisefuehrer/aegypten' => 'aegypten-reisen/aegypten-reisefuehrer', '/reisemagazin/aegypten' => 'aegypten-reisen/aegypten-reisemagazin',
'/reisemagazin/tuerkei-reisemagazin' => 'tuerkei-reisen/tuerkei-reisemagazin', '/reisemagazin/israel' => 'israel-reisen/israel-reisemagazin',
'/reisemagazin/aegypten' => 'aegypten-reisen/aegypten-reisemagazin', '/reisemagazin/jordanien' => 'jordanien-reisen/jordanien-reisemagazin',
'/reisemagazin/israel' => 'israel-reisen/israel-reisemagazin', '/reisemagazin/marokko' => 'marokko-urlaub/marokko-reisemagazin'
'/reisemagazin/jordanien' => 'jordanien-reisen/jordanien-reisemagazin',
'/reisemagazin/marokko' => 'marokko-urlaub/marokko-reisemagazin' ];
//301
]; foreach ($redirects as $find => $to) {
//301 if (strpos($restOfPath, $find) !== false) {
foreach ($redirects as $find => $to){ $restOfPath = str_replace($find, $to, $restOfPath);
if(strpos($restOfPath, $find) !== false){ $protocol = 'https';
$restOfPath = str_replace($find, $to, $restOfPath); if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] === "off") {
$protocol = 'https'; $protocol = 'http';
if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] === "off") { }
$protocol = 'http'; header("Location: " . $protocol . "://" . $_SERVER["HTTP_HOST"] . "/" . $restOfPath, true, 301);
} exit();
header("Location: ".$protocol."://" .$_SERVER["HTTP_HOST"]."/".$restOfPath, true, 301); }
exit(); }
//load content from API, is found by cms/search
}
} if ($api) {
//load content from API, is found by cms/search $this->setSessionAttributeByTime($request, "api");
$request->attributes->set('_controller', 'AppBundle:Cms:iqTravelGuide');
if($api){ $request->attributes->set('api', $api);
$this->setSessionAttributeByTime($request, "api"); $request->attributes->set('template', 'TravelGuide');
$request->attributes->set('_controller', 'AppBundle:Cms:iqTravelGuide'); try {
$request->attributes->set('api', $api); $controller = $this->controllerResolver->getController($request);
$request->attributes->set('template', 'TravelGuide'); } catch (\LogicException $e) {
try // If there is no controller action, call the default action and pass the template name
{ $request->attributes->set('_controller', 'AppBundle:Cms:Default');
$controller = $this->controllerResolver->getController($request); $request->attributes->set('template', "Default");
} }
catch (\LogicException $e) $event->setController($controller ?? $this->controllerResolver->getController($request));
{ return;
// If there is no controller action, call the default action and pass the template name }
$request->attributes->set('_controller', 'AppBundle:Cms:Default'); $this->setSessionAttributeByTime($request, "default");
$request->attributes->set('template', "Default");
}
$event->setController($controller ?? $this->controllerResolver->getController($request)); if (!$node) {
return; // Now try to find a page by tracing a page node path using the page nodes' slugs
} $pathArray = explode('/', $path);
$this->setSessionAttributeByTime($request, "default");
while (!empty($pathArray)) {
if (!$node) $restOfPath = '/' . implode('/', $pathArray);
{ $slug = array_shift($pathArray);
// Now try to find a page by tracing a page node path using the page nodes' slugs
$qb = $repo->createQueryBuilder('p');
$pathArray = explode('/', $path); $qb->where($qb->expr()->eq('p.slug', ':slug'));
$i = 0; $qb->setParameter('slug', $slug);
while (!empty($pathArray))
{ if ($node != null) {
$restOfPath = '/'. implode('/', $pathArray); $qb->andWhere($qb->expr()->eq('p.parent', ':parentId'));
$slug = array_shift($pathArray); $qb->setParameter('parentId', $node->getId());
} else {
$qb = $repo->createQueryBuilder('p'); $qb->andWhere($qb->expr()->isNull('p.parent'));
$qb->where($qb->expr()->eq('p.lvl', $i)); }
$qb->andWhere($qb->expr()->eq('p.slug', ':slug'));
$qb->setParameter('slug', $slug); $qb->setMaxResults(1);
$childNode = $qb->getQuery()->getOneOrNullResult();
if ($node != null) if (!$childNode) {
{ $whitelist = [
$qb->andWhere($qb->expr()->between('p.lft', $node->getLft(), $node->getRgt())); 'buchen',
} 'berechne-gesamtpreis',
$qb->setMaxResults(1); 'show_nationality_country_text',
$childNode = $qb->getQuery()->getOneOrNullResult(); 'pdf',
if (!$childNode) ];
{ if (!in_array($slug, $whitelist)) {
$whitelist = [ throw new HttpException(404, 'Seite nicht gefunden: ' . $slug);
'buchen', }
'berechne-gesamtpreis', break;
'show_nationality_country_text', }
'pdf', if ($node) {
];
if(!in_array($slug, $whitelist)){ // Avoid database calls to parent later
throw new HttpException(404, 'Seite nicht gefunden: '.$slug); $childNode->setParent($node);
} }
break; $node = $childNode;
} }
if ($node) if ($node && $node->getRealUrlPath() && $node->getRealUrlPath() != '/' . $path) {
{ // If there realUrlPath is set and the slug path differs from realUrlPath, then the slug path is
// not a valid URL. Otherwise, there would be two different URLs representing the same page.
// Avoid database calls to parent later $event->setController(function () {
$childNode->setParent($node); throw new NotFoundHttpException('Invalid URL');
} });
$node = $childNode; return;
++$i; }
} }
if ($node && $node->getRealUrlPath() && $node->getRealUrlPath() != '/'. $path) if (!$node) {
{ // Search for a redirect entry
// If there realUrlPath is set and the slug path differs from realUrlPath, then the slug path is $redirect = $this->em->getRepository('AppBundle:Redirect')->findOneBy(['sourceUrlPath' => '/' . $path]);
// not a valid URL. Otherwise, there would be two different URLs representing the same page. if ($redirect) {
$event->setController(function() { $redirectUrl = $redirect->getPage()->getUrlPath();
throw new NotFoundHttpException('Invalid URL'); $event->setController(function () use ($redirectUrl) {
}); return new RedirectResponse($redirectUrl, 301);
return; });
} return;
} }
if (!$node) }
{ if ($node) {
// Search for a redirect entry
$redirect = $this->em->getRepository('AppBundle:Redirect')->findOneBy(['sourceUrlPath' => '/'. $path]); if ($node->getStatus() == 0) {
if ($redirect) throw new NotFoundHttpException('Inactive page');
{ }
$redirectUrl = $redirect->getPage()->getUrlPath();
$event->setController(function() use ($redirectUrl) { $request->attributes->set('page', $node);
return new RedirectResponse($redirectUrl, 301);
}); if ($node->getTravelProgram() != null && (
return; $restOfPath == '/buchen' || $restOfPath == '/berechne-gesamtpreis' || $restOfPath == '/show_nationality_country_text')) {
} // Special case: Booking actions
} $request->attributes->set('travelProgramPage', $node);
if ($node) $request->attributes->set('action', $restOfPath);
{ $request->attributes->set('_controller', 'AppBundle:Booking:index');
} elseif ($restOfPath && $node->getTravelProgram() !== null && (
if ($node->getStatus() == 0) $restOfPath === '/pdf')) {
{ $request->attributes->set('_controller', 'AppBundle:Cms:pdf');
throw new NotFoundHttpException('Inactive page'); } elseif ($node->getTravelProgram() !== null) {
} if ($node->getTravelProgram()->getStatus() == 0) {
throw new \NotFoundHttpException('Inactive travel program');
$request->attributes->set('page', $node); }
$request->attributes->set('_controller', 'AppBundle:Cms:travelProgram');
if ($node->getTravelProgram() != null && ( } elseif (
$restOfPath == '/buchen' || $restOfPath == '/berechne-gesamtpreis' || $restOfPath == '/show_nationality_country_text')) $node->getFewoLodging() != null &&
{ ($restOfPath === '/buchen' || $restOfPath === '/berechne-gesamtpreis')
// Special case: Booking actions ) {
$request->attributes->set('travelProgramPage', $node); $request->attributes->set('fewoTravelProgramPage', $node);
$request->attributes->set('action', $restOfPath); $request->attributes->set('action', $restOfPath);
$request->attributes->set('_controller', 'AppBundle:Booking:index'); $request->attributes->set('_controller', 'AppBundle:FewoBooking:index');
} } elseif ($node->getFewoLodging() !== null) {
elseif($restOfPath && $node->getTravelProgram() !== null && ( $request->attributes->set('fewoLodgingPage', $node);
$restOfPath === '/pdf')) $request->attributes->set('action', $restOfPath);
{ $request->attributes->set('_controller', 'AppBundle:Cms:fewoLodging');
$request->attributes->set('_controller', 'AppBundle:Cms:pdf'); } else {
} $handler = $node->getTemplate() ? ucfirst($node->getTemplate()) : 'Default';
elseif ($node->getTravelProgram() !== null) $request->attributes->set('_controller', 'AppBundle:Cms:' . $handler);
{ if ($node->getTemplate()) {
if ($node->getTravelProgram()->getStatus() == 0) try {
{ $controller = $this->controllerResolver->getController($request);
throw new \NotFoundHttpException('Inactive travel program'); } catch (\LogicException $e) {
} // If there is no controller action, call the default action and pass the template name
$request->attributes->set('_controller', 'AppBundle:Cms:travelProgram'); $request->attributes->set('_controller', 'AppBundle:Cms:Default');
} $request->attributes->set('template', $node->getTemplate());
elseif ($node->getFewoLodging() != null && }
($restOfPath === '/buchen' || $restOfPath === '/berechne-gesamtpreis')) }
{ }
$request->attributes->set('fewoTravelProgramPage', $node); } else {
$request->attributes->set('action', $restOfPath); return;
$request->attributes->set('_controller', 'AppBundle:FewoBooking:index'); }
} $event->setController($controller ?? $this->controllerResolver->getController($request));
elseif ($node->getFewoLodging() !== null) }
{ }
$request->attributes->set('fewoLodgingPage', $node); }
$request->attributes->set('action', $restOfPath);
$request->attributes->set('_controller', 'AppBundle:Cms:fewoLodging');
}
else
{
$handler = $node->getTemplate() ? ucfirst($node->getTemplate()) : 'Default';
$request->attributes->set('_controller', 'AppBundle:Cms:'. $handler);
if ($node->getTemplate())
{
try
{
$controller = $this->controllerResolver->getController($request);
}
catch (\LogicException $e)
{
// If there is no controller action, call the default action and pass the template name
$request->attributes->set('_controller', 'AppBundle:Cms:Default');
$request->attributes->set('template', $node->getTemplate());
}
}
}
}
else
{
return;
}
$event->setController($controller ?? $this->controllerResolver->getController($request));
}
}
}

View file

@ -7,7 +7,7 @@
"uuidString" : "7B4142F5-F6AB-47B4-92FD-340AF03CE426" "uuidString" : "7B4142F5-F6AB-47B4-92FD-340AF03CE426"
} }
], ],
"creatorBuild" : "34510", "creatorBuild" : "34576",
"files" : { "files" : {
"\/css\/booking.css" : { "\/css\/booking.css" : {
"aP" : 1, "aP" : 1,
@ -1095,6 +1095,32 @@
"q" : 100, "q" : 100,
"rq" : 75 "rq" : 75
}, },
"\/images\/logos\/logo_atmosfair_blue.png" : {
"ft" : 32768,
"iS" : 16820,
"oA" : 0,
"oAP" : "\/images\/logos\/logo_atmosfair_blue.png",
"oF" : 0,
"oIPL" : 0,
"opt" : 0,
"oT" : 1,
"ou" : "lpckwebp-none",
"q" : 100,
"rq" : 75
},
"\/images\/logos\/logo_atmosfair_white.png" : {
"ft" : 32768,
"iS" : 86318,
"oA" : 0,
"oAP" : "\/images\/logos\/logo_atmosfair_white.png",
"oF" : 0,
"oIPL" : 0,
"opt" : 0,
"oT" : 1,
"ou" : "lpckwebp-none",
"q" : 100,
"rq" : 75
},
"\/images\/logos\/logo-jugendreisen-spezialist.png" : { "\/images\/logos\/logo-jugendreisen-spezialist.png" : {
"ft" : 32768, "ft" : 32768,
"iS" : 21543, "iS" : 21543,
@ -4058,9 +4084,6 @@
"no-new-native-nonconstructor" : { "no-new-native-nonconstructor" : {
"active" : 0 "active" : 0
}, },
"no-new-object" : {
"active" : 0
},
"no-new-symbol" : { "no-new-symbol" : {
"active" : 1 "active" : 1
}, },
@ -4073,6 +4096,9 @@
"no-obj-calls" : { "no-obj-calls" : {
"active" : 1 "active" : 1
}, },
"no-object-constructor" : {
"active" : 0
},
"no-octal" : { "no-octal" : {
"active" : 1 "active" : 1
}, },
@ -4127,9 +4153,6 @@
"active" : 0, "active" : 0,
"optionString" : "'except-parens'" "optionString" : "'except-parens'"
}, },
"no-return-await" : {
"active" : 0
},
"no-script-url" : { "no-script-url" : {
"active" : 0 "active" : 0
}, },

File diff suppressed because it is too large Load diff

View file

@ -613,14 +613,31 @@ initGoTo();
$(document).ready(function() { $(document).ready(function() {
$('.st-booking-form').validator().on('submit', function (e) { $('.st-booking-form').validator().on('submit', function (e) {
if (e.isDefaultPrevented()) { if (e.isDefaultPrevented()) {
// handle the invalid form... $(".btn-booking-form .alert-danger").removeClass("hide");
} else { $(".btn-booking-form .alert-danger").addClass("show");
$(".btn-booking-form").attr("disabled", true);
} else {
$(".btn-booking-form .alert-danger").removeClass("hide");
$(".btn-booking-form .alert-danger").addClass("show");
$(".btn-booking-form").attr("disabled", true);
$(".btn-booking-form .btn-booking-submit").addClass("hide"); $(".btn-booking-form .btn-booking-submit").addClass("hide");
$(".btn-booking-form .btn-booking-loading").removeClass("hide"); $(".btn-booking-form .btn-booking-loading").removeClass("hide");
} }
}); });
$(".st-booking-form")
.validator()
.on("submit", function (t) {
(t.isDefaultPrevented(),
$(".btn-booking-form .alert-danger").removeClass("hide"),
$(".btn-booking-form .alert-danger").addClass("show")) ||
($(".btn-booking-form .alert-danger").removeClass("show"),
$(".btn-booking-form .alert-danger").addClass(""),
$(".btn-booking-form").attr("disabled", !0),
$(".btn-booking-form .btn-booking-submit").addClass("hide"),
$(".btn-booking-form .btn-booking-loading").removeClass("hide"));
});
var $topNavAccordion = $('#topNavAccordion'); var $topNavAccordion = $('#topNavAccordion');
$topNavAccordion.on('show.bs.collapse','.collapse', function() { $topNavAccordion.on('show.bs.collapse','.collapse', function() {
$topNavAccordion.find('.collapse.in').collapse('hide'); $topNavAccordion.find('.collapse.in').collapse('hide');

View file

@ -24,6 +24,13 @@ class Util
public static function getMySession($key){ public static function getMySession($key){
return isset(self::$mySession[$key]) ? self::$mySession[$key] : false; return isset(self::$mySession[$key]) ? self::$mySession[$key] : false;
} }
public static function isLocal(){
if($_SERVER['HTTP_HOST'] == 'sterntours.test') {
return true;
}
return false;
}
/** /**
* @param Page $page * @param Page $page
* *
@ -93,9 +100,12 @@ class Util
//self::buildHttpQueryForCurl($headers, $headerList); //? //self::buildHttpQueryForCurl($headers, $headerList); //?
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_HEADER, $withRespHeaders); curl_setopt($ch, CURLOPT_HEADER, $withRespHeaders);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if (isset($cookieJar)) if (isset($cookieJar))
{ {
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieJar); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieJar);
@ -108,7 +118,12 @@ class Util
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataStr); curl_setopt($ch, CURLOPT_POSTFIELDS, $dataStr);
} }
$response = curl_exec($ch); $response = curl_exec($ch);
if (curl_errno($ch)) {
$error_msg = curl_error($ch);
// var_dump($error_msg);
// die("CURL ERROR: ". $error_msg);
}
$ret = [ $ret = [
'info' => curl_getinfo($ch), 'info' => curl_getinfo($ch),
'success' => true, 'success' => true,
@ -185,7 +200,7 @@ class Util
$baseUrl = 'https://mein.sterntours.de/api/'; $baseUrl = 'https://mein.sterntours.de/api/';
if($_SERVER['HTTP_HOST'] === 'sterntours.test') { if($_SERVER['HTTP_HOST'] === 'sterntours.test') {
$baseUrl = 'http://mein.sterntours.test/api/'; $baseUrl = 'https://mein.sterntours.test/api/';
} }
$postData['key'] = 'f6077389c9ce710e554763a5de02c8ec'; $postData['key'] = 'f6077389c9ce710e554763a5de02c8ec';
$data = $postData; $data = $postData;
@ -193,14 +208,21 @@ class Util
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_TIMEOUT, 20);
if($_SERVER['HTTP_HOST'] == 'sterntours.test') {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
}
curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_URL, $baseUrl.$action); curl_setopt($ch, CURLOPT_URL, $baseUrl.$action);
$result = curl_exec($ch); $result = curl_exec($ch);
/* var_dump($result); if (curl_errno($ch)) {
die(); $error_msg = curl_error($ch);
*/ var_dump($error_msg);
die("CURL ERROR: ". $error_msg);
}
$r = json_decode($result); $r = json_decode($result);
curl_close($ch); curl_close($ch);
if(isset($r->success)) { if(isset($r->success)) {

View file

@ -1,8 +0,0 @@
{
"folders": [
{
"path": "."
}
],
"settings": {}
}

View file

@ -1,4 +1,4 @@
/* /*
{{ status_code }} {{ status_text }} {{ }} {{ status_text }}
*/ */

View file

@ -24,6 +24,7 @@ if (isset($_SERVER['HTTP_CLIENT_IP'])
/** @var \Composer\Autoload\ClassLoader $loader */ /** @var \Composer\Autoload\ClassLoader $loader */
$loader = require __DIR__.'/../app/autoload.php'; $loader = require __DIR__.'/../app/autoload.php';
include_once __DIR__.'/../var/bootstrap.php.cache';
// Redis loader // Redis loader
/* /*
@ -34,9 +35,12 @@ $redisLoader->register(true);
Debug::enable(); Debug::enable();
$kernel = new AppKernel('dev', true); $kernel = new AppKernel('dev', false);
//$kernel = new AppCache($kernel);
// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
//Request::enableHttpMethodParameterOverride();
$kernel->loadClassCache(); $kernel->loadClassCache();
$request = Request::createFromGlobals(); $request = Request::createFromGlobals();
$response = $kernel->handle($request); $response = $kernel->handle($request);
$response->send(); $response->send();
$kernel->terminate($request, $response); $kernel->terminate($request, $response);

File diff suppressed because one or more lines are too long

25180
web/js/custom-min.js vendored

File diff suppressed because one or more lines are too long

BIN
web/pdf/Stern-Tours-Mietbedingungen.pdf Normal file → Executable file

Binary file not shown.