Compare commits

..

65 commits

Author SHA1 Message Date
d4b7937801 Startseiten-Reisekategorien aus CMS-Widget statt fester Abfrage laden.
Bindet das neue Sidebar-Widget an die Startseite an und nutzt den
Widget-Titel für die Überschrift, mit Fallback auf die bisherige Logik.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 10:46:30 +00:00
64dce95f20 Vorschaubilder von Reiseprogrammen zuverlässig per Typ 2 laden.
Korrigiert das Doctrine-Mapping für travel_program_image.type und wählt
in getPreviewImage() explizit das Box-/Suchbild statt eines beliebigen Bildes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 10:46:25 +00:00
9d22a5fdc9 10-06-2026 Formular Telefon Pflicht, neue Home, Fehler Kunden Feedback 2026-06-10 10:16:29 +02:00
Kevin Adametz
45150780de Startseiten-CMS-Anbindung abschließen
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-28 15:04:21 +00:00
Kevin Adametz
754aa699a1 Startseiten-Prototyp unter Dev-Link
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-28 08:21:40 +00:00
Kevin Adametz
086ba968f7 Einige Tickes, kleine Anpassungen, bis 08-2023 2023-09-12 12:00:14 +02:00
Kevin Adametz
148eb359ce last changes since 6-2023 2023-07-03 10:07:53 +02:00
Kevin Adametz
81e42b76f5 New DateRangePicker 2023-01-25 12:43:22 +01:00
Kevin Adametz
faa508b4ca 06 2022 2022-06-15 18:08:20 +02:00
Kevin Adametz
4e71ddabec 12.21 2021-12-25 03:11:08 +01:00
Kevin Adametz
ebf90ff869 New Header Mobile, Widgets 2021-03-31 17:57:03 +02:00
Kevin Adametz
bb9f64d8c8 side bar 2021-02-10 11:06:15 +01:00
Kevin Adametz
50d7004652 Passolution 2020-10-16 16:18:57 +02:00
Kevin Adametz
0fbc50a168 Passolution SEO Tickets re 2020-09-16 09:24:03 +02:00
Kevin Adametz
7020f76ddf Passolution, SEO, Tickets 2020-09-15 18:06:39 +02:00
Kevin Adametz
bb809e7233 init without trunk 2020-07-09 12:49:32 +02:00
Kevin Adametz
ed24ac4994 Header Twig 2020-03-07 19:46:19 +01:00
Kevin Adametz
33458b2ca3 Update 2020-03-07 19:46:02 +01:00
Kevin Adametz
a37785b391 01 2020 2020-02-14 10:19:06 +01:00
Kevin Adametz
ee89626864 New Header / Slider / Infos from API 2019-12-28 20:12:23 +01:00
Kevin Adametz
645ea5da7d new Header 2019-12-12 19:53:40 +01:00
Kevin Adametz
f2be8e54b4 Rabatt export, optimize 2019-11-07 17:09:18 +01:00
Kevin Adametz
54fc46ace4 Optimierung Darstellungen, kleine Bugs,
SS-Sudan twig im Content
2019-07-09 14:29:58 +02:00
Kevin Adametz
e741dddfc1 Optimierung Darstellungen, kleine Bugs,
SS-Sudan twig im Content
2019-07-09 14:29:42 +02:00
Kevin Adametz
6dbaa30791 April Mai 2019 2019-05-29 20:37:17 +02:00
Kevin Adametz
8c514bbd4d Fewo Booking
Booking via API in CRM v3
2019-03-28 14:54:10 +01:00
Kevin Adametz
88360eabb7 dynamic Sidebar form v3 (SidebarWidget)
Dynamic Nationality
4 Insurance
2019-02-14 13:52:51 +01:00
Kevin Adametz
8b2ec705c9 06 Feb 2019-02-06 15:11:58 +01:00
adametz
98bd71c760 ssSudan Nil Frontend + extra Days + price in booking form - export + mail
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3483 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2019-01-03 11:28:54 +00:00
adametz
b28c7db598 feeback show, header css lazy
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3482 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-12-27 16:40:23 +00:00
adametz
30c42d0508 Extension App + travelsearch
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3481 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-12-27 16:40:19 +00:00
adametz
645dbaf77e return show_nationality_country_text
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3480 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-12-27 16:40:18 +00:00
adametz
7ad52c8b89 optimize for google pagespeed insights
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3479 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-12-04 17:46:00 +00:00
adametz
a2a93aab0e Pauschalreisen raus, classOptions
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3478 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-11-14 14:17:36 +00:00
adametz
1b8f8389b9 Exporter
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3477 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-11-06 11:45:02 +00:00
adametz
b75c88bf96 Add new Draft
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3476 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-11-05 15:12:54 +00:00
adametz
9421cf8c5c #
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3475 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-10-18 08:13:01 +00:00
adametz
edb2a8612f #
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3474 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-10-18 08:10:22 +00:00
adametz
6241856464 #1480 Frontent
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3473 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-10-18 08:04:06 +00:00
adametz
8f7f2c03db Check price is defined
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3472 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-10-16 12:25:05 +00:00
adametz
3dec64587e Anpassung ID zum v2 backend
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3471 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-10-15 14:57:27 +00:00
adametz
e9cafbf426 Preis ab xxx Ausgebuchte nicht mit auswerten
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3470 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-10-11 13:08:46 +00:00
adametz
0096fc88d6 #1446 Ausgebucht anzeigen
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3469 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-10-10 14:35:32 +00:00
adametz
b1d52d66bd var
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3468 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-09-25 11:42:41 +00:00
adametz
6f00076948 Fehler #1478 disable Dates before now
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3467 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-09-25 11:37:05 +00:00
adametz
96ccad563d Fehler #1477
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3466 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-09-25 10:58:27 +00:00
adametz
ee98d2faa3 deposit percent in programm for caluclate price
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3465 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-09-07 13:40:11 +00:00
adametz
3cb28e108b google recaptcha
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3464 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-09-07 12:25:02 +00:00
adametz
ad4dff526c booking form responsive
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3463 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-09-07 11:52:08 +00:00
adametz
2fe066b00f no Dates
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3462 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-09-07 11:52:07 +00:00
adametz
002f60e735 dublicate Booking Perido Names
sort out where Status = 0

git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3461 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-09-05 11:25:01 +00:00
adametz
5c99472ef5 ttSearch iframe 5500px
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3460 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-09-03 11:34:08 +00:00
adametz
ffb731a7de CMS per https
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3459 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-29 15:52:51 +00:00
adametz
f483d67ac2 footer
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3458 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-29 08:07:53 +00:00
adametz
32878f826b PDF Footer
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3457 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-29 07:54:23 +00:00
adametz
20ac12d544 footer svg
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3456 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-29 07:45:57 +00:00
adametz
81b2c94522 footerText
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3455 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-29 07:40:54 +00:00
adametz
4ee51802ab Komfort brechnung mit Kind Kalender im Admin formatieren
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3454 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-27 12:51:36 +00:00
adametz
0325e97509 remove Room Validation
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3453 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-23 14:38:42 +00:00
adametz
0eac480ad5 fix Mail Summary Prices
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3452 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-23 13:03:57 +00:00
adametz
a5eb342bd3 Update new Calender in Admin
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3451 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-21 14:39:31 +00:00
adametz
7117fc6201 travelProgramm
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3450 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-20 16:43:49 +00:00
adametz
5d9820f677 Child flight calculate
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3449 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-20 15:01:54 +00:00
adametz
82650454d2 Mail Booking Controller
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3448 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-20 11:48:05 +00:00
adametz
22af43b07a Child in Booking Form, calculate, show, validate, mail, success
git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3447 f459cee4-fb09-11de-96c3-f9c5f16c3c76
2018-08-20 11:40:10 +00:00
12024 changed files with 1504643 additions and 51895 deletions

11
.gitignore vendored Normal file
View file

@ -0,0 +1,11 @@
/web/docs
/web/cache
/web/images
.DS_Store
/web/uploads
/web/_uploads
/web/web
/src/AppBundle/Resources/public/js/min
/web/css/images/*
/var
/var/*

6
.idea/$CACHE_FILE$ generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="NodePackageJsonFileManager">
<packageJsonPaths />
</component>
</project>

8
.idea/.gitignore generated vendored Normal file
View file

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View file

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>

10
.idea/composerJson.xml generated Normal file
View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ComposerJsonPluginSettings">
<unboundedVersionInspectionSettings>
<excludedPackages />
</unboundedVersionInspectionSettings>
<customRepositories />
<composerUpdateOptions />
</component>
</project>

4
.idea/deployment.xml generated Normal file
View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PublishConfigData" serverName="https://sterntours.test" />
</project>

6
.idea/encodings.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>

6
.idea/misc.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
</project>

8
.idea/modules.xml generated Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/sterntours-3.iml" filepath="$PROJECT_DIR$/.idea/sterntours-3.iml" />
</modules>
</component>
</project>

59
.idea/php.xml generated Normal file
View file

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PhpIncludePathManager">
<include_path>
<path value="$PROJECT_DIR$/vendor/psr/cache" />
<path value="$PROJECT_DIR$/vendor/zendframework/zend-code" />
<path value="$PROJECT_DIR$/vendor/zendframework/zend-eventmanager" />
<path value="$PROJECT_DIR$/vendor/kriswallsmith/assetic" />
<path value="$PROJECT_DIR$/vendor/whiteoctober/tcpdf-bundle" />
<path value="$PROJECT_DIR$/vendor/swiftmailer/swiftmailer" />
<path value="$PROJECT_DIR$/vendor/tecnickcom/tcpdf" />
<path value="$PROJECT_DIR$/vendor/sensiolabs/security-checker" />
<path value="$PROJECT_DIR$/vendor/paragonie/random_compat" />
<path value="$PROJECT_DIR$/vendor/incenteev/composer-parameter-handler" />
<path value="$PROJECT_DIR$/vendor/ocramius/proxy-manager" />
<path value="$PROJECT_DIR$/vendor/ocramius/package-versions" />
<path value="$PROJECT_DIR$/vendor/doctrine/orm" />
<path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
<path value="$PROJECT_DIR$/vendor/doctrine/inflector" />
<path value="$PROJECT_DIR$/vendor/doctrine/doctrine-bundle" />
<path value="$PROJECT_DIR$/vendor/doctrine/doctrine-cache-bundle" />
<path value="$PROJECT_DIR$/vendor/doctrine/collections" />
<path value="$PROJECT_DIR$/vendor/doctrine/dbal" />
<path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
<path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/doctrine/doctrine-migrations-bundle" />
<path value="$PROJECT_DIR$/vendor/doctrine/common" />
<path value="$PROJECT_DIR$/vendor/doctrine/migrations" />
<path value="$PROJECT_DIR$/vendor/doctrine/annotations" />
<path value="$PROJECT_DIR$/vendor/doctrine/cache" />
<path value="$PROJECT_DIR$/vendor/symfony/swiftmailer-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-util" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-icu" />
<path value="$PROJECT_DIR$/vendor/symfony/phpunit-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/symfony" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-apcu" />
<path value="$PROJECT_DIR$/vendor/symfony/assetic-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php56" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
<path value="$PROJECT_DIR$/vendor/symfony/monolog-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php70" />
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
<path value="$PROJECT_DIR$/vendor/gregwar/cache" />
<path value="$PROJECT_DIR$/vendor/gregwar/image-bundle" />
<path value="$PROJECT_DIR$/vendor/gregwar/image" />
<path value="$PROJECT_DIR$/vendor/sensio/generator-bundle" />
<path value="$PROJECT_DIR$/vendor/sensio/distribution-bundle" />
<path value="$PROJECT_DIR$/vendor/sensio/framework-extra-bundle" />
<path value="$PROJECT_DIR$/vendor/jdorn/sql-formatter" />
<path value="$PROJECT_DIR$/vendor/gedmo/doctrine-extensions" />
<path value="$PROJECT_DIR$/vendor/behat/transliterator" />
<path value="$PROJECT_DIR$/vendor/twig/twig" />
<path value="$PROJECT_DIR$/vendor/stof/doctrine-extensions-bundle" />
<path value="$PROJECT_DIR$/vendor/psr/log" />
</include_path>
</component>
<component name="PhpProjectSharedConfiguration" php_language_level="7" />
</project>

63
.idea/sterntours-3.iml generated Normal file
View file

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="Tests\" />
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/vendor/behat/transliterator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/annotations" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/cache" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/collections" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/common" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/dbal" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/doctrine-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/doctrine-cache-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/doctrine-migrations-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/inflector" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/lexer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/migrations" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/orm" />
<excludeFolder url="file://$MODULE_DIR$/vendor/gedmo/doctrine-extensions" />
<excludeFolder url="file://$MODULE_DIR$/vendor/gregwar/cache" />
<excludeFolder url="file://$MODULE_DIR$/vendor/gregwar/image" />
<excludeFolder url="file://$MODULE_DIR$/vendor/gregwar/image-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/incenteev/composer-parameter-handler" />
<excludeFolder url="file://$MODULE_DIR$/vendor/jdorn/sql-formatter" />
<excludeFolder url="file://$MODULE_DIR$/vendor/kriswallsmith/assetic" />
<excludeFolder url="file://$MODULE_DIR$/vendor/monolog/monolog" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ocramius/package-versions" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ocramius/proxy-manager" />
<excludeFolder url="file://$MODULE_DIR$/vendor/paragonie/random_compat" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/cache" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/log" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sensio/distribution-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sensio/framework-extra-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sensio/generator-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sensiolabs/security-checker" />
<excludeFolder url="file://$MODULE_DIR$/vendor/stof/doctrine-extensions-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/assetic-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/monolog-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/phpunit-bridge" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-apcu" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-icu" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php56" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php70" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-util" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/swiftmailer-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/symfony" />
<excludeFolder url="file://$MODULE_DIR$/vendor/tecnickcom/tcpdf" />
<excludeFolder url="file://$MODULE_DIR$/vendor/twig/twig" />
<excludeFolder url="file://$MODULE_DIR$/vendor/whiteoctober/tcpdf-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zend-code" />
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zend-eventmanager" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/symfony2.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Symfony2PluginSettings">
<option name="pluginEnabled" value="true" />
</component>
</project>

7
.idea/vagrant.xml generated Normal file
View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VagrantProjectSettings">
<option name="instanceFolder" value="" />
<option name="provider" value="" />
</component>
</project>

6
.idea/vcs.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

72
_bak_composer.json Normal file
View file

@ -0,0 +1,72 @@
{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-4": { "": "src/" },
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
"autoload-dev": {
"psr-4": { "Tests\\": "tests/" }
},
"require": {
"php": ">=5.5.9",
"symfony/symfony": "3.1.*",
"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"symfony/swiftmailer-bundle": "^2.3",
"symfony/monolog-bundle": "^2.8",
"symfony/polyfill-apcu": "^1.0",
"sensio/distribution-bundle": "^5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "^2.0",
"symfony/stopwatch": "^3.1",
"symfony/assetic-bundle": "^2.8",
"stof/doctrine-extensions-bundle": "^1.2",
"doctrine/doctrine-migrations-bundle": "^1.2",
"twig/twig": "^2.0",
"whiteoctober/tcpdf-bundle": "^1.0",
"gregwar/image-bundle": "^2.2"
},
"require-dev": {
"sensio/generator-bundle": "^3.0",
"symfony/phpunit-bridge": "^3.0"
},
"scripts": {
"symfony-scripts": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
],
"post-install-cmd": [
"@symfony-scripts"
],
"post-update-cmd": [
"@symfony-scripts"
]
},
"config": {
"platform": {
"php": "7.0"
}
},
"extra": {
"symfony-app-dir": "app",
"symfony-bin-dir": "bin",
"symfony-var-dir": "var",
"symfony-web-dir": "web",
"symfony-tests-dir": "tests",
"symfony-assets-install": "relative",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": {
"dev-master": "3.1-dev"
}
}
}

55
app/AppKernel.php Normal file
View file

@ -0,0 +1,55 @@
<?php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new Symfony\Bundle\AsseticBundle\AsseticBundle(),
new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
new AppBundle\AppBundle(),
new WhiteOctober\TCPDFBundle\WhiteOctoberTCPDFBundle(),
new Gregwar\ImageBundle\GregwarImageBundle(),
];
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
$bundles[] = new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle();
}
return $bundles;
}
public function getRootDir()
{
return __DIR__;
}
public function getCacheDir()
{
return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
}
public function getLogDir()
{
return dirname(__DIR__).'/var/logs';
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
}
}

View file

@ -0,0 +1,196 @@
<!doctype html>
{% if app.debug -%}
<!-- {% if page is defined %}page-Eintrag mit ID {{ page.id }}{% else %}Für diese Seite existiert kein page-Eintrag, sondern ein Twig-Seitetemplate in app/Resources/views/default/pages{% endif %} -->
{%- endif %}
<!--[if lt IE 7 ]><html class="ie ie6" lang="de"> <![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="de"> <![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="de"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="de"><!--<![endif]-->
<head>
<title>{% block page_title %}
{{ page is defined ? page.pagetitle : iq_page_title is defined ? iq_page_title : 'Kulturreisen vom Reiseveranstalter STERN TOURS aus Berlin' }}
{% endblock page_title %}</title>
{% block metatags %}
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
{% block meta_description -%}
{%- if page is defined and page.description is not empty -%}
<meta name="description" content="{{ page.description }}" >
{%- endif -%}
{%- if iq_page_description is defined and iq_page_description is not empty -%}
<meta name="description" content="{{ iq_page_description }}" >
{%- endif -%}
{%- endblock %}
{% block meta_keywords -%}
{%- if page is defined and page.keywords is not empty -%}
<meta name="keywords" content="{{ page.keywords }}" >
{%- endif -%}
{%- endblock %}
{% block meta_robots %}
<meta name="robots" content="follow,index" />
{% endblock %}
{% endblock %}
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<link rel="manifest" href="/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
{% block canonical_tag %}
{% if canonical_url is not defined and page is defined %}
{% if page.canonicalUrl is not empty %}
{% set canonical_url = (page.canonicalUrl starts with '/' ? get_base_url()) ~ page.canonicalUrl %}
{% if app.debug %}<!-- Die canonical URL wurde über das Feld "canonical_url" des page-Eintrags ermittelt -->{% endif %}
{% else %}
{% set canonical_url = get_base_url() ~ page.urlPath %}
{% if app.debug %}<!-- Die canonical URL wurde über den URL-Pfad des page-Eintrags berechnet, also entweder über das Feld "real_url_path" oder den "slug"-Werten der Seitenhierarchie -->{% endif %}
{% endif %}
{% elseif app.debug and canonical_url is defined %}
<!-- Die canonical_url wurde im Controller festgelegt -->
{% endif %}
{% if canonical_url is defined %}
<link rel="canonical" href="{{ canonical_url }}" />
<link rel="alternate" hreflang="de-de" href="{{ canonical_url }}" />
{% elseif app.debug %}
<!-- Die canonical_url konnte nicht automatisch ermittelt werden und muss daher entweder durch den Controller festgelegt werden, oder der Block "canonical_tag" im Seiten-Template überschrieben werden -->
{% endif %}
{% endblock %}
<style>
#preloader{position:fixed;z-index:9999999;top:0;bottom:0;right:0;left:0;background:#fff}#preloader .inner{position:absolute;top:0;bottom:0;right:0;left:0;width:54px;height:54px;margin:auto}.page-loader{display:block;width:100%;height:100%;position:fixed;top:0;left:0;background:#fefefe;z-index:100000}#preloader span.loader{width:50px;height:50px;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;font-size:10px;text-indent:-12345px;border-top:1px solid rgba(0,0,0,0.08);border-right:1px solid rgba(0,0,0,0.08);border-bottom:1px solid rgba(0,0,0,0.08);border-left:1px solid rgba(0,0,0,0.5);border-radius:50%;-webkit-animation:spinner 700ms infinite linear;animation:spinner 700ms infinite linear;z-index:100001}@-webkit-keyframes spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
.item-img .img-responsiv-item { width: 100%; max-width: none; height: auto; }
</style>
<link rel="preload" href="{{ asset('css/my-custom.css?v1') }}{{ get_file_last_time('css/my-custom.css') }}" as="style" onload="this.rel='stylesheet'">
<noscript>
<style>
.item-img >div.img-background { display: none; }
</style>
<link rel="stylesheet" href="{{ asset('css/my-custom.css?v1') }}{{ get_file_last_time('css/my-custom.css') }}">
</noscript>
<script>
/*loadCss*/
!function(w){"use strict";var loadCSS=function(href,before,media){function ready(cb){return doc.body?cb():void setTimeout(function(){ready(cb)})}function loadCB(){ss.addEventListener&&ss.removeEventListener("load",loadCB),ss.media=media||"all"}var ref,doc=w.document,ss=doc.createElement("link");if(before)ref=before;else{var refs=(doc.body||doc.getElementsByTagName("head")[0]).childNodes;ref=refs[refs.length-1]}var sheets=doc.styleSheets;ss.rel="stylesheet",ss.href=href,ss.media="only x",ready(function(){ref.parentNode.insertBefore(ss,before?ref:ref.nextSibling)});var onloadcssdefined=function(cb){for(var resolvedHref=ss.href,i=sheets.length;i--;)if(sheets[i].href===resolvedHref)return cb();setTimeout(function(){onloadcssdefined(cb)})};return ss.addEventListener&&ss.addEventListener("load",loadCB),ss.onloadcssdefined=onloadcssdefined,onloadcssdefined(loadCB),ss};"undefined"!=typeof exports?exports.loadCSS=loadCSS:w.loadCSS=loadCSS}("undefined"!=typeof global?global:this);
/*link[rel=preload] polyfill*/
!function(w){if(w.loadCSS){var rp=loadCSS.relpreload={};if(rp.support=function(){try{return w.document.createElement("link").relList.supports("preload")}catch(e){return!1}},rp.poly=function(){for(var links=w.document.getElementsByTagName("link"),i=0;i<links.length;i++){var link=links[i];"preload"===link.rel&&"style"===link.getAttribute("as")&&(w.loadCSS(link.href,link),link.rel=null)}},!rp.support()){rp.poly();var run=w.setInterval(rp.poly,300);w.addEventListener&&w.addEventListener("load",function(){w.clearInterval(run)}),w.attachEvent&&w.attachEvent("onload",function(){w.clearInterval(run)})}}}(this);
</script>
{% block stylesheets %}
{% endblock stylesheets %}
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js" async data-cookieconsent="necessary"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js" async data-cookieconsent="necessary"></script>
<![endif]-->
</head>
<body class="no-js">
<div id="wrapper">
<div id="preloader">
<div class="inner">
<span class="loader"></span>
</div>
</div>
{{ render(controller('AppBundle:Component:header')) }}
{% 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">
<div class="row">
<div class="col-md-12 col-xs-12">
<div class="home-message text-center small">
<div class="home-info-box">
<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">
</div>
<ul class="c4">
<li>Spezialist für Kulturreisen </li>
<li>Reiseexperte seit 1998</li>
<li>Beratung für individuelle Reisen</li>
</ul>
</div>
</div><!-- end homemessage -->
</div><!-- end col -->
</div><!-- end row -->
</div><!-- end container -->
</section><!-- end section -->
{% endblock %}
{# #TODO additional section classes if not home #}
<section class="section clearfix">
<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})) }}
{% elseif breadcrumb_entries is defined %}
{{ include('default/components/breadcrumb.html.twig') }}
{% endif %}
{% endblock %}
<!-- START CONTENT -->
<div class="row" id="order_row">
<div id="show_sterntours_video_full" class="col-md-12" style="display: none;">
</div>
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-md-push-3 order_sec">
{% block body %}{% endblock %}
</div>
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-md-pull-9 order_first">
{% if site_loading is defined and page is defined %}
{{ render(controller('AppBundle:Component:makeSidebarWidget', {'site_loading': site_loading, 'page': page})) }}
{% elseif site_loading is defined and api is defined %}
{{ render(controller('AppBundle:Component:makeSidebarWidget', {'site_loading': site_loading, 'page': null, 'api': api})) }}
{% else %}
{% if site_loading is defined and search_form is defined %}
{{ render(controller('AppBundle:Component:makeSidebarWidget', {'site_loading': site_loading, 'page': null, 'api': null, 'search_form': search_form})) }}
{% else %}
{{ render(controller('AppBundle:Component:makeSidebarWidget', {'site_loading': 'default'})) }}
{% endif %}
{% endif %}
</div>
</div><!-- end row -->
<!-- END CONTENT -->
</div><!-- end fullwidth -->
</div><!-- end row -->
</div><!-- end container -->
</section><!-- end section -->
{{ 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 }'>
<i class="icon-up-open-big"></i>
</a>
</div><!-- end wrapper -->
<!-- default modal -->
{% embed 'default/components/embed/modal.html.twig' with {id: 'default'} %}{% endembed %}
{% block javascripts %}
<script rel="preload" src="{{ asset('js/custom-min.js?v') }}{{ get_file_last_time('js/custom-min.js') }}" data-cookieconsent="necessary"></script>
<script rel="preload" src="{{ asset('js/youtube-loader-min.js?v') }}{{ get_file_last_time('js/youtube-loader-min.js') }}" type="text/javascript" data-cookieconsent="preferences"></script>
{% endblock javascripts %}
</body>
</html>

View file

@ -20,17 +20,13 @@
<link rel="apple-touch-icon" href="/bundles/app/images/apple-icon.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/bundles/app/images/apple-icon-72x72.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/bundles/app/images/apple-icon-114x114.png" />
<link rel="stylesheet" href="{{ asset('css/my-custom.css?v') }}{{ get_file_last_time('css/my-custom.css') }}">
<link rel="stylesheet" href="{{ asset('css/my-custom.css?v') }}{{ get_file_last_time('css/my-custom.css') }}">
{% block stylesheets %}
{% stylesheets
'bundles/app/css/bootstrap-3.3.7.css'
filter='cssrewrite'
%}
<link rel="stylesheet" href="{{ asset_url }}"/>
{% endstylesheets %}
{% stylesheets
'bundles/app/css/custom.css'
filter='cssrewrite'
'bundles/app/css/daterangepicker.css'
filter='cssrewrite'
%}
<link rel="stylesheet" href="{{ asset_url }}"/>
{% endstylesheets %}
@ -39,9 +35,14 @@
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js data-cookieconsent="necessary""></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js data-cookieconsent="necessary""></script>
<![endif]-->
<script src="{{ asset('js/custom-min.js?v') }}{{ get_file_last_time('js/custom-min.js') }}" data-cookieconsent="necessary"></script>
<script src="{{ asset('js/youtube-loader-min.js?v') }}{{ get_file_last_time('js/youtube-loader-min.js') }}" type="text/javascript" data-cookieconsent="preferences"></script>
<script src="{{ asset('js/fewoBooking-min.js?v') }}{{ get_file_last_time('js/fewoBooking-min.js') }}" data-cookieconsent="necessary"></script>
</head>
<body>
@ -109,18 +110,7 @@
{#TODO ausmisten und im gleichen zuge das CSS für den Datepicker einfügen#}
{% block javascripts %}
{% javascripts
'@AppBundle/Resources/public/js/jquery-3.1.1.js'
'@AppBundle/Resources/public/js/jquery-ui-1.12.1.js'
'@AppBundle/Resources/public/js/bootstrap-3.3.7.js'
'@AppBundle/Resources/public/js/jquery.prettyPhoto-3.1.6.js'
'@AppBundle/Resources/public/js/parallax.js'
'@AppBundle/Resources/public/js/owl.carousel-2.2.0.js'
'@AppBundle/Resources/public/js/bootstrap-select-1.12.0.js'
'@AppBundle/Resources/public/js/custom.js'
%}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock javascripts %}
</body>

View file

@ -0,0 +1,223 @@
<!doctype html>
{% if app.debug -%}
<!-- {% if page is defined %}page-Eintrag mit ID {{ page.id }}{% else %}Für diese Seite existiert kein page-Eintrag, sondern ein Twig-Seitetemplate in app/Resources/views/default/pages{% endif %} -->
{%- endif %}
<!--[if lt IE 7 ]><html class="ie ie6" lang="de"> <![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="de"> <![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="de"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="de"><!--<![endif]-->
<head>
<title>{% block page_title %}
{{ page is defined ? page.pagetitle : iq_page_title is defined ? iq_page_title : 'Kulturreisen vom Reiseveranstalter STERN TOURS aus Berlin' }}
{% endblock page_title %}</title>
{% block metatags %}
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
{% block meta_description -%}
{%- if page is defined and page.description is not empty -%}
<meta name="description" content="{{ page.description }}" >
{%- endif -%}
{%- if iq_page_description is defined and iq_page_description is not empty -%}
<meta name="description" content="{{ iq_page_description }}" >
{%- endif -%}
{%- endblock %}
{% block meta_keywords -%}
{%- if page is defined and page.keywords is not empty -%}
<meta name="keywords" content="{{ page.keywords }}" >
{%- endif -%}
{%- endblock %}
{% block meta_robots %}
<meta name="robots" content="follow,index" />
{% endblock %}
{% endblock %}
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="efbd59ab-4d18-411e-9bfa-47bbd4f9db28" data-blockingmode="auto" type="text/javascript"></script>
<link rel="manifest" href="/manifest.json">
{% block canonical_tag %}
{% if canonical_url is not defined and page is defined %}
{% if page.canonicalUrl is not empty %}
{% set canonical_url = (page.canonicalUrl starts with '/' ? get_base_url()) ~ page.canonicalUrl %}
{% if app.debug %}<!-- Die canonical URL wurde über das Feld "canonical_url" des page-Eintrags ermittelt -->{% endif %}
{% else %}
{% set canonical_url = get_base_url() ~ page.urlPath %}
{% if app.debug %}<!-- Die canonical URL wurde über den URL-Pfad des page-Eintrags berechnet, also entweder über das Feld "real_url_path" oder den "slug"-Werten der Seitenhierarchie -->{% endif %}
{% endif %}
{% elseif app.debug and canonical_url is defined %}
<!-- Die canonical_url wurde im Controller festgelegt -->
{% endif %}
{% if canonical_url is defined %}
<link rel="canonical" href="{{ canonical_url }}" />
<link rel="alternate" hreflang="de-de" href="{{ canonical_url }}" />
{% elseif app.debug %}
<!-- Die canonical_url konnte nicht automatisch ermittelt werden und muss daher entweder durch den Controller festgelegt werden, oder der Block "canonical_tag" im Seiten-Template überschrieben werden -->
{% endif %}
{% endblock %}
<link rel="stylesheet" href="{{ asset('css/my-custom.css?v1') }}{{ get_file_last_time('css/my-custom.css') }}">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-Y1Y779PDME" data-cookieconsent="marketing"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-Y1Y779PDME');
</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 %}
{% endblock stylesheets %}
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js" async data-cookieconsent="necessary></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js" async data-cookieconsent="necessary></script>
<![endif]-->
</head>
<style>
@media (min-width: 992px) and (max-width: 1200px ) {
.topMain.nav-pills>li>a {
padding: .5rem .8rem;
margin-right: .4rem;
}
}
</style>
<body class="no-js">
<div id="wrapper">
{% 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">
<div class="row">
<div class="col-md-12 col-xs-12">
<div class="home-message text-center small">
<div class="home-info-box">
<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.png') }}" alt="Top Kundenservice" height="78">
</div>
<ul class="c4">
<li>Spezialist für Kulturreisen </li>
<li>Reiseexperte seit 1998</li>
<li>Beratung für individuelle Reisen</li>
</ul>
</div>
</div><!-- end homemessage -->
</div><!-- end col -->
</div><!-- end row -->
</div><!-- end container -->
</section><!-- end section -->
{% endblock %}
{# #TODO additional section classes if not home #}
<section class="section clearfix">
<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})) }}
{% elseif breadcrumb_entries is defined %}
{{ include('default/components/breadcrumb.html.twig') }}
{% endif %}
{% endblock %}
<!-- START CONTENT -->
<div class="row" id="order_row">
<div id="show_sterntours_video_full" class="col-md-12" style="display: none;">
</div>
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-md-push-3 order_sec">
{% block body %}{% endblock %}
</div>
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-md-pull-9 order_first">
{% if dev_home_sidebar is defined %}
{% include 'default/components/sidebar/devHomeSidebar.html.twig' %}
{% elseif site_loading is defined and page is defined %}
{{ render(controller('AppBundle:Component:makeSidebarWidget', {'site_loading': site_loading, 'page': page})) }}
{% elseif site_loading is defined and api is defined %}
{{ render(controller('AppBundle:Component:makeSidebarWidget', {'site_loading': site_loading, 'page': null, 'api': api})) }}
{% else %}
{% if site_loading is defined and search_form is defined %}
{{ render(controller('AppBundle:Component:makeSidebarWidget', {'site_loading': site_loading, 'page': null, 'api': null, 'search_form': search_form})) }}
{% else %}
{{ render(controller('AppBundle:Component:makeSidebarWidget', {'site_loading': 'default'})) }}
{% endif %}
{% endif %}
</div><!-- end row -->
<!-- END CONTENT -->
</div><!-- end fullwidth -->
</div><!-- end row -->
</div><!-- end container -->
</section><!-- end section -->
{{ 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": 65, "left": 12 }'>
<i class="icon-up-open-big"></i>
</a>
</div><!-- end wrapper -->
<!-- default modal -->
{% embed 'default/components/embed/modal.html.twig' with {id: 'default'} %}{% endembed %}
{% block javascripts %}
<script rel="preload" src="{{ asset('js/custom-min.js?v') }}{{ get_file_last_time('js/custom-min.js') }}" type="text/javascript" data-cookieconsent="necessary"></script>
<script rel="preload" src="{{ asset('js/youtube-loader-min.js?v') }}{{ get_file_last_time('js/youtube-loader-min.js') }}" type="text/javascript" data-cookieconsent="preferences"></script>
<script type="text/javascript" data-cookieconsent="necessary">
$(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

@ -15,7 +15,7 @@
{{ form_row(form.file, {label: 'Bild'}) }}
{% else %}
<div>
<img src="{{ asset('uploads/images/' ~ image_file_name) }}" alt="{{ image.description }}" style="width:456px;height:151px;" >
<img src="{{ asset('_uploads/images/' ~ image_file_name) }}" alt="{{ image.description }}" style="height:250px;" >
</div>
{% endif %}
{{ form_row(form.fileName, {label: 'Name'}) }}

View file

@ -15,7 +15,7 @@
{{ form_row(form.file, {label: 'Bild'}) }}
{% else %}
<div>
<img src="{{ asset('uploads/images/' ~ image_file_name) }}" alt="{{ image.description }}" style="width:456px;height:151px;" >
<img src="{{ asset('_uploads/images/' ~ image_file_name) }}" alt="{{ image.description }}" style="width:456px;height:151px;" >
</div>
{% endif %}
{{ form_row(form.fileName, {label: 'Name'}) }}

View file

@ -35,7 +35,7 @@
{% for image in lodgingGroup.images %}
{% if image.comp == 'pre' %}
<tr>
<td><img src="{{ asset('uploads/images/' ~ image.file) }}" alt="{{ image.description }}" style="width:228px;height:75px;" ></td>
<td><img src="{{ asset('_uploads/images/' ~ image.file) }}" alt="{{ image.description }}" style="height:80px;" ></td>
<td>{{ image.pos }}</td>
<td>{{ image.fileName }}</td>
<td>{{ image.description }}</td>
@ -85,7 +85,7 @@
{% for image in lodgingGroup.images %}
{% if image.comp == 'post' %}
<tr>
<td><img src="{{ asset('uploads/images/' ~ image.file) }}" alt="{{ image.description }}" style="width:228px;height:75px;" ></td>
<td><img src="{{ asset('_uploads/images/' ~ image.file) }}" alt="{{ image.description }}" style="height:80px;" ></td>
<td>{{ image.pos }}</td>
<td>{{ image.fileName }}</td>
<td>{{ image.description }}</td>

View file

@ -31,12 +31,13 @@
>
Bearbeiten
</a>
<a href="{{ '/admin/fewo/lodging/group/' ~ lodgingGroup.id ~ '/delete' }}"
{# <a href="{{ '/admin/fewo/lodging/group/' ~ lodgingGroup.id ~ '/delete' }}"
class="btn btn-primary"
rel="nofollow"
>
Löschen
</a>
#}
</td>
</tr>
{% if lodgingGroup.lodgings is not empty %}
@ -52,12 +53,14 @@
>
Bearbeiten
</a>
<a href="{{ '/admin/fewo/lodgings/' ~ lodging.id ~ '/delete' }}"
{# <a href="{{ '/admin/fewo/lodgings/' ~ lodging.id ~ '/delete' }}"
class="btn btn-primary"
rel="nofollow"
>
Löschen
</a>
#}
</td>
</tr>
{% endfor %}

View file

@ -0,0 +1,350 @@
{% extends 'admin.html.twig' %}
{% form_theme form 'default/form/theme.html.twig' %}
{% block body %}
<section class="clearfix">
<div class="content-copy">
<h1>{{ lodging.name }} bearbeiten</h1>
<form class="st-booking-form" method="post">
{{ form_errors(form) }}
<div id="message"></div>
<div class="form-box">
<h3>Reservierungen</h3>
{% if lodging.reservations is not empty %}
<table class="table">
<thead>
<tr>
<th>Von</th>
<th>Bis</th>
<th>Status</th>
<th>Typ</th>
<th></th>
</tr>
</thead>
<tbody>
{% for lodgingReservation in lodging.reservations %}
<tr>
<td>{{ lodgingReservation.fromDate|date('d.m.y') }}</td>
<td>{{ lodgingReservation.toDate|date('d.m.y') }}</td>
<td>
{% if lodgingReservation.status == 0 %}
belegt
{% elseif lodgingReservation.status == 1 %}
nicht verfügbar
{% endif %}
</td>
<td>
{% if lodgingReservation.type == 0 %}
Buchung
{% elseif lodgingReservation.type == 1 %}
händisch
{% endif %}
</td>
<td>
<a href="{{ '/admin/fewo/lodgings/' ~ lodging.id ~ '/reservations/' ~ lodgingReservation.id }}"
class="btn btn-primary"
rel="nofollow"
>
Bearbeiten
</a>
<a href="{{ '/admin/fewo/lodgings/' ~ lodging.id ~ '/reservations/' ~ lodgingReservation.id ~ '/delete' }}"
class="btn btn-primary"
rel="nofollow"
>
Löschen
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<h4>Keine Reservierungen vorhanden</h4>
{% endif %}
{% if lodging.prices is not empty %}
<a href="/admin/fewo/lodgings/{{ lodging.id }}/reservations/new"
class="btn btn-primary"
rel="nofollow"
>
Hinzufügen
</a>
{% else %}
<h4>Mindestens eine Saison pflegen.</h4>
{% endif %}
<br><br>
<h1>Verfügbarkeit</h1>
<style>
.table > tbody > tr > td.normal {
background-color: #deebde;
padding: 6px;
}
.table > tbody > tr > td.calendar-day-non {
background-color: #fff;
}
.table > tbody > tr > td.calendar-day-past {
background-color: rgba(242, 242, 242, 0.5);
}
.table > tbody > tr > td.calendar-light {
opacity: 0.5;
}
.table > tbody > tr > td.calendar-day-disabled-half {
/* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#f0bcbc+49,f2f2f2+50,f0bcbc+51 */
background: #f0bcbc; /* Old browsers */
background: -moz-linear-gradient(-35deg, #f0bcbc 49%, #f2f2f2 50%, #f0bcbc 51%); /* FF3.6-15 */
background: -webkit-linear-gradient(-35deg, #f0bcbc 49%,#f2f2f2 50%,#f0bcbc 51%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(145deg, #f0bcbc 49%,#f2f2f2 50%,#f0bcbc 51%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f0bcbc', endColorstr='#f0bcbc',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
}
.table > tbody > tr > td.calendar-day-disabled-half-booked {
/* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#f0bcbc+49,f2f2f2+50,f0bcbc+51 */
background: #f0bcbc; /* Old browsers */
background: -moz-linear-gradient(-35deg, #f0bcbc 49%, #f2f2f2 50%, #C5DCC6 51%); /* FF3.6-15 */
background: -webkit-linear-gradient(-35deg, #f0bcbc 49%,#f2f2f2 50%,#C5DCC6 51%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(145deg, #f0bcbc 49%,#f2f2f2 50%,#C5DCC6 51%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f0bcbc', endColorstr='#C5DCC6',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
}
.table > tbody > tr > td.calendar-day-disabled-half-booked.active {
/* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#f0bcbc+49,f2f2f2+50,f0bcbc+51 */
background: #f0bcbc; /* Old browsers */
background: -moz-linear-gradient(-35deg, #f0bcbc 49%, #f2f2f2 50%, #b7ceb8 51%); /* FF3.6-15 */
background: -webkit-linear-gradient(-35deg, #f0bcbc 49%,#f2f2f2 50%,#b7ceb8 51%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(145deg, #f0bcbc 49%,#f2f2f2 50%,#b7ceb8 51%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f0bcbc', endColorstr='#b7ceb8',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
}
.table > tbody > tr > .calendar-day-reservation-begin {
background-color: #f0bcbc;
background: -moz-linear-gradient(to bottom right, #deebde 0%, #deebde 49%, #f0bcbc 50%, #f0bcbc 100%);
background: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #deebde), color-stop(49%, #deebde), color-stop(50%, #f0bcbc), color-stop(100%, #f0bcbc));
background: -webkit-linear-gradient(to bottom right, #deebde 0%, #deebde 49%, #f0bcbc 50%, #f0bcbc 100%);
background: -o-linear-gradient(to bottom right, #deebde 0%, #deebde 49%, #f0bcbc 50%, #f0bcbc 100%);
background: -ms-linear-gradient(to bottom right, #deebde 0%, #deebde 49%, #f0bcbc 50%, #f0bcbc 100%);
background: linear-gradient(to bottom right, #deebde 0%, #deebde 49%, #f0bcbc 50%, #f0bcbc 100%);
}
.table > tbody > tr > .calendar-day-reservation-end {
background-color: #f2f2f2;
background: -moz-linear-gradient(to bottom right, #f0bcbc 0%, #f0bcbc 49%, #deebde 50%, #deebde 100%);
background: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #f0bcbc), color-stop(49%, #f0bcbc), color-stop(50%, #deebde), color-stop(100%, #deebde));
background: -webkit-linear-gradient(to bottom right, #f0bcbc 0%, #f0bcbc 49%, #deebde 50%, #deebde 100%);
background: -o-linear-gradient(to bottom right, #f0bcbc 0%, #f0bcbc 49%, #deebde 50%, #deebde 100%);
background: -ms-linear-gradient(to bottom right, #f0bcbc 0%, #f0bcbc 49%, #deebde 50%, #deebde 100%);
background: linear-gradient(to bottom right, #f0bcbc 0%, #f0bcbc 49%, #deebde 50%, #deebde 100%);
}
.table > tbody > tr > td.active {
background-color: rgba(88, 155, 92, 0.35);
padding: 6px;
}
.table > tbody > tr > td.active:hover {
background-color: #648859;
}
.table > tbody > tr > td a.link {
color: #5a5a5a;
font-weight: 700;
width: 100%;
display: block;
height: 100%;
// padding: 6px;
text-decoration: underline;
}
.table > tbody > tr > td:hover a.link {
color: #fff;
font-weight: 700;
width: 100%;
display: block;
height: 100%;
}
.table > tbody > tr > td a.link {
font-weight: 700;
width: 100%;
display: block;
height: 100%;
// padding: 6px;
}
</style>
{% include 'default/admin/lodgingsEditCalendar.html.twig' %}
<br><br>
<h3>Saisons (Preise)</h3>
{% if lodging.prices is not empty %}
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Von</th>
<th>Bis</th>
<th>Mindestbelegung</th>
<th>Preis pro Nacht</th>
<th>Service-Gebühr</th>
<th></th>
</tr>
</thead>
<tbody>
{% for lodgingPrice in lodging.prices %}
{% if lodgingPrice.season is not empty %}
<tr>
<td>{{ lodgingPrice.season.name }}</td>
<td>{{ lodgingPrice.season.fromDate|date('d.m.y') }}</td>
<td>{{ lodgingPrice.season.toDate|date('d.m.y') }}</td>
<td>{{ lodgingPrice.season.minimumStay }}</td>
<td>{{ lodgingPrice.perNight }}</td>
<td>{{ lodgingPrice.flatPrice }}</td>
<td>
<a href="{{ '/admin/fewo/lodgings/' ~ lodging.id ~ '/prices/' ~ lodgingPrice.id }}"
class="btn btn-primary"
rel="nofollow"
>
Bearbeiten
</a>
<a href="{{ '/admin/fewo/lodgings/' ~ lodging.id ~ '/prices/' ~ lodgingPrice.id ~ '/delete' }}"
class="btn btn-primary"
rel="nofollow"
>
Löschen
</a>
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
{% else %}
<h4>Keine Saisons vorhanden</h4>
{% endif %}
<a href="/admin/fewo/lodgings/{{ lodging.id }}/prices/new"
class="btn btn-primary"
rel="nofollow"
>
Hinzufügen
</a>
<hr>
<br><br>
{{ form_row(form.name, {'label': 'Name'}) }}
{{ form_row(form.group, {'label': 'Gruppe'}) }}
{{ form_row(form.type, {'label': 'Typ'}) }}
{{ form_row(form.description, {'label': 'Beschreibung'}) }}
{{ form_row(form.equipment, {'label': 'Ausstattung'}) }}
{{ form_row(form.adress1, {'label': 'Adresse 1'}) }}
{{ form_row(form.adress2, {'label': 'Adresse 2'}) }}
{{ form_row(form.zipCode, {'label': 'PLZ'}) }}
{{ form_row(form.city, {'label': 'Ort'}) }}
{{ form_row(form.maximumPersons, {'label': 'Maximale Personenanzahl'}) }}
{{ form_row(form.maximumAdults, {'label': 'Maximale Erwachsene'}) }}
{{ form_row(form.maximumChilds, {'label': 'Maximale Kinder'}) }}
{{ form_row(form.deposit, {'label': 'Kaution'}) }}
{#
<div class="checkbox">
{{ form_widget(form.calendarVisible) }}
<label for="{{ form.calendarVisible.vars.id }}">
Kalender sichtbar
</label>
{{ form_errors(form.calendarVisible) }}
</div>
#}
<div class="col-md-12 col-sm-12 col-xs-12">
<button type="submit" value="SEND" id="submit"
class="btn btn-primary btn-lg border-radius"
>
Speichern
</button>
</div>
<br><br>
<h3>Bilder</h3>
{% if lodging.images is not empty %}
<table class="table">
<thead>
<tr>
<th>Bild</th>
<th>Pos</th>
<th>Name</th>
<th>Beschreibung</th>
<th></th>
</tr>
</thead>
<tbody>
{% for image in lodging.images %}
<tr>
<td><img src="{{ asset('_uploads/images/' ~ image.file) }}" alt="{{ image.description }}" style="width:228px;height:75px;" ></td>
<td>{{ image.pos }}</td>
<td>{{ image.fileName }}</td>
<td>{{ image.description }}</td>
<td>
<a href="{{ '/admin/fewo/lodgings/' ~ lodging.id ~ '/images/' ~ image.id }}"
class="btn btn-primary"
>
Bearbeiten
</a>
<a href="{{ '/admin/fewo/lodgings/' ~ lodging.id ~ '/images/' ~ image.id ~ '/delete' }}"
class="btn btn-primary"
>
Löschen
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<h4>Keine Bilder vorhanden</h4>
{% endif %}
<a href="{{ '/admin/fewo/lodgings/' ~ lodging.id ~ '/images/new' }}" class="btn btn-primary">
Hinzufügen
</a>
<a href="/admin/fewo/lodgings/{{ lodging.id }}/images/multi-upload" class="btn btn-primary">
Mehrere Bilder hochladen
</a>
<br><br>
</div><!-- end form-box -->
{{ form_rest(form) }}
</form>
<a href="/admin/fewo/lodgings"
class="btn btn-primary"
rel="nofollow"
>
Zurück
</a>
</div>
</section><!-- end section -->
{% endblock body %}

View file

@ -0,0 +1,76 @@
{% set counter = 0 %}
{% for calendar_month in calendar %}
{% set counter = counter + 1 %}
{% if counter%2 != 0 %}
<div class="row" style="">
{% endif %}
<div class="col-xs-12 col-sm-6">
<table class="table calendar-table">
<thead>
<tr>
<th colspan="7">
{{ calendar_month['monthName'] }} {{ calendar_month['year'] }}
</th>
</tr>
<tr>
<th>Mo</th>
<th>Di</th>
<th>Mi</th>
<th>Do</th>
<th>Fr</th>
<th>Sa</th>
<th>So</th>
</tr>
</thead>
<tbody>
{% for weekIndex in 0..5 %}
<tr>
{% for dayIndex in 0..6 %}
{# @var dayState \AppBundle\Util\CalendarDayState #}
{% set dayState = calendar_month['data'][(weekIndex * 7) + dayIndex] %}
{% set is_past_date = dayState.date is not empty and date(dayState.date) < date('now') %}
{# Set cell class #}
<td class="{{ dayState.getCssClass }} {% if dayState.isBookable %}active{% endif %}">
{% if dayState.isReserved or dayState.isReservationBegin %}
{% if dayState.reservation.id is defined %}
<a class="link" href="/admin/fewo/lodgings/{{ lodging.id }}/reservations/{{ dayState.reservation.id }}">
{{ dayState.day }}
</a>
{% else %}
ID
{% endif %}
{% elseif dayState.isBookable and not is_past_date %}
<a class="link" href="/admin/fewo/lodgings/{{ lodging.id }}/reservations/new/{{ dayState.day < 10 ? '0':'' }}{{dayState.day}}{{ calendar_month['monthNumber'] < 10 ? '0':'' }}{{calendar_month['monthNumber']}}{{calendar_month['year']}}">
{{ dayState.day }}
</a>
{% elseif dayState.day == 0 %}
&nbsp;
{% else %}
{% if dayState.isPastDate %}
<del style="color:#989898;">{{ dayState.day }}</del>
{% else %}
{{ dayState.day }}
{% endif %}
{% endif %}
</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% if counter%2 == 0 or calendar|length ==counter %}
</div>
{% endif %}
{% endfor %}

View file

@ -0,0 +1,200 @@
{% extends 'admin.html.twig' %}
{% form_theme form 'default/form/theme.html.twig' %}
{% block body %}
<section class="clearfix">
<div class="content-copy">
<h1>Reservierung bearbeiten für {{ lodging.name }}</h1>
<h3>Reservierung</h3>
<form class="st-booking-form" method="post">
{{ form_errors(form) }}
<div id="message"></div>
<div class="form-box">
{{ form_row(form.lodging, {label: 'Objekt'}) }}
<div class="form-group">
<label class="st-required control-label required">Datum</label>
<input type="text" id="fewo_booking_request_datepicker" name="fewo_booking_request_datepicker" required="required" class="form-control" placeholder="dd.mm.yyyy bis dd.mm.yyyy" value="">
<div class="hidden">
<div class="input-daterange input-group" id="date-range">
{{ form_widget(form.fromDate) }}
<span class="input-group-addon bg-info b-0 text-white">bis</span>
{{ form_widget(form.toDate) }}
</div>
</div>
</div>
{{ form_row(form.status, {label: 'Status'}) }}
{#{{ form_row(form.type, {label: 'Typ'}) }}#}
<div class="col-md-12 col-sm-12 col-xs-12">
<button type="submit" value="SEND" id="submit"
class="btn btn-primary btn-lg border-radius"
>
Speichern
</button>
</div>
</div><!-- end form-box -->
{{ form_rest(form) }}
</form>
<a href="/admin/fewo/lodgings/{{ lodging.id }}"
class="btn btn-primary"
rel="nofollow"
>
Zurück
</a>
<a href="/admin/fewo/lodgings/{{ lodging.id }}/reservations/{{ reservationId }}/delete"
class="btn btn-primary"
rel="nofollow"
>
Löschen
</a>
<hr>
<h3>Mögliche Saisons</h3>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Von</th>
<th>Bis</th>
<th>Preis pro Nacht</th>
<th>Service-Gebühr</th>
</tr>
</thead>
<tbody>
{% for lodgingPrice in lodging.prices %}
{% if lodgingPrice.season is not empty %}
<tr>
<td>{{ lodgingPrice.season.name }}</td>
<td>{{ lodgingPrice.season.fromDate|date('d-m-y') }}</td>
<td>{{ lodgingPrice.season.toDate|date('d-m-y') }}</td>
<td>{{ lodgingPrice.perNight }}</td>
<td>{{ lodgingPrice.flatPrice }}</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</section><!-- end section -->
<script type="text/javascript" data-cookieconsent="necessary">
checkDates = function(date) {
formatted = date.format('DD.MM.YYYY');
reservationDays = {{ reservationDays|json_encode|raw }}
return reservationDays.indexOf(formatted) > -1;
};
checkCustom = function(date) {
customDays = {{ classByDays|json_encode|raw }};
formatted = date.format('DD.MM.YYYY');
if(customDays[formatted] != undefined){
return customDays[formatted];
}
};
$(document).ready(function() {
var currentDate = moment().format("DD.MM.YYYY");
var startDate = $('#appbundle_feworeservation_fromDate').val();
var endDate = $('#appbundle_feworeservation_toDate').val();
var maxDate = "{{ lastSeason.toDate|date('d-m-y') }}";
$('#fewo_booking_request_datepicker').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: true,
singleDatePicker: false,
alwaysShowCalendars: true,
"startDate": startDate,
"endDate": endDate,
allowInput: true,
}, 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
$checkinInput = $('#appbundle_feworeservation_fromDate');
$checkoutInput = $('#appbundle_feworeservation_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);
*/
});
$('#appbundle_feworeservation_fromDate, #appbundle_feworeservation_toDate').on('show.daterangepicker', function(ev, picker) {
console.log(picker.startDate.format('YYYY-MM-DD'));
console.log(picker.endDate.format('YYYY-MM-DD'));
});
});
</script>
{% endblock body %}

View file

@ -0,0 +1,190 @@
{% extends 'admin.html.twig' %}
{% form_theme form 'default/form/theme.html.twig' %}
{% block body %}
<section class="clearfix">
<div class="content-copy">
<h1>Neue Reservierung anlegen für {{ lodging.name }}</h1>
<h3>Reservierung</h3>
<form class="st-booking-form" method="post">
{{ form_errors(form) }}
<div id="message"></div>
<div class="form-box">
{{ form_row(form.lodging, {label: 'Objekt'}) }}
<div class="form-group">
<label class="st-required control-label required">Datum</label>
<input type="text" id="fewo_booking_request_datepicker" name="fewo_booking_request_datepicker" required="required" class="form-control" placeholder="dd.mm.yyyy bis dd.mm.yyyy" value="">
<div class="hidden">
<div class="input-daterange input-group" id="date-range">
{{ form_widget(form.fromDate) }}
<span class="input-group-addon bg-info b-0 text-white">bis</span>
{{ form_widget(form.toDate) }}
</div>
</div>
</div>
{{ form_row(form.status, {label: 'Status'}) }}
{#{{ form_row(form.type, {label: 'Typ'}) }}#}
<div class="col-md-12 col-sm-12 col-xs-12">
<button type="submit" value="SEND" id="submit"
class="btn btn-primary btn-lg border-radius"
>
Speichern
</button>
</div>
</div><!-- end form-box -->
{{ form_rest(form) }}
</form>
<a href="/admin/fewo/lodgings/{{ lodging.id }}"
class="btn btn-primary"
rel="nofollow"
>
Zurück
</a>
<hr>
<h3>Mögliche Saisons</h3>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Von</th>
<th>Bis</th>
<th>Preis pro Nacht</th>
<th>Service-Gebühr</th>
<th>Mindestbelegung</th>
</tr>
</thead>
<tbody>
{% for lodgingPrice in lodging.prices %}
{% if lodgingPrice.season is not empty %}
<tr>
<td>{{ lodgingPrice.season.name }}</td>
<td>{{ lodgingPrice.season.fromDate|date('d-m-y') }}</td>
<td>{{ lodgingPrice.season.toDate|date('d-m-y') }}</td>
<td>{{ lodgingPrice.perNight }}</td>
<td>{{ lodgingPrice.flatPrice }}</td>
<td>{{ lodgingPrice.season.minimumStay }}</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</section><!-- end section -->
<script type="text/javascript" data-cookieconsent="necessary">
checkDates = function(date) {
formatted = date.format('DD.MM.YYYY');
reservationDays = {{ reservationDays|json_encode|raw }}
return reservationDays.indexOf(formatted) > -1;
};
checkCustom = function(date) {
customDays = {{ classByDays|json_encode|raw }};
formatted = date.format('DD.MM.YYYY');
if(customDays[formatted] != undefined){
return customDays[formatted];
}
};
$(document).ready(function() {
var currentDate = moment().format("DD.MM.YYYY");
var startDate = $('#appbundle_feworeservation_fromDate').val();
var endDate = $('#appbundle_feworeservation_toDate').val();
var maxDate = "{{ lastSeason.toDate|date('d-m-y') }}";
$('#fewo_booking_request_datepicker').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: true,
singleDatePicker: false,
alwaysShowCalendars: true,
"startDate": startDate,
"endDate": endDate,
allowInput: true,
}, 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
$checkinInput = $('#appbundle_feworeservation_fromDate');
$checkoutInput = $('#appbundle_feworeservation_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);
*/
});
$('#appbundle_feworeservation_fromDate, #appbundle_feworeservation_toDate').on('show.daterangepicker', function(ev, picker) {
console.log(picker.startDate.format('YYYY-MM-DD'));
console.log(picker.endDate.format('YYYY-MM-DD'));
});
});
</script>
{% endblock body %}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,183 @@
<header class="header fixedheader setbg sticky">
<div class="topbar">
<div class="container-fluid">
<div class="pull-right">
<ul class="topbar-drops list-inline">
<li class="nohover visible-xs visible-sm"> {{ getContextBySlug('uhrzeit-header') }} Uhr
</li>
<li class="nohover"><i class="fa fa-phone"></i> {{ getContextBySlug('telefon-header') }}</li>
<li>
<a href="/kontakt" title="Kontakt"><i class="fa fa-envelope"></i> <span class="hidden-xs">Kontakt</span></a>
</li>
<li>
<a href="/ueber-uns" title="Über uns">
<i class="fa fa-users"></i> <span class="hidden-xs">Über uns</span>
</a>
</li>
</ul>
</div>
</div><!-- end container -->
</div><!-- end topbar -->
<div class="menu-container">
<div class="container-fluid">
<div class="menu-wrapper">
<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">
<li itemprop="name">
<a href="/" title="Kulturreisen" itemprop="">Kulturreisen</a>
</li>
<li itemprop="name">
<a href="/ferienwohnungen" title="Usedom Ferienwohnungen" itemprop="">
Usedom Ferienwohnungen
</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>
<ul class="dropdown-menu" role="menu">
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/jugendreisen" title="Jugendreisen">
Jugendreisen
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reiseversicherung" title="Reiseversicherung">
Reiseversicherung
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisefuehrer" title="Reiseführer">
Reiseführer
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisemagazin" title="Reisemagazin">
Reisemagazin
</a>
</li>
</ul>
</li>
</ul><!-- end navbar-left -->
</div><!-- end navbar-callopse -->
<div class="navbar-header">
<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>
<div id="brand" class="navbar-brand">
<a href="/"><img src="{{ asset('images/wlogo.png') }}" alt="Stern Tours"></a>
</div>
</div><!-- end navbar-header -->
<div id="navbar-collapse_1" class="navbar-right">
<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>{{ getContextBySlug('uhrzeit-header')|replace({'|': "Uhr<br>"})|raw }} Uhr</span>
</div>
</div><!-- end navbar-callopse -->
</div><!-- end navbar-inner -->
<div class="clearfix"></div>
<hr class="hidden-xs">
<div id="header" class="sticky clearfix">
<!-- TOP NAV -->
<header id="topNav">
<div class="container-fluid">
<div class="navbar-collapse nav-main-collapse collapse submenu-dark">
<nav class="nav-main">
<ul id="topMain" class="nav nav-pills nav-main">
<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">
<a href="/ferienwohnungen" title="Usedom Ferienwohnungen" itemprop="">
Usedom Ferienwohnungen
</a>
</li>
{% 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': ''}) }} Reisen
</a>
<ul class="dropdown-menu">
<li class="first" role="menuitem" itemprop="name">
<a itemprop="url" href="{{ nav_page.urlPath }}"
title="{{ nav_page.title }}">
{{ nav_page.title }}
</a>
</li>
{% for childnav_page in nav_page.children %}
{# @var childnav_page \AppBundle\Entity\Page #}
<li role="menuitem" itemprop="name">
<a itemprop="url" href="{{ childnav_page.urlPath }}"
title="{{ childnav_page.title }}"
>
{{ childnav_page.title }}
</a>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
<li role="menuitem" itemprop="name" class="hidden visible-xs">
<a itemprop="url" href="/jugendreisen" title="Jugendreisen">
Jugendreisen
</a>
</li>
<li class="dropdown hidden visible-xs">
<a class="dropdown-toggle" href="#" title="Reiseninformationen">
Reiseninformationen
</a>
<ul class="dropdown-menu">
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reiseversicherung"
title="Reiseversicherung">
Reiseversicherung
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisefuehrer" title="Reiseführer">
Reiseführer
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisemagazin" title="Reisemagazin">
Reisemagazin
</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</div>
</header>
<!-- /Top Nav -->
</div>
</nav><!-- end navigation -->
</div><!-- menu wrapper -->
</div><!-- end container -->
</div><!-- end menu-container -->
</header><!-- end header -->

View file

@ -0,0 +1,131 @@
<header class="header fixedheader setbg sticky">
<div class="topbar">
<div class="container">
<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="/kontakt" title=""><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"
>
<i class="fa fa-comments"></i> <span class="hidden-xs">Chat</span>
</a>
</li>
<li>
<a href="/ueber-uns" title="Über uns">
<i class="fa fa-users"></i> <span class="hidden-xs">Über uns</span>
</a>
</li>
</ul>
</div>
</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">
<div class="navbar-inner">
<div id="navbar-collapse" class="navbar-left navbar-collapse collapse clearfix">
<ul class="nav navbar-nav">
<li itemprop="name">
<a href="/" title="Kulturreisen" itemprop="">Kulturreisen</a>
</li>
<li itemprop="name">
<a href="/ferienwohnungen" title="Usedom Ferienwohnungen" itemprop="">
Usedom Ferienwohnungen
</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>
<ul class="dropdown-menu" role="menu">
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/jugendreisen" title="Jugendreisen">
Jugendreisen
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reiseversicherung" title="Reiseversicherung">
Reiseversicherung
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisefuehrer" title="Reiseführer">
Reiseführer
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisemagazin" title="Reisemagazin">
Reisemagazin
</a>
</li>
</ul>
</li>
</ul><!-- end navbar-left -->
</div><!-- end navbar-callopse -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<i class="icon-menu27"></i>
</button>
<div id="brand" class="navbar-brand">
<a href="/"><img src="{{ asset('images/wlogo.png') }}" alt="Stern Tours"></a>
</div>
</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>
<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>
</div><!-- end navbar-callopse -->
</div><!-- end navbar-inner -->
<div class="clearfix"></div>
<hr>
<div class="navbar-subnavi">
<div id="navbar-collapse_2" class="navbar-left navbar-collapse collapse clearfix subnavi">
<ul class="nav navbar-nav">
{% for nav_page in nav_pages if nav_page.country is not empty %}
{# @var nav_page \AppBundle\Entity\Page #}
<li class="dropdown nav-first-li" itemprop="name">
<a href="{{ nav_page.urlPath }}" title="{{ nav_page.title }}"
class="dropdown-toggle nav-first-a" data-toggle="dropdown"
>
{{ nav_page.title|replace({'Reisen': ''}) }}<span class="hidden-md hidden-sm">Reisen</span>
</a>
<ul class="dropdown-menu" role="menu">
<li class="first" role="menuitem" itemprop="name">
<a itemprop="url" href="{{ nav_page.urlPath }}" title="{{ nav_page.title }}">
{{ nav_page.title }}
</a>
</li>
{% for childnav_page in nav_page.children %}
{# @var childnav_page \AppBundle\Entity\Page #}
<li role="menuitem" itemprop="name">
<a itemprop="url" href="{{ childnav_page.urlPath }}"
title="{{ childnav_page.title }}"
>
{{ childnav_page.title }}
</a>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul><!-- end navbar-right -->
</div><!-- end navbar-callopse -->
</div>
</nav><!-- end navigation -->
</div><!-- menu wrapper -->
</div><!-- end container -->
</div><!-- end menu-container -->
</header><!-- end header -->

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,78 @@
{% if(isPossible) %}
<table class="st-booking-table">
<tbody>
<tr>
<td class="st-position-price-col">
Datum:
</td>
<td class="st-position-name-col">
{{ fewo_booking_request.fromDate|date }} - {{ fewo_booking_request.toDate|date }}
</td>
</tr>
<tr>
<td colspan="2"><hr style="margin-top: 0; margin-bottom: 0"></td>
</tr>
{% for season, values in priceResult.season %}
<tr>
<td class="st-position-price-col">
Saison:
</td>
<td class="st-position-name-col">
{{ season }}
</td>
</tr>
<tr>
<td class="st-position-price-col">
Mindestbelegung:
</td>
<td class="st-position-name-col">
{{ values.minimumStay }} {{ values.minimumStay < 2 ? 'Nacht' : 'Nächte' }}
</td>
</tr>
<tr>
<td class="st-position-price-col">
+ {{ values.price|number_format(2) }} €
</td>
<td class="st-position-name-col">
{{ values.numberDays }} {{ values.numberDays < 2 ? 'Nacht' : 'Nächte' }} x {{ values.perNight|number_format(2) }} €
</td>
</tr>
<tr>
<td colspan="2"><hr style="margin-top: 0; margin-bottom: 0"></td>
</tr>
{% endfor %}
<tr>
<td class="st-position-price-col">
+ {{ priceResult.flatPrice|number_format(2) }} €
</td>
<td class="st-position-name-col">
Service-Gebühr
</td>
</tr>
<tr>
<td class="st-position-price-col">
+ {{ priceResult.deposit|number_format(2) }} €
</td>
<td class="st-position-name-col">
Kaution
</td>
</tr>
<tr class="st-total-tr">
<td class="st-position-price-col">
<span class="st-total-price">= {{ priceResult.total_price|number_format(2) }} €</span>
</td>
<td class="st-position-name-col">Miete inkl. Kaution</td>
</tr>
</tbody>
</table>
{% else %}
Leider ist der gewünschter Zeitraum ist nicht buchbar.<br>
Bitte ändern Sie das Datum, rote Felder sind bereits gebucht.
{% endif %}

View file

@ -11,7 +11,7 @@
<label for="{{ form.vars.id }}">
{{ insurance.name }}
(<a href="#" data-toggle="modal" data-target="#st-insurance-{{ insurance.id }}-modal">Details</a>)
(<a href="#" data-toggle="modal" data-target="#st-insurance-{{ insurance.id }}-modal">Preisdetails</a>)
</label>
@ -35,7 +35,7 @@
</ul>
{% if insurance.insurancePdf != "" %}
<br>
<p><a href="/uploads/{{ insurance.insurancePdf }} " target="_blank"> Informationsblatt zur Versicherung <i class="fa fa-file-pdf-o"></i></a> </p>
<p><a href="/_uploads/{{ insurance.insurancePdf }} " target="_blank"> Informationsblatt zur Versicherung <i class="fa fa-file-pdf-o"></i></a> </p>
{% endif %}
</div>
@ -49,16 +49,19 @@
{% block body %}
<h3>Leistungen & Preisliste</h3>
<ul class="c1 c1b">
{#
<ul class="c1 c1b">
{% for item in insurance.included|split('\n') %}
<li>{{ item }}</li>
{% endfor %}
</ul>
#}
<table class="table">
<thead>
<tr>
<td>Reisepreis bis</td>
<td>je Person</td>
<td>je Person (bis 65 Jahren)</td>
<td>je Person (ab 66 Jahren)</td>
</tr>
</thead>
<tbody>
@ -68,10 +71,17 @@
<td>
{% if insurance_price.price > 0 %}
{{ insurance_price.price|number_format(2) }} €
{% else %}
{% elseif insurance_price.percent > 0 %}
{{ insurance_price.percent|number_format }} % vom Reisepreis
{% endif %}
</td>
<td>
{% if insurance_price.priceOld > 0 %}
{{ insurance_price.priceOld|number_format(2) }} €
{% elseif insurance_price.percentOld > 0 %}
{{ insurance_price.percentOld|number_format }} % vom Reisepreis
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>

View file

@ -0,0 +1,45 @@
<table class="st-booking-table">
<tbody>
{% for summary_entry in summary %}
<tr>
<td class="st-position-price-col" style="min-width: 120px;">
{% if(summary_entry.value != "!") %}
{{ summary_entry.value|number_format(2) }} €
{% endif %}
</td>
<td class="st-position-name-col">
{{ summary_entry.label|raw }}
</td>
</tr>
{% endfor %}
<tr class="st-total-tr">
<td class="st-position-price-col" style="min-width: 120px;">
<span class="st-total-price">= {{ total_price|number_format(2) }} €</span>
</td>
<td class="st-position-name-col">Gesamtpreis der Reise</td>
</tr>
<tr class="">
<td class="st-position-price-col" style="min-width: 120px;">
<span class="st-deposit-price">{{ booking_price_info.deposit_total|number_format(2) }} €</span>
</td>
<td class="st-position-name-col">Anzahlung (ist sofort fällig)</td>
</tr>
{% if( booking_price_info.totalInsurance > 0) %}
<tr class="">
<td class="st-position-price-col" style="min-width: 120px;">
<span class="st-deposit-price">{{ booking_price_info.totalInsurance|number_format(2) }} €</span>
</td>
<td class="st-position-name-col">Versicherung (ist sofort fällig)</td>
</tr>
{% endif %}
<tr class="">
<td class="st-position-price-col" style="min-width: 120px;">
<span class="st-final-price">{{ booking_price_info.final_payment|number_format(2) }} €</span>
</td>
<td class="st-position-name-col">Restzahlung ({{ booking_price_info.final_payment_date_str}})</td>
</tr>
</tbody>
</table>

View file

@ -0,0 +1,20 @@
{% if breadcrumb_entries is not empty %}
<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 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>
<meta itemprop="position" content="{{ loop.index0 + 2 }}">
</li>
{% endfor %}
</ol>
</div>
{% endif %}

View file

@ -0,0 +1,57 @@
<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">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><i class="fa fa-times"></i></span>
</button>
<h4 class="modal-title text-left">Abflugorte / Zuschläge</h4>
</div>
<div class="modal-body">
<table class="table table-modal">
<thead>
<tr>
<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 style="text-align: left">
{% if departure.flightTime is defined %}
{% 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 %}
{% 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,10 @@
<style>
.modal-content .wrapper-nav-tabs {
display: none;
}
</style>
<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

@ -0,0 +1,106 @@
<section class="info-bar">
<div class="container">
<div class="row">
<div class="col-md-3 col-sm-6">
<i class="fa fa-phone-square text-success"></i>
<h3><a href="tel:030 - 700 94 100">030 - 700 94 100</a></h3>
<p>{% if(content.available.phone.active) %}
<span class="text-success">erreichbar</span>
{% else %}
erreichbar
{% endif %}
{{ content.available.phone.content }}</p>
</div>
<div class="col-md-3 col-sm-6">
<i class="fa fa-envelope text-success"></i>
<h3><a href="mailto:stern@sterntours.de">stern@sterntours.de</a></h3>
<p>schreiben Sie uns jederzeit</p>
</div>
<div class="col-md-3 col-sm-6">
<i class="fa fa-envelope-open text-success"></i>
<h3><a href="/kontakt">Kontaktformular</a></h3>
<p>oder nutzen Sie einfach unser:</p>
</div>
<div class="col-md-3 col-sm-6">
<i class="fa fa-users text-success"></i>
<h3><a href="/ueber-uns" title="Über uns">Über uns</a></h3>
<p>Erfahren Sie mehr über unser Reisebüro.</p>
</div>
</div>
</div>
</section>
<footer class="footer clearfix">
<div class="container">
<div class="row">
<div class="col-md-5 col-sm-6 col-xs-12">
<p class="hl4">Ihre Vorteile bei STERN TOURS</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_1998.png') }}" alt="Stern Tours seit 1998">
<ul class="c4">
<li>Spezialist seit 1998</li>
<li>Top Service</li>
<li>Riesen Auswahl</li>
<li>Individuelle Beratung</li>
</ul>
</div><!-- end col -->
<div class="col-md-7 col-sm-6 col-xs-12">
<div class="row">
<div class="col-md-6 col-xs-12" style="margin-bottom: 1rem;">
<p class="hl4">Reiseversicherung</p>
{% 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">
{% endimage %}
<p class="hl4">Sicherheit</p>
{% 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;">
{% endimage %}
</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 class="clearfix padding-bottom"></div>
</div><!-- end container -->
</footer><!-- end copyrights -->
<div class="copyrights clearfix" style="padding-bottom:270px;">
<div class="container">
<div class="row">
<div class="col-md-4 text-left">
<p>STERN TOURS © {{ 'now'|date('Y') }}</p>
</div><!-- end col -->
<div class="col-md-8 text-right">
<div class="link-footer">
<a href="/impressum" title="Impressum">Impressum</a> |
<a href="/arb" title="ARB">ARB</a> |
<a href="/datenschutz" title="Datenschutzerklärung">Datenschutzerklärung</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 -->
</div><!-- end container -->
</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

@ -0,0 +1,314 @@
<div id="topBar" class="">
<div class="container-fluid">
{% if content.info.office_important_note_active == 1 %}
<ul class="top-links block">
<li class="icon">
<a class="dropdown-toggle no-text-underline" data-toggle="dropdown" data-hover="dropdown" href="#"><i class="fa fa-info"></i></a>
<div class="dropdown-menu dropdown-menu-left dropdown-menu-infos">
<div class="dropdown-menu-header">
<span><i class="fa fa-info"></i> aktuelle Infos</span>
</div>
<div class="dropdown-menu-body">
{{ content.info.office_important_note }}
</div>
</div>
</li>
<li style="overflow: hidden;width: 100%;">
<div id="marquee" class="marquee"><span> {{ content.info.office_important_note }}</span></div>
</li>
</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;
{% if(content.available.phone.active) %}
<span class="text-success">erreichbar</span>
{% else %}
erreichbar
{% endif %}
{{ content.available.phone.content }}
<i class="fa fa-caret-collapse"></i>
</a>
<!-- ab Montag um 09:00 Uhr -->
<!-- bis xxx Uhr -->
<div class="dropdown-menu-infos collapse" id="collapseTopPhone">
<div class="dropdown-menu-body">
<p><a href="tel:030 - 700 94 100" class="btn btn-secondary btn-sm btn-block text-center"><i class="fa fa-phone-square text-success" ></i> 030 - 700 94 100</a></p>
<hr>
<div class="badge badge-default btn-block">
{% if(content.available.phone.active) %}
<span class="text-success"><i class="fa fa-check-circle fa-lg"></i></span> Wir sind zur Zeit telefonisch zu erreichen.
{% else %}
<span class="text-danger"><i class="fa fa-times-circle fa-lg"></i></span> Wir sind zur Zeit telefonisch nicht zu erreichen.
{% endif %}
</div>
<table class="table table-condensed table-vertical-middle">
{% for key, val in phone %}
<tr>
<td class="text-left" style="width: 50%">{{ val.day }} <span class="text-muted pull-right"> {{ val.date }}</span></td>
{% if val.active == 0 %}
<td colspan="3">geschlossen</td>
{% else %}
<td>{{ val.from }}</td><td>-</td><td>{{ val.to }}</td>
{% endif %}
</tr>
{% endfor %}
</table>
</div>
</div>
</li>
<li>
<a class="dropdown-toggle no-text-underline collapsed" data-toggle="collapse" href="#collapseTopLocal" role="button" aria-expanded="false" aria-controls="collapseTopLocal">
<i class="fa fa-clock-o"></i> Reisebüro
{% if(content.available.local.active) %}
<span class="text-success">geöffnet</span> &bull;
{% else %}
<span class="text-danger">geschlossen</span> &bull;
{% endif %}
{{ content.available.local.content }}
<i class="fa fa-caret-collapse"></i>
</a>
<div class="dropdown-menu-infos collapse" id="collapseTopLocal">
<div class="dropdown-menu-body">
<div class="badge badge-default btn-block">
{% if(content.available.local.active) %}
<span class="text-success"><i class="fa fa-check-circle fa-lg"></i></span> Unsere Büro ist aktuell geöffnet.
{% else %}
<span class="text-danger"><i class="fa fa-times-circle fa-lg"></i></span> Unsere Büro ist aktuell geschlossen.
{% endif %}
</div>
<table class="table table-condensed table-vertical-middle">
{% for key, val in local %}
<tr>
<td class="text-left" style="width: 50%">{{ val.day }} <span class="text-muted pull-right"> {{ val.date }}</span></td>
{% if val.active == 0 %}
<td colspan="3">geschlossen</td>
{% else %}
<td>{{ val.from }}</td><td>-</td><td>{{ val.to }}</td>
{% endif %}
</tr>
{% endfor %}
</table>
</div>
</div>
</li>
<li>
<a class="dropdown-toggle no-text-underline collapsed" data-toggle="collapse" href="#collapseTopContact" role="button" aria-expanded="false" aria-controls="collapseTopContact"><i class="fa fa-envelope"></i> Kontakt &bull; Formular &bull; Terminvereinbarung <i class="fa fa-caret-collapse"></i></a>
<div class="dropdown-menu-infos collapse" id="collapseTopContact">
<div class="dropdown-menu-body">
{{ content.info.office_appointment | raw }}
</div>
</div>
</li>
</ul>
</div>
</div>
<div id="header" class="sticky clearfix">
<!-- TOP NAV -->
<header id="topNav">
<div class="container-fluid">
<!-- Mobile Menu Button -->
<button class="btn btn-mobile" data-toggle="collapse" data-target=".nav-main-collapse">
<i class="fa fa-bars"></i> Menü
</button>
<button class="btn btn-primary btn-mobile-info myanimated my_fadein">
<i class="fa fa-info"></i>
</button>
<!-- Logo -->
<a class="logo" href="/">
<img src="{{ asset('images/wlogo.png') }}" alt="Stern Tours">
</a>
<div class="navbar-collapse nav-main-collapse collapse">
<nav class="nav-main">
<ul class="topMain nav nav-pills nav-main md-pull-left">
<li class=" active"><!-- HOME -->
<a href="/" title="Kulturreisen" itemprop="">
<i class="fa fa-home fa-lg"></i> <span class="hidden-md hidden-lg">Kulturreisen</span>
</a>
</li>
{% for nav_page in nav_pages if nav_page.country is not empty %}
{% if nav_page.showInNavi == 1 %}
{# @var nav_page \AppBundle\Entity\Page #}
<li class="dropdown">
<a class="dropdown-toggle" href="{{ nav_page.urlPath }}">
<i class="fa fa-star"></i> {{ nav_page.title|replace({'Reisen': ''}) }} <span class="hidden-md hidden-lg">Reisen</span>
</a>
<ul class="dropdown-menu">
<li>
<h4><i class="fa fa-star"></i> <a href="{{ nav_page.urlPath }}" title="{{ nav_page.title }}">
{{ nav_page.title|replace({'Reisen': ''}) }} Reisen
</a></h4>
</li>
{% for childnav_page in nav_page.children %}
{# @var childnav_page \AppBundle\Entity\Page #}
{% if(childnav_page.beforeTitle == "Infos") %}
<li>
<h4><i class="fa fa-info-circle"></i> &nbsp;Infos</h4>
</li>
{% endif %}
<li role="menuitem" itemprop="name">
<a itemprop="url" href="{{ childnav_page.urlPath }}" title="{{ childnav_page.title }}">
{{ childnav_page.titleShort }}
</a>
</li>
{% endfor %}
</ul>
</li>
{% endif %}
{% endfor %}
</ul>
<ul class="topMain nav nav-pills nav-main md-pull-right">
<li class="dropdown">
<a class="dropdown-toggle extra-margin-left" href="/ferienwohnungen">
<span class="text-usedom">USEDOM</span> <span class="hidden-md">Ferienwohnungen</span> <span class="hidden-sm hidden-lg hidden-xs">FeWo</span>
</a>
<ul class="dropdown-menu pull-right">
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/ferienwohnungen" title="Usedom Ferienwohnungen"><i class="isv-fewo"></i> Übersicht </a>
</li>
<li class="divider"></li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/ferienwohnungen/fewo1-strandstr29" title="FeWo 1 Strandstr. 29">
<i class="isv-fewo"></i> FeWo 1 Strandstr. 29
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/ferienwohnungen/fewo2-strandstr29" title="FeWo 2 Strandstr. 29">
<i class="isv-fewo"></i> FeWo 2 Strandstr. 29
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/ferienwohnungen/fewo3-strandstr29" title="FeWo 3 Strandstr. 29">
<i class="isv-fewo"></i> FeWo 3 Strandstr. 29
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/ferienwohnungen/fewo4-strandstr29" title="FeWo 4 Strandstr. 29">
<i class="isv-fewo"></i> FeWo 4 Strandstr. 29
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/ferienwohnungen/fewo1-triftweg10" title="FeWo 1 Triftweg 10">
<i class="isv-fewo"></i> FeWo 1 Triftweg 10
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/ferienwohnungen/fewo2-triftweg10" title="FeWo 2 Triftweg 10">
<i class="isv-fewo"></i> FeWo 2 Triftweg 10
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/ferienwohnungen/fewo3-triftweg10" title="FeWo 3 Triftweg 10">
<i class="isv-fewo"></i> FeWo 3 Triftweg 10
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/ferienwohnungen/fewo4-triftweg10" title="FeWo 4 Triftweg 10">
<i class="isv-fewo"></i> FeWo 4 Triftweg 10
</a>
</li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" href="#">
<i class="fa fa-ellipsis-v fa-lg"></i> <span class="hidden-md hidden-lg">mehr</span>
</a>
<ul class="dropdown-menu pull-right">
<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>
</li>
<li class="divider"></li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/ueber-uns" title="Über uns"><i class="fa fa-users"></i> Über uns</a>
</li>
<li class="divider"></li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reiseversicherung" title="Reiseversicherung">
<i class="fa fa-shield"></i> Reiseversicherung
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisefuehrer" title="Reiseführer">
<i class="fa fa-flag"></i> Reiseführer
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisemagazin" title="Reisemagazin">
<i class="fa fa-book"></i> Reisemagazin
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisenews" title="Reisenews">
<i class="fa fa-newspaper-o"></i> Reisenews
</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</div>
</header>
</div>

View file

@ -0,0 +1,130 @@
{% form_theme search_form 'default/form/theme.html.twig' %}
<section class="section fullscreen background start-slider">
<div class="absolute-section">
<div class="container-fluid">
<div class="row">
<div class="col-md-12 col-xs-12">
<div class="home-message text-center">
<div class="home-info-box">
<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">
</div>
<ul class="c4">
<li>Spezialist für Kulturreisen </li>
<li>Reiseexperte seit 1998</li>
<li>Beratung für individuelle Reisen</li>
</ul>
</div>
</div><!-- end homemessage -->
</div><!-- end col -->
</div><!-- end row -->
</div><!-- end container -->
</div>
<div id="myCarousel" class="carousel slide">
<!-- Indicators -->
<!-- Wrapper for Slides -->
<div class="carousel-inner">
<div class="item active">
<!-- Set the first background image using inline CSS below. -->
<div class="fill lozad" style="background-image:url(images/placeholder-image.png)" data-background-image="{{ image('bundles/app/images/travel/slider_aegypten.jpg').cropResize(1024).guess(70) }}"></div>
<noscript>
<div class="fill" style="background-image:url({{ image('bundles/app/images/travel/slider_aegypten.jpg').cropResize(1024).guess(70) }})"></div>
</noscript>
</div>
<div class="item">
<!-- Set the second background image using inline CSS below. -->
<div class="fill lozad" style="background-image:url(images/placeholder-image.png)" data-background-image=" {{ image('bundles/app/images/travel/slider_felsendom.jpg').cropResize(1024).guess(70) }}"></div>
<noscript>
<div class="fill" style="background-image:url({{ image('bundles/app/images/travel/slider_felsendom.jpg').cropResize(1024).guess(70) }})"></div>
</noscript>
</div>
<div class="item">
<!-- Set the third background image using inline CSS below. -->
<div class="fill lozad" style="background-image:url(images/placeholder-image.png)" data-background-image="{{ image('bundles/app/images/travel/slider_petra.jpg').cropResize(1024).guess(70) }}"></div>
<noscript>
<div class="fill" style="background-image:url({{ image('bundles/app/images/travel/slider_petra.jpg').cropResize(1024).guess(70) }})"></div>
</noscript>
</div>
</div>
</div>
</section><!-- end section -->
<section class="nopadding">
<div class="container-full absolute">
<div class="container-fluid container-form">
<div class="home-form">
<!-- Nav tabs
Hier bitte die Tabs über Parameter Steuer, wenn JS aus.
Paramter an URL hängen und dann den jeweiligen Tab auf active setzen.
-->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="tab_01">
<form class="bookform form-inline row st-search-form" style="margin-right: -5px; margin-left: -5px;" action="/suche" method="get">
<div class="form-group col-lg-2 col-md-12 col-sm-12 col-xs-12" style="padding-right: 5px;padding-left: 5px;">
<div class="head_tap">KULTURREISEN</div>
</div>
<div class="form-group col-lg-2 col-md-3 col-sm-6 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
{{ form_field_pho(search_form.b, 'Anreise') }}
</div>
<div class="form-group col-lg-2 col-md-3 col-sm-6 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
{{ form_field_pho(search_form.e, 'Abreise') }}
</div>
<div class="form-group col-lg-2 col-md-3 col-sm-6 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
{{ form_field_pho(search_form.c) }}
</div>
<div class="form-group col-lg-2 col-md-3 col-sm-6 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
<label class="sr-only" for="departure">Abfahrtsort</label>
<div class="dropdown form-bottom">
<select id="departure" class="selectpicker" data-style="btn-white" data-dropup-auto="false">
<option>Abfahrtsort beliebig</option>
<option>Basel</option>
<option>Berlin</option>
<option>Berlin Schönefeld</option>
<option>Berlin Tegel</option>
<option>Bonn</option>
<option>Bremen</option>
<option>Dresden</option>
<option>Düsseldorf</option>
<option>Eigenanreise</option>
<option>Erfurt</option>
<option>Frankfurt</option>
<option>Friedrichshafen</option>
<option>Genf</option>
<option>Graz</option>
<option>Hamburg</option>
<option>Hannover</option>
<option>Köln</option>
<option>Leipzig</option>
<option>Linz</option>
<option>München</option>
<option>Nürnberg</option>
<option>Saarbrücken</option>
<option>Salzburg</option>
<option>Stuttgart</option>
<option>Wien</option>
<option>Zürich</option>
</select>
</div>
</div>
<div class="form-group col-lg-2 col-md-12 col-sm-12 col-xs-12" style="padding-right: 5px;padding-left: 5px;">
<button type="submit" class="btn btn-primary btn-block text-center">suchen</button>
</div>
</form>
</div><!-- end tab-pane -->
</div><!-- end tab-content -->
</div><!-- end homeform -->
</div>
</div><!-- end container -->
</section><!-- end section -->

View file

@ -0,0 +1,197 @@
{% form_theme search_form 'default/form/theme.html.twig' %}
<style>
.dev-start-slider {
background: #e8dfd2;
overflow: hidden;
}
.dev-start-slider .dev-start-slider-frame {
position: relative;
z-index: 2;
max-width: 1280px;
margin: 0 auto;
overflow: hidden;
background: #e8dfd2;
}
.dev-start-slider .carousel-inner > .item {
overflow: hidden;
}
.dev-start-slider .dev-start-slider-blur {
position: absolute;
top: -24px;
right: -24px;
bottom: -24px;
left: -24px;
z-index: 1;
background-color: #e8dfd2;
background-position: center;
background-size: cover;
filter: blur(18px);
opacity: 0.65;
transform: scale(1.04);
}
.dev-start-slider .carousel-indicators {
right: auto;
bottom: 26px;
left: 50%;
z-index: 4;
width: 100%;
max-width: 1280px;
margin-left: 0;
padding-left: 24px;
text-align: left;
transform: translateX(-50%);
}
.dev-start-slider .carousel-indicators li,
.dev-start-slider .carousel-indicators .active {
width: auto;
height: auto;
margin: 0 6px 0 0;
padding: 5px 10px;
border: 1px solid rgba(255, 255, 255, 0.85);
border-radius: 14px;
background: rgba(0, 0, 0, 0.35);
color: #fff;
text-indent: 0;
line-height: 1;
}
.dev-start-slider .carousel-indicators .active {
background: #d89a13;
border-color: #d89a13;
}
.dev-start-slider .fill {
background-color: #e8dfd2;
background-position: center;
background-size: cover;
}
</style>
<section class="section fullscreen background start-slider dev-start-slider">
<div class="absolute-section">
<div class="container-fluid">
<div class="row">
<div class="col-md-12 col-xs-12">
<div class="home-message text-center">
<div class="home-info-box">
<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.png') }}" alt="Top Kundenservice" height="78">
</div>
<ul class="c4">
<li>Spezialist für Kulturreisen</li>
<li>Reiseexperte seit 1998</li>
<li>Beratung für individuelle Reisen</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="myCarousel" class="carousel slide">
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active">1/4</li>
<li data-target="#myCarousel" data-slide-to="1">2/4</li>
<li data-target="#myCarousel" data-slide-to="2">3/4</li>
<li data-target="#myCarousel" data-slide-to="3">4/4</li>
</ol>
<div class="carousel-inner">
<div class="item active">
<div class="dev-start-slider-blur" style="background-image:url({{ asset('img/slider/a1.jpg') }})"></div>
<div class="dev-start-slider-frame">
<div class="fill" style="background-image:url({{ asset('img/slider/a1.jpg') }})"></div>
<noscript>
<div class="fill" style="background-image:url({{ asset('img/slider/a1.jpg') }})"></div>
</noscript>
</div>
</div>
<div class="item">
<div class="dev-start-slider-blur" style="background-image:url({{ asset('img/slider/m1.jpg') }})"></div>
<div class="dev-start-slider-frame">
<div class="fill" style="background-image:url({{ asset('img/slider/m1.jpg') }})"></div>
<noscript>
<div class="fill" style="background-image:url({{ asset('img/slider/m1.jpg') }})"></div>
</noscript>
</div>
</div>
<div class="item">
<div class="dev-start-slider-blur" style="background-image:url({{ asset('img/slider/s1.jpg') }})"></div>
<div class="dev-start-slider-frame">
<div class="fill" style="background-image:url({{ asset('img/slider/s1.jpg') }})"></div>
<noscript>
<div class="fill" style="background-image:url({{ asset('img/slider/s1.jpg') }})"></div>
</noscript>
</div>
</div>
<div class="item">
<div class="dev-start-slider-blur" style="background-image:url({{ asset('img/slider/u1.jpg') }})"></div>
<div class="dev-start-slider-frame">
<div class="fill" style="background-image:url({{ asset('img/slider/u1.jpg') }})"></div>
<noscript>
<div class="fill" style="background-image:url({{ asset('img/slider/u1.jpg') }})"></div>
</noscript>
</div>
</div>
</div>
</div>
</section>
<section class="nopadding">
<div class="container-full absolute">
<div class="container-fluid container-form">
<div class="home-form">
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="tab_01">
<form class="bookform form-inline row st-search-form" style="margin-right: -5px; margin-left: -5px;" action="/suche" method="get">
<div class="form-group col-lg-2 col-md-2 col-sm-3 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
{{ form_field_pho(search_form.b, 'Anreise am') }}
</div>
<div class="form-group col-lg-2 col-md-2 col-sm-3 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
{{ form_field_pho(search_form.e, 'Abreise am') }}
</div>
<div class="form-group col-lg-2 col-md-3 col-sm-3 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
{{ form_field_pho(search_form.c) }}
</div>
<div class="form-group col-lg-2 col-md-3 col-sm-3 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
<label class="sr-only" for="departure">Abfahrtsort</label>
<div class="dropdown form-bottom">
<select id="departure" class="selectpicker" data-style="btn-white" data-dropup-auto="false">
<option>Abfahrtsort beliebig</option>
<option>Basel</option>
<option>Berlin</option>
<option>Berlin Schönefeld</option>
<option>Berlin Tegel</option>
<option>Bonn</option>
<option>Bremen</option>
<option>Dresden</option>
<option>Düsseldorf</option>
<option>Eigenanreise</option>
<option>Erfurt</option>
<option>Frankfurt</option>
<option>Friedrichshafen</option>
<option>Genf</option>
<option>Graz</option>
<option>Hamburg</option>
<option>Hannover</option>
<option>Köln</option>
<option>Leipzig</option>
<option>Linz</option>
<option>München</option>
<option>Nürnberg</option>
<option>Saarbrücken</option>
<option>Salzburg</option>
<option>Stuttgart</option>
<option>Wien</option>
<option>Zürich</option>
</select>
</div>
</div>
<div class="form-group col-lg-4 col-md-2 col-sm-12 col-xs-12" style="padding-right: 5px;padding-left: 5px;">
<button type="submit" class="btn btn-primary btn-block text-center"><i class="fa fa-search" style="font-size: 1.1em"></i> &nbsp;<span class="hidden-md">Kulturreisen</span> suchen</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</section>

View file

@ -0,0 +1,128 @@
{% form_theme search_form 'default/form/theme.html.twig' %}
<section class="section fullscreen background start-slider">
<div class="absolute-section">
<div class="container-fluid">
<div class="row">
<div class="col-md-12 col-xs-12">
<div class="home-message text-center">
<div class="home-info-box">
<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">
</div>
<ul class="c4">
<li>Spezialist für Kulturreisen </li>
<li>Reiseexperte seit 1998</li>
<li>Beratung für individuelle Reisen</li>
</ul>
</div>
</div><!-- end homemessage -->
</div><!-- end col -->
</div><!-- end row -->
</div><!-- end container -->
</div>
<div id="myCarousel" class="carousel slide">
<!-- Indicators -->
<!-- Wrapper for Slides -->
<div class="carousel-inner">
<div class="item active">
<!-- Set the first background image using inline CSS below. .cropResize(1024).guess(70) -->
<div class="fill lozad" style="background-image:url(images/placeholder-image.png)" data-background-image="{{ image('bundles/app/images/travel/slider_aegypten.jpg') }}"></div>
<noscript>
<div class="fill" style="background-image:url({{ image('bundles/app/images/travel/slider_aegypten.jpg').cropResize(1024).guess(70) }})"></div>
</noscript>
</div>
<div class="item">
<!-- Set the second background image using inline CSS below. .cropResize(1024).guess(70) -->
<div class="fill lozad" style="background-image:url(images/placeholder-image.png)" data-background-image=" {{ image('bundles/app/images/travel/slider_felsendom.jpg') }}"></div>
<noscript>
<div class="fill" style="background-image:url({{ image('bundles/app/images/travel/slider_felsendom.jpg').cropResize(1024).guess(70) }})"></div>
</noscript>
</div>
<div class="item">
<!-- Set the third background image using inline CSS below. .cropResize(1024).guess(70) -->
<div class="fill lozad" style="background-image:url(images/placeholder-image.png)" data-background-image="{{ image('bundles/app/images/travel/slider_petra.jpg') }}"></div>
<noscript>
<div class="fill" style="background-image:url({{ image('bundles/app/images/travel/slider_petra.jpg').cropResize(1024).guess(70) }})"></div>
</noscript>
</div>
</div>
</div>
</section><!-- end section -->
<section class="nopadding">
<div class="container-full absolute">
<div class="container-fluid container-form">
<div class="home-form">
<!-- Nav tabs
Hier bitte die Tabs über Parameter Steuer, wenn JS aus.
Paramter an URL hängen und dann den jeweiligen Tab auf active setzen.
-->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="tab_01">
<form class="bookform form-inline row st-search-form" style="margin-right: -5px; margin-left: -5px;" action="/suche" method="get">
<div class="form-group col-lg-2 col-md-2 col-sm-3 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
{{ form_field_pho(search_form.b, 'Anreise am') }}
</div>
<div class="form-group col-lg-2 col-md-2 col-sm-3 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
{{ form_field_pho(search_form.e, 'Abreise am') }}
</div>
<div class="form-group col-lg-2 col-md-3 col-sm-3 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
{{ form_field_pho(search_form.c) }}
</div>
<div class="form-group col-lg-2 col-md-3 col-sm-3 col-xs-6" style="padding-right: 5px;padding-left: 5px;">
<label class="sr-only" for="departure">Abfahrtsort</label>
<div class="dropdown form-bottom">
<select id="departure" class="selectpicker" data-style="btn-white" data-dropup-auto="false">
<option>Abfahrtsort beliebig</option>
<option>Basel</option>
<option>Berlin</option>
<option>Berlin Schönefeld</option>
<option>Berlin Tegel</option>
<option>Bonn</option>
<option>Bremen</option>
<option>Dresden</option>
<option>Düsseldorf</option>
<option>Eigenanreise</option>
<option>Erfurt</option>
<option>Frankfurt</option>
<option>Friedrichshafen</option>
<option>Genf</option>
<option>Graz</option>
<option>Hamburg</option>
<option>Hannover</option>
<option>Köln</option>
<option>Leipzig</option>
<option>Linz</option>
<option>München</option>
<option>Nürnberg</option>
<option>Saarbrücken</option>
<option>Salzburg</option>
<option>Stuttgart</option>
<option>Wien</option>
<option>Zürich</option>
</select>
</div>
</div>
<div class="form-group col-lg-4 col-md-2 col-sm-12 col-xs-12" style="padding-right: 5px;padding-left: 5px;">
<button type="submit" class="btn btn-primary btn-block text-center"><i class="fa fa-search" style="font-size: 1.1em"></i> &nbsp;<span class="hidden-md">Kulturreisen</span> suchen</button>
</div>
</form>
</div><!-- end tab-pane -->
</div><!-- end tab-content -->
</div><!-- end homeform -->
</div>
</div><!-- end container -->
</section><!-- end section -->

View file

@ -0,0 +1,42 @@
<div class="owl-fullwidth owl-carousel owl-theme">
{% for page in pages %}
<div class="owl-item-full">
<div class="travel-wrapper get-box-link">
<div class="item text-center">
<div class="item-img">
{% include 'default/components/pageBoxImage.html.twig' %}
{% if show_item_counter is defined and show_item_counter %}
<span class="homepage-card-counter">{{ loop.index }}/{{ pages|length }}</span>
{% endif %}
{% if new_page_ids is defined and page.id in new_page_ids %}
<span class="homepage-card-new-badge">Neu</span>
{% endif %}
</div>
<div class="box_mid">
<div class="hl5">{{ page.title }}</div>
{% if page.homepageCountryName is not empty %}
<div class="text-muted small">{{ page.homepageCountryName }}</div>
{% endif %}
{% if (page.boxBody ?? page.description) is not empty %}
<p>{{ page.boxBody|default(page.description) }}</p>
{% endif %}
{% if page.travelProgram is not empty and page.travelProgram.lowestPrice > 0 %}
<div class="price">
Für {{ page.travelProgram.lowestPrice|number_format }},- € p.P.
</div>
{% endif %}
</div>
<a class="item-button is-box-link dobble_line" href="{{ page.urlPath }}"><span>ansehen</span></a>
</div>
</div><!-- end travel-wrapper -->
</div>
{% endfor %}
</div>

View file

@ -0,0 +1,39 @@
{# @var child_page \AppBundle\Entity\Page #}
<div class="col-md-4 col-sm-6">
<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="cstar_left">{{ child_page.boxStar|raw }}</div>
{% endif %}
{% if child_page.travelProgram is not empty and child_page.travelProgram.lowestPrice > 0 %}
<div class="cprice">ab {{ child_page.travelProgram.lowestPrice|number_format }} € p.P.</div>
{% endif %}
{% 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>
<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>

View file

@ -0,0 +1,27 @@
{% if page.boxBody is not empty and page.boxBodyImage is defined and page.boxBodyImage %}
{% set image_url = page.boxBodyImage['thumb_url'] %}
{% set image_alt = page.boxBodyImage['title'] %}
<div class="img-background lozad" data-background-image="{{ image_url }}" style="background-image:url({{ asset('images/placeholder-image.png') }});"></div>
{% else %}
{% if page.boxImageUrl is not empty %}
{% set image_url = page.boxImageUrl %}
{% set image_alt = page.travelProgram.title|default(page.title) %}
{% elseif page.travelProgram is not empty and page.travelProgram.previewImage is not empty %}
{% 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 %}
{% elseif page.boxBody is not empty and page.boxBodyImage is defined 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

@ -0,0 +1,29 @@
{% 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">Zeitraum</a> -->
</div><!-- end title -->
<div class="searchwidget collapse in" id="search-widget">
<form action="/ferienwohnungen/ferienwohnungen-kalender" method="get" class="searchform row st-search-form">
<div class="form-group col-md-6">
<div class="required">
{{ form_field_pho(search_form.from, 'Anreise', {required: true}) }}
</div>
</div>
<div class="form-group col-md-6">
<div class="required">
{{ form_field_pho(search_form.to, 'Abreise', {required: true}) }}
</div>
</div>
<div class="form-group col-md-12 col-sm-12 col-xs-12 text-center form-bottom">
<button type="submit" class="btn btn-sm btn-primary btn-block">freie Ferienwohnungen suchen</button>
</div>
</form>
</div><!-- end boxwidget -->
</div>

View file

@ -0,0 +1,11 @@
<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,
travel_guide_sidebar_widget_block: block('travel_guide_sidebar_widget') ?? null,
travel_magazine_sidebar_widget_block: block('travel_magazine_sidebar_widget') ?? null,
offers_sidebar_widget_block: block('offers_sidebar_widget') ?? null,
feedbacks_sidebar_widget_block: block('feedbacks_sidebar_widget') ?? null,
} %}

View file

@ -0,0 +1,10 @@
<div id="show_sterntours_video_sidebar" class="widget clearfix">
<div class="widget-title">
<a class="collapse-widget collapsed {{ app.session.get('_open_side_about') }}" href="#about-widget" data-toggle="collapse" aria-expanded="true">{{ widget.name }}</a>
</div><!-- end title -->
<div class="boxwidget collapse {{ app.session.get('_open_side_about') }}" id="about-widget" aria-expanded="true">
{{ widget.html|raw }}
</div><!-- end boxwidget -->
</div><!-- end widget -->

View file

@ -0,0 +1,64 @@
{% if dev_home_sidebar_offer_pages is defined and dev_home_sidebar_offer_pages is not empty %}
{% include 'default/components/sidebar/pageSliderSidebarWidget.html.twig' with {
slider_title: dev_home_sidebar_offer_title|default('Aktuell planbare Reisen'),
target_widget: 'dev-home-offers-widget',
pages: dev_home_sidebar_offer_pages,
new_badge_active: dev_home_sidebar_new_badge_active|default(false),
show_item_counter: true,
new_page_ids: dev_home_sidebar_new_page_ids|default([])
} %}
{% endif %}
{% if dev_home_sidebar_news_pages is defined and dev_home_sidebar_news_pages is not empty %}
{% include 'default/components/sidebar/pageSliderSidebarWidget.html.twig' with {
slider_title: dev_home_sidebar_news_title|default('Reisenews'),
target_widget: 'dev-home-news-widget',
pages: dev_home_sidebar_news_pages,
show_item_counter: true
} %}
{% endif %}
<style>
#dev-home-usedom-widget .box_mid {
padding: 24px 20px;
background: #f6f1e8;
border: 1px solid #eadfcf;
border-radius: 4px;
}
#dev-home-usedom-widget .hl5 {
margin-bottom: 12px;
color: #d89a13;
}
#dev-home-usedom-widget p {
margin-bottom: 18px;
}
#dev-home-usedom-widget .dev-usedom-sidebar-button {
display: inline-block;
padding: 10px 24px;
border-radius: 3px;
background: #d89a13;
color: #fff;
font-weight: 600;
text-transform: uppercase;
}
#dev-home-usedom-widget .dev-usedom-sidebar-button:hover {
background: #b97f00;
color: #fff;
text-decoration: none;
}
</style>
<div class="widget clearfix hidden-xs">
<div class="widget-title">
<a class="collapse-widget collapsed" href="#dev-home-usedom-widget" data-toggle="collapse" aria-expanded="true">Ferienwohnungen Usedom</a>
</div>
<div class="boxwidget collapse" id="dev-home-usedom-widget" aria-expanded="true">
<div class="box_mid text-center">
<div class="hl5">Urlaub an der Ostsee</div>
<p>8 Ferienwohnungen in zwei Häusern auf Usedom - ideal als nahes, kurzfristig planbares zweites Standbein.</p>
<a class="dev-usedom-sidebar-button" href="/ferienwohnungen" title="Ferienwohnungen auf Usedom">
ansehen
</a>
</div>
</div>
</div>

View file

@ -0,0 +1,4 @@
{% if page is not empty and page.effectiveCountry is not empty and page.effectiveCountry.feedbackPage is not empty %}
{{ render(controller('AppBundle:Component:feedbacksSidebarWidget', {country: page.effectiveCountry ?? null, title:widget.name})) }}
{% endif %}

View file

@ -0,0 +1,64 @@
{% if api.navi is defined %}
<style>
#sidebar #side-navigation .side-menu li.lvl_deep_1 {
padding-left: 10px!important;
}
#sidebar #side-navigation .side-menu li.lvl_deep_2 {
padding-left: 30px!important;
}
#sidebar #side-navigation .side-menu li.lvl_deep_3 {
padding-left: 50px!important;
}
#sidebar #side-navigation .side-menu li.lvl_deep_4 {
padding-left: 70px!important;
}
</style>
<div class="widget clearfix">
<div class="widget-title">
<a class="collapse-widget collapsed" href="#side-navigation" data-toggle="collapse">{{ title }}</a>
</div><!-- end title -->
<nav id="side-navigation" class="navbar collapse" role="navigation" itemscope
itemtype="https://schema.org/SiteNavigationElement"
>
<ul class="side-menu" role="menu">
{% for nav in api.navi %}
{% if nav.lvl == 0 %}
<li {% if nav.active == 1 %} class ="active"{% endif %} role="menuitem" itemprop="name">
<a itemprop="url" href="{{ nav.url }}" title="{{ nav.name }}">
{{ nav.name }}
</a>
</li>
{% else %}
<li class="sub-menu-item{% if nav.active == 1 %} active{% endif %} lvl_deep_{{ nav.lvl }}" role="menuitem" itemprop="name">
<i class="fa fa-star"></i>
<a itemprop="url" href="{{ nav.url }}" title="{{ nav.name }}">
{{ nav.name }}
</a>
</li>
{% endif %}
{#
{% if nav.children is defined %}
{% for child in nav.children %}
<li class="sub-menu-item{% if child.active == 1 %} active{% endif %}" role="menuitem" itemprop="name">
<i class="fa fa-star"></i>
<a itemprop="url" href="{{ child.url }}" title="{{ child.name }}">
{{ child.name }}
</a>
</li>
{% endfor %}
{% endif %}
#}
{% endfor %}
</ul>
</nav>
</div>
{% endif %}

View file

@ -0,0 +1,8 @@
{% if page is not empty %}
{{ render(controller('AppBundle:Component:navSidebarWidget', {page: page, title:widget.name})) }}
{% endif %}
{% if api is not empty %}
{{ render(controller('AppBundle:Component:navSidebarApiWidget', {api: api, title:widget.name})) }}
{% endif %}

View file

@ -0,0 +1,30 @@
{% if nav_pages is defined %}
<div class="widget clearfix">
<div class="widget-title">
<a class="collapse-widget collapsed" href="#side-navigation" data-toggle="collapse">{{ slider_title }}</a>
</div><!-- end title -->
<nav id="side-navigation" class="navbar collapse" role="navigation" itemscope
itemtype="https://schema.org/SiteNavigationElement">
<ul class="side-menu" role="menu">
{% for nav_page in nav_pages %}
<li {% if nav_page == nav_open_node or nav_page == page %}class ="active"{% endif %} role="menuitem" itemprop="name">
<a itemprop="url" href="{{ nav_page.urlPath }}" title="{{ nav_page.title }}">
{{ nav_page.title }}
</a>
</li>
{% if nav_page == nav_open_node %}
{% for nav_child_page in nav_child_pages if nav_child_page.status == 1 and nav_child_page.showInNavi == 1 %}
<li class="sub-menu-item{% if nav_child_page == page %} active{% endif %}" role="menuitem" itemprop="name">
<i class="fa fa-star"></i>
<a itemprop="url" href="{{ nav_child_page.urlPath }}" title="{{ nav_child_page.title }}">
{{ nav_child_page.title }}
</a>
</li>
{% endfor %}
{% endif %}
{% endfor %}
</ul>
</nav>
</div>
{% endif %}

View file

@ -0,0 +1,4 @@
{{ render(controller('AppBundle:Component:newsSidebarWidget', {
title: widget.name,
limit: widget.configNewsLimit
})) }}

View file

@ -0,0 +1,2 @@
{{ render(controller('AppBundle:Component:offersSidebarWidget', {country: page.effectiveCountry ?? null, title:widget.name})) }}

View file

@ -0,0 +1,57 @@
{% if pages is not empty %}
<div class="widget clearfix hidden-xs">
<div class="widget-title">
<a class="collapse-widget collapsed" href="#{{ target_widget }}" data-toggle="collapse" aria-expanded="true">
{{ slider_title }}
{% if new_badge_active is defined and new_badge_active %}
<span class="label label-warning">Neu</span>
{% endif %}
</a>
</div><!-- end title -->
<div class="boxwidget collapse" id="{{ target_widget }}" aria-expanded="true">
<div class="box-slider">
{% for page in pages %}
<div class="travel-wrapper slide{{ loop.first ? ' active' }}">
<a href="{{ page.urlPath|default('javascript:void(0);') }}" class="item text-center">
<div class="item-img">
{% include 'default/components/pageBoxImage.html.twig' %}
{% if show_item_counter is defined and show_item_counter %}
<span class="homepage-card-counter">{{ loop.index }}/{{ pages|length }}</span>
{% endif %}
{% if new_page_ids is defined and page.id in new_page_ids %}
<span class="homepage-card-new-badge">Neu</span>
{% endif %}
</div>
<div class="box_mid">
{% 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>
{% endif %}
<div class="hl5">{{ page.title }} </div>
{% if page.homepageCountryName is not empty %}
<div class="text-muted small">{{ page.homepageCountryName }}</div>
{% endif %}
<p>{{ page.description }}</p>
{% if page.travelProgram is not empty and page.travelProgram.lowestPrice > 0 %}
<div class="price">
Für {{ page.travelProgram.lowestPrice|number_format }},- € p.P.
</div>
{% endif %}
</div>
</a>
</div><!-- end travel-wrapper -->
{% endfor %}
<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-next">weiter</a>
</div>
</div>
</div>
</div><!-- end widget -->
{% endif %}

View file

@ -0,0 +1,17 @@
{% if search_form is defined %}
{{ include('default/components/sidebar/searchSidebarWidgetInner.html.twig') }}
{# #WORKAROUND Overriding this block doesn't work, probably due to a Symfony bug, see ttSearch.html.twig #}
{% elseif tt_search_form is defined %}
{{ include('default/components/sidebar/ttSearchSidebarWidget.html.twig') }}
{# END WORKAROUND #}
{% elseif page is defined and page is not empty %}
{# #HACK Dont display the search in FEWO #}
{% if page.title != 'Ferienwohnungen' %}
{{ render(controller('AppBundle:Component:searchSidebarWidget', {page:page, title:widget.name})) }}
{% endif %}
{% elseif api is defined and api is not empty %}
{{ render(controller('AppBundle:Component:searchSidebarApiWidget', {api:api, title:widget.name})) }}
{% endif %}

View file

@ -0,0 +1,24 @@
{% form_theme search_form 'default/form/theme.html.twig' %}
<div class="widget clearfix">
<div class="widget-title">
<a class="collapse-widget collapsed {{ app.session.get('_open_side_search') }}" href="#search-widget" data-toggle="collapse">Suche</a>
</div><!-- end title -->
<div class="searchwidget collapse {{ app.session.get('_open_side_search') }}" id="search-widget">
<form action="/suche" method="get" class="searchform row st-search-form">
<div class="form-group col-md-12">
{{ form_field_pho(search_form.c, 'Reiseziel') }}
</div>
<div class="form-group col-md-12">
<label for="b" style="display: none"></label>
{{ form_field_pho(search_form.b, 'Anreise') }}
</div>
<div class="form-group col-md-12 form-bottom">
<label for="e" style="display: none"></label>
{{ form_field_pho(search_form.e, 'Abreise') }}
</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

@ -0,0 +1,17 @@
{# @var page \AppBundle\Entity\Page #}
<div class="row">
<div class="col-sm-6 col-md-12">
{% for widget in widgets %}
{% if widget.component is defined %}
{% include 'default/components/sidebar/' ~ widget.component ~ '.html.twig' %}
{% if(loop.index == (loop_half|default((widgets|length / 2)|round(0, 'ceil'))) ) %}
</div>
<div class="col-sm-6 col-md-12">
{% endif %}
{% endif %}
{% endfor %}
</div>
<div class="col-sm-12">
<hr class="visible-sm visible-xs">
</div>
</div>

View file

@ -0,0 +1,27 @@
{% if slides is not empty %}
<div class="widget clearfix hidden-xs">
<div class="widget-title">
<a class="collapse-widget collapsed" href="#{{ target_widget }}" data-toggle="collapse" aria-expanded="true">{{ slider_title }}</a>
</div><!-- end title -->
<div class="boxwidget collapse" id="{{ target_widget }}" aria-expanded="true">
<div class="box-slider newswidget clearfix{{ theme|default('normal') == 'gray-box' ? ' gray-box' }}">
{% for slide in slides %}
<a href="{{ slide.urlPath|default('javascript:void(0);') }}" class="slide{{ loop.first ? ' active' }}">
<div class="hl5">{{ slide.title }}</div>
<p>{% if slide.boxBodyImage and slide.boxBodyImage.thumb_url is defined %}{{ slide.description }}{% else %}{{ slide.boxBody|default(slide.description) }}{% endif %}</p>
</a>
{% endfor %}
<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-next">weiter</a>
</div>
</div><!-- end newswidget -->
</div>
</div><!-- end widget -->
{% endif %}

View file

@ -0,0 +1,14 @@
<div class="widget clearfix hidden-xs">
<div class="widget-title">
<a class="collapse-widget collapsed" href="#top-widget" data-toggle="collapse" aria-expanded="true">{{ widget.name }}</a>
</div><!-- end title -->
<div class="boxwidget collapse" id="top-widget" aria-expanded="true">
{{ widget.html|raw }}
{% if show_seal_of_approval %}
<div class="boxwidget">
{% image '@AppBundle/Resources/public/images/guetesiegel_R_V.png' %}<img src="{{ asset_url }}"
alt="R+V Reiseversicherungen">{% endimage %}
</div><!-- end boxwidget -->
{% endif %}
</div><!-- end boxwidget -->
</div><!-- end widget -->

View file

@ -0,0 +1,3 @@
{% if page is not empty and page.effectiveCountry is not empty %}
{{ render(controller('AppBundle:Component:travelGuideSidebarWidget', {country: page.effectiveCountry, title:widget.name})) }}
{% endif %}

View file

@ -0,0 +1,3 @@
{% if page is not empty and page.effectiveCountry is not empty %}
{{ render(controller('AppBundle:Component:travelMagazineSidebarWidget', {country: page.effectiveCountry, title:widget.name})) }}
{% endif %}

View file

@ -0,0 +1,15 @@
{% form_theme tt_search_form 'default/form/theme.html.twig' %}
<div style="border: 1px solid #d7d7d7; padding: 15px 10px 0px 10px;">
<form action="/tt-suche" method="get" class="bookform form-inline st-tt-search-form">
<div class="form-group row">
<div class="col-lg-3 col-md-3 col-sm-6 col-xs-6" style="margin-bottom: 12px">{{ form_field_pho(tt_search_form.termin, 'Früheste Anreise') }}</div>
<div class="col-lg-3 col-md-3 col-sm-6 col-xs-6" style="margin-bottom: 12px">{{ form_field_pho(tt_search_form.ruecktermin, 'Späteste Abreise') }}</div>
<div class="col-lg-2 col-md-3 col-sm-6 col-xs-6">{{ form_field_pho(tt_search_form.t) }}</div>
<div class="col-lg-2 col-md-3 col-sm-6 col-xs-6">{{ form_field_pho(tt_search_form.child0) }}</div>
<div class="col-lg-2 col-md-12 col-sm-12 col-xs-12 text-center">
<button type="submit" class="btn btn-primary btn-block" style="margin-bottom: 15px">suchen</button>
</div>
</div>
</form>
</div>

View file

@ -0,0 +1,251 @@
<div class="content-copy">
<div class="tab-content">
<h1>Datenschutzerklärung STERN TOURS GmbH</h1>
<h2>I. Name und Anschrift des Verantwortlichen</h2><p>
Der Verantwortliche im Sinne der geltenden datenschutzrechtlichen Bestimmungen ist:<br>
<strong>Firma STERN TOURS GmbH</strong><p>
Emser Str. 3<br>
10719 Berlin<br>
Vertreten d. d. Geschäftsführung Leoni Stern<br>
Telefon: +49 30 700 94 100<br>
Telefax: +49 30 700 94 1044<br>
E-Mail: <a href="mailto:stern@sterntours.de">stern@sterntours.de</a></p>
<h2>II. Allgemeines zur Datenverarbeitung</h2><p>
<strong>1. Umfang der Verarbeitung personenbezogener Daten</strong><br>
Wir erheben und verwenden personenbezogene Daten (nachfolgend pb. Daten) unserer Nutzer grundsätzlich nur, soweit dies zur Bereitstellung einer funktionsfähigen Website sowie unserer Inhalte und Leistungen erforderlich ist oder eine Einwilligung des Nutzers vorliegt. Eine Ausnahme gilt in solchen Fällen, in denen eine vorherige Einholung einer Einwilligung aus tatsächlichen Gründen nicht möglich und die Verarbeitung der Daten durch gesetzliche Vorschriften gestattet ist.</p>
<p><strong>2. Rechtsgrundlage für die Verarbeitung personenbezogener Daten</strong><br>
Nachfolgend finden Sie die gesetzlichen Grundlagen, die die DSGVO vorsieht: <br>
Bei der Verarbeitung pb. Daten</p>
<ul>
<li>auf Grundlage einer Einwilligung des Betroffenen ist Art. 6 Abs. 1 lit. a EU-Datenschutzgrundverordnung (DSGVO) Rechtsgrundlage;</li>
<li>die zur Erfüllung eines Vertrages mit der betroffenen Person dient, ist Art. 6 Abs. 1 lit. b DSGVO Rechtsgrundlage. </li>
<li>die zur Durchführung vorvertraglicher Maßnahmen erforderlich sind, ist Art. 6 Abs. 1 lit. b DSGVO Rechtsgrundlage;</li>
<li>die zur Erfüllung einer uns obliegenden rechtlichen Verpflichtung erforderlich ist, dient Art. 6 Abs. 1 lit. c DSGVO als Rechtsgrundlage;</li>
<li>die wegen lebenswichtiger Interessen der betroffenen Person oder anderer natürlicher Personen erforderlich sind, ist Art. 6 Abs. 1 lit. d DSGVO Rechtsgrundlage.</li>
<li>die zur Wahrung eines berechtigten Interesses unseres Unternehmens oder eines Dritten erforderlich sind und den Interessen, Grundrechte und Grundfreiheiten des Betroffenen überwiegen, dient Art. 6 Abs. 1 lit. f DSGVO als Rechtsgrundlage für die Verarbeitung. </li>
</ul>
<p><strong>3. Datenlöschung und Speicherdauer</strong><br>
Grundsätzlich löschen oder sperren wir pb. Daten, sobald der Zweck der Speicherung entfällt. Sind wir gesetzlich dazu verpflichtet Daten aufzubewahren, erfolgt eine Sperrung oder Löschung erst nach Ablauf der gesetzlichen Aufbewahrungspflicht, es sei denn, eine Erforderlichkeit zur weiteren Speicherung der Daten für einen Vertragsabschluss oder eine Vertragserfüllung besteht.</p>
<p><strong>4. Empfänger der erhobenen Daten</strong><br>
Empfänger der über die Internetseite erhoben Daten ist der genannte Verantwortliche. Darüber hinaus haben Auftragsverarbeiter (Webhoster, EDV-Betreuer, Softwarenanbieter) Zugriff auf die über die Internetseite erhobenen Daten. Die Einhaltung der gesetzlichen Regelungen ist insoweit jedoch durch Auftragsverarbeitungsverträge, die wir mit unseren in der EU ansässigen Auftragsverarbeitern schließen, gewährleistet. Darüber hinaus erfolgt eine Übermittlung Ihrer Daten an Dritte, derer wir uns zur Durchführung unserer Leistungen bedienen (Fluglinien, Beförderungsunternehmen, Hotels, Mietwagenunternehmen, Zahlungsdienstleister, Kreditinstitute, etc.). Je nach Reiseland können sich diese Empfänger auch in Drittländern, die das Datenschutzniveau der DSGVO nicht einhalten, befinden (bspw. Reisen in den Oman). </p>
<p><strong>5. Profiling / automatisierte Entscheidungsfindung</strong><br>
Zur Begründung und Durchführung der Geschäftsbeziehung nutzen wir grundsätzlich keine automatisierte Entscheidungsfindung gemäß Art. 22 EU-DSGVO. Sollten wir diese Verfahren in Einzelfällen einsetzen, werden Sie hierüber gesondert informiert, sofern dies gesetzlich vorgegeben ist.</p>
<h2>III. Bereitstellung der Website und Erstellung von Logfiles</h2><p>
<strong>1. Umfang der Datenverarbeitung</strong><br>
Bei jedem Aufruf unserer Internetseite erfasst unser System automatisiert Daten und Informationen vom Computersystem des aufrufenden Rechners.<br>
Folgende Daten werden hierbei erhoben:<br>
(1) Informationen über den Browsertyp und die verwendete Version<br>
(2) Das Betriebssystem des Nutzers<br>
(3) Die IP-Adresse des Nutzers<br>
(4) Datum und Uhrzeit des Zugriffs<br>
(5) Seite, von der aus zugegriffen wird <br>
(6) Name der Datei <br>
(7) Übertragene Datenmenge<br>
(8) Zugriffsstatus (Datei, übertragen, Datei nicht gefunden)</p>
<p>Die Daten werden ebenfalls in den Logfiles (Protokolldateien / Protokoll aller oder bestimmter Prozesse auf einem Computersystem) unseres Systems gespeichert. Nicht hiervon betroffen sind die IP-Adresse des Nutzers oder anderen Daten, die die Zuordnung zu einem Nutzer ermöglichen. Eine Speicherung dieser Daten zusammen mit anderen personenbezogenen Daten des Nutzers findet nicht statt.</p>
<p><strong>2. Rechtsgrundlage für die Datenverarbeitung</strong><br>
Rechtsgrundlage für die vorübergehende Speicherung der Daten und der Logfiles ist Art. 6 Abs. 1 lit. f DSGVO.</p>
<p><strong>3. Zweck der Datenverarbeitung</strong><br>
Die vorübergehende Speicherung der IP-Adresse durch das System ist notwendig, um eine Auslieferung der Website an den Rechner des Nutzers zu ermöglichen. Hierfür muss die IP-Adresse des Nutzers für die Dauer der Sitzung gespeichert bleiben.<br>
Die Speicherung in Logfiles erfolgt, um die Funktionsfähigkeit der Website sicherzustellen. Zudem dienen uns die Daten zur Optimierung der Website und zur Sicherstellung der Sicherheit unserer informationstechnischen Systeme.<br>
In diesen Zwecken liegt auch unser berechtigtes Interesse an der Datenverarbeitung nach Art. 6 Abs. 1 lit. f DSGVO. Da für uns ein Rückschluss von IP-Adresse auf eine natürliche Person nicht ohne weiteres möglich ist, es sich ferner bei einer IP-Adresse nicht um ein sensibles Datum handelt, diese umgehend nach Besuch der Internetseite gelöscht wird und wir diese benötigen, um unsere Internetseite anzubieten, überwiegt unser Interesse gegenüber dem Interesse des Betroffenen.</p>
<p><strong>4. Dauer der Speicherung</strong><br>
Die erhobenen Daten werden gelöscht, sobald sie für die Erreichung des Zweckes ihrer Erhebung (Bereitstellung der Internetseite) nicht mehr erforderlich sind. Im Falle der Speicherung der Daten in Logfiles ist dies nach spätestens sieben Tagen der Fall. </p>
<p><strong>5. Widerspruchs- und Beseitigungsmöglichkeit</strong><br>
Die Erfassung der Daten zur Bereitstellung der Website und die Speicherung der Daten in Logfiles ist für den Betrieb der Internetseite zwingend erforderlich. Es besteht folglich seitens des Nutzers keine Widerspruchsmöglichkeit.</p>
<h2>IV. Verwendung von Cookies</h2><p>
<strong>1. Beschreibung und Umfang der Datenverarbeitung</strong><br>
<script id="CookieDeclaration" src="https://consent.cookiebot.com/efbd59ab-4d18-411e-9bfa-47bbd4f9db28/cd.js" type="text/javascript" async></script>
<p><strong>2. Rechtsgrundlage für die Datenverarbeitung für Cookies</strong><br>
Die Rechtsgrundlage für die Verarbeitung personenbezogener Daten unter Verwendung von Cookies ist Art. 6 Abs. 1 lit. f DSGVO.</p>
<h2>V. E-Mail-Kontakt / Kontaktformular / Chat</h2><p>
<strong>1. Umfang der Datenverarbeitung</strong><br>
Auf unserer Internetseite ist eine Kontaktaufnahme über die bereitgestellte E-Mail-Adresse, ein Kontaktformular oder einen Live Chat möglich. Die mit der E-Mail oder dem Kontaktformular übermittelten personenbezogenen Daten des Nutzers werden von uns gespeichert. Zur Kontaktaufnahmen über das Kontaktformular genügt der Nachname und die E-Mailadresse, welches Pflichtfelder sind. Alle anderen im Kontaktformular angegebenen Felder sind freiwillige Felder. Der Chat kann grundsätzlich ohne Angabe von Daten gestartet werden, um mit uns in Kontakt zu treten. Sind wir offline, können Sie uns über den Chat eine Nachricht hinterlassen. Wir benötigen in diesem Fall allerdings zumindest Ihre E-Mailadresse sowie den Inhalt Ihrer Mitteilung, um auf Ihre Anfrage reagieren zu können. Die von Ihnen freiwillig mitgeteilten Daten werden ausschließlich für die Verarbeitung der Konversation oder Buchungsanfrage verwendet.<br>
Bei Nutzung des Kontaktformulars speichern wir zusätzlich aus Sicherheitsgründen noch Ihre IP-Adresse sowie Uhrzeit und Datum der Kontaktaufnahme. Bei Nutzung des Chats wird die IP-Adresse ausschließlich anonymisiert erhoben. </p>
<p><strong>2. Rechtsgrundlage für die Datenverarbeitung</strong><br>
Rechtsgrundlage für die Verarbeitung der Daten ist Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse). Zielt der Kontakt auf den Abschluss eines Vertrages ab, so ist zusätzliche Rechtsgrundlage für die Verarbeitung Art. 6 Abs. 1 lit. b DSGVO (zur Erfüllung eines Vertrags). </p>
<p><strong>3. Zweck der Datenverarbeitung</strong><br>
Die Verarbeitung der personenbezogenen Daten der Kontaktaufnahme dient uns allein zur Bearbeitung der Kontaktaufnahme und Ihrem Anliegen. Darin liegt auch unser berechtigtes Interesse. Da die Kontaktaufnahme von Ihnen ausgeht, Ihnen freisteht und wir zuvor darüber informieren, wie wir mit den übermittelten Daten umgehen, überwiegt insoweit unser berechtigtes Interesse gegenüber Ihrem Persönlichkeitsrecht. Die Speicherung von IP-Adresse und Absendezeitpunkt dient dem Schutz vor Missbrauch. Auch insoweit überwiegt unser berechtigtes Interesse. </p>
<p><strong>4. Dauer der Speicherung</strong><br>
Die Daten werden gelöscht, sobald sie für die Erreichung des Zweckes ihrer Erhebung nicht mehr erforderlich sind. Für die personenbezogenen Daten, die per E-Mail oder per Kontaktformular übersandt wurden, ist dies dann der Fall, wenn die jeweilige Konversation mit dem Nutzer beendet ist. Beendet ist die Konversation dann, wenn sich aus den Umständen entnehmen lässt, dass der betroffene Sachverhalt abschließend geklärt ist. Bei Nutzung der Chat-Funktion löschen wir die Daten unmittelbar nach erfolgreicher Kontaktaufnahme. Sollte eine Kontaktaufnahme scheitern, werden die Daten spätestens innerhalb von einer Woche die Daten gelöscht. </p>
<p><strong>5. Widerspruchs- und Beseitigungsmöglichkeit</strong><br>
Der Nutzer hat jederzeit die Möglichkeit der Speicherung seiner personenbezogenen Daten zu widersprechen. In einem solchen Fall kann die Konversation nicht fortgeführt werden. Der Widerspruch kann sowohl per E-Mail, per Post oder Telefax erfolgen. <br>
Alle personenbezogenen Daten, die im Zuge der Kontaktaufnahme gespeichert wurden, werden in diesem Fall von uns gelöscht. <br>
Soweit Daten im Rahmen eines Vertragsverhältnisses erhoben werden, besteht die Möglichkeit des Widerspruchs nicht, da diese zwingend zur Durchführung des Vertrags notwendig sind.</p>
<h2>VI. Reisebuchung </h2><p>
<strong>1. Umfang der Datenverarbeitung</strong><br>
Auf unserer Internetseite bieten wir Nutzern die Möglichkeit, sich unter Angabe personenbezogener Daten eine Reise zu buchen. Die Daten werden dabei in eine Eingabemaske eingegeben und an uns über eine Buchungssoftware übermittelt und gespeichert. Folgende Daten werden im Rahmen des Registrierungsprozesses erhoben:<br>
<u>Pflichtfelder:</u> <br>
(1) Anrede, Vor- u. Nachname, Straße, Hausnummer, PLZ, Ort, Land, Telefonnummer,
E-Mailadresse<br>
(2) Zimmertyp<br>
(3) Reiseteilnehmer (Geschlecht / Vor- u. Nachname/ Geburtsdatum) <br>
(4) IP-Adresse des Nutzers / Datum und Uhrzeit der Registrierung<br>
(5) Zahlungsart Kreditkartenzahlung: Kreditkartenhalter (Vor- und Nachname), Zahlung per* (Auswahl der Kreditkarte), Kreditkartennummer, CVC-Code, Gültig bis (Monat und Jahr)
<br>
<u>Freiwillige Angaben:</u> <br>
(6) Faxnummer<br>
(7) Ihre Mitteilung </p>
<p><strong>2. Rechtsgrundlage für die Datenverarbeitung</strong><br>
Rechtsgrundlagen für die Verarbeitung der Daten ist Art. 6 Abs. 1 lit. b DSGVO (vertragliche / vorvertragliche Durchführung), Ihre im Buchungsvorgang erteilte Einwilligung, Art. 6 Abs. 1 lit.a DSGVO, Art. 6 Abs. 1 lit. c DSGVO (gesetzliche Verpflichtung gemäß BGB, HGB, Fluggastdatengesetz, EU-Pauschalreiserichtlinie, AO, etc.) sowie Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse). </p>
<p><strong>3. Zweck der Datenverarbeitung</strong><br>
Die Datenverarbeitung ist zur Erfüllung des Reisevertrages und der damit verbundenen Leistungen zwingend notwendig. Dies ist Zweck der Datenverarbeitung. Unser berechtigtes Interesse an der jeweiligen Verarbeitung ergibt sich aus den nachfolgenden Zwecken:</p>
<ul>
<li>Unterstützung unserer Vertriebsorganisation bei der Reiseberatung und -betreuung und dem Vertrieb im Rahmen der Reisebetreuung</li>
<li>Weiterentwicklung von Reisedienstleistungen und Zusatzprodukten </li>
<li>Werbung, der Markt- und der Meinungsforschung </li>
<li>Geltendmachung rechtlicher Ansprüche und Verteidigung bei rechtlichen Streitigkeiten </li>
<li>Prävention und Aufklärung von Straftaten </li>
<li>Gewährleistung der IT-Sicherheit und Verfügbarkeit des IT-Betriebs</li>
</ul>
<p>Unser Interesse an der jeweiligen Verarbeitung ergibt sich aus den jeweiligen Zwecken und ist im Übrigen wirtschaftlicher Natur (effiziente Aufgabenerfüllung, Vertrieb, Vermeidung von Rechtsrisiken).</p>
<p><strong>4. Dauer der Speicherung</strong><br>
Die Daten werden gelöscht, sobald sie für die Erreichung des Zweckes ihrer Erhebung nicht mehr erforderlich sind, es sei denn wir sind gesetzlich zur Aufbewahrung der Daten, bspw. nach steuerrechtlichen Vorgaben oder aus anderen gesetzlichen Gründen verpflichtet. Die dort vorgegebenen Fristen zur Aufbewahrung bzw. Dokumentation betragen zwei bis maximal zehn Jahre. Schließlich beurteilt sich die Speicherdauer auch nach den gesetzlichen Verjährungsfristen, die zum Beispiel nach den §§ 195 ff. des Bürgerlichen Gesetzbuches (BGB) in der Regel drei Jahre. </p>
<p><strong>5. Datenübermittlung</strong><br>
Zur Durchführung der Reise ist es notwendig Ihre Daten an Auftragsverabeiter (IT-Dienstleister, Buchungssysteme, Druckdienstleistungen), die Ihre Daten weisungsgebunden für uns verarbeiten sowie Dritte (Fluglinien, Hotels, Autovermietungen, etc.) in der EU / dem EWR, aber je nach Reiseziel auch in Drittländer, in denen keinerlei Datenschutzabkommen gelten (Bsp. Oman, Israel etc.) weiterzugeben. Empfänger der Daten sind insoweit auch Fluglinien, Hotels, Mietwagenunternehmen, öffentliche Stellen und Institutionen (Finanzbehörden, Botschaften des Ziellandes) bei Vorliegen einer gesetzlichen oder behördlichen Verpflichtung (Aufbewahrungspflichten, VISA-Beschaffung, Einholen von Einreisebestimmungen) sowie sonstige Stellen, für die Sie uns Ihre Einwilligung zur Datenübermittlung erteilt haben.<br><br>
Im Hinblick auf Israel hat die EU-Kommission ein angemessenes Datenschutzniveau durch Angemessenheitsbeschluss 2011/61/EU festgestellt. Im Hinblick auf Reiseländer wie Ägypten, Jordanien, Oman, Usbekistan, Türkei und Marokko besteht kein angemessenes Datenschutzniveau. Wir weisen insoweit darauf hin, dass die Datenübermittlung in diese Länder mit Risiken verbunden ist. Buchen Sie eine Reise in eines der genannten Länder, ist die Übermittlung Ihrer personenbezogenen Daten für uns jedoch zwingend zur Vertragserfüllung notwendig. Wir sind daher gemäß Art. 49 Abs. 1 Unterabschnitt 1 lit. b) und c) berechtigt, Ihre Daten an unsere Dienstleister in dem jeweiligen Drittland zu übermitteln. <br><br>
Mit der Buchung erklären Sie sich insoweit mit der Datenverarbeitung einverstanden. </p>
<p><strong>6. Verpflichtung zur Bereitstellung der Daten</strong><br>
Sie sind im Rahmen einer Buchung verpflichtet, die zur Begründung, Durchführung und Beendigung der Geschäftsbeziehung notwendigen Daten zur Verfügung zu stellen. Sofern Sie die Daten nicht zur Verfügung stellen, können Sie über unsere Internetseite keine Reise buchen. </p>
<p><strong>7. Widerspruchs- und Beseitigungsmöglichkeit</strong><br>
Eine vorzeitige Löschung der Daten ist nur möglich, soweit nicht vertragliche oder gesetzliche Verpflichtungen einer Löschung entgegenstehen. Anderenfalls sind derartige Begehren per E-Mail oder Post an den Verantwortlichen zu richten. </p>
<h2>VII. a Verwendung von YouTube-Videos</h2><p>
Unsere Website nutzt die YouTube-Einbettungsfunktion zur Anzeige und Wiedergabe von Videos des Anbieters „YouTube“, der zu der Google LLC., 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA („Google“) gehört.<br><br>
Hierbei wird der erweiterte Datenschutzmodus verwendet, der nach Anbieterangaben eine Speicherung von Nutzerinformationen erst bei Wiedergabe des/der Videos in Gang setzt. Wird die Wiedergabe eingebetteter YouTube-Videos gestartet, setzt der Anbieter „YouTube“ Cookies ein, um Informationen über das Nutzerverhalten zu sammeln. Hinweisen von „YouTube“ zufolge dienen diese unter anderem dazu, Videostatistiken zu erfassen, die Nutzerfreundlichkeit zu verbessern und missbräuchliche Handlungsweisen zu unterbinden. Wenn Sie bei Google eingeloggt sind, werden Ihre Daten direkt Ihrem Konto zugeordnet, wenn Sie ein Video anklicken. Wenn Sie die Zuordnung mit Ihrem Profil bei YouTube nicht wünschen, müssen Sie sich vor Aktivierung des Buttons ausloggen. Google speichert Ihre Daten (selbst für nicht eingeloggte Nutzer) als Nutzungsprofile und wertet diese aus. <br>
Eine solche Auswertung erfolgt insbesondere gemäß Art. 6 Abs. 1 lit.f DSGVO auf Basis der berechtigten Interessen von Google an der Einblendung personalisierter Werbung, Marktforschung und/oder bedarfsgerechten Gestaltung seiner Website. <br>
Ihnen steht ein Widerspruchsrecht zu gegen die Bildung dieser Nutzerprofile, wobei Sie sich zur Ausübung dessen an YouTube richten müssen. <br>
Unabhängig von einer Wiedergabe der eingebetteten Videos wird bei jedem Aufruf dieser Website eine Verbindung zum Google-Netzwerk „DoubleClick“ aufgenommen, was ohne unseren Einfluss weitere Datenverarbeitungsvorgänge auslösen kann.<br>
Google LLC mit Sitz in den USA ist für das us-europäische Datenschutzübereinkommen „Privacy Shield“ zertifiziert, welches die Einhaltung des in der EU geltenden Datenschutzniveaus gewährleistet.<br>
Weitere Informationen zum Datenschutz bei „YouTube“ finden Sie in der Datenschutzerklärung des Anbieters unter: <a href="https://www.google.de/intl/de/policies/privacy" target="_blank">https://www.google.de/intl/de/policies/privacy</a></p>
<h2>VII. b Verwendung von Google reCaptcha</h2><p>
<p><strong>1. Umfang der Datenverarbeitung </strong><br>
Zum Schutz ihrer Aufträge per Internetformular verwendet den Dienst reCAPTCHA des Unternehmens Google Inc. (Google). Die Abfrage dient der Unterscheidung, ob die Eingabe durch einen Menschen oder missbräuchlich durch automatisierte, maschinelle Verarbeitung erfolgt. <br>
Die Abfrage schließt den Versand der IP-Adresse und ggf. weiterer von Google für den Dienst reCAPTCHA benötigter Daten an Google ein. Zu diesem Zweck wird Ihre Eingabe an Google übermittelt und dort weiter verwendet. Durch die Nutzung von reCaptcha erklären Sie sich damit einverstanden, dass die von Ihnen geleistete Erkennung in die Digitalisierung alter Werke einfließt. Im Falle der Aktivierung der IP-Anonymisierung auf dieser Webseite wird Ihre IP-Adresse von Google jedoch innerhalb von Mitgliedstaaten der Europäischen Union oder in anderen Vertragsstaaten des Abkommens über den Europäischen Wirtschaftsraum zuvor gekürzt. Nur in Ausnahmefällen wird die volle IP-Adresse an einen Server von Google in den USA übertragen und dort gekürzt. Im Auftrag des Betreibers dieser Website wird Google diese Informationen benutzen, um Ihre Nutzung dieses Dienstes auszuwerten. Die im Rahmen von reCaptcha von Ihrem Browser übermittelte IP-Adresse wird nicht mit anderen Daten von Google zusammengeführt. Für diese Daten gelten die abweichenden Datenschutzbestimmungen des Unternehmens Google. Weitere Informationen zu den Datenschutzrichtlinien von Google finden Sie unter:
<a href="https://www.google.com/intl/de/policies/privacy/" target="_blank">https://www.google.com/intl/de/policies/privacy/</a>.</p>
<p><strong>2. Rechtsgrundlage</strong><br>
Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO.</p>
<p><strong>3. Zweck der Verarbeitung</strong><br>
Die Verarbeitung dient der IT-Sicherheit und dem Schutz vor Missbrauch. Darin liegt auch unser berechtigtes Interesse. </p>
<h2>VIII. Rechte der betroffenen Person</h2><p>
Werden personenbezogene Daten von Ihnen verarbeitet, sind Sie Betroffener i.S.d. DSGVO und es stehen Ihnen folgende Rechte zu:</p>
<p><strong>1. Auskunftsrecht</strong><br>
Sie können von uns eine Bestätigung darüber verlangen, ob personenbezogene Daten, die Sie betreffen, von uns verarbeitet werden.
Liegt eine solche Verarbeitung vor, können Sie von uns über folgende Informationen Auskunft verlangen:<br>
(1) die Zwecke, zu denen die personenbezogenen Daten verarbeitet werden;<br>
(2) die Kategorien von personenbezogenen Daten, welche verarbeitet werden;<br>
(3) die Empfänger bzw. die Kategorien von Empfängern, gegenüber denen die Sie betreffenden personenbezogenen Daten offengelegt wurden oder noch offengelegt werden;<br>
(4) die geplante Dauer der Speicherung der Sie betreffenden personenbezogenen Daten oder, falls konkrete Angaben hierzu nicht möglich sind, Kriterien für die Festlegung der Speicherdauer;<br>
(5) das Bestehen eines Rechts auf Berichtigung oder Löschung der Sie betreffenden personenbezogenen Daten, eines Rechts auf Einschränkung der Verarbeitung durch den Verantwortlichen oder eines Widerspruchsrechts gegen diese Verarbeitung; <br>
(6) das Bestehen eines Beschwerderechts bei einer Aufsichtsbehörde;<br>
(7) alle verfügbaren Informationen über die Herkunft der Daten, wenn die personenbezogenen Daten nicht bei der betroffenen Person erhoben werden;<br>
(8) das Bestehen einer automatisierten Entscheidungsfindung einschließlich Profiling gemäß Art. 22 Abs. 1 und 4 DSGVO und – zumindest in diesen Fällen – aussagekräftige Informationen über die involvierte Logik sowie die Tragweite und die angestrebten Auswirkungen einer derartigen Verarbeitung für die betroffene Person.<br><br>
Ihnen steht das Recht zu, Auskunft darüber zu verlangen, ob die betreffenden personenbezogenen Daten in ein Drittland oder an eine internationale Organisation übermittelt werden. In diesem Zusammenhang können Sie verlangen, über die geeigneten Garantien gem. Art. 46 DSGVO im Zusammenhang mit der Übermittlung unterrichtet zu werden.</p>
<p><strong>2. Recht auf Berichtigung</strong><br>
Sie haben ein Recht auf Berichtigung und/oder Vervollständigung, sofern die verarbeiteten personenbezogenen Daten, die Sie betreffen, unrichtig oder unvollständig sind. Wir haben die Berichtigung dann unverzüglich vorzunehmen.</p>
<p><strong>3. Recht auf Einschränkung der Verarbeitung</strong><br>
Unter den folgenden Voraussetzungen können Sie die Einschränkung der Verarbeitung der Sie betreffenden personenbezogenen Daten verlangen:<br>
(1) wenn Sie die Richtigkeit der Sie betreffenden personenbezogenen für eine Dauer bestreiten, die es uns ermöglicht, die Richtigkeit der personenbezogenen Daten zu überprüfen;<br>
(2) die Verarbeitung durch uns unrechtmäßig ist, Sie die Löschung der personenbezogenen Daten durch uns ablehnen und stattdessen die Einschränkung der Nutzung der personenbezogenen Daten von uns verlangen;<br>
(3) wir die personenbezogenen Daten für die Zwecke der Verarbeitung nicht länger benötigen, Sie diese jedoch zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen benötigen, oder<br>
(4) wenn Sie Widerspruch gegen die Verarbeitung gemäß Art. 21 Abs. 1 DSGVO eingelegt haben und noch nicht feststeht, ob unsere berechtigten Gründe gegenüber Ihren Gründen überwiegen.<br><br>
Wurde die Verarbeitung der Sie betreffenden personenbezogenen Daten eingeschränkt, dürfen diese Daten – von ihrer Speicherung abgesehen – nur mit Ihrer Einwilligung oder zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen oder zum Schutz der Rechte einer anderen natürlichen oder juristischen Person oder aus Gründen eines wichtigen öffentlichen Interesses der Union oder eines Mitgliedstaats von uns verarbeitet werden.<br>
Wurde die Einschränkung der Verarbeitung nach den o.g. Voraussetzungen eingeschränkt, werden Sie von uns unterrichtet bevor die Einschränkung aufgehoben wird.</p>
<p><strong>4. Recht auf Löschung</strong><br>
<u>a) Löschungspflicht</u><br>
Sie können von uns verlangen, dass die Sie betreffenden personenbezogenen Daten unverzüglich gelöscht werden. Wir sind verpflichtet, diese Daten unverzüglich zu löschen, sofern einer der folgenden Gründe zutrifft:<br>
(1) Die Sie betreffenden personenbezogenen Daten sind für die Zwecke, für die sie erhoben oder auf sonstige Weise verarbeitet wurden, nicht mehr notwendig.<br>
(2) Sie widerrufen Ihre Einwilligung, auf die sich die Verarbeitung gem. Art. 6 Abs. 1 lit. a oder Art. 9 Abs. 2 lit. a DSGVO stützte, und es fehlt an einer anderweitigen Rechtsgrundlage für die Verarbeitung.<br>
(3) Sie legen gem. Art. 21 Abs. 1 DSGVO Widerspruch gegen die Verarbeitung ein und es liegen keine vorrangigen berechtigten Gründe für die Verarbeitung vor, oder Sie legen gem. Art. 21 Abs. 2 DSGVO Widerspruch gegen die Verarbeitung ein. <br>
(4) Die Sie betreffenden personenbezogenen Daten wurden unrechtmäßig verarbeitet. <br>
(5) Die Löschung der Sie betreffenden personenbezogenen Daten ist zur Erfüllung einer rechtlichen Verpflichtung nach dem Unionsrecht oder dem Recht der Mitgliedstaaten erforderlich, dem wir unterliegen.<br>
(6) Die Sie betreffenden personenbezogenen Daten wurden in Bezug auf angebotene Dienste der Informationsgesellschaft gemäß Art. 8 Abs. 1 DSGVO erhoben.</p>
<p><u>b) Information an Dritte</u><br>
Haben wir die Sie betreffenden personenbezogenen Daten öffentlich gemacht und sind wir gem. Art. 17 Abs. 1 DSGVO zu deren Löschung verpflichtet, so treffen wir angemessene Maßnahmen (auch technischer Art), um Verantwortliche, die die personenbezogenen Daten verarbeiten, darüber zu informieren, dass Sie als betroffene Person die Löschung aller Links zu diesen personenbezogenen Daten oder von Kopien oder Replikationen dieser personenbezogenen Daten verlangt haben. </p>
<p><u>c) Ausnahmen</u><br>
Das Recht auf Löschung besteht nicht, soweit die Verarbeitung erforderlich ist<br>
(1) zur Ausübung des Rechts auf freie Meinungsäußerung und Information;<br>
(2) zur Erfüllung einer rechtlichen Verpflichtung, die die Verarbeitung nach dem Recht der Union oder der Mitgliedstaaten, dem wir unterliegen erfordert, oder zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt, die uns ggfs. übertragen wurde;<br>
(3) aus Gründen des öffentlichen Interesses im Bereich der öffentlichen Gesundheit gemäß Art. 9 Abs. 2 lit. h und i sowie Art. 9 Abs. 3 DSGVO;<br>
(4) für im öffentlichen Interesse liegende Archivzwecke, wissenschaftliche oder historische Forschungszwecke oder für statistische Zwecke gem. Art. 89 Abs. 1 DSGVO, soweit das unter Abschnitt a) genannte Recht voraussichtlich die Verwirklichung der Ziele dieser Verarbeitung unmöglich macht oder ernsthaft beeinträchtigt, oder<br>
(5) zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen.</p>
<p><strong>5. Recht auf Unterrichtung</strong><br>
Haben Sie das Recht auf Berichtigung, Löschung oder Einschränkung der Verarbeitung uns gegenüber geltend gemacht, sind wir verpflichtet, allen Empfängern, denen Ihre personenbezogenen Daten offengelegt wurden, die Berichtigung, Löschung der Daten oder Einschränkung der Verarbeitung mitzuteilen, es sei denn, dies erweist sich als unmöglich oder ist für uns mit einem unverhältnismäßigen Aufwand verbunden.
Ihnen steht das Recht zu, von uns über diese Empfänger unterrichtet zu werden.</p>
<p><strong>6. Recht auf Datenübertragbarkeit</strong><br>
Sie haben das Recht, die Sie betreffenden personenbezogenen Daten von uns in einem strukturierten, gängigen und maschinenlesbaren Format zu erhalten. Außerdem haben Sie das Recht diese Daten einem anderen Verantwortlichen ohne Behinderung durch uns zu übermitteln, sofern<br>
(1) die Verarbeitung auf einer Einwilligung gem. Art. 6 Abs. 1 lit. a DSGVO oder Art. 9 Abs. 2 lit. a DSGVO oder auf einem Vertrag gem. Art. 6 Abs. 1 lit. b DSGVO beruht und<br>
(2) die Verarbeitung mithilfe automatisierter Verfahren erfolgt.<br>
Sie haben insoweit auch das Recht, dass wir Ihre Daten einem anderen Verantwortlichen übermitteln, soweit dies technisch machbar ist. Freiheiten und Rechte anderer Personen dürfen hierdurch jedoch nicht beeinträchtigt werden.<br>
Dieses Recht auf Datenübertragbarkeit gilt nicht für eine Verarbeitung personenbezogener Daten, die für die Wahrnehmung einer Aufgabe erforderlich ist, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt, die uns übertragen wurde.</p>
<p><strong>7. Widerspruchsrecht</strong><br>
Sie haben das Recht, aus Gründen, die sich aus ihrer besonderen Situation ergeben, jederzeit gegen die Verarbeitung der Sie betreffenden personenbezogenen Daten, die aufgrund von Art. 6 Abs. 1 lit. e oder f DSGVO erfolgt, Widerspruch einzulegen; dies gilt auch für ein auf diese Bestimmungen gestütztes Profiling. <br>
Wir verarbeiten die Sie betreffenden personenbezogenen Daten nicht mehr, es sei denn, wir können zwingende schutzwürdige Gründe für die Verarbeitung nachweisen, die Ihre Interessen, Rechte und Freiheiten überwiegen, oder die Verarbeitung dient der Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen.</p>
<p><strong>8. Recht auf Widerruf der datenschutzrechtlichen Einwilligungserklärung</strong><br>
Sie haben das Recht, datenschutzrechtliche Einwilligungserklärungen jederzeit zu widerrufen. Durch den Widerruf der Einwilligung wird die Rechtmäßigkeit der aufgrund der Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt.</p>
<p><strong>9. Recht auf Beschwerde bei einer Aufsichtsbehörde</strong><br>
Unbeschadet eines anderweitigen verwaltungsrechtlichen oder gerichtlichen Rechtsbehelfs steht Ihnen das Recht auf Beschwerde bei einer Aufsichtsbehörde, insbesondere in dem Mitgliedstaat ihres Aufenthaltsorts, ihres Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes, zu, wenn Sie der Ansicht sind, dass die Verarbeitung der Sie betreffenden personenbezogenen Daten gegen die DSGVO verstößt.
Die Aufsichtsbehörde, bei der die Beschwerde eingereicht wurde, unterrichtet Sie als Beschwerdeführer über den Stand und die Ergebnisse der Beschwerde einschließlich der Möglichkeit eines gerichtlichen Rechtsbehelfs nach Art. 78 DSGVO.</p>
<h2>IX. Herausgabe von zwingend benötigten pb. Daten</h2><p>
Im Rahmen unserer Geschäftsbeziehung benötigen wir von Ihnen zwingend folgende personenbezogenen Daten</p>
<ul>
<li>Daten, die für die Aufnahme und die Durchführung der Geschäftsbeziehung gebraucht werden</li>
<li>Daten, die für die Erfüllung der damit verbundenen vertraglichen Pflichten notwendig sind</li>
<li>Daten, zu deren Erhebung wir rechtlich verpflichtet sind.</li>
</ul>
<p>Ohne diese personenbezogenen Daten sind wir in der Regel nicht in der Lage, einen Vertrag mit Ihnen einzugehen oder auszuführen.</p>
<h2>X. Transportverschlüsselung</h2><p>
Um Ihre Daten vor unerwünschten Zugriffen zu schützen, setzen wir auf unseren Seiten ein Verschlüsselungsverfahren ein. Ihre Angaben werden dann von Ihrem Rechner zu unserem Server und umgekehrt über das Internet mittels einer 128 Bit TLS-Verschlüsselung (Transport Layer Security) (Hinweis, wir empfehlen mindestens eine TLS 1.2-Verschlüsselung) übertragen. Sie erkennen dies daran, dass auf der Statusleiste Ihres Browsers das Schloss-Symbol geschlossen ist und die Adresszeile mit https:// beginnt. Wir verzichten auf eine Verschlüsselung, wenn sie lediglich allgemein verfügbare Informationen mit uns austauschen.</p>
<p>Stand Mai 2018</p>
</div>
</div>

View file

@ -0,0 +1,12 @@
{# @var booking_request \AppBundle\Entity\BookingRequest #}
Sehr {{ booking_request.salutationDear }} {{ booking_request.salutationName }} {{ booking_request.firstName }} {{ booking_request.lastName }},
vielen Dank für Ihren verbindlichen Buchungsauftrag. Dieser wird schnellstmöglich bearbeitet und stellt noch keine{#
#} Reisebestätigung dar. Bitte prüfen Sie noch einmal Ihre Angaben und kontaktieren Sie uns bitte, wenn ein Fehler{#
#} enthalten ist.
{% include 'default/email/components/bookingSummary.txt.twig' %}
{% include 'default/email/components/signature.txt.twig' %}

View file

@ -0,0 +1,15 @@
FOLGENDE REISE WURDE GEBUCHT:
Anfrage Nr
{{ lead_id }}
URL
{{ travel_program_url }}
CRM
{{ crm_v1_url }}
{{ crm_v3_url }}
{% include 'default/email/components/bookingSummary.txt.twig' %}

View file

@ -0,0 +1,106 @@
{# @var booking_request \AppBundle\Entity\BookingRequest #}
=====================================================================================
Reisedaten:
=====================================================================================
Reiseprogramm: {{ travel_date.travelProgram.title }} ({{ travel_date.name }})
Kategorie: Standard
Reisezeitraum: {{ travel_date.start|date }} - {{ travel_date.end|date }}
Abfahrts-/Abflugort: {{ booking_request.departure.name }}
------------------------------------------------------------
{% for summary_entry in summary %}
{% if(summary_entry.value != "!") %}
{{ summary_entry.value|number_format(2) }} € : {{ summary_entry.label|striptags }}
{% else %}
{{ summary_entry.label|striptags }}
{% endif %}
{% endfor %}
------------------------------------------------------------
Gesamtpreis: {{ booking_price_info['total']|number_format(2) }} €
Anzahlung: {{ booking_price_info.deposit_total|number_format(2) }} € (ist sofort fällig)
{% if( booking_price_info.totalInsurance > 0) %}
Versicherung: {{ booking_price_info.totalInsurance|number_format(2) }} € (ist sofort fällig)
{% endif %}
{% if( booking_request.insuranceOffer == 1) %}
Versicherung: Nein, keine Reiseversicherung gewünscht
{% endif %}
{% if( booking_request.insuranceOffer == 2) %}
Versicherung: Ja, ich wünsche ein Reiseversicherungsangebot
{% endif %}
Restzahlung: {{ booking_price_info.final_payment|number_format(2) }} € (bis zum {{ booking_price_info.final_payment_date}})
=====================================================================================
Reiseleistungen:
=====================================================================================
Eingeschlossene Leistungen:
{% for travel_program_service in travel_date.travelProgram.included|split('\n') %}
[x] {{ travel_program_service|raw }}
{% endfor %}
Nicht eingeschlossene, zubuchbare Leistungen:
{% for travel_program_service in travel_date.travelProgram.excluded|split('\n') %}
[o] {{ travel_program_service|raw }}
{% endfor %}
=====================================================================================
{{ booking_request.salutationApplicant }}
=====================================================================================
Anrede: {{ booking_request.salutationName }}
Vorname: {{ booking_request.firstName }}
Nachname: {{ booking_request.lastName }}
Adresse: {{ booking_request.streetAddress }}
PLZ: {{ booking_request.zipCode }}
Ort: {{ booking_request.city }}
Telefonnummer: {{ booking_request.phone }}
Handynummer: {{ booking_request.mobile ?? 'keine Angabe' }}
E-Mail: {{ booking_request.email ?? 'keine Angabe' }}
=====================================================================================
Reiseteilnehmer:
Nr., Zimmertyp, Geschlecht, Vorname, Nachname, Geburtsdatum
=====================================================================================
{% set travelerIndex = 0 %}
{% set travelerCollection = booking_request.travelers|slice(0, (booking_request.travelerCount + booking_request.childrenCount)) %}
{% for room in booking_request.occupiedRooms %}
{% if(room.type == 1) %}
{{ loop.index }}. Einzelzimmer Erwachsener, {{ travelerCollection[travelerIndex].sexName }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{% 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) %}
{{ 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) }}
{% 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) %}
{{ 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+2].sexName }}, {{ travelerCollection[travelerIndex+2].firstName }}, {{ travelerCollection[travelerIndex+2].lastName -}}, {{ travelerCollection[travelerIndex+2].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName(nationalities) }}
{% 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 %}
{% endfor %}
=====================================================================================
Unverbindliche Anmerkungen:
=====================================================================================
{{ booking_request.notes ?? '-' }}

View file

@ -0,0 +1,43 @@
{# @var fewo_booking_request \AppBundle\Entity\FewoBookingRequest #}
{# @var fewo_lodging \AppBundle\Entity\FewoLodging #}
{# @var fewo_price \AppBundle\Entity\FewoPrice #}
=======================================================
Ihre Reisedaten
Reisezeitraum: {{ fewo_booking_request.fromDate|date }} - {{ fewo_booking_request.toDate|date }}
Ferienwohnung: {{ fewo_lodging.name }}
=======================================================
{% for season, values in priceResult.season %}
* Saison: {{ season }}
* Mindestbelegung: {{ values.minimumStay }} {{ values.minimumStay < 2 ? 'Nacht' : 'Nächte' }}
* Preis: {{ values.price|number_format(2) }} € / {{ values.numberDays }} {{ values.numberDays < 2 ? 'Nacht' : 'Nächte' }} x {{ values.perNight|number_format(2) }} €
---------------------------------------------------------------------------
{% endfor %}
* Service-Gebühr: + {{ priceResult.flatPrice|number_format(2) }} €
* Kaution: + {{ priceResult.deposit|number_format(2) }} €
---------------------------------------------------------------------------
* Gesamtpreis: {{ priceResult.total_price|number_format(2) }} €
=======================================================
{{ fewo_booking_request.salutationApplicant }}
* Anrede: {{ fewo_booking_request.salutationName }}
* Vorname: {{ fewo_booking_request.firstName }}
* Nachname: {{ fewo_booking_request.lastName }}
* Adresse: {{ fewo_booking_request.streetAddress }}
* PLZ: {{ fewo_booking_request.zipCode }}
* Ort: {{ fewo_booking_request.city }}
* Telefon: {{ fewo_booking_request.phone }}
* Handynummer: {{ fewo_booking_request.mobile ?? 'keine Angabe' }}
* E-Mail: {{ fewo_booking_request.email ?? 'keine Angabe' }}
=======================================================
Reiseteilnehmer
Erwachsene: {{ fewo_booking_request.travelerCountAdult }}
Kinder: {{ fewo_booking_request.travelerCountChild }}
Gesamt: {{ fewo_booking_request.travelerCount }}
=======================================================
Unverbindliche Anmerkungen:
{{ fewo_booking_request.notes ?? '-' }}
=======================================================

View file

@ -7,7 +7,7 @@ STERN TOURS GmbH
Emser Straße 3
10719 Berlin
Geschäftsführer: Thomas Stern
Geschäftsführung: Leoni Stern
E-Mail: stern@stern-tours.de
Tel.: 030 / 700 94 100
Fax: 030 / 700 94 1044

View file

@ -1,9 +1,13 @@
{# @var contact_request \AppBundle\Entity\ContactRequest
#}Neue Kontaktanfrage:
CRM: {{ crm_url }}
CRM
Anrede: {{ contact_request.salutation == 1 ? 'Herr' : 'Frau' }}
{{ crm_v1_url }}
{{ crm_v3_url }}
Anrede: {{ contact_request.salutationName }}
Vorname: {{ contact_request.firstName|default('-') }}
Nachname: {{ contact_request.lastName|default('-') }}
Adresse: {{ contact_request.streetAddress|default('-') }}
@ -24,4 +28,4 @@ Anzahl d. Reisenden: {{ contact_request.travelerCount|default('-') }}
Kommentar:
{{ contact_request.notes }}
{{ contact_request.notes }}

View file

@ -0,0 +1,14 @@
{# @var fewo_booking_request \AppBundle\Entity\FewoBookingRequest #}
Sehr {{ fewo_booking_request.salutationDear }} {{ fewo_booking_request.salutationName }} {{ fewo_booking_request.firstName }} {{ fewo_booking_request.lastName }},
vielen Dank für Ihren Auftrag, folgende Ferienwohnung wurde gemietet:
{% include 'default/email/components/fewoBookingSummary.txt.twig' %}
Bitte prüfen Sie noch einmal Ihre Angaben und kontaktieren Sie uns bitte, wenn ein Fehler enthalten ist.
{% include 'default/email/components/signature.txt.twig' %}

View file

@ -0,0 +1,9 @@
Folgende Wohnung wurde gemietet
URL:
{{ lodging_url }}
CRM:
{{ crm_url }}
{% include 'default/email/components/fewoBookingSummary.txt.twig' %}

View file

@ -0,0 +1,67 @@
{% use 'form_div_layout.html.twig' with
choice_widget_collapsed as base_choice_widget_collapsed,
checkbox_widget as base_checkbox_widget,
radio_widget as base_radio_widget
%}
{% use 'bootstrap_3_layout.html.twig' %}
{% block choice_widget_collapsed -%}
{% set attr = attr|merge({
class: (attr.class|default('') ~ ' selectpicker')|trim,
'data-style': attr['data-style']|default('btn-white'),
'data-dropout': attr['data-dropout']|default('false')
}) %}
<div class="dropdown" data-toggle="dropdown">
{{- block('base_choice_widget_collapsed') -}}
</div>
{%- endblock %}
{% block date_widget -%}
{% set range = 0 %}
{% for attrname, attrvalue in attr %}
{% if attrname == 'data-range' %}
{% set range = 1 %}
{% endif %}
{% endfor %}
{% if range == 1 -%}
{{- parent() -}}
{%- else -%}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' datepicker')|trim}) -%}
<div class="input-group">
<label for="{{ id }}" class="input-group-addon"><i class="fa fa-calendar"></i></label>
{{ parent() -}}
</div>
{%- endif -%}
{%- endblock %}
{% block st_plain_date_widget -%}
<div class="input-group">
{{- block('form_widget_simple') -}}
</div>
{%- endblock %}
{% block checkbox_widget -%}
{{- block('base_checkbox_widget') -}}
{%- endblock checkbox_widget %}
{% block radio_widget -%}
{{- block('base_radio_widget') -}}
{%- endblock radio_widget %}
{% block datalist_widget -%}
{% set attr = attr|merge({list: attr.list|default(id ~ '_list')}) -%}
{{ block('form_widget_simple') -}}
<datalist id="{{ id }}_list">
{% for choice in choices %}
<option value="{{ choice }}"></option>
{% endfor %}
</datalist>
{%- endblock datalist_widget %}
{% block form_label -%}
{%- if required -%}
{%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' st-required')|trim}) -%}
{%- endif -%}
{{- parent() -}}
{%- endblock form_label %}

View file

@ -0,0 +1,59 @@
{% extends 'base.html.twig' %}
{% block meta_description %}
<meta name="description" content="STERN TOURS Reisebüro ist auch Spezialist für Ägypten Reisen, Israel Reisen, Jordanien Reisen und Oman Reisen.">
{% endblock %}
{% block meta_keywords %}
<meta name="keywords" content="STERN TOURS, Reisebüro, Spezialist, Reiseveranstalter, Ägypten Urlaub, Israel Reisen, Jordanien Reise, Pauschalreisen">
{% endblock %}
{% block header2 %}
{% include 'default/components/home/slider.html.twig' %}
{% endblock %}
{% block breadcrumb %}{% endblock %}
{% block body %}
<div id="section_orders">
<h1>Unsere beliebtesten Kulturreisen</h1>
<section id="">
<div class="clearfix ">
{{ render(controller('AppBundle:Component:offersCarousel')) }}
</div>
<div class="clearfix">
<h2 class="h3 h3l">Alle Reisekategorien auf einem Blick</h2>
</div>
{% include 'default/components/multiPageBoxCarousel.html.twig' with {pages: country_pages} %}
</section><!-- end section -->
<section class="clearfix" id="">
<div class="content-copy">
<h1>STERN TOURS - Ihr Kulturreise-Spezialist aus Berlin für Ägypten, Israel, Jordanien, Marokko, Oman, Türkei, Iran, Uzbekistan</h1>
<p class="ft">Herzlich willkommen bei STERN TOURS, Ihrem Reiseveranstalter für Reisen zu den interessantesten Zielen Vorderasiens. Gehen Sie mit uns auf große Reise in den Orient, entdecken Sie die historischen Schätze der Antike und erkunden Sie bisher wenig bekannte Länder. Als Spezialist für Kultur-Reisen in den Nahen Osten bieten wir Ihnen seit 1998 Rundreisen und Studienreisen an, bei denen Sie die Highlights eines jeden Landes kennenlernen. In unserem Büro in Berlin-Wilmersdorf beraten wir Sie gern persönlich oder telefonisch eingehend über Ihr gewünschtes Reiseziel. Unsere Mitarbeiter kennen die Länder, in die unsere Kultur-Reisen führen, aus eigener Erfahrung. Die Tipps unserer Experten sind praxisorientiert und sorgen für eine Reise mit unvergesslichen Eindrücken. Wir klären Sie auf über Einreisebestimmungen und Vorschriften, sodass Sie sich sicher in jedem Land bewegen können. Stimmen Sie sich auf unseren Seiten mit zauberhaften Videos und Bildern auf das von Ihnen gewählte Reiseziel ein. Profitieren Sie bei Ihrer Reiseplanung von unserem umfangreichen Wissen und unserer langjährigen Erfahrung mit Kultur-Reisen zu den schönsten Orten des Orients. Erleben Sie ein Märchen aus Tausendundeine Nacht bei einem Reiseveranstalter, für den Ihr persönliches Wohl an erster Stelle steht.</p>
<h2 class="h3 h3l">Ägypten – Land der Pyramiden und Pharaonen</h2>
<p class="ft">Das Land am Nil gehört zu den interessantesten Ländern der Erde. Eine große Kultur hat hier einzigartige Baudenkmäler hinterlassen. Unsere Flussfahrten auf der großen Lebensader des Landes, dem Nil, führen Sie zu den bedeutendsten Sehenswürdigkeiten wie den Pyramiden, dem Tal der Könige und Luxor. Bewundern Sie bei einem Besuch im Ägyptischen Museum in Kairo die berühmte goldene Totenmaske des Tut-Ench-Amun und viele weitere Schätze, die von den Ausgräbern freigelegt wurden. Entdecken Sie auf Ihrer Rundreise den unglaublichen Reichtum dieses Landes, das einst die führende Kulturnation der alten Welt gewesen ist. Bestaunen Sie die Schätze der Pharaonen, wandeln Sie auf den Spuren der Archäologen und beschließen Sie Ihre Kultur-Reise durch Ägypten mit einem erholsamen Badeurlaub am Roten Meer. Hier finden Sie unsere <a href="/aegypten-reisen/aegypten-rundreisen" title="Ägypten Rundreisen">Ägypten Rundreisen</a></p>
<h2 class="h3 h3l">Israel – die Wiege der großen Religionen</h2>
<p class="ft">Erleben Sie das biblische Land, auf dem die drei großen Religionen Judentum, Islam und Christentum fußen. Religiöse Stätten gibt es in Israel an allen Ecken. Besuchen Sie die Orte Nazareth, Bethlehem und Jericho mit ihren einzigartigen Bauwerken. Durchqueren Sie die Negev-Wüste und das Tal des Jordan und entdecken Sie Kibbuze mit ihren blühenden Landschaften auf Ihrem Weg. Besteigen Sie den Ölberg und besuchen Sie die Klagemauer in Jerusalem, der Stadt, die Mittelpunkt aller drei Religionen ist. Entdecken Sie das moderne Israel, das sich in der Hauptstadt in Tea Aviv präsentiert. Unternehmen Sie einen Abstecher in die israelischen Hafenstädte Haifa und das wunderschöne Akko mit seiner zum Weltkulturerbe gehörenden Altstadt. Entspannen Sie sich nach Ihren aufregenden Reiseerlebnissen bei einem Bad im salzreichen Toten Meer oder genießen Sie einen sonnigen Badeurlaub am Roten Meer in Eilat. Hier finden Sie unsere <a href="/israel-reisen/israel-rundreisen" title="Israel Rundreisen">Israel Rundreisen</a></p>
<h2 class="h3 h3l">Jordanien – Wüstenflair und Felsenstädte</h2>
<p class="ft">Die Felsenstadt Petra mit dem eindrucksvollen Schatzhaus, Wadi Rum, Aqaba und die Hauptstadt Amman sind die Highlights einer Rundreise durch Jordanien. Auf eigene Faust erkunden Sie im Mietwagen die historischen Stätten des Landes. Auch wenn das Land nur klein ist, gibt es eine Fülle von historischen Sehenswürdigkeiten zu entdecken. Wüstenschlösser, Festungen und Burgen liegen auf Ihrem Weg. Besuchen Sie mit Amman eine der ältesten Städte, die schon immer bewohnt gewesen ist, und schwelgen Sie in den exotischen Düften der jordanischen Basare. Übernachten Sie dort, wo Lawrence von Arabien einst Geschichte machte – im Wadi Rum, das mit seinen roten Felssäulen ein einzigartiges Naturerlebnis bietet. Hier finden Sie unsere <a href="/jordanien-reisen/jordanien-rundreisen" title="Jordanien Rundreisen">Jordanien Rundreisen</a></p>
<h2 class="h3 h3l">Oman – Wüstenschlösser, Naturschauspiele und Badestrände</h2>
<p class="ft">Noch immer ein wenig geheimnisvoll scheint der Oman am Ostzipfel der Arabischen Halbinsel. Gehen Sie mit uns auf eine Entdeckungstour durch Wüsten, Gebirge und Regionen mit subtropischem Klima. In der Hauptstadt Maskat mit ihrer riesigen Moschee und dem historischen Souk zeigt sich, wie gut Altes und Modernes nebeneinander existieren können. Das Silber- und Kupferhandwerk ist in der alten Oasenstadt Nizwa zuhause. Hier dürfen Sie den Künstlern bei der Arbeit über die Schulter gucken. In Sur werden noch heute die Dhaus, die legendären Segelboote Omans, auf traditionelle Weise hergestellt. Erleben Sie auf einer Rundfahrt zum Jebel Sham eine Nacht in der Wüste mit einem spektakulären Sonnenuntergang hinter den Sanddünen. Beschließen Sie Ihre Reise in den märchenhaften Oman an der Küste mit ihren schneeweißen Badestränden und lassen Sie sich durch die spektakulären Unterwasserwelten im Arabischen Meer verzaubern. Hier finden Sie unsere <a href="/oman-reisen/oman-rundreisen" title="Oman Rundreisen">Oman Rundreisen</a></p>
<h2 class="h3 h3l">Iran – das Land der UNESCO Kulturschätze</h2>
<p class="ft">Auf 5.000 Jahre Geschichte blickt der Iran zurück. Das frühere Persien gehörte zu den Hochkulturen der Antike. Eine Rundreise durch den Iran ist ein ganz besonderes Erlebnis. Fast jeder der alten Orte gehört zum Weltkulturerbe der UNESCO. Machen Sie einen Abstecher in eine der ältesten Städte des Irans nach Yasd und in die heilige Stadt Ghom. Feuertempel, Moscheen, Mausoleen und Grabmäler finden Sie fast überall. Nicht zuletzt die historischen Paradiesgärten von Schiraz sind ein echtes Highlight. Und wenn Sie schon immer einmal wissen wollten, die die berühmten Perserteppiche entstehen – hier können Sie es mit eigenen Augen sehen. Hier finden Sie unsere <a href="/iran-reisen/iran-rundreisen" title="Iran Rundreisen">Iran Rundreisen</a></p>
<h2 class="h3 h3l">Usbekistan – entlang der Seidenstraße nach Samarkand</h2>
<p class="ft">Ein ganz junger Staat mit einer ganz alten Kultur – Uzbekistan wurde erst in den letzten Jahren von Kulturliebhabern entdeckt. Begeben Sie sich auf eine Reise in ein märchenhaftes Land. Entdecken Sie unzählige Moscheen und Medresen, die Sie mit ihren blauen Fliesen und goldenen Kuppeln verzaubern werden. Folgen Sie der alten Seidenstraße und den Spuren von Dschingis Khan. Oasenstädte wie aus dem Mittelalter lassen Sie glauben, dass Sie sich auf einer Zeitreise befinden. Flanieren Sie über Basare mit ihren reichen Auslagen an Früchten, allen voran den Melonen, für die Uzbekistan schon im Mittelalter berühmt war. Besuchen Sie die Märchenstadt Samarkand, ein einzigartiges Kleinod, das in der Antike eine ganz bedeutende Rolle spielte. Hier finden Sie unsere <a href="/usbekistan-reisen/usbekistan-rundreisen" title="Usbekistan Rundreisen">Usbekistan Rundreisen</a></p>
<h2 class="h3 h3l">Marokko – mehr als Casablanca und Marrakesch</h2>
<p class="ft">Bei Marokko denken Sie sicherlich an einen der schönsten Filme der Filmgeschichte: Casablanca. Doch nicht nur diesen berühmten Ort erleben Sie auf Ihrer Rundreise durch Marokko. Streifen Sie durch Tanger, die weiße Stadt, die schon von Weitem zu sehen ist. Entdecken Sie Marrakesch und seine Gärten, die zum Weltkulturerbe gehören. Ein besonderes Highlight ist die alte Königsstadt Fès. Sie ist nicht nur das geistige Zentrum des Landes, auch Handwerker können Sie hier bei der Arbeit beobachten. Unternehmen Sie Ausflüge in die marokkanische Wüste und genießen Sie einen unvergesslichen Aufenthalt in der spektakulären Wüstenlandschaft der Sahara.</p>
<h2 class="h3 h3l">Türkei – Land voller Sehenswürdigkeiten und Naturschönheiten</h2>
<p class="ft">Die Türkei gehört zu den beliebtesten Reisezielen. Doch abseits der großen Badestrände entdecken Sie auf Ihrer Rundreise ein Land, das voll ist von einmaligen kulturellen Schätzen. Eine der wichtigsten Städte der Türkei ist Istanbul. Das schönste Bauwerk der Metropole, die die beiden Kontinente Europa und Asien miteinander verbindet, ist die Hagia Sophia. Der große Kuppelbau, der einst religiösen Zwecken diente und heute ein Museum ist, ist ein Muss auf einer Türkei-Rundreise. Entdecken Sie die 5.000 Jahre alte Stadt Ephesus, in der einst der große Philosoph Heraklit geboren wurde. Besuchen Sie die große Städte der Türkei, in denen Antike und Moderne nebeneinanderstehen. Das große Land ist so reich an kulturellen und natürlichen Sehenswürdigkeiten, dass eine Rundreise nicht ausreichen wird, um auch nur einen Teil der Türkei kennenzulernen. Hier finden Sie unsere <a href="/tuerkei-reisen/tuerkei-rundreisen" title="Türkei Rundreisen">Türkei Rundreisen</a></p>
</div>
</section><!-- end section -->
</div>
{% endblock body %}

View file

@ -7,19 +7,6 @@
{% endblock %}
{% block canonical_tag %}{% if app.debug %}<!-- Die canonical URL wird für diese Seite bewusst nicht definiert, da sie vom Suchindex ausgeschlossen wurde (Siehe meta robots) -->{% endif %}{% endblock %}
{% block stylesheets %}
{{ parent() }}
{% stylesheets 'bundles/app/css/booking.css' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}"/>
{% endstylesheets %}
{% endblock %}
{% block javascripts %}
{{ parent() }}
{% javascripts '@AppBundle/Resources/public/js/booking.js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
{% block body %}
<section class="clearfix">
@ -35,8 +22,7 @@
<h2 style="margin-top:10px">{{ travel_program.title }}</h2>
<div id="booking_form" class="booking_form">
<div id="booking_form" class="booking_form" data-url="https://mein.sterntours.de/" data-travel_program_id="{{ travel_program.id}}" data-travel_date_start="{{ travel_date.start|date }}">
<form class="st-booking-form" method="post" data-toggle="validator">
@ -54,10 +40,6 @@
{% endif %}
{% endspaceless %}
{{ form_errors(form.email) }}
<div id="message"></div>
@ -79,7 +61,7 @@
</tr>
<tr>
<td>Reisezeitraum</td>
<td>{{ travel_date.start|date }} - {{ travel_date.end|date }} ({{ travel_date.name }})</td>
<td>{{ travel_date.start|date }} - {{ travel_date.end|date }} <br class="hidden visible-xs"> ({{ travel_date.name }})</td>
</tr>
<tr>
<td>{{ form_label(form.departure, 'Abflugort') }}</td>
@ -94,12 +76,26 @@
{# TODO folgendes evtl noch weiter verallgemeinern #}
{% set priceTypeIds = [] %}
{% set priceTypeChildIds = [] %}
{% set extraDays = 0 %}
{% for price in travel_date.prices %}
{% if(price.available == "1") %}
{% set priceTypeIds = priceTypeIds|merge([price.priceTypeId]) %}
{% if(price.priceChildren > 0) %}
{% set priceTypeChildIds = priceTypeChildIds|merge([price.priceTypeId]) %}
{% endif %}
{% if(price.extraPrice > 0) %}
{% set extraDays = 1 %}
{% endif %}
{% if(price.extraPriceComfort > 0) %}
{% set extraDays = 1 %}
{% endif %}
{% if(price.extraPriceChildren > 0) %}
{% set extraDays = 1 %}
{% endif %}
{% endif %}
{% endfor %}
@ -115,6 +111,7 @@
</td>
</tr>
{% if "1" in priceTypeChildIds %}
<tr>
{% else %}
@ -215,7 +212,41 @@
{% endif %}
</td>
</tr>
<tr style="display:">
{% if extraDays == 1 and travel_program.drafts.count() > 0 %}
<tr>
{% else %}
<tr style="display:none;">
{% endif %}
<td>Verlängerung buchen</td>
<td>
{% for country in travel_program.countries %}
<p>{{ country.textBefore }}</p>
{% endfor %}
{{ form_widget(form.extraBookingDaysBefore) }}
{{ form_errors(form.extraBookingDaysBefore) }}
<br>
{% for country in travel_program.countries %}
<p>{{ country.textAfter }}</p>
{% endfor %}
{{ form_widget(form.extraBookingDaysAfter) }}
{{ form_errors(form.extraBookingDaysAfter) }}
</td>
</tr>
<tr>
<td>Reiseversicherung</td>
<td>
{{ form_widget(form.insurance_offer) }}
{{ form_errors(form.insurance_offer) }}
</td>
</tr>
<tr style="display:none">
<td>Reiseversicherung</td>
<td>
<div class="radio">
@ -232,7 +263,6 @@
'insurance': form.insurance.vars.choices[insuranceForm.vars.value].data
} %}
{% endfor %}
{{ form_errors(form.insurance) }}
</td>
</tr>
@ -241,13 +271,11 @@
<td>
<p style="white-space: normal;">
<br>
STERN TOURS GmbH empfiehlt generell den Abschluss einer Reise-Rücktrittskosten-Versicherung und einer Auslands-Reisekrankenversicherung mit Rücktransport.
Im Anschluss der Buchung senden wir Ihnen diesbezüglich Informationen zu.
{{ getContextBySlug('reise-ruecktrittskosten-empfehlung')|raw }}
</p>
</td>
</tr>
</tbody>
</table>
</div>
@ -266,25 +294,21 @@
</div>
</div>
</div>
<p>
Die gewünschte Zahlungsart (Überweisung, Kreditkarten) stimmen wir mit Ihnen im Anschluss an Ihre Buchung ab.
{% if(travel_program.category.id != 1) %}
Abweichend von den Anzahlungsbedingungen Ziffer 2.1 gelten hier besondere Anzahlungsbedingungen wie folgt: Fluganteil 100 % und Landleistung 20%. Abweichend von den allgemeinen Stornobedingungen Ziffer 4.3a gelten hier besondere Stornobedingungen (Ziffer 4.3b) wie folgt: Fluganteil 100 % und Landleistung gemäß Ziffer 4.3a allgemeine Stornobedingungen.</p>
{% if(travel_program.paymentConditions != "") %}
{{ travel_program.paymentConditions|raw }}
{% else %}
{{ getContextBySlug('anzahlungsbedingungen') }}
{% endif %}
</p>
</div>
</div>
<div class="form-box">
<div class="">
<div class="col-md-12 col-sm-12 col-xs-12">
<h5>Flugdaten</h5>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="accordion-toggle-2">
<div class="panel-group" id="accordion_fd">
@ -293,36 +317,28 @@
</a>
<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>
{# travel_date.end|date #}
{# travel_date.end|date #}
{{ departure.flightTime[travel_date.startWeekday] }}
</div>
{% if departure.flightTime[travel_date.startWeekday] != "" %}
<div class="flight_times_ele" id="flight_time_{{ departure.id }}" style="display: none;">
<h3>Von {{ departure.name }}</h3>
{% for flightTime in departure.flightTime[travel_date.startWeekday]|split('\n') %}
{% if flightTime != "" %}
{{ flightTime|raw }}<br>
{% endif %}
{% endfor %}
</div>
{% endif %}
{% 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>
</div>
<div class="" id="yes_flight_time" style="display: none;">
<h3>Hinweis</h3>
<p>Flugzeiten können um 1 Std. variieren durch Sommer-/Winterzeit.</p>
<p>{{ getContextBySlug('keine-flugdaten') }}</p>
</div>
</div>
</div>
</div>
</div>
</ul>
</div><!-- accordion -->
</div>
</div>
@ -339,14 +355,31 @@
<ul class="c1">
{% for travel_program_date in travel_program_dates if travel_program_date.count < 1 %}
<li>
{{ travel_program_date.date }} : {{ travel_program_date.day|raw }}
{% if travel_program_date.night is defined %}
<br>Übernachtung : {{ travel_program_date['night']|raw }}
{% endif %}
</li>
{% endfor %}
<div id="extraDaysProgramBefore_show" style="display: none;">
<li>
<span id="extraDaysProgramBefore_date" data-org-date="{{ travel_program_date.date }}">{{ travel_program_date.date }}</span> : Reiseverlängerung vor der Reise - {{ travel_program_date.day|raw }}
{% if travel_program_date.night is defined %}
<br> {{ getContextBySlug('uebernachtung-reiseverlaengerung') }}
{% endif %}
</li>
<li>
{{ travel_program_date.date }} : Start {{ travel_program.title }}
{% if travel_program_date.night is defined %}
<br>Übernachtung : {{ travel_program_date['night']|raw }}
{% endif %}
</li>
</div>
<div id="extraDaysProgramBefore_hide">
<li>
{{ travel_program_date.date }} : {{ travel_program_date.day|raw }}
{% if travel_program_date.night is defined %}
<br>Übernachtung : {{ travel_program_date['night']|raw }}
{% endif %}
</li>
</div>
{% endfor %}
<div class="accordion-toggle-2">
<div class="panel-group" id="accordion_pd">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion_pd" href="#collapse_pd" aria-expanded="true">
@ -354,14 +387,33 @@
</a>
<div id="collapse_pd" class="panel-collapse collapse" aria-expanded="true" style="">
<div class="panel-body">
{% for travel_program_date in travel_program_dates if travel_program_date.count > 0 %}
<li>
{{ travel_program_date.date }} : {{ travel_program_date.day|raw }}
{% if travel_program_date.night is defined %}
<br>Übernachtung : {{ travel_program_date['night']|raw }}
{% endif %}
</li>
{% if travel_program_dates|length != travel_program_date.count +1 %}
<li>
{{ travel_program_date.date }} : {{ travel_program_date.day|raw }}
{% if travel_program_date.night is defined %}
<br>Übernachtung : {{ travel_program_date['night']|raw }}
{% endif %}
</li>
{% else %}
<div id="extraDaysProgramAfter_show" style="display: none;">
<li>
{{ travel_program_date.date }} : Ende {{ travel_program.title }}
<br>{{ getContextBySlug('uebernachtung-reiseverlaengerung') }}
</li>
<li>
<span id="extraDaysProgramAfter_date" data-org-date="{{ travel_program_date.date }}">{{ travel_program_date.date }}</span> : Reiseverlängerung - {{ travel_program_date.day|raw }}
</li>
</div>
<div id="extraDaysProgramAfter_hide">
<li>
{{ travel_program_date.date }} : {{ travel_program_date.day|raw }}
{% if travel_program_date.night is defined %}
<br>Übernachtung : {{ travel_program_date['night']|raw }}
{% endif %}
</li>
</div>
{% endif %}
{% endfor %}
</div>
@ -379,7 +431,6 @@
<div class="col-md-12 col-sm-12 col-xs-12">
<h5>Reiseleistungen</h5>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="accordion-toggle-2">
<div class="panel-group" id="accordion">
@ -426,7 +477,6 @@
</div>
<div class="form-box">
<div class="">
<div class="col-md-12 col-sm-12 col-xs-12">
@ -496,7 +546,7 @@
</div>
<div class="col-md-6 col-sm-6 col-xs-12">
{{ form_field_pho(form.fax, 'Fax (optional)') }}
{{ form_field_pho(form.mobile, 'Handynummer (Bitte angeben)') }}
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
@ -521,25 +571,26 @@
}
.form-box-small .form-control{
margin-bottom: 8px;
}
.form-box.form-box-small .st-travelers div.required:before {
margin-right: 20px;
right: 0px;
top: 0px;
}
</style>
<div class="form-box form-box-small">
<div class="">
<div class="col-md-12 col-sm-12 col-xs-12">
<h5>Reiseteilnehmer</h5>
<p>Bitte geben Sie Ihre Vornamen und Nachnamen in die beiden Felder "Vornamen" und "Nachnamen" ein, wie diese im maschinenlesbaren Teil in Ihrem Reisepass eingetragen sind.</p>
<p>{{ getContextBySlug('namen-reisepass') | raw }}</p>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="hidden">
{% for country in travel_program.countries %}
<input type="hidden" name="travel_program_countries_id[]" value="{{ country.id }}">
{% endfor %}
</div>
<div class="st-travelers">
{% set currentIndex = 0 %}
{% for room in form.rooms %}
@ -574,7 +625,7 @@
<div class="col-md-3 col-sm-12 col-xs-12">
<div class="form-group" style="margin-top:5px;">
<div class="form-group" style="margin-top:0px;">
<div class="">
{{ form_field_pho(traveler.sex, 'Geschlecht', {
required: false
@ -603,25 +654,23 @@
</div>
<div class="col-md-offset-3 col-md-4 col-sm-12 col-xs-12">
<div class="form-group" style="margin-top:5px;">
<div class=" nationality_select" data-toggle="#nationality_entry_{{ currentIndex }}">
<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="col-md-5 col-sm-12 col-xs-12">
<div class="form-group">
<div class="">
{{ form_field_pho(traveler.birthDate, 'Geburtsdatum') }}
{{ form_field_pho(traveler.birthDate, 'Geburtsdatum (04.01.1964)') }}
</div>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="accordion-toggle-2" id="nationality_entry_{{ currentIndex }}" style="display:none;">
@ -630,13 +679,12 @@
<h3><span>Einreise-, Visabestimmungen und gesundheitspolizeilichen Vorschriften</span><i class="indicator pull-right icon-plus"></i></h3>
</a>
<div id="collapse_entry_{{ currentIndex }}" class="panel-collapse collapse acc_nationality_panel" aria-expanded="true" style="">
<div class="panel-body">
{% for country in travel_program.countries %}
<h2>{{ country.name }}</h2>
{{ country.entryRequirements|raw|nl2br }}
{% endfor %}
<div class="panel-body set_nationality_country_text" style="height: 300px; overflow: hidden; overflow-y: scroll">
<hr>
</div>
<div class="set_nationality_country_url" style="padding-top: 0.5em">
</div>
</div>
</div>
</div><!-- accordion -->
@ -645,9 +693,10 @@
<div class="checkbox">
{{ form_widget(traveler.acceptEntryRequirements) }}
<label for="{{ traveler.acceptEntryRequirements.vars.id }}" style="line-height: 1.2em;">
Ich habe die oben genannten Hinweise zu den "Einreisebestimmungen, Visabestimmungen und gesundheitspolizeilichen Vorschriften" für mich und alle Mitreisenden gelesen und zur Kenntnis genommen..
{{ getContextBySlug('hinweise-einreisebestimmungen')|raw }}
</label>
{{ form_errors(traveler.acceptEntryRequirements) }}
<span class="checkbox_marker"></span>
{{ form_errors(traveler.acceptEntryRequirements) }}
<div class="help-block with-errors"></div>
</div>
</div>
@ -660,9 +709,12 @@
</div> <!-- st trav -->
<h2>Hinweis</h2>
<p>Sofern Sie nicht oder nicht ausschließlich nur die deutsche Staatsbürgerschaft besitzen, können Sie die Reise nicht buchen,
da wir Sie vorher u.a. über die Einreisebestimmungen für Ihre individuelle Staatsbürgerschaft informieren müssen.
Bitte nehmen Sie vor einer Buchung Kontakt mit uns auf, damit Sie nach Erhalt der Informationen entscheiden können, ob Sie die Reise buchen möchten.</p>
<p>{{ getContextBySlug('hinweis-staatsbuergerschaft-1') | raw }}
{% for nationalitie in nationalities %}
{{ nationalitie.name }}{% if not loop.last %},{% endif %}
{% endfor %} {{ getContextBySlug('hinweis-staatsbuergerschaft-2')|raw }} </p>
</div> <!-- col -->
</div>
</div><!-- end form-box -->
@ -675,17 +727,19 @@
<div class="well">
{{ travel_program.organizer.legalRights|raw }}
<a href="/uploads/{{ travel_program.organizer.fileFormPage }}" target="_blank">
Weiterführende Informationen zu Ihren wichtigsten Rechten nach der Richtlinie (EU) 2015/2302 (Formblatt)
<a href="https://v2.sterntours.de/uploads/{{ travel_program.organizer.fileFormPage }}" target="_blank">
{{ getContextBySlug('informationen-formblatt') }}
</a>
</div>
<div class="form-group">
<div class="checkbox">
{{ form_widget(form.acceptLegalRights) }}
<label for="{{ form.acceptLegalRights.vars.id }}" style="line-height: 1.2em;">
Hiermit bestätige ich, dass ich das Formblatt mit den Informationen zu meinen wichtigsten Rechten nach der Richtlinie (EU) 2015/2302 zur Kenntnis genommen habe.
{{ form_widget(form.acceptLegalRights) }}
<label for="{{ form.acceptLegalRights.vars.id }}" style="line-height: 1.2em;">
{{ getContextBySlug('bestaetigung-formblatt') }}
</label>
{{ form_errors(form.acceptLegalRights) }}
<span class="checkbox_marker"></span>
{{ form_errors(form.acceptLegalRights) }}
<div class="help-block with-errors"></div>
</div>
</div>
@ -703,21 +757,20 @@
<div class="checkbox">
{{ form_widget(form.acceptTerms) }}
<label for="{{ form.acceptTerms.vars.id }}" style="line-height: 1.2em;">
Ich habe alle Daten und Angaben auf Richtigkeit überprüft. Ich habe die
{{ getContextBySlug('reisebedingungen-check-1') }}
{% if travel_program.isMediated %}
<a href="/uploads/{{ travel_program.organizer.fileName }}?t={{ travel_program.organizer.rulesUpdatedTime }}" target="_blank">
Allgemeinen Geschäftsbedingungen des Reiseveranstalters
<a href="https://v2.sterntours.de/uploads/{{ travel_program.organizer.fileName }}?t={{ travel_program.organizer.rulesUpdatedTime }}" target="_blank">
{{ getContextBySlug('reisebedingungen-link-1') }}
</a> {{ travel_program.organizer.name }}
{% else %}
<a href="/uploads/{{ travel_program.organizer.formArb }}?t={{ travel_program.organizer.rulesUpdatedTime }}" target="_blank">
Allgemeinen Reisebedingungen des Reiseveranstalters
<a href="https://v2.sterntours.de/uploads/{{ travel_program.organizer.formArb }}?t={{ travel_program.organizer.rulesUpdatedTime }}" target="_blank">
{{ getContextBySlug('reisebedingungen-link-2') }}
</a> {{ travel_program.organizer.name }}
{% endif %}
gelesen und akzeptiert. Zugleich erkenne ich diese für alle Reiseteilnehmer an.<br>
Es gelten die der Staatsbürgerschaft der einzelnen Reiseteilnehmer entsprechenden Einreise- und Impfbestimmungen für das Ziel- und Transitland.
Die für deutsche Staatsbürger geltenden Bestimmungen finden Sie auf den Seiten des <a href="https://www.auswaertiges-amt.de/de/ReiseUndSicherheit/reise-und-sicherheitshinweise" target="_blank">Auswärtigen Amts</a>
Ein Widerrufsrecht steht Ihnen gemäß § 312 g Abs. 2 Nr. 9 BGB (Bürgerliches Gesetzbuch) nicht zu.
{{ getContextBySlug('reisebedingungen-check-2')|raw }}
</label>
<span class="checkbox_marker"></span>
{{ form_errors(form.acceptTerms) }}
<div class="help-block with-errors"></div>
</div>
@ -739,6 +792,7 @@
{{ form_widget(form.acceptPrivacy) }}
<label for="{{ form.acceptPrivacy.vars.id }}" style="line-height: 1.2em;">Ich habe die <a href="/datenschutz" target="_blank">Datenschutzerklärung</a> zur Kenntnis genommen.
</label>
<span class="checkbox_marker"></span>
{{ form_errors(form.acceptPrivacy) }}
<div class="help-block with-errors"></div>
</div>
@ -752,10 +806,7 @@
<div class="">
<div class="col-md-12 col-sm-12 col-xs-12">
<h5>Wichtiger Hinweis</h5>
Nach Abschluss Ihrer Buchung erhalten Sie innerhalb von 15 Minuten eine Email zur Bestätigung Ihres verbindlichen Buchungsauftrages.
Sollten Sie diese Email nicht bekommen, kontaktieren Sie uns bitte per Email, oder per Telefon unter 030-70094100.
Wir sind Montag bis Freitag von 9 bis 22 Uhr, Samstag von 10 bis 22 Uhr und Sonn- und Feiertage von 11 bis 22:00 Uhr für Sie da.
{{ getContextBySlug('hinweis-bestellung')|raw }}
</div>
</div>
</div><!-- end form-box -->
@ -777,9 +828,9 @@
<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"
>
kostenpflichtig<br class="visible-xs"> buchen
class="aligncenter btn btn-primary btn-lg border-radius btn-booking-form">
<span class="btn-booking-submit"><i class="fa fa-angle-double-right" style="margin-bottom:-1px!important;"></i> kostenpflichtig<br class="visible-xs"> buchen</span>
<span class="btn-booking-loading hide"><i class="fa fa-spinner" style="margin-bottom:-1px!important;"></i> Formular <br class="visible-xs"> wird gesendet</span>
</button>
</div>

View file

@ -0,0 +1,390 @@
{% extends 'base.html.twig' %}
{% block canonical_tag %}{% endblock %}
{% block body %}
<style>
.c1.plus li:before {
content: '+';
}
.c1.minus li:before {
content: '-';
}
</style>
<section class="clearfix">
<div class="content-copy">
<h1>Vielen Dank für Ihren Buchungsauftrag!</h1>
<div class="pull-right">
<a href="/" class="btn btn-primary btn-sm"><< Zurück zur Startseite</a>
</div>
<div class="clearfix"></div>
<h2 style="margin-top:10px">{{ travel_program.title }}</h2>
<div id="booking_form" class="booking_form">
<form class="st-booking-form" method="post">
<div id="message"></div>
<div class="form-box">
<div class="table-responsive" id="no-more-tables_first">
<table class="table first-table">
<tbody>
<tr>
<td>Reiseprogramm</td>
<td>
{{ travel_program.title }}
{#<br class="visible-xs"><a href="#" data-toggle="modal" data-target="#myModal">(Reisebeschreibung aufrufen)</a>#}
</td>
</tr>
<tr>
<td>Kategorie</td>
<td>Standard {# #TODO #}</td>
</tr>
<tr>
<td>Reisezeitraum</td>
<td>{{ booking.selectedStartDate|date }} - {{ booking.selectedEndDate|date }}</td>
</tr>
<tr>
<td>Abflugort</td>
<td>
{{ booking.selectedDeparture.name }}
</td>
</tr>
<tr>
<td>Versicherung</td>
<td>
{% if booking.insuranceOffer == 1 %}
Nein, keine Reiseversicherung gewünscht
{% elseif booking.insuranceOffer == 2 %}
Ja, ich wünsche ein Reiseversicherungsangebot
{% endif %}
</td>
</tr>
</tbody>
</table>
</div>
<div class="col-xs-12">
<div class="panel">
<div class="panel-body">
<h3>Ihr gewähltes Angebot</h3>
<div class="st-booking-summary">
{% include 'default/components/booking/summary.html.twig' with {
'summary': summary,
'total_price': total_price,
'booking_price_info': booking_price_info,
'show_detail' : false,
} %}
</div>
</div>
</div>
</div>
</div>
<div class="form-box">
<div class="">
<div class="col-md-12 col-sm-12 col-xs-12">
<h5>Reiseleistungen</h5>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="accordion-toggle-2">
<div class="panel-group" id="accordion">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapse1" aria-expanded="true">
<h3><span>Reiseleistungen einblenden</span><i class="indicator pull-right icon-plus"></i></h3>
</a>
<div id="collapse1" class="panel-collapse collapse" aria-expanded="true" style="">
<div class="panel-body">
<h3>Eingeschlossene Leistungen</h3>
<ul class="c1 plus">
{% 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>
<h3>Nicht eingeschlossene / zubuchbare Leistungen</h3>
<ul class="c1 minus">
{% for travel_program_service in travel_program.excluded|split('\n') %}
<li>{{ travel_program_service|raw }}</li>
{% endfor %}
</ul>
{% if (travel_program.advices is not empty) or (travel_program.generalnote is not empty) %}
<h3>Hinweise</h3>
<ul class="c1">
{% 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 %}
{% 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 %}
{% endfor %}
</ul>
{% endif %}
</div>
</div>
</div>
</div>
</div><!-- accordion -->
</div>
</div>
<div class="form-box">
<div class="">
<div class="col-md-12 col-sm-12 col-xs-12">
<h5>Reiseanmelder</h5>
</div>
<div class="table-responsive" id="no-more-tables_first">
<table class="table first-table">
<tbody>
<tr>
<td>Anrede</td>
<td>
{% if booking.salutationId == 1 %}
Herr
{% elseif booking.salutationId == 2 %}
Frau
{% elseif booking.salutationId == 3 %}
Keine Angabe
{% endif %}
</td>
</tr>
<tr>
<td>Vorname</td>
<td>{{ booking.firstName }}</td>
</tr>
<tr>
<td>Nachname</td>
<td>{{ booking.lastName }}</td>
</tr>
<tr>
<td>Vorname</td>
<td>{{ booking.firstName }}</td>
</tr>
<tr>
<td>Straße, Hausnummer</td>
<td>{{ booking.street }}</td>
</tr>
<tr>
<td>PLZ</td>
<td>{{ booking.zipCode }}</td>
</tr>
<tr>
<td>Ort</td>
<td>{{ booking.city }}</td>
</tr>
<tr>
<td>Land</td>
<td>{{ booking.countryId }}</td>
</tr>
<tr>
<td>Telefon tagsüber</td>
<td>{{ booking.phone }}</td>
</tr>
<tr>
<td>Handynummer (Bitte angeben)</td>
<td>{{ booking.mobile }}</td>
</tr>
<tr>
<td>E-Mail-Adresse</td>
<td>{{ booking.email }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div><!-- end form-box -->
<div class="form-box">
<div class="">
<div class="col-md-12 col-sm-12 col-xs-12">
<h5>Reiseteilnehmer</h5>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="table-responsive" id="no-more-tables">
<table class="table">
<thead>
<tr>
<th style="text-align: left;">Nr.</th>
<th style="text-align: left;">Zimmertyp</th>
<th style="text-align: left;">Geschlecht</th>
<th style="text-align: left;">Vorname</th>
<th style="text-align: left;">Nachname</th>
<th style="text-align: left;">Geburtsdatum</th>
<th style="text-align: left;">Nationalität</th>
</tr>
</thead>
<tbody class="st-travelers">
{% set travelerIndex = 0 %}
{% set travelerCollection = booking_request.travelers|slice(0, (booking_request.travelerCount + booking_request.childrenCount)) %}
{% for room in booking_request.occupiedRooms %}
{% if(room.type == 1) %}
<tr>
<td>
<button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button" >{{ loop.index ?? '' }} </button>
</td>
<td style="text-align: left;">Einzelzimmer Erwachsener</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}</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].birthDate }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td>
</tr>
{% set travelerIndex = travelerIndex + 1 %}
{% if(room.child == 1) %}
<tr>
<td>
<button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button" >{{ loop.index ?? '' }} </button>
</td>
<td style="text-align: left;">Einzelzimmer Kind</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}</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].birthDate }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td
</tr>
{% set travelerIndex = travelerIndex + 1 %}
{% endif %}
{% elseif (room.type == 2) %}
<tr>
<td>
<button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button" >{{ loop.index ?? '' }} </button>
</td>
<td style="text-align: left;">Doppelzimmer Erwachsener</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}</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].birthDate }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td>
</tr>
{% set travelerIndex = travelerIndex + 1 %}
<tr>
<td>
<button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button" >{{ loop.index ?? '' }} </button>
</td>
<td style="text-align: left;">Doppelzimmer Erwachsener</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}</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].birthDate }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td>
</tr>
{% set travelerIndex = travelerIndex + 1 %}
{% if(room.child == 1) %}
<tr>
<td>
<button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button" >{{ loop.index ?? '' }} </button>
</td>
<td style="text-align: left;">Doppelzimmer Kind</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}</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].birthDate }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td>
</tr>
{% set travelerIndex = travelerIndex + 1 %}
{% endif %}
{% elseif (room.type == 3) %}
<tr>
<td>
<button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button" >{{ loop.index ?? '' }} </button>
</td>
<td style="text-align: left;">Dreibettzimmer Erwachsener</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}</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].birthDate }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td>
</tr>
{% set travelerIndex = travelerIndex + 1 %}
<tr>
<td>
<button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button" >{{ loop.index ?? '' }} </button>
</td>
<td style="text-align: left;">Dreibettzimmer Erwachsener</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}</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].birthDate }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td>
</tr>
{% set travelerIndex = travelerIndex + 1 %}
<tr>
<td>
<button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button" >{{ loop.index ?? '' }} </button>
</td>
<td style="text-align: left;">Dreibettzimmer Erwachsener</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}</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].birthDate }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td>
</tr>
{% set travelerIndex = travelerIndex + 1 %}
{% if(room.child == 1) %}
<tr>
<td>
<button class="btn btn-primary btn-sm border-radius st-traveller-index" type="button" >{{ loop.index ?? '' }} </button>
</td>
<td style="text-align: left;">Dreibettzimmer Kind</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}</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].birthDate }}</td>
<td style="text-align: left;">{{ travelerCollection[travelerIndex].nationalityName(nationalities) }}</td>
</tr>
{% set travelerIndex = travelerIndex + 1 %}
{% endif %}
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div><!-- end form-box -->
<div class="form-box">
<div class="">
<div class="col-md-12 col-sm-12 col-xs-12">
<h5>Unverbindliche Anmerkungen</h5>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<p>{{ booking.comments }}</p>
</div>
</div>
</div><!-- end form-box -->
</div><!-- end contact-form -->
<div class="pull-right">
<a href="/" class="btn btn-primary btn-sm"><< Zurück zur Startseite</a>
</div>
</div>
</section>
{% endblock %}

View file

@ -0,0 +1,57 @@
<div class="row">
{% for calendar_month in calendar %}
<div class="col-xs-12 col-sm-6">
<table class="table calendar-table" id="jump-{{ calendar_month['monthNumber'] }}-{{ calendar_month['year'] }}">
<thead>
<tr>
<th colspan="7">
{{ calendar_month['monthNumber'] }} {{ calendar_month['monthName'] }} {{ calendar_month['year'] }}
</th>
</tr>
<tr>
<th>Mo</th>
<th>Di</th>
<th>Mi</th>
<th>Do</th>
<th>Fr</th>
<th>Sa</th>
<th>So</th>
</tr>
</thead>
<tbody>
{% for weekIndex in 0..5 %}
<tr>
{% for dayIndex in 0..6 %}
{# @var dayState \AppBundle\Util\CalendarDayState #}
{% set dayState = calendar_month['data'][(weekIndex * 7) + dayIndex] %}
<td class="{{ dayState.getCssClass }} {% if dayState.isBookable %}active{% endif %}">
{% if dayState.isBookable %}
{% if dayState.isPastDate %}
<div><del style="color:#989898;">{{ dayState.day }}</del></div>
{% else %}
<a href="{{ page.urlPath }}/buchen?pnr={{ dayState.price.id }}&fd={{ dayState.day < 10 ? '0':'' }}{{dayState.day}}{{ calendar_month['monthNumber'] < 10 ? '0':'' }}{{calendar_month['monthNumber']}}{{calendar_month['year']}}"
rel="nofollow" class="table-link"
>
{{ dayState.day }}
</a>
{% endif %}
{% elseif dayState.day == 0 %}
&nbsp;
{% else %}
{% if dayState.isPastDate %}
<div><del style="color:#989898;">{{ dayState.day }}</del></div>
{% else %}
<div>{{ dayState.day }}</div>
{% endif %}
{% endif %}
</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endfor %}
</div>

Some files were not shown because too many files have changed in this diff Show more