feeback show, header css lazy

git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3482 f459cee4-fb09-11de-96c3-f9c5f16c3c76
This commit is contained in:
adametz 2018-12-27 16:40:23 +00:00
parent 30c42d0508
commit b28c7db598
24 changed files with 681 additions and 202 deletions

1
.gitignore vendored
View file

@ -6,3 +6,4 @@
/trunk/web/uploads
/trunk/web/web
/trunk/src/AppBundle/Resources/public/js/min
trunk/web/css/images/*

View file

@ -78,9 +78,9 @@
</style>
<link rel="preload" href="{{ asset('css/my-custom.css?v4') }}" as="style" onload="this.rel='stylesheet'">
<link rel="preload" href="{{ asset('css/my-custom.css?v') }}{{ get_file_last_time('css/my-custom.css') }}" as="style" onload="this.rel='stylesheet'">
<noscript>
<link rel="stylesheet" href="{{ asset('css/my-custom.css?v4') }}">
<link rel="stylesheet" href="{{ asset('css/my-custom.css?v') }}{{ get_file_last_time('css/my-custom.css') }}">
</noscript>
<script>
@ -147,6 +147,8 @@
<!-- START CONTENT -->
<div class="row">
<div id="show_sterntours_video_full" class="col-md-12" style="display: none;">
</div>
{% include 'default/components/sidebar.html.twig' with {
nav_sidebar_widget_block: block('nav_sidebar_widget') ?? null,
search_sidebar_widget_block: block('search_sidebar_widget') ?? null,
@ -174,8 +176,7 @@
{% embed 'default/components/embed/modal.html.twig' with {id: 'default'} %}{% endembed %}
{% block javascripts %}
<script src="{{ asset('js/custom-min.js?v6') }}"></script>
<script src="{{ asset('js/custom-min.js?v') }}{{ get_file_last_time('js/custom-min.js') }}"></script>
{% endblock javascripts %}
</body>
</html>

View file

@ -1,21 +1,18 @@
{% if breadcrumb_entries is not empty %}
<div class="breadcrumb-holder" itemscope itemtype="https://schema.org/Breadcrumb">
<ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a class="on" itemprop="item" href="/"><span itemprop="name">STERN TOURS</span></a>
<meta content="1" itemprop="position" property="position" />
<div class="breadcrumb-holder">
<ol class="breadcrumb" itemprop="breadcrumb" itemscope="" itemtype="http://schema.org/BreadcrumbList">
<li itemscope="" itemprop="itemListElement" itemtype="http://schema.org/ListItem">
<a class="on" itemprop="item" title="STERN TOURS" href="{{ app.request.getSchemeAndHttpHost() }}">
<span itemprop="name">STERN TOURS</span></a>
<meta itemprop="position" content="1">
</li>
{% for breadcrumb_entry in breadcrumb_entries %}
{# @var breadcrumb_entry \AppBundle\Entity\BreadcrumbEntry #}
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
{% if not loop.last %}
<a itemprop="item" href="{{ breadcrumb_entry.url }}">
<li itemscope="" itemprop="itemListElement" itemtype="http://schema.org/ListItem">
<a itemprop="item" title="{{ breadcrumb_entry.title }}" href="{{ app.request.getSchemeAndHttpHost() }}{{ breadcrumb_entry.url }}">
<span itemprop="name">{{ breadcrumb_entry.title }}</span>
</a>
{% else %}
<span itemprop="name">{{ breadcrumb_entry.title }}</span>
{% endif %}
<meta itemprop="position" property="position" content="{{ loop.index0 + 2 }}" />
<meta itemprop="position" content="{{ loop.index0 + 2 }}">
</li>
{% endfor %}
</ol>

View file

@ -1,6 +1,4 @@
<div class="modal fade" tabindex="-1" role="dialog"
id="st-departures-modal-{{ id }}"
>
<div class="modal fade" tabindex="-1" role="dialog" id="st-departures-modal-{{ id }}">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
@ -10,32 +8,48 @@
<h4 class="modal-title">Abflugorte / Zuschläge</h4>
</div>
<div class="modal-body">
<table class="table">
<thead>
<tr>
<th>Ort</th>
<th>Zu-/Abschlag</th>
<th style="text-align: left; width: 80%">Ort</th>
<th style="width: 20%">Zu-/Abschlag</th>
</tr>
</thead>
<tbody>
{% for departure in departures %}
{# @var departure \AppBundle\Entity\TravelDeparturePoint #}
<tr>
<td><a href="" data-dismiss="modal">{{ departure.name }}</a></td>
<td style="text-align: left">
{% if departure.flightTime[startWeekday] is defined %}
{% if departure.flightTime[startWeekday] != "" %}
<a href="#" data-toggle="collapse" data-target="#flight_{{ travelName }}_{{ departure.id }}" class="pull-right collapsed">Flugzeiten <i class="fa fa-plus"></i></a>
{% endif %}
{% endif %}
<h4>{{ departure.name }}</h4>
{% if departure.flightTime[startWeekday] is defined %}
<div class="collapse" id="flight_{{ travelName }}_{{ departure.id }}" style="">
{% for flightTime in departure.flightTime[startWeekday]|split('\n') %}
{% if flightTime != "" %}
{{ flightTime|raw }}<br>
{% endif %}
{% endfor %}
</div>
{% endif %}
</td>
<td>{{ departure.extraCharge|number_format(2) }} €</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">schließen</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
{% for departure in travel_date.departures %}
{# @var departure \AppBundle\Entity\TravelDeparturePoint #}
{% endfor %}

View file

@ -1,5 +1,5 @@
<div class="modal fade" tabindex="-1" role="dialog" id="st-{{ id }}-modal">
<div class="modal-dialog" role="document">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>

View file

@ -3,14 +3,14 @@
<div class="container">
<div class="pull-right">
<ul class="topbar-drops list-inline">
<li class="nohover visible-xs visible-sm"> Mo-Fr: 09:00 - 22:00 | Sa: 10:00 - 22:00 | So: 11:00 - 22:00 Uhr</li>
<li class="nohover"><i class="fa fa-phone"></i> 030 - 700 94 100</li>
<li>
<a href="/kontakt" title="Kontakt"><i class="fa fa-envelope"></i> <span class="hidden-xs">Kontakt</span></a>
</li>
<li>
<a href="javascript:void(window.open('/server/chat.php','','width=590,height=610,left=0,top=0,resizable=yes,menubar=no,location=no,status=yes,scrollbars=yes'))"
title="Chat-Fenster öffnen"
>
title="Chat-Fenster öffnen">
<i class="fa fa-comments"></i> <span class="hidden-xs">Chat</span>
</a>
</li>
@ -24,11 +24,11 @@
</div><!-- end container -->
</div><!-- end topbar -->
<div class="menu-container">
<div class="container">
<div class="menu-wrapper">
<nav id="navigation" class="navbar" role="navigation" itemscope itemtype="https://schema.org/SiteNavigationElement">
<nav id="navigation" class="navbar" role="navigation" itemscope
itemtype="https://schema.org/SiteNavigationElement">
<div class="navbar-inner">
<div id="navbar-collapse" class="navbar-left navbar-collapse collapse clearfix">
<ul class="nav navbar-nav">
@ -42,7 +42,10 @@
</a>
</li>
<li class="dropdown openClick" itemprop="name"><a itemprop="url" href="#" title="" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-menu27"></i></a>
<li class="dropdown openClick" itemprop="name"><a itemprop="url" href="#" title=""
class="dropdown-toggle"
data-toggle="dropdown"><i
class="icon-menu27"></i></a>
<ul class="dropdown-menu" role="menu">
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/jugendreisen" title="Jugendreisen">
@ -71,7 +74,8 @@
<div class="navbar-header">
<button class="btn btn-mobile" data-toggle="collapse" data-target=".nav-main-collapse" aria-label="Toggle navigation">
<button class="btn btn-mobile" data-toggle="collapse" data-target=".nav-main-collapse"
aria-label="Toggle navigation">
<i class="icon-menu27"></i> <span style="display: none">Menu</span>
</button>
@ -81,8 +85,9 @@
</div><!-- end navbar-header -->
<div id="navbar-collapse_1" class="navbar-right">
<div class="navbar-times hidden-xs">
<span style="float:left; margin-top: 30pt; margin-right: 5pt; color: #e5aa30; font-size: 18px">E-Mail: <a href="mailto:stern@sterntours.de" style="font-size: 18px; color: #777777" >stern@sterntours.de</a></span>
<div class="navbar-times visible-md visible-lg hidden-xs hidden-sm">
<span style="float:left; margin-top: 30pt; margin-right: 5pt; color: #e5aa30; font-size: 18px">E-Mail: <a
href="mailto:stern@sterntours.de" style="font-size: 18px; color: #777777">stern@sterntours.de</a></span>
<i class="fa fa-phone "></i>
<span>Mo-Fr: 09:00 - 22:00 Uhr<br>Sa: 10:00 - 22:00 Uhr<br>So: 11:00 - 22:00 Uhr</span>
</div>
@ -100,13 +105,13 @@
<nav class="nav-main">
<ul id="topMain" class="nav nav-pills nav-main">
<li role="menuitem" itemprop="name" class="hidden visible-xs">
<li role="menuitem" itemprop="name" class="hidden visible-xs">
<a href="/" title="Usedom Ferienwohnungen" itemprop="">
Kulturreisen
</a>
</li>
<li role="menuitem" itemprop="name" class="hidden visible-xs">
<li role="menuitem" itemprop="name" class="hidden visible-xs">
<a href="/ferienwohnungen" title="Usedom Ferienwohnungen" itemprop="">
Usedom Ferienwohnungen
</a>
@ -115,13 +120,16 @@
{% for nav_page in nav_pages if nav_page.country is not empty %}
{# @var nav_page \AppBundle\Entity\Page #}
<li class="dropdown">
<a class="dropdown-toggle" href="{{ nav_page.urlPath }}" title="{{ nav_page.title }}">
{{ nav_page.title|replace({'Reisen': ''}) }}<span class="hidden-md hidden-sm">Reisen</span>
<a class="dropdown-toggle" href="{{ nav_page.urlPath }}"
title="{{ nav_page.title }}">
{{ nav_page.title|replace({'Reisen': ''}) }}<span
class="hidden-md hidden-sm">Reisen</span>
</a>
<ul class="dropdown-menu">
<li class="first" role="menuitem" itemprop="name">
<a itemprop="url" href="{{ nav_page.urlPath }}" title="{{ nav_page.title }}">
<a itemprop="url" href="{{ nav_page.urlPath }}"
title="{{ nav_page.title }}">
{{ nav_page.title }}
</a>
</li>
@ -150,7 +158,8 @@
</a>
<ul class="dropdown-menu">
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reiseversicherung" title="Reiseversicherung">
<a itemprop="url" href="/reiseversicherung"
title="Reiseversicherung">
Reiseversicherung
</a>
</li>

View file

@ -13,10 +13,11 @@
{% if child_page.boxDiscount is not empty %}
<div class="cdiscount">{{ child_page.boxDiscount|raw }}</div>
{% 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 class="box_mid">
<div class="hl5">{{ child_page.title }}</div>
@ -28,3 +29,6 @@
</div>
</div>
</div>

File diff suppressed because one or more lines are too long

View file

@ -294,23 +294,18 @@
<div id="collapse_fd" class="panel-collapse collapse" aria-expanded="true" style="">
<div class="panel-body">
{% for departure in travel_date.departures %}
{# @var departure \AppBundle\Entity\TravelDeparturePoint #}
{% if departure.flightTime[travel_date.startWeekday] is defined %}
<div class="flight_times_ele" id="flight_time_{{ departure.id }}" style="display: none;">
<h3>Von {{ departure.name }}</h3>
<ul class="c1">
{% for flightTime in departure.flightTime[travel_date.startWeekday]|split('\n') %}
{% if flightTime != "" %}
<li>{{ flightTime|raw }}</li>
{{ flightTime|raw }}<br>
{% endif %}
{% endfor %}
</ul>
</div>
{% endif %}
{% endfor %}
<div class="" id="no_flight_time" style="display: none;">
<p>Die Flugdaten sind zum Zeitpunkt der Ausschreibung noch nicht bekannt und daher werden wir Ihnen diese mit der Annahme vom Buchungsauftrag mitteilen.</p>

View file

@ -0,0 +1,34 @@
{% extends get_base_template() %}
{% block body %}
<section class="clearfix" style="margin-bottom: 0;">
{{ page.content|raw|keywords|lozad }}
</section>
<section class="clearfix">
{#{% for i in 0..page.children|length//3 %}#}
<div class="row">
{% for child_page in page.children if child_page.status == 1 %}
{% include 'default/components/pageBox.html.twig' %}
{% endfor %}
</div>
</section>
{% endblock %}
{#
402
318
315
UPDATE page SET page.order=page.id*-1 WHERE owner=402
UPDATE page SET page.order=page.id*-1 WHERE owner=315
UPDATE page SET page.order=page.id*-1 WHERE owner=318
Select DATE_FORMAT(page.date, '%Y%m%d')*-1 FROM page WHERE model='feedback'
UPDATE page SET page.order=DATE_FORMAT(page.date, '%Y%m%d')*-1 WHERE model='feedback'
UPDATE page SET page.model='feedback' WHERE owner=402
UPDATE page SET page.model='feedback' WHERE owner=315
UPDATE page SET page.model='feedback' WHERE owner=318
#}

View file

@ -5,7 +5,7 @@
{% block body %}
<section class="clearfix">
{{ page.content|raw|keywords }}
{{ page.content|raw|keywords|lozad }}
</section>
<section class="clearfix hide-in-modal">

View file

@ -48,7 +48,7 @@
</section>
<section class="clearfix">
{{ page.content|raw|keywords }}
{{ page.content|raw|keywords|lozad }}
</section>
{% endblock %}

View file

@ -44,6 +44,6 @@
</section>
<section class="clearfix">
{{ page.content|raw|keywords }}
{{ page.content|raw|keywords|lozad }}
</section>
{% endblock %}

View file

@ -11,20 +11,22 @@
{% block body %}
<style>
.price-over-slider.next-over{
left: 15px; border-left: 0;
.price-over-slider.next-over {
left: 15px;
border-left: 0;
top: 125px;
}
@media (min-width: 992px) {
.price-over-slider.next-over{
.price-over-slider.next-over {
left: 150px;
border-left: 1px solid #fff;
top: 75px;
}
}
@media (max-width: 768px) {
.price-over-slider.next-over{
.price-over-slider.next-over {
top: 165px;
}
@ -33,7 +35,6 @@
</style>
<section class="clearfix">
<div class="content-copy">
<h1>{{ travel_program.title|default(page.pagetitle)|default(page.title) }}</h1>
{#
@ -48,12 +49,11 @@
{% if travel_program.sliderInfo is not empty %}
<div class="price-over-slider next-over">
<div class="cprice">{{ travel_program.sliderInfo|raw }}</div>
<div class="cprice">{{ travel_program.sliderInfo|raw }}</div>
</div>
{% endif %}
<div class="pull-right btn-over-slider">
<button type="button"
class="btn btn-primary btn-lg border-radius st-slider-booking-btn"
@ -64,7 +64,8 @@
</div>
<div class="pull-right btn-over-slider btn-over-slider-bottom">
<a href="{{ page.slug }}/pdf" title="Reisebeschreibung als PDF herunterladen" class="btn btn-primary btn-lg border-radius st-slider-booking-btn st-slider-booking-btn-bottom" >
<a href="{{ page.slug }}/pdf" title="Reisebeschreibung als PDF herunterladen"
class="btn btn-primary btn-lg border-radius st-slider-booking-btn st-slider-booking-btn-bottom">
PDF herunterladen
</a>
</div>
@ -83,9 +84,12 @@
<div class="item{% if loop.first %} active{% endif %}">
<!-- Set the first background image using inline CSS below. -->
{% set image_url = asset('uploads/travel_program/' ~ travel_program_image.fileNameWithExtension) %}
<div class="fill lozad" data-background-image="{{ image(image_url|trim('/')).cropResize(848).guess(75) }}" style="background-image:url({{ asset('images/placeholder-image.png') }})"></div>
<div class="fill lozad"
data-background-image="{{ image(image_url|trim('/')).cropResize(848).guess(75) }}"
style="background-image:url({{ asset('images/placeholder-image.png') }})"></div>
<noscript>
<div class="fill" style="background-image:url({{ image(image_url|trim('/')).cropResize(848).guess(75) }})"></div>
<div class="fill"
style="background-image:url({{ image(image_url|trim('/')).cropResize(848).guess(75) }})"></div>
</noscript>
</div>
@ -110,41 +114,47 @@
#}
{% block travel_program_tab_bar %}
<div class="scroller-nav-tabs scroller-left-nav-tabs"><i class="glyphicon glyphicon-chevron-left"></i></div>
<div class="scroller-nav-tabs scroller-right-nav-tabs"><i class="glyphicon glyphicon-chevron-right"></i></div>
<div class="scroller-nav-tabs scroller-left-nav-tabs"><i class="glyphicon glyphicon-chevron-left"></i>
</div>
<div class="scroller-nav-tabs scroller-right-nav-tabs"><i class="glyphicon glyphicon-chevron-right"></i>
</div>
<div class="wrapper-nav-tabs">
<ul class="nav nav-tabs nav-justified list-nav-tabs">
<li class="active">
<a href="#travel-description-content-tab" aria-controls="travel-description-content-tab" role="tab" data-toggle="tab">
<a href="#travel-description-content-tab" aria-controls="travel-description-content-tab"
role="tab" data-toggle="tab">
Reiseablauf
</a>
</li>
{% if travel_program.included is not empty or
travel_program.excluded is not empty or
travel_program.classDescription is not empty
%}
travel_program.classDescription is not empty %}
<li>
<a href="#travel-service-content-tab" aria-controls="travel-service-content-tab" role="tab" data-toggle="tab">
<a href="#travel-service-content-tab" aria-controls="travel-service-content-tab"
role="tab" data-toggle="tab">
Leistungen
</a>
</li>
{% endif %}
{% if travel_program.travelDates is not empty %}
<li>
<a href="#travel-dates-content-tab" aria-controls="travel-dates-content-tab" role="tab" data-toggle="tab">
<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
</a>
</li>
{% endif %}
{% if travel_program.hasMap %}
<li>
<a href="#travel-map-content-tab" aria-controls="travel-map-content-tab" role="tab" data-toggle="tab">
<a href="#travel-map-content-tab" aria-controls="travel-map-content-tab" role="tab"
data-toggle="tab">
Karte
</a>
</li>
{% endif %}
<li>
<a href="#travel-info-content-tab" aria-controls="travel-info-content-tab" role="tab" data-toggle="tab">
<a href="#travel-info-content-tab" aria-controls="travel-info-content-tab" role="tab"
data-toggle="tab">
Landinfos
</a>
</li>
@ -154,28 +164,29 @@
{% endblock travel_program_tab_bar %}
<div class="tab-content">
{#
********* REISEABLAUF *********
#}
<div role="tabpanel" class="tab-pane active" id="travel-description-content-tab">
{{ travel_program.htmlDescription|raw|keywords|lozad }}
<br clear="all">
{% if (travel_program.advices is not empty) or (travel_program.generalnote is not empty) %}
<h3>Hinweise</h3>
<ul>
{% if travel_program.generalnote is not empty %}
{% for notes in travel_program.generalnote.text|trim|split('\n') %}
{% if notes is not empty %}
{% if travel_program.generalnote is not empty %}
{% for notes in travel_program.generalnote.text|trim|split('\n') %}
{% if notes is not empty %}
<li>{{ notes|raw }}</li>
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% for travel_program_advice in travel_program.advices|trim|split('\n') %}
{% if travel_program_advice is not empty %}
<li>{{ travel_program_advice|raw }}</li>
{% endif %}
<li>{{ travel_program_advice|raw }}</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
@ -227,118 +238,133 @@
<table class="table">
<thead>
<tr>
<th>Nr.</th>
<th>Beginn</th>
<th>Ende</th>
{% if has_three_bed_room %}<th>Preis p.P im Dreibettzimmer</th>{% endif %}
{% if has_double_bed_room %}<th>Preis p.P im Doppelzimmer</th>{% endif %}
{% if has_singel_bed_room %}<th>Preis p.P im Einzelzimmer</th>{% endif %}
<th>Abflugorte / Zuschläge</th>
<th>Status</th>
<th>Buchungsformular</th>
</tr>
<tr>
<th>Nr.</th>
<th>Beginn</th>
<th>Ende</th>
{% if has_three_bed_room %}
<th>Preis p.P im Dreibettzimmer</th>{% endif %}
{% if has_double_bed_room %}
<th>Preis p.P im Doppelzimmer</th>{% endif %}
{% if has_singel_bed_room %}
<th>Preis p.P im Einzelzimmer</th>{% endif %}
<th>Abflugorte / Zuschläge</th>
<th>Status</th>
<th>Buchungsformular</th>
</tr>
</thead>
<tbody>
{% set last_name = "" %}
{% for travel_date in travel_program.travelDates if travel_date.status >= 0 %}
{% set last_name = "" %}
{% for travel_date in travel_program.travelDates if travel_date.status >= 0 %}
{% if last_name != travel_date.name %}
{% set last_name = travel_date.name %}
{% if last_name != travel_date.name %}
{% set last_name = travel_date.name %}
{# @var travel_date \AppBundle\Entity\TravelDate #}
<tr>
<td data-title="Nr."><strong class="small">{{ travel_date.name }}</strong></td>
<td data-title="Nr."><strong class="small">{{ travel_date.name }}</strong>
</td>
<td data-title="Beginn">{{ travel_date.start|date }}</td>
<td data-title="Ende">{{ travel_date.end|date }}</td>
{% if has_three_bed_room %}
<td data-title="Preis p.P. im Dreibettzimmer">
{% if travel_date.prices[5] is defined %}
{% if travel_date.prices[5].available == "1" %}
{% if travel_date.prices[5] is defined %}
{% if travel_date.prices[5].effectiveDiscountPrice %}
<i class="icons-percent"></i>
{% endif %}
<span class="block">
<span class="{% if travel_date.prices[5].effectiveDiscountPrice %}old_price{% endif %}">
ab {{ travel_date.prices[5].effectivePrice|number_format }}
</span>
{% if travel_date.prices[5] is defined %}
{% if travel_date.prices[5].available == "1" %}
{% if travel_date.prices[5] is defined %}
{% if travel_date.prices[5].effectiveDiscountPrice %}
<span class="new_price">
ab {{ travel_date.prices[5].effectiveDiscountPrice|number_format }}
</span>
<i class="icons-percent"></i>
{% endif %}
<span class="block">
<span class="{% if travel_date.prices[5].effectiveDiscountPrice %}old_price{% endif %}">
ab {{ travel_date.prices[5].effectivePrice|number_format }}
</span>
{% if travel_date.prices[5].effectiveDiscountPrice %}
<span class="new_price">
ab {{ travel_date.prices[5].effectiveDiscountPrice|number_format }}
</span>
{% endif %}
</span>
{% endif %}
{% else %}
nicht verfügbar
{% endif %}
{% else %}
nicht verfügbar
{% endif %}
{% endif %}
</td>
{% endif %}
{% if has_double_bed_room %}
<td data-title="Preis p.P im Doppelzimmer">
{% if travel_date.prices[3] is defined %}
{% if travel_date.prices[3].available == "1" %}
{% if travel_date.prices[3].effectiveDiscountPrice %}
<i class="icons-percent"></i>
{% endif %}
<span class="block">
<span class="{% if travel_date.prices[3].effectiveDiscountPrice %}old_price{% endif %}">
ab {{ travel_date.prices[3].effectivePrice|number_format }}
</span>
<td data-title="Preis p.P im Doppelzimmer">
{% if travel_date.prices[3] is defined %}
{% if travel_date.prices[3].available == "1" %}
{% if travel_date.prices[3].effectiveDiscountPrice %}
<span class="new_price">
ab {{ travel_date.prices[3].effectiveDiscountPrice|number_format }}
</span>
<i class="icons-percent"></i>
{% endif %}
<span class="block">
<span class="{% if travel_date.prices[3].effectiveDiscountPrice %}old_price{% endif %}">
ab {{ travel_date.prices[3].effectivePrice|number_format }}
</span>
{% if travel_date.prices[3].effectiveDiscountPrice %}
<span class="new_price">
ab {{ travel_date.prices[3].effectiveDiscountPrice|number_format }}
</span>
{% endif %}
</span>
{% else %}
nicht verfügbar
{% else %}
nicht verfügbar
{% endif %}
{% endif %}
{% endif %}
</td>
</td>
{% endif %}
{% if has_singel_bed_room %}
<td data-title="Preis p.P im Einzelzimmer">
{% if travel_date.prices[1] is defined %}
{% if travel_date.prices[1].available == "1" %}
{% if travel_date.prices[1].effectiveDiscountPrice %}
<i class="icons-percent"></i>
{% endif %}
<span class="block">
<span class="{% if travel_date.prices[1].effectiveDiscountPrice %}old_price{% endif %}">
ab {{ travel_date.prices[1].effectivePrice|number_format }}
</span>
<td data-title="Preis p.P im Einzelzimmer">
{% if travel_date.prices[1] is defined %}
{% if travel_date.prices[1].available == "1" %}
{% if travel_date.prices[1].effectiveDiscountPrice %}
<span class="new_price">
ab {{ travel_date.prices[1].effectiveDiscountPrice|number_format }}
</span>
<i class="icons-percent"></i>
{% endif %}
<span class="block">
<span class="{% if travel_date.prices[1].effectiveDiscountPrice %}old_price{% endif %}">
ab {{ travel_date.prices[1].effectivePrice|number_format }}
</span>
{% if travel_date.prices[1].effectiveDiscountPrice %}
<span class="new_price">
ab {{ travel_date.prices[1].effectiveDiscountPrice|number_format }}
</span>
{% endif %}
</span>
{% else %}
nicht verfügbar
{% else %}
nicht verfügbar
{% endif %}
{% endif %}
{% endif %}
</td>
</td>
{% endif %}
<td data-title="Abflugorte / Zuschläge">
<a href="#" class="color-brand" data-toggle="modal" data-target="#st-departures-modal-{{ loop.index0 }}">
<a href="#" class="color-brand" data-toggle="modal"
data-target="#st-departures-modal-{{ loop.index0 }}">
Flughäfen
</a>
{% include 'default/components/departuresModal.html.twig' with {
'departures': travel_date.departures,
'id': loop.index0
'id': loop.index0,
'startWeekday': travel_date.startWeekday,
'travelName': travel_date.name
} %}
</td>
{% if travel_date.effectiveStatus == 0 %}
<td data-title="Verfügbarkeit" colspan="2">
<div style="">
<img src="/images/icons/available-{{ travel_date.effectiveStatus }}.png" style="height: 24px; width: 24px;vertical-align:middle" alt="">
<img src="/images/icons/available-{{ travel_date.effectiveStatus }}.png"
style="height: 24px; width: 24px;vertical-align:middle"
alt="">
AUSGEBUCHT
</div>
@ -346,7 +372,9 @@
{% else %}
<td data-title="Verfügbarkeit">
<div style="">
<img src="/images/icons/available-{{ travel_date.effectiveStatus }}.png" style="height: 24px; width: 24px;vertical-align:middle" alt="">
<img src="/images/icons/available-{{ travel_date.effectiveStatus }}.png"
style="height: 24px; width: 24px;vertical-align:middle"
alt="">
{% if travel_date.effectiveStatus == 1 %}
BUCHBAR
{% endif %}
@ -369,9 +397,9 @@
</td>
{% endif %}
</tr>
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}
</tbody>
</table>
{% else %}
@ -389,9 +417,11 @@
<div role="tabpanel" class="tab-pane" id="travel-map-content-tab">
{% if travel_program.mapHtml is not empty %}
{{ travel_program.mapHtml|raw|stripslashes|lozad }}
{{ travel_program.mapHtml|raw|stripslashes }}
{% else %}
<img src="{{ asset('/images/dummy.png') }}" data-src="/uploads/maps/{{ travel_program.mapImage ~ travel_program.mapImageExt }}" alt="Karte zum Reiseablauf" class="img-responsive lozad">
<img src="{{ asset('/images/dummy.png') }}"
data-src="/uploads/maps/{{ travel_program.mapImage ~ travel_program.mapImageExt }}"
alt="Karte zum Reiseablauf" class="img-responsive lozad">
<br clear="all">
{% endif %}
@ -407,7 +437,7 @@
{% for country in travel_program.countries %}
<h2>{{ country.name }}</h2>
{{ country.htmlInformation|raw }}
{{ country.htmlInformation|raw|lozad }}
{% endfor %}
</div> <!-- END tabpanel -->

View file

@ -12,6 +12,6 @@
</section>
<section class="clearfix">
{{ page.content|raw|keywords }}
{{ page.content|raw|keywords|lozad }}
</section>
{% endblock %}

View file

@ -15,7 +15,6 @@
{% block body %}
<section class="clearfix">
<h1>Unsere beliebtesten Kulturreisen</h1>
{{ render(controller('AppBundle:Component:offersCarousel')) }}
</section><!-- end section -->

View file

@ -23,6 +23,13 @@ class Page
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="model", type="string", length=255, nullable=true)
*/
private $model;
/**
* @Gedmo\TreeLeft
* @ORM\Column(type="integer", nullable=true)
@ -307,6 +314,30 @@ class Page
return $this->owner;
}
/**
* Set model
*
* @param string $model
*
* @return Page
*/
public function setModel($model)
{
$this->model = $model;
return $this;
}
/**
* Get model
*
* @return string
*/
public function getModel()
{
return $this->model;
}
/**
* Set ownerSecond
*

View file

@ -119,7 +119,7 @@ class PageRepository extends NestedTreeRepository
->where($qb->expr()->eq('node.parent', $rootPageId))
->andWhere('node.showInNavi = 1')
->andWhere('node.status = 1')
->orderBy('node.date')
->orderBy('node.order')
->getQuery()
->execute()
;

View file

@ -793,7 +793,7 @@ a[id^="video_"]:before,
text-overflow: ellipsis;
word-wrap: break-word;
overflow: hidden;
line-height: 1.45em;
line-height: 1.2em;
height: 3.6em;
}
.travel-wrapper .item > a.item-button.single_line {
@ -2866,6 +2866,12 @@ nav hr {
color: #fff;
background: #ffc926;
}
.dropdown-menu>.active>a, .dropdown-menu>.active>a:focus, .dropdown-menu>.active>a:hover {
color: #fff;
background: #ffc926;
}
.yamm .dropdown-menu li h3 {
font-size: 15px;
margin-bottom: 0;
@ -3703,7 +3709,21 @@ a,
top: 53px;
}
}
@media (max-width: 1024px) {
@media (min-width:768px) and (max-width:991px) {
.topbar li.visible-sm {
display: inline-block !important
}
}
@media (max-width: 767px){
.topbar li {
line-height: 12px;
}
.topbar li.visible-xs {
padding-top: 4px;
}
}
@media (max-width: 991px) {
#sidebar #side-navigation .side-menu {
width: 100%;
}
@ -3752,7 +3772,7 @@ a,
top: 52px;
}
}
@media (max-width: 992px) {
@media (max-width: 991px) {
/* Force table to not be like tables anymore */
#no-more-tables table,
#no-more-tables thead,
@ -3813,7 +3833,7 @@ a,
content: attr(data-title);
}
}
@media (max-width: 992px) {
@media (max-width: 991px) {
/* Force table to not be like tables anymore */
.no-more-tables table,
.no-more-tables thead,
@ -3920,7 +3940,7 @@ a,
}
.fullscreen {
padding: 0;
padding-top: 96px;
padding-top: 110px;
}
.absolute-carousel {
top: 0px;
@ -5795,7 +5815,147 @@ input[type="radio"] .styled:checked + label::after {
.box-slider .slide:not(.active) {display: none;}
#preloader {
display: none;
}
.video-wrap {
float: right;
margin: 0 0 5px 20px;
position: relative;
max-width: 35%;
overflow: hidden;
}
.modal-body .video-wrap {
max-width: 50%;
}
.video-wrap .img-responsive {
margin: -8% 0;
}
.boxwidget .video-wrap {
float: right;
margin: 0;
position: relative;
max-width: 100%;
overflow: hidden;
}
.btn.btn-close-video {
padding: 8px 12px;
}
@media (max-width: 991px) {
.video-wrap {
max-width: 50%;
}
}
@media (max-width: 768px) {
.video-wrap {
float: right;
margin: 0 0 5px 20px;
position: relative;
max-width: 100%;
overflow: hidden;
height: 280px;
width: 100%;
}
.video-wrap .img-responsive {
position: absolute;
width: 100%;
top: 35%;
-webkit-transform: translate(0%, -50%);
-ms-transform: translate(0%, -50%);
transform: translate(0%, -50%);
z-index: 2;
margin: 0;
}
.boxwidget .video-wrap {
height: 180px;
}
}
.bootstrap-select .dropdown-toggle .filter-option {
overflow: hidden;
}
.g-absolute-centered {
position: absolute;
top: 50%;
left: 0;
right: 0;
-webkit-transform: translate(0%, -50%);
-ms-transform: translate(0%, -50%);
transform: translate(0%, -50%);
text-align: center;
z-index: 10;
}
.u-icon-v3 {
background-color: #ffc926;
border-radius: 10px;
cursor: pointer;
color: #fff !important;
width: auto;
font-size: 1rem;
line-height: 1.2rem;
font-weight: 500;
display: inline-block;
padding: 10px 15px;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
-webkit-box-shadow: 0px 0px 12px 0px rgba(0,0,0,0.5);
-moz-box-shadow: 0px 0px 12px 0px rgba(0,0,0,0.5);
box-shadow: 0px 0px 12px 0px rgba(0,0,0,0.5);
}
.u-icon-v3 i {
position: relative;
display: inline-block;
z-index: 12;
}
.u-icon-v3:hover {
background-color: #648859 !important;
-webkit-box-shadow: 0px 0px 6px 0px rgba(0,0,0,0.5);
-moz-box-shadow: 0px 0px 6px 0px rgba(0,0,0,0.5);
box-shadow: 0px 0px 6px 0px rgba(0,0,0,0.5);
}
.tab-pane .h3l {
padding-bottom: 10px;
margin-bottom: 15px;
border-bottom: 1px solid #c2c2c2;
color: #616161;
display: block;
clear: both;
padding-top: 20px;
}
.youtube {
margin-bottom: 25px;
position: relative;
display: block;
height: 0;
padding: 0 0 56.25% 0;
overflow: hidden;
background-color: #000000;
}
.youtube iframe {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
border: 0;
}

View file

@ -11,6 +11,76 @@ var observer = lozad('.lozad', {
observer.observe();
var youtube_loader = function(self) {
options = {
width: 853,
height: 480,
autoplay: 1,
rel: 0,
class: "youtube-video",
frameborder: "0",
allowfullscreen: true
};
options.src = $(self).data('src') + "?rel=" + options.rel + "&autoplay=" + options.autoplay;
ret = $(document.createElement("iframe"));
var ele = $(self).parent().parent();
ele.html("");
ele.removeClass('video-wrap');
ele.addClass('youtube');
ele.append(ret);
ret.attr(options);
};
jQuery('a[data-type="youtube"]').on('click', function () {
youtube_loader(this);
});
var youtube_sterntours_video_closer = function(self) {
$('#show_sterntours_video_full').hide('slow', function () {
$(this).html("");
});
$('#show_sterntours_video_sidebar').show();
};
var youtube_sterntours_video_loader = function(self) {
$('#show_sterntours_video_sidebar').hide();
options = {
width: 853,
height: 480,
autoplay: 1,
rel: 0,
class: "youtube-video",
frameborder: "0",
allowfullscreen: true
};
options.src = $(self).data('src') + "?rel=" + options.rel + "&autoplay=" + options.autoplay;
div = $(document.createElement("div"));
div.addClass('youtube');
ret = $(document.createElement("iframe"));
h1 = $(document.createElement("h1")).html("Wir: STERN TOURS <a href=\"#\" title=\"Close\" class=\"pull-right btn btn-default btn-close-video\" id=\"sterntorus_video_close\"><i class=\"fa fa-times\"></i> <span class=\"\"></span></a>");
var ele = $('#show_sterntours_video_full');
ele.html("");
ele.append(h1);
div.append(ret);
ele.append(div);
ret.attr(options);
ele.show('slow');
jQuery('a#sterntorus_video_close').on('click', function () {
youtube_sterntours_video_closer(this);
});
};
jQuery('a[data-type="youtube_sterntours_video"]').on('click', function () {
youtube_sterntours_video_loader(this);
});
jQuery("button.btn-mobile").bind("click", function(e) {
e.preventDefault();
jQuery(this).toggleClass('btn-mobile-active');
@ -19,14 +89,11 @@ jQuery("button.btn-mobile").bind("click", function(e) {
if(jQuery(this).hasClass('btn-mobile-active')) {
jQuery('body').append('<div id="menu-overlay"></div>');
if(!jQuery("#topMain").hasClass('nav-onepage') || window.width > 960) { /* onepage fix */
jQuery('html').addClass('noscroll');
window.currentScroll = jQuery(window).scrollTop();
}
} else {
if(!jQuery("#topMain").hasClass('nav-onepage') || window.width > 960) { /* onepage fix */
jQuery('html,body').animate({scrollTop: currentScroll}, 300, 'easeInOutExpo');
}
@ -59,7 +126,6 @@ jQuery(document).ready(function($) {
jQuery(document).ready(function($) {
"use strict";
window.addEventListener("load", function(){
window.cookieconsent.initialise({
"palette": {
@ -83,7 +149,7 @@ jQuery(document).ready(function($) {
VIDEOS -->
=============================================== */
var videos$ = $('a[id^="video_"]');
/* var videos$ = $('a[id^="video_"]');
function videoInitHandler()
{
@ -136,7 +202,8 @@ jQuery(document).ready(function($) {
el$.text(caption + ' einblenden');
el$.addClass('st-collapsed');
}
});
});*/
/* ==============================================
KEYWORDS -->
@ -147,9 +214,13 @@ jQuery(document).ready(function($) {
$('a.show-layer').click(function() {
$.get($(this).attr('href')).then(function(r) {
modal$.find('.modal-body').html(r);
modal$.find('a[id^="video_"]').each(videoInitHandler);
modal$.find('a[data-type="youtube"]').on('click', function () {
youtube_loader(this);
});
modal$.find('img.lozad').each(function () {
$(this).attr('src', $(this).data('src'));
});
modal$.modal('show');
});
return false;

View file

@ -54,6 +54,8 @@ class AppExtension extends \Twig_Extension
]),
'get_base_template' => new \Twig_SimpleFunction('get_base_template', [$this, 'getBaseTemplate']),
'get_base_url' => new \Twig_SimpleFunction('get_base_url', [$this, 'getBaseUrl']),
'get_file_last_time' => new \Twig_SimpleFunction('get_file_last_time', [$this, 'getFileLastTime']),
];
}
@ -71,6 +73,13 @@ class AppExtension extends \Twig_Extension
{
return ($this->requestStack->getCurrentRequest()->isXmlHttpRequest() ? 'ajax' : 'base') . '.html.twig';
}
public function getFileLastTime($file)
{
if (file_exists($file)) {
return filemtime($file);
}
return date("Ymd", time());
}
public function getBaseUrl()
{
@ -120,10 +129,10 @@ class AppExtension extends \Twig_Extension
public function lozadFilter($html)
{
// return $html;
//(<img\s*?)src
$dom = new \DOMDocument;
$dom = new \DOMDocument('1.0', 'utf-8');
$dom->loadHTML('<?xml encoding="utf-8" ?>'.$html);
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
@ -141,6 +150,53 @@ class AppExtension extends \Twig_Extension
$image->setAttribute('src', 'images/placeholder-image.png');
$image->setAttribute('class', 'lozad');
}
$h2s = $dom->getElementsByTagName('h2');
foreach ($h2s as $h2) {
$h2->setAttribute('class', 'h3 h3l');
}
$links = $dom->getElementsByTagName('iframe');
foreach ($links as $link) {
if(strpos($link->getAttribute('src'), 'youtube') !== false){
$youtubeId = str_replace('https://www.youtube-nocookie.com/embed/', '', $link->getAttribute('src'));
$youtubeId = str_replace('?rel=0', '', $youtubeId);
//add html
$video = new \DOMDocument('1.0', 'utf-8');
$video->loadHTML('<?xml encoding="utf-8" ?><div class="video-wrap"><div class="g-absolute-centered"><a data-type="youtube" data-src="https://www.youtube-nocookie.com/embed/'.$youtubeId.'" href="javascript:;"><div class="u-icon-v3"> Video ansehen <i class="fa fa-play"></i></div></a> </div><img src="/images/placeholder-image.png" data-src="https://img.youtube.com/vi/'.$youtubeId.'/sddefault.jpg" class="img-responsive lozad" alt=""></div>');
$link->parentNode->insertBefore($dom->importNode($video->documentElement, true), $link->nextSibling);
$link->parentNode->removeChild($link);
}
}
$links = $dom->getElementsByTagName('a');
foreach ($links as $link) {
if(strpos($link->getAttribute('id'), 'video_') !== false){
$youtubeId = str_replace('video_', '', $link->getAttribute('id'));
//add html
$video = new \DOMDocument('1.0', 'utf-8');
$video->loadHTML('<?xml encoding="utf-8" ?><div class="video-wrap"><div class="g-absolute-centered"><a data-type="youtube" data-src="https://www.youtube-nocookie.com/embed/'.$youtubeId.'" href="javascript:;"><div class="u-icon-v3"> Video ansehen <i class="fa fa-play"></i></div></a> </div><img src="/images/placeholder-image.png" data-src="https://img.youtube.com/vi/'.$youtubeId.'/sddefault.jpg" class="img-responsive lozad" alt=""></div>');
if($link->parentNode->tagName == 'p')
{
$p = $link->parentNode;
$p->parentNode->insertBefore($dom->importNode($video->documentElement, true), $p->nextSibling);
$p->parentNode->removeChild($p);
}else{
$p = $link;
$p->parentNode->insertBefore($dom->importNode($video->documentElement, true), $link->nextSibling);
$p->parentNode->removeChild($link);
}
}
}
$html = $dom->saveHTML();
return $html;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,49 @@
{
"name": "Stern Tours",
"short_name": "sterntours",
"theme_color": "#648859",
"background_color": "#ffffff",
"display": "standalone",
"orientation": "portrait",
"Scope": "/",
"start_url": "/",
"splash_pages": null,
"icons": [
{
"src": "\/android-icon-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "\/android-icon-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "\/android-icon-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "\/android-icon-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "\/android-icon-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "\/android-icon-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"
}
]
}