This commit is contained in:
Kevin Adametz 2021-12-25 03:11:08 +01:00
parent ebf90ff869
commit 4e71ddabec
17 changed files with 448 additions and 101 deletions

View file

@ -90,7 +90,11 @@
</style>
<body class="no-js">
<div id="wrapper">
{{ render(controller('AppBundle:Component:header')) }}
{% if page is defined %}
{{ render(controller('AppBundle:Component:header', {'page': page})) }}
{% else %}
{{ render(controller('AppBundle:Component:header', {'page': null})) }}
{% endif %}
{% block header2 %}
<section class="section fullscreen background lozad" data-background-image="/bundles/app/images/travel/header-top-image3.jpg" style="background-image:url({{ asset('images/placeholder-image.png') }});">
<div class="container-fluid">
@ -119,7 +123,6 @@
<div class="container-fluid">
<div class="row">
<div id="fullwidth" class="col-sm-12">
{% block breadcrumb %}
{% if page is defined %}
{{ render(controller('AppBundle:Component:breadcrumb', {'page': page})) }}
@ -170,6 +173,18 @@
{% block javascripts %}
<script rel="preload" src="{{ asset('js/custom-min.js?v') }}{{ get_file_last_time('js/custom-min.js') }}"></script>
<script type="text/javascript">
$(document).ready(function() {
$('a.travel-booking-content-open').click(function (e) {
e.preventDefault();
$('a.travel-booking-content').tab('show');
});
});
</script>
{% endblock javascripts %}
</body>
</html>

View file

@ -19,6 +19,56 @@
</ul>
{% endif %}
<ul class="top-links block wrap" id="topNavAccordion">
<li>
<a class="dropdown-toggle no-text-underline collapsed" data-toggle="collapse" href="#collapseTopTravelDates" role="button" aria-expanded="false" aria-controls="collapseTopTravelDates">
<i class="fa fa-plane"></i> Reisetermine
<i class="fa fa-caret-collapse"></i>
</a>
<!-- ab Montag um 09:00 Uhr -->
<!-- bis xxx Uhr -->
<div class="dropdown-menu-infos collapse" id="collapseTopTravelDates">
<div class="dropdown-menu-body">
<div class="badge badge-default btn-block">
<span class="text-default">{{ header_travel_program.title }} <br>
</div>
<table class="table table-condensed table-vertical-middle">
<tr>
<th class="text-left">Hinflug</th>
<th class="text-left">Rückflug</th>
<th class="text-left">Preis p. P.</th>
</tr>
{% set last_name = "" %}
{% for travel_date in header_travel_program.travelDates('header') if travel_date.status >= 0 %}
{% if loop.index <= 6 %}
{% if last_name != travel_date.name %}
{% set last_name = travel_date.name %}
<tr>
<td class="text-left">{{ travel_date.start|date }}</td>
<td class="text-left">{{ travel_date.end|date }}</td>
<td class="text-left">
<strong>
{% if travel_date.prices[3] is defined %}
{% if travel_date.prices[3].available == "1" %}
{% if travel_date.prices[3].effectiveDiscountPrice %}
<a href="{{ header_travel_program.page.urlPath }}" style="color: #558c55; text-decoration: underline;">
ab {{ travel_date.prices[3].effectiveDiscountPrice|number_format }}
</a>
{% endif %}
{% endif %}
{% endif %}
</strong>
</td>
</tr>
{% endif %}
{% endif %}
{% endfor %}
</table>
<a href="{{ header_travel_program.page.getUrlPathBefore }}">weitere Rundreisen ansehen</a>
</div>
</div>
</li>
<li>
<a class="dropdown-toggle no-text-underline collapsed" data-toggle="collapse" href="#collapseTopPhone" role="button" aria-expanded="false" aria-controls="collapseTopPhone">
<i class="fa fa-phone-square"></i> 030 - 700 94 100 &bull;

View file

@ -68,9 +68,14 @@
Ausstattung
</a>
</li>
<li>
<a href="#travel-saisons-content-tab" aria-controls="travel-saisons-content-tab" role="tab" data-toggle="tab">
Saisons <i class="fa fa-star"></i> Preise
</a>
</li>
<li class="active">
<a href="#travel-dates-content-tab" aria-controls="travel-dates-content-tab" role="tab" data-toggle="tab">
Termine <i class="fa fa-star"></i> Preise <i class="fa fa-star"></i> Mieten
<a href="#travel-booking-content-tab" class="travel-booking-content" aria-controls="travel-booking-content-tab" role="tab" data-toggle="tab">
Kalender <i class="fa fa-star"></i> Buchen
</a>
</li>
</ul>
@ -139,7 +144,7 @@
</div>
{% endif %}
</div> <!-- END tabpanel -->
</div>
{#
********* AUSSTATTUNG *********
@ -149,14 +154,14 @@
<div>
{{ fewo_lodging.equipment|raw }}
</div>
</div> <!-- END tabpanel -->
</div>
{#
********* TERMINE UND PREISE *********
#}
<div role="tabpanel" class="tab-pane active" id="travel-dates-content-tab">
<h3>Saisons</h3>
<div role="tabpanel" class="tab-pane" id="travel-saisons-content-tab">
<h3>Saisons <i class="fa fa-star"></i> Preise</h3>
<div class="table-responsive" id="no-more-tables">
{% if fewo_lodging.prices is not empty %}
@ -182,14 +187,20 @@
</strong>
</td>
<td data-title="Beginn">
<a class="default scroll-to-jump" href="#jump-{{ price.season.fromDate|date("n-Y") }}">
{#<a class="default scroll-to-jump" >
{{ price.season.fromDate|date }}
</a>
</a>#}
<strong>
<a href="#jump-{{ price.season.fromDate|date("n-Y") }}"class="default travel-booking-content-open">{{ price.season.fromDate|date }}</a>
</strong>
</td>
<td data-title="Ende">
<a class="default scroll-to-jump" href="#jump-{{ price.season.toDate|date("n-Y") }}">
{#<a class="default scroll-to-jump" >
{{ price.season.toDate|date }}
</a>
</a>#}
<strong>
<a href="#jump-{{ price.season.toDate|date("n-Y") }}" class="default travel-booking-content-open">{{ price.season.toDate|date }}</a>
</strong>
</td>
<td data-title="Mindestbelegung">
{{ price.season.minimumStay }} {{ price.season.minimumStay < 2 ? 'Nacht' : 'Nächte' }}
@ -214,14 +225,23 @@
Momentan sind für dieses Programm keine Termine verfügbar.
{% endif %}
</div>
</div>
<h3>Buchung</h3>
<p>Bitte klicken Sie einen Anreisetermin (grüne Zahl), um zur Buchungsmaske zu gelagen.</p>
<div role="tabpanel" class="tab-pane active" id="travel-booking-content-tab">
<h3>Kalender <i class="fa fa-star"></i> Buchen</h3>
<style>
.table > tbody > tr > td.active {
background-color: rgba(89, 156, 93, 0.6);
}
.table > tbody > tr > td.normal {
background-color: rgba(94, 134, 136, 0.2);
}
}
</style>
<div class="alert alert-success"><strong>Bitte klicken Sie im Kalender auf einen freien Buchungstag (grün), um zum Buchungsformular zu gelagen.</strong></div>
<hr>
{% include 'default/pages/cms/calendarLodgingProgram.html.twig' %}
</div> <!-- END tabpanel -->
</div>
</div>
</div>

View file

@ -4,7 +4,7 @@
<section class="article clearfix">
{% if(api is defined) %}
<article role="article" itemscope itemtype="http://schema.org/Article">
{% if(api.nodes_active.image.url is defined) %}
{% if(api.nodes_active.image.url is defined and api.nodes_active.image.url != "") %}
<header>
<div class="mediaTop">
<div class="mediaTopImageItem">

View file

@ -61,7 +61,7 @@
-->
<tr>
<td><label class="st-required control-label required">Datum</label></td>
<td>
<td style="white-space: normal;">
<div class="form-group" style="margin-bottom:0;">
<div class="input-daterange input-group" id="date-range">
{{ form_widget(form.fromDate) }}
@ -69,6 +69,7 @@
{{ form_widget(form.toDate) }}
</div>
</div>
<div class="small alert alert-success" style="margin-bottom: 0; padding-top: 6px; padding-bottom: 6px">Bei Datumsänderung, erst immer das Anreisedatum, dann das Abreisedatum im Kalender auswählen.</div>
</td>
</tr>
<!-- <tr>

View file

@ -294,6 +294,7 @@ class CmsController extends Controller
public function travelProgramAction(Page $page)
{
$this->getDoctrine()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($page->getTravelProgram());
// replace this example code with whatever you need

View file

@ -36,11 +36,51 @@ class ComponentController extends Controller
}
public function headerAction()
public function getHeaderTravelProgram($page){
$programmes = [
'aegypten-reisen' => 1,
'israel-reisen' => 22,
'jordanien-reisen' => 197,
'oman-reisen' => 194
];
$p_id = null;
foreach($programmes as $key=>$id){
if(strpos($_SERVER['REQUEST_URI'], $key) !== false){
$p_id = $id;
}
}
if($p_id === null){
if($page){
$p_id = $page->getId()%2 ? 1 : 22;
}
$p_id = 1;
}
$em = $this->getEntityManager();
// $em->flush();
$TravelProgramRepo = $em->getRepository('AppBundle:TravelProgram');
$TravelProgram = $TravelProgramRepo->find($p_id);
$em->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($TravelProgram, false, 1, 'start_week');
/*foreach($TravelProgram->getTravelDates('header') as $travelDate){
var_dump($travelDate->getStart()->format("d.m.Y"));
echo "<br>";
}*/
// $em->persist($TravelProgram);
// $em->flush();
return $TravelProgram;
}
public function headerAction($page)
{
$navPages = $this->getEntityManager()->getRepository('AppBundle:Page')->findTopCountryNavPages();
$content = $this->getHeaderContent();
$header_travel_program = $this->getHeaderTravelProgram($page);
$local = [];
foreach ($content->local as $key=>$value){
@ -51,14 +91,13 @@ class ComponentController extends Controller
foreach ($content->phone as $key=>$value){
$phone[$key] = $value;
}
return $this->render('default/components/header.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'nav_pages' => $navPages,
'content' => $content,
'local' => $local,
'phone' => $phone,
'header_travel_program' => $header_travel_program,
]);
}

View file

@ -286,7 +286,7 @@ class Page
/**
* @ORM\Column(type="string", length=200, nullable=true, unique=true)
*/
protected $realUrlPath;
protected $realUrlPath;
/**
* @ORM\Column(type="string", length=65535, nullable=true)
@ -1263,6 +1263,15 @@ class Page
return '/'. implode('/', array_reverse($urlParts));
}
public function getUrlPathBefore()
{
$url = explode('/', $this->getUrlPath());
array_pop($url);
return implode('/', $url);
}
/**
* Set boxBody
*

View file

@ -221,7 +221,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
* @todo Find a more appropriate name for this method
*/
public function getTrueTravelPeriods(TravelProgram $program, $class = false, $flags =
self::TD_QUERY_VIRTUAL_AND_NON_VIRTUAL)
self::TD_QUERY_VIRTUAL_AND_NON_VIRTUAL, $start = false)
{
if (!($flags & self::TD_QUERY_VIRTUAL_AND_NON_VIRTUAL))
{
@ -229,8 +229,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
}
$doQueryVirtualAndNonVirtual = $flags & self::TD_QUERY_VIRTUAL_AND_NON_VIRTUAL ==
self::TD_QUERY_VIRTUAL_AND_NON_VIRTUAL;
/** @var TravelPeriod[] $periods */
$qb = $this->createQueryBuilder('p');
$qb
@ -262,8 +261,11 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
$startDate = null;
if (!($flags & self::TD_QUERY_OUTDATED))
{
$startDate = new \DateTime('tomorrow');
if($start && $start == 'start_week'){
$startDate = new \DateTime('+3 week');
}else{
$startDate = new \DateTime('tomorrow');
}
}
if ($class)
{
@ -296,7 +298,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
;
$entities = $qb->getQuery()->execute();
$flightPeriodByKey = null;
if (!$program->getIsMediated())
{
@ -334,6 +336,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
{
$fpKey = $date->getStartDate()->format('Y-m-d') . $date->getEndDate()->format('Y-m-d') .
$program->getTravelArrivalPoint()->getId();
if (isset($flightPeriodByKey[$fpKey]))
{
// #TODO Does this cause performance problems?
@ -342,8 +345,8 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
}
}
}
$this->addTravelDatesToProgram($program, $entities, $flightPeriodByKey, $startDate, null);
return $program->getTravelDates();
$this->addTravelDatesToProgram($program, $entities, $flightPeriodByKey, $startDate, null, $start);
return $program->getTravelDates($start);
}
private $currencyFactor = null;
@ -373,13 +376,14 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
* @throws \Exception
*/
public function addTravelDatesToProgram(TravelProgram &$travelProgram, $travelPeriods, $flightPeriods,
\DateTime $startDate = null, \DateTime $endDate = null)
\DateTime $startDate = null, \DateTime $endDate = null, $header = null)
{
$currencyFactor = $travelProgram->getNettoPricesInEuro() ? 1 : $this->getCurrencyFactor();
$counters = array();
// #TODO Consider adding travelPeriods to travelProgram in the search algorithm
//foreach ($travelProgram->getPeriods() as $travelPeriod)
$counter = 0;
foreach ($travelPeriods as $travelPeriod)
{
if ($travelPeriod->getIsSeason())
@ -406,6 +410,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
\DateInterval::createFromDateString('1 day'), $seasonEndDate);
$doTestStartDate = $startDate != null;
/** @var \DateTime $date */
foreach ($dates as $date)
{
@ -424,7 +429,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
$travelDateEnd = (clone $date)->modify('+'.$travelProgram->getProgramDuration().' day');
$travelDateKey = $this->createTravelDateKey($date, $travelDateEnd);
if (!$travelProgram->hasTravelDate($travelDateKey))
if (!$travelProgram->hasTravelDate($travelDateKey, $header))
{
$flightPeriod = null;
if (!$travelProgram->getIsMediated())
@ -440,7 +445,8 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
$date,
$travelDateEnd,
$flightPeriod,
$currencyFactor
$currencyFactor,
$header
);
}
}
@ -464,8 +470,8 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
}
// #TODO There is an error in the old backend which causes duplicates
if ($travelProgram->hasTravelDate($travelDateKey) &&
$travelProgram->getTravelDate($travelDateKey)->__getTravelPeriod()->getId() != $travelPeriod->getId())
if ($travelProgram->hasTravelDate($travelDateKey, $header) &&
$travelProgram->getTravelDate($travelDateKey, $header)->__getTravelPeriod()->getId() != $travelPeriod->getId())
{
global $kernel;
if($kernel instanceOf \AppCache) $kernel = $kernel->getKernel();
@ -475,7 +481,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
else
{
$TravelDate = $travelProgram->addTravelDateFromNonSeasonTravelPeriod($travelDateKey, $travelPeriod, $flightPeriod,
$currencyFactor);
$currencyFactor, $header);
}

View file

@ -402,8 +402,10 @@ class TravelProgram
* @var array|TravelDate[]
*/
private $travelDateByKey = [];
private $headerTravelDateByKey = [];
private $isTravelDateMapTainted = true;
private $isHeaderTravelDateMapTainted = true;
/**
* Set profitMargin
@ -1475,6 +1477,7 @@ class TravelProgram
$this->countries = new \Doctrine\Common\Collections\ArrayCollection();
$this->departures = new \Doctrine\Common\Collections\ArrayCollection();
$this->travelDateByKey = [];
$this->headerTravelDateByKey = [];
}
/**
@ -1680,16 +1683,25 @@ class TravelProgram
return $this->images;
}
private function assertTravelDateNotDefinedYet($key)
private function assertTravelDateNotDefinedYet($key, $header = null)
{
if($header){
if (isset($this->headerTravelDateByKey[$key]))
{
return true; //throw new \Exception('Travel period with key '. $key .' already exists');
}
return false;
}
if (isset($this->travelDateByKey[$key]))
{
throw new \Exception('Travel period with key '. $key .' already exists');
return true; //throw new \Exception('Travel period with key '. $key .' already exists');
}
return false;
}
public function addTravelDateFromNonSeasonTravelPeriod($key, TravelPeriod $travelPeriod,
FlightPeriod $flightPeriod = null, $currencyFactor)
FlightPeriod $flightPeriod = null, $currencyFactor, $header = null)
{
$now = new \DateTime();
@ -1697,48 +1709,80 @@ class TravelProgram
if($travelPeriod->getStartDate() <= $now){
return false;
}
$this->assertTravelDateNotDefinedYet($key);
$this->travelDateByKey[$key] = TravelDate::createForNonSeasonTravelPeriod($key, $travelPeriod, $flightPeriod,
$currencyFactor);
if($header){
if(!$this->assertTravelDateNotDefinedYet($key, $header)){
$this->headerTravelDateByKey[$key] = TravelDate::createForNonSeasonTravelPeriod($key, $travelPeriod, $flightPeriod, $currencyFactor);
}
return $this->headerTravelDateByKey[$key];;
}
if(!$this->assertTravelDateNotDefinedYet($key)){
$this->travelDateByKey[$key] = TravelDate::createForNonSeasonTravelPeriod($key, $travelPeriod, $flightPeriod, $currencyFactor);
}
return $this->travelDateByKey[$key];
}
public function addTravelDateFromSeasonTravelPeriod($key, TravelPeriod $travelPeriod, $index, \DateTime $start,
\DateTime $end = null, FlightPeriod $flightPeriod = null, $currencyFactor)
\DateTime $end = null, FlightPeriod $flightPeriod = null, $currencyFactor, $header = null)
{
$this->assertTravelDateNotDefinedYet($key);
$this->isTravelDateMapTainted = true;
$this->travelDateByKey[$key] = TravelDate::createForSeasonTravelPeriod($key, $travelPeriod, $index, $start,
$end, $flightPeriod, $currencyFactor);
if($header){
if(!$this->assertTravelDateNotDefinedYet($key, $header)){
$this->isHeaderTravelDateMapTainted = true;
$this->headerTravelDateByKey[$key] = TravelDate::createForSeasonTravelPeriod($key, $travelPeriod, $index, $start,
$end, $flightPeriod, $currencyFactor);
}
return;
}
if(!$this->assertTravelDateNotDefinedYet($key)){
$this->isTravelDateMapTainted = true;
$this->travelDateByKey[$key] = TravelDate::createForSeasonTravelPeriod($key, $travelPeriod, $index, $start,
$end, $flightPeriod, $currencyFactor);
}
}
public function addTravelDate($key, TravelPeriod $travelPeriod, FlightPeriod $flightPeriod = null, $currencyFactor,
\DateTime $start = null, \DateTime $end = null, $index = null)
{
$this->assertTravelDateNotDefinedYet($key);
if(!$this->assertTravelDateNotDefinedYet($key)){
$this->isTravelDateMapTainted = true;
$this->travelDateByKey[$key] = new TravelDate($key, $travelPeriod, $flightPeriod, $currencyFactor, $start, $end,
$index);
}
}
public function hasTravelDate($key)
public function hasTravelDate($key, $header = null)
{
if($header){
return isset($this->headerTravelDateByKey[$key]);
}
return isset($this->travelDateByKey[$key]);
}
public function getTravelDate($key)
public function getTravelDate($key, $header = null)
{
if($header){
return $this->headerTravelDateByKey[$key] ?? null;
}
return $this->travelDateByKey[$key] ?? null;
}
/**
* @return TravelDate[]|array
*/
public function getTravelDates()
public function getTravelDates($header = null)
{
if($header){
if ($this->isHeaderTravelDateMapTainted)
{
ksort($this->headerTravelDateByKey);
$this->isHeaderTravelDateMapTainted = false;
}
return $this->headerTravelDateByKey;
}
if ($this->isTravelDateMapTainted)
{
ksort($this->travelDateByKey);
@ -1747,11 +1791,16 @@ class TravelProgram
return $this->travelDateByKey;
}
public function hasTravelDates()
public function hasTravelDates($header = null)
{
if($header){
return !empty($this->headerTravelDateByKey);
}
return !empty($this->travelDateByKey);
}
public function getIsPossibleStartDate(\DateTime $startDate)
{
return $this->getIsAvailWeekday(intval($startDate->format('w')));

View file

@ -63,6 +63,10 @@ class ContactSternToursCrmExporter extends SternToursCrmExporter
public function v3process(ContactRequest $contactRequest)
{
$travelperiod_start = $contactRequest->getStart() ? $contactRequest->getStart()->format('Y-m-d') : "";
$travelperiod_end = $contactRequest->getEnd() ? $contactRequest->getEnd()->format('Y-m-d') : "";
$data = ['lead' => [
'customerForm' => [
'salutation_id' => $contactRequest->getSalutation(),
@ -79,8 +83,8 @@ class ContactSternToursCrmExporter extends SternToursCrmExporter
'request_date' => (new \DateTime())->format('Y-m-d'),
'sf_guard_user_id' => self::API_USER_ID,
'status_id' => 10, // 'Angebot erstellen'
'travelperiod_start' => $contactRequest->getStart()->format('Y-m-d'),
'travelperiod_end' => $contactRequest->getEnd()->format('Y-m-d'),
'travelperiod_start' => $travelperiod_start,
'travelperiod_end' => $travelperiod_end,
//'travelcategory_id'
'is_closed' => 0,
'website_id' => self::WEBSITE_ID,

View file

@ -83,7 +83,6 @@ class KernelControllerListener
//search for entry in new tree objects
$api = Util::loadFromApi('cms/search', ['url'=>$curPath]);
while (!empty($pathArray))
{
if(!$api){
@ -96,7 +95,6 @@ class KernelControllerListener
$restOfPath = '/'. array_pop($pathArray) . $restOfPath;
$curPath = implode('/', $pathArray);
}
//find and try 301
//find => to
$redirects = [

View file

@ -49,16 +49,16 @@
}
#topBar ul.top-links>li>a {
padding: 8px 10px;
font-size:14px;
font-size:13px;
display:inline-block;
font-weight: 700;
text-decoration:none;
background-color: #648859;
color: #fff;
/*border-right:rgba(0,0,0,0.1) 1px solid;
border-left:rgba(0,0,0,0.1) 1px solid;*/
}
#topBar ul.top-links>li>a
#topBar ul.top-links>li.icon>a {
padding: 4px 10px;
@ -111,7 +111,6 @@
}
/* Drop Downs & Lang */
#topBar ul.dropdown-menu {
min-width:50px;
@ -903,12 +902,12 @@
/* border-bottom-right-radius: 8px;
border-bottom-left-radius: 8px; */
border:1px solid #ddd;
min-width: 327px;
min-width: 240px;
margin-bottom: 4px;
}
#collapseTopContact {
width: 327px;
width: 247px;
}
#topNav .container-fluid {
padding-right: 5px;
@ -1205,6 +1204,34 @@
display: none;
}
@media only screen and (min-width: 992px) and (max-width:1240px){
#topBar ul.top-links>li>a {
padding: 8px 0px;
font-size:12px;
}
#topBar ul.top-links>li>a>i {
font-size: 1.5em;
width: 28px;
}
.dropdown-menu-infos {
min-width: 220px;
}
.dropdown-menu-infos .badge-default {
font-size: 12px;
}
.dropdown-menu-body p {
font-size: 12px;
}
#topBar .table>tbody>tr>td {
font-size: 12px;
}
#topBar .table>tbody>tr>th {
font-size: 12px;
}
}
@media (max-width: 786px) {
#eKomiSeal_default img {
height: 66px !important;

View file

@ -63,7 +63,7 @@ $(document).ready(function() {
};
$('#fewo_booking_request_fromDate, #fewo_booking_request_toDate').daterangepicker({
$('#fewo_booking_request_fromDate1, #fewo_booking_request_toDate1').daterangepicker({
isInvalidDate: checkDates,
isCustomDate: checkCustom,
"minDate": moment(),
@ -106,6 +106,7 @@ $(document).ready(function() {
},
autoApply: true,
autoUpdateInput: false,
singleDatePicker: true,
"startDate": startDate,
"endDate": endDate,
}, function(start, end, label) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

143
web/js/fewoBooking.js Normal file
View file

@ -0,0 +1,143 @@
$(document).ready(function() {
var frm$ = $('.st-booking-form');
var summary$ = $('.st-booking-summary');
var toDateDay$ = $('#fewo_booking_request_toDate_day');
var toDateMonth$ = $('#fewo_booking_request_toDate_month');
var toDateYear$ = $('#fewo_booking_request_toDate_year');
function loadCalculationFewo(){
var tmp = location.href.split('?');
var tmp2 = tmp[0].split('/');
tmp2.pop();
var url = tmp2.join('/') + '/berechne-gesamtpreis';
if (tmp[1])
{
url += '?'+ tmp[1];
}
$.ajax({
url: url,
type: 'post',
data: frm$.serialize()
}).then(function(r) {
summary$.html(r);
}, function() {
summary$.html('Aufgrund eines Fehlers konnte kein Angebot ermittelt werden.');
});
}
frm$.find('input, select').change(function() {
loadCalculationFewo();
});
// var currentDate = moment().format("DD.MM.YYYY");
var startDate = $('#fewo_booking_request_fromDate').val();
var endDate = $('#fewo_booking_request_toDate').val();
var maxDate = $('#hidden_toDate').val();
var reservationDays = JSON.parse($('#hidden_reservationDays').val());
var customDays = JSON.parse($('#hidden_customDays').val());
var checkDates = function (date) {
var formatted = date.format('DD.MM.YYYY');
if(reservationDays.indexOf(formatted) > -1){
return true;
}
if(customDays[formatted] !== undefined && customDays[formatted].indexOf('bookable') == -1 && customDays[formatted].indexOf('bookable-end') == -1){
return true;
}
return false;
};
var checkCustom = function (date) {
if (date !== false) {
var formatted = date.format('DD.MM.YYYY');
if(customDays[formatted] !== undefined){
return customDays[formatted];
}
}
};
$('#fewo_booking_request_fromDate, #fewo_booking_request_toDate').daterangepicker({
isInvalidDate: checkDates,
isCustomDate: checkCustom,
"minDate": moment(),
"maxDate": maxDate,
"timePickerSeconds": true,
"locale": {
"format": "DD.MM.YYYY",
"separator": " - ",
"applyLabel": "OK",
"cancelLabel": "X",
"fromLabel": "Von",
"toLabel": "Bis",
"customRangeLabel": "Custom",
"weekLabel": "W",
"daysOfWeek": [
"So",
"Mo",
"Di",
"Mi",
"Do",
"Fr",
"Sa"
],
"monthNames": [
"Januar",
"Februar",
"März",
"April",
"Mai",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"Dezember"
],
"firstDay": 1
},
autoApply: true,
autoUpdateInput: false,
"startDate": startDate,
"endDate": endDate,
}, function(start, end, label) {
// console.log("New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')");
// Lets update the fields manually this event fires on selection of range
var selectedStartDate = start.format('DD.MM.YYYY'); // selected start
var selectedEndDate = end.format('DD.MM.YYYY'); // selected end
var $checkinInput = $('#fewo_booking_request_fromDate');
var $checkoutInput = $('#fewo_booking_request_toDate');
// Updating Fields with selected dates
$checkinInput.val(selectedStartDate);
$checkoutInput.val(selectedEndDate);
// Setting the Selection of dates on calender on CHECKOUT FIELD (To get this it must be binded by Ids not Calss)
var checkOutPicker = $checkoutInput.data('daterangepicker');
checkOutPicker.setStartDate(selectedStartDate);
checkOutPicker.setEndDate(selectedEndDate);
// Setting the Selection of dates on calender on CHECKIN FIELD (To get this it must be binded by Ids not Calss)
var checkInPicker = $checkinInput.data('daterangepicker');
checkInPicker.setStartDate(selectedStartDate);
checkInPicker.setEndDate(selectedEndDate);
loadCalculationFewo();
});
$('#fewo_booking_request_fromDate, #fewo_booking_request_toDate').on('show.daterangepicker', function(ev, picker) {
/* console.log(picker.startDate.format('YYYY-MM-DD'));
console.log(picker.endDate.format('YYYY-MM-DD'));
*/
});
});