* Sidebar-Suchmaske

* Letzter Breadcrum-Eintrag ist kein Link
* Sonstige Links im Layout (Impressum, etc.)
* Vorschaubox-Anpassungen: page.box_body wurde nicht berücksichtigt; page.box_image_url wird jetzt gegenüber travelProgram.previewImage bevorzugt; Standard-Vorschaubild geändert
* page.pagetitle gegenüber page.title als Seitenüberschrift bevorzugen
* Fertigstellung Reiseprogrammseite; zu Tab-Inhalt scrollen; Bei Klick auf Buchen-Knopf zu Termintabelle scrollen (auch von der Suchseite aus)
* Aufteilung der Vorschau-Boxen in vermittelte und nicht-vermittelte Reisen, falls es beide gibt
* Falls page.real_path_url gesetzt wird => Eine Seite kann nicht mehr über den slug-Pfad (<eltern-seite>/<seite>) aufgerufen werden (Sonst gäbe es mehrere URLs für die gleiche Seite)

git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3295 f459cee4-fb09-11de-96c3-f9c5f16c3c76
This commit is contained in:
uli 2017-02-17 08:24:48 +00:00
parent 4c2fb2fd08
commit 20beca7c4d
25 changed files with 564 additions and 112 deletions

View file

@ -74,6 +74,8 @@
{% block breadcrumb %}
{% if page is defined %}
{{ render(controller('AppBundle:Default:breadcrumb', {'page': page})) }}
{% elseif breadcrumb_entries is defined %}
{{ include('default/components/breadcrumb.html.twig') }}
{% endif %}
{% endblock %}
@ -81,7 +83,8 @@
<div class="row">
{% include 'default/components/sidebar.html.twig' with {
nav_sidebar_widget_block: block('nav_sidebar_widget')
nav_sidebar_widget_block: block('nav_sidebar_widget'),
search_sidebar_widget_block: block('search_sidebar_widget'),
} %}
<div id="content" class="col-md-9 col-sm-8 col-xs-12">

View file

@ -8,9 +8,13 @@
{% for breadcrumb_entry in breadcrumb_entries %}
{# @var breadcrumb_entry \AppBundle\Entity\BreadcrumbEntry #}
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" href="{{ breadcrumb_entry.url }}">
{% if not loop.last %}
<a itemprop="item" href="{{ breadcrumb_entry.url }}">
<span itemprop="name">{{ breadcrumb_entry.title }}</span>
</a>
{% else %}
<span itemprop="name">{{ breadcrumb_entry.title }}</span>
</a>
{% endif %}
<meta itemprop="position" property="position" content="{{ loop.index0 + 2 }}" />
</li>
{% endfor %}

View file

@ -117,11 +117,11 @@
<div class="col-md-6 text-right">
<div class="link-footer">
<a href="#" title="">Impressum</a> |
<a href="#" title="">AGB</a> |
<a href="#" title="">Datenschutz</a> |
<a href="#" title="">Bildnachweise</a> |
<a href="#" title="">Sitemap</a>
<a href="/impressum" title="Impressum">Impressum</a> |
<a href="/agb" title="AGB">AGB</a> |
<a href="/datenschutz" title="Datenschutz">Datenschutz</a> |
<a href="/bildnachweis" title="Bildnachweise">Bildnachweise</a> |
<a href="/sitemap" title="Sitemap">Sitemap</a>
</div><!-- end social-footer -->
</div><!-- end col -->
</div><!-- end row -->

View file

@ -4,9 +4,21 @@
<div class="pull-right">
<ul class="topbar-drops list-inline">
<li class="nohover"><i class="fa fa-phone"></i> 030 - 700 94 100</li>
<li><a href="#" title=""><i class="fa fa-envelope"></i> E-Mail</a></li>
<li><a href="#" title=""><i class="fa fa-comments"></i> Chat</a></li>
<li><a href="#" title=""><i class="fa fa-users"></i> Über uns</a></li>
<li>
<a href="/kontakt" title=""><i class="fa fa-envelope"></i> Kontakt</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"
>
<i class="fa fa-comments"></i> Chat
</a>
</li>
<li>
<a href="/docs/ueber-uns.html" title="Über uns">
<i class="fa fa-users"></i> Über uns
</a>
</li>
</ul>
</div>
</div><!-- end container -->

View file

@ -14,19 +14,23 @@
<div class="cdiscount">{{ child_page.boxDiscount|raw }}</div>
{% endif %}
</div>
{% if child_page.travelProgram is not empty and child_page.travelProgram.previewImage is not empty %}
<img src="https://www.sterntours.de/uploads/travel_program/{{ child_page.travelProgram.previewImage.fileNameWithExtension }}"
alt="{{ child_page.title }}"
>
{% if child_page.boxImageUrl is not empty %}
{% set image_url = child_page.boxImageUrl %}
{% set image_alt = child_page.travelProgram.title|default(child_page.title) %}
{% elseif child_page.boxImageUrl is not empty %}
{% set image_url = '/uploads/travel_program/' ~ child_page.travelProgram.previewImage.fileNameWithExtension %}
{% set image_alt = child_page.title %}
{% else %}
<img src="{{ child_page.boxImageUrl ~ '/bundles/app/images/page1_img1.jpg' }}"
alt="{{ child_page.title }}"
>
{% set image_url = '/bundles/app/images/no-picture.png' %}
{% set image_alt = 'Kein Vorschaubild vorhanden' %}
{% endif %}
<img src="{{ image_url }}" alt="{{ image_alt }}" style="width: 265px; height: 190px;{# #TODO! #}">
</div>
<div class="box_mid">
<div class="hl5">{{ child_page.title }}</div>
<p>{{ child_page.description }}</p>
<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 }}">
{{ child_page.title }}

View file

@ -1,5 +1,17 @@
<div id="sidebar" class="col-md-3 col-sm-4 col-xs-12 hidden-xs">
{% if show_search_sidebar_widget ?? true %} {# TODO #}
{% if search_sidebar_widget_block is empty %}
{% if search_form is defined %}
{{ include('default/components/sidebar/searchSidebarWidget.html.twig') }}
{% elseif page is defined %}
{{ render(controller('AppBundle:Default:searchSidebarWidget', {page: page})) }}
{% endif %}
{% else %}
{{ search_sidebar_widget_block|raw }}
{% endif %}
{% endif %}
{% if show_nav_sidebar_widget ?? true and page is defined %} {# TODO #}
{% if nav_sidebar_widget_block is empty %}
{{ render(controller('AppBundle:Default:navSidebarWidget', {page: page})) }}

View file

@ -0,0 +1,38 @@
{% form_theme search_form 'default/form/theme.html.twig' %}
<div class="widget clearfix">
<div class="widget-title">
<a class="collapse-widget" href="#search-widget" data-toggle="collapse">Kulturreisen suchen</a>
</div><!-- end title -->
<div class="searchwidget collapse in" id="search-widget">
<form action="/suche" method="get" class="searchform row">
<div class="form-group col-md-12">
{{ form_field_pho(search_form.c, 'Reiseziel') }}
</div>
<div class="form-group col-md-12">
{{ form_field_pho(search_form.b, 'Anreise') }}
</div>
<div class="form-group col-md-12 form-bottom">
{{ form_field_pho(search_form.e, 'Abreise') }}
</div>
<div class="form-group col-md-12">
Kombinieren mit
<div class="pull-right">
<i class="fa fa-question" data-toggle="tooltip" data-placement="top" title="Hier steht ein Infotext Hier steht ein Infotext"></i>
</div>
</div>
<div class="form-group col-md-12">
{{ form_field_pho(search_form.c2, 'Kombinieren mit') }}
</div>
<div class="form-group col-md-12 col-sm-12 col-xs-12 text-center form-bottom">
<button type="submit" class="btn btn-primary btn-block">Angebote suchen</button>
</div>
</form>
</div><!-- end boxwidget -->
</div>

View file

@ -16,6 +16,14 @@
</div>
{%- endblock %}
{% block date_widget -%}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' datepicker')|trim}) -%}
<div class="input-group">
{{ parent() -}}
<div class="input-group-addon"><i class="fa fa-calendar"></i></div>
</div>
{%- endblock %}
{% block checkbox_widget -%}
{{- block('base_checkbox_widget') -}}
{%- endblock checkbox_widget %}

View file

@ -20,10 +20,6 @@
{% endjavascripts %}
{% endblock %}
{% block breadcrumb %}
{{ include('default/components/breadcrumb.html.twig') }}
{% endblock %}
{% block body %}
<section class="clearfix">

View file

@ -8,7 +8,7 @@
{% block body %}
<section class="clearfix">
<div class="hl2">{{ page.pagetitle ?? page.title }}</div>
<div class="hl2">{{ page.pagetitle|default(page.title) }}</div>
{#{% for i in 0..page.children|length//3 %}#}
<div class="row">

View file

@ -15,11 +15,11 @@
<div class="result-wrapper">
{% for travel_program in travel_programs %}
{% for travel_program in travel_programs if travel_program.travelDates is not empty %}
<div class="result">
<div class="row">
<div class="image col-md-3">
<img src="https://www.sterntours.de/{{ travel_program.images.empty
<img src="/{{ travel_program.images.empty
? 'images/icons/no-picture.png'
: ('uploads/travel_program/' ~ travel_program.images.first.fileNameWithExtension)
}}" class="img-responsive"
@ -40,8 +40,7 @@
<div class="price pull-left"><span class="small">p.P.</span> ab {{ travel_program.lowestPrice|number_format }} €</div>
<div class="pull-right">
{# #TODO #}
<a href=""
<a href="{{ travel_program.page.urlPath }}"
class="btn btn-primary btn-sm border-radius"
target="_blank"
>
@ -99,7 +98,7 @@
<td data-title="">
{# #TODO Bad performance #}
<a href="{{ travel_program.page.urlPath }}" class="btn btn-primary">Details</a>
<a href="{{ travel_program.page.urlPath }}#travel-dates-content-tab" class="btn btn-primary">Details</a>
</td>
</tr>
{% endfor %}

View file

@ -1,14 +1,31 @@
{# @var travel_program \AppBundle\Entity\TravelProgram #}
{% extends 'base.html.twig' %}
{% block javascripts %}
{{ parent() }}
{% javascripts '@AppBundle/Resources/public/js/travelProgram.js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
{% block body %}
<section class="clearfix">
<div class="content-copy">
<h1>{{ travel_program.title }}</h1>
<h1>{{ travel_program.title|default(page.pagetitle)|default(page.title) }}</h1>
{#
********* SLIDER *********
#}
<div class="pull-right btn-over-slider">
<button type="submit" class="btn btn-primary btn-lg border-radius">Jetzt Buchen</button>
<button type="button"
class="btn btn-primary btn-lg border-radius st-slider-booking-btn"
onclick=
>
Jetzt Buchen
</button>
</div>
<section class="section fullscreen background padding-0 margin-bottom-20">
<div id="myCarousel" class="carousel slide">
@ -43,52 +60,105 @@
</div>
</section><!-- end section -->
<div class="">
{#
********* TAB BAR *********
#}
{% 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="wrapper-nav-tabs">
<ul class="nav nav-tabs nav-justified list-nav-tabs">
<li class="active"><a href="#content_tab_01" aria-controls="content_tab_01" role="tab" data-toggle="tab">Reiseablauf</a></li>
<li><a href="#content_tab_02" aria-controls="content_tab_02" role="tab" data-toggle="tab">Leistungen</a></li>
<li><a href="#content_tab_03" aria-controls="content_tab_03" role="tab" data-toggle="tab">Termine <i class="fa fa-star"></i> Preise</a></li>
<li><a href="#content_tab_04" aria-controls="content_tab_04" role="tab" data-toggle="tab">Karte</a></li>
<li><a href="#content_tab_05" aria-controls="content_tab_05" role="tab" data-toggle="tab">Landinfos</a></li>
<li><a href="#content_tab_07" aria-controls="content_tab_07" role="tab" data-toggle="tab">Team vor Ort</a></li>
<li class="active">
<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
%}
<li>
<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">
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">
Karte
</a>
</li>
{% endif %}
<li>
<a href="#travel-info-content-tab" aria-controls="travel-info-content-tab" role="tab" data-toggle="tab">
Landinfos
</a>
</li>
{#<li><a href="#content_tab_07" aria-controls="content_tab_07" role="tab" data-toggle="tab">Team vor Ort</a></li>#}
</ul>
</div>
</div>
{% endblock travel_program_tab_bar %}
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="content_tab_01">
{#
********* REISEABLAUF *********
#}
<div role="tabpanel" class="tab-pane active" id="travel-description-content-tab">
{{ travel_program.htmlDescription|raw }}
{% if travel_program.advices is not empty %}
<h3>Hinweise</h3>
<ul>
{% for travel_program_advice in travel_program.advices|trim|split('\n') %}
<li>{{ travel_program_advice|raw }}</li>
{% endfor %}
</ul>
{% endif %}
</div> <!-- END tabpanel -->
<div role="tabpanel" class="tab-pane" id="content_tab_02">
{#
********* LEISTUNGEN *********
#}
<div role="tabpanel" class="tab-pane" id="travel-service-content-tab">
<h2>Eingeschlossene Leistungen</h2>
<ul>
{% for travel_program_service in travel_program.included|replace({'*': '<img src="/bundles/app/images/star-mini.png" >'})|split('\n') %}
<li>{{ travel_program_service|raw }}</li>
{% endfor %}
</ul>
{#
<h1>Unser Video</h1>
<div itemprop="video" itemscope itemtype="http://schema.org/VideoObject">
<h2 itemprop="name">Video Headline</h2>
<div class="embed-responsive embed-responsive-16by9">
<meta itemprop="embedURL" content="http://www.youtube.com/watch?v=XzgjEBOlC8I">
<meta itemprop="thumbnailUrl" content="http://exampel.com/Party_Thumbnail.png">
<meta itemprop="description" content="Lorem ipsum dolor sit amet, consectetuer adipiscing elit.">
<meta itemprop="uploadDate" content="2013-10-01T08:00:00+08:00">
<meta itemprop="duration" content="T3M35S">
<iframe class="embed-responsive-item" width="560" height="315" src="https://www.youtube.com/embed/XzgjEBOlC8I" frameborder="0" allowfullscreen></iframe>
</div>
</div>
#}
{% if travel_program.excluded is not empty or travel_program.classDescription is not empty %}
<h2>Nicht eingeschlossene Leistungen</h2>
{{ travel_program.classDescription|replace({'*': '<img src="/bundles/app/images/star-mini.png" >'})|raw }}
<ul>
{% for travel_program_service in travel_program.excluded|replace({'*': '<img src="/bundles/app/images/star-mini.png" >'})|split('\n') %}
<li>{{ travel_program_service|raw }}</li>
{% endfor %}
</ul>
{% endif %}
</div> <!-- END tabpanel -->
<div role="tabpanel" class="tab-pane" id="content_tab_03">
{#
********* TERMINE UND PREISE *********
#}
<div role="tabpanel" class="tab-pane" id="travel-dates-content-tab">
<h2>{{ travel_program.subtitle }}</h2>
@ -194,21 +264,47 @@
</div>
</div> <!-- END tabpanel -->
{#
********* LANDKARTE *********
#}
{% if travel_program.hasMap %}
<div role="tabpanel" class="tab-pane" id="travel-map-content-tab">
{% if travel_program.mapHtml is not empty %}
{{ travel_program.mapHtml|raw|stripslashes }}
{% else %}
<a href="/uploads/maps/{{ travel_program.mapImage ~ travel_program.mapImageExt }}"
target="_blank" rel="galerie" title="Karte zum Reiseablauf"
>
<img src="{{ travel_program.mapImage ~ travel_program.mapImageExt }}" width="100%"
alt="Karte zum Reiseablauf"
>
</a>
{% endif %}
</div> <!-- END tabpanel -->
{% endif %}
{#
********* LANDINFOS *********
#}
<div role="tabpanel" class="tab-pane" id="travel-info-content-tab">
{% for country in travel_program.countries %}
<h2>{{ country.name }}</h2>
{{ country.htmlInformation|raw }}
{% endfor %}
</div> <!-- END tabpanel -->
</div>
<div class="">
<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="#content_tab_01" aria-controls="content_tab_01" role="tab" data-toggle="tab">Reiseablauf</a></li>
<li><a href="#content_tab_02" aria-controls="content_tab_02" role="tab" data-toggle="tab">Leistungen</a></li>
<li><a href="#content_tab_03" aria-controls="content_tab_03" role="tab" data-toggle="tab">Termine <i class="fa fa-star"></i> Preise</a></li>
<li><a href="#content_tab_04" aria-controls="content_tab_04" role="tab" data-toggle="tab">Karte</a></li>
<li><a href="#content_tab_05" aria-controls="content_tab_05" role="tab" data-toggle="tab">Landinfos</a></li>
<li><a href="#content_tab_07" aria-controls="content_tab_07" role="tab" data-toggle="tab">Team vor Ort</a></li>
</ul>
</div>
</div>
{{ block('travel_program_tab_bar') }}
</div>
</section><!-- end section -->
{% endblock body %}

View file

@ -2,16 +2,33 @@
{% block body %}
<section class="clearfix">
<div class="hl2">{{ page.pagetitle ?? page.title }}</div>
<div class="hl2">{{ page.pagetitle|default(page.title) }}</div>
{#{% for i in 0..page.children|length//3 %}#}
<div class="row">
{% for child_page in child_pages if child_page.status == 1 and child_page.travelProgram is defined %}
{% for child_page in child_pages if child_page.status == 1 and child_page.travelProgram is not empty %}
{% include 'default/components/pageBox.html.twig' %}
{% endfor %}
</div>
{% if mediated_child_pages is not empty %}
<h2>
Vermittelte Rundreisen vom {{ page.country is not empty ? (page.country.name ~ '-') }}Spezialisten
STERN TOURS aus Berlin
</h2>
<div class="row">
{% for child_page in mediated_child_pages %}
{% include 'default/components/pageBox.html.twig' %}
{% endfor %}
</div>
{% endif %}
</section>
<section class="clearfix">