Compare commits
3 commits
master
...
wip/stash-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e236e97936 | ||
|
|
26e4ec2039 | ||
|
|
5fe778977c |
12022 changed files with 52097 additions and 1499765 deletions
11
.gitignore
vendored
11
.gitignore
vendored
|
|
@ -1,11 +0,0 @@
|
|||
/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
6
.idea/$CACHE_FILE$
generated
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="NodePackageJsonFileManager">
|
||||
<packageJsonPaths />
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/.gitignore
generated
vendored
8
.idea/.gitignore
generated
vendored
|
|
@ -1,8 +0,0 @@
|
|||
# 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
5
.idea/codeStyles/codeStyleConfig.xml
generated
|
|
@ -1,5 +0,0 @@
|
|||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||
</state>
|
||||
</component>
|
||||
10
.idea/composerJson.xml
generated
10
.idea/composerJson.xml
generated
|
|
@ -1,10 +0,0 @@
|
|||
<?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
4
.idea/deployment.xml
generated
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PublishConfigData" serverName="https://sterntours.test" />
|
||||
</project>
|
||||
6
.idea/encodings.xml
generated
6
.idea/encodings.xml
generated
|
|
@ -1,6 +0,0 @@
|
|||
<?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
6
.idea/misc.xml
generated
|
|
@ -1,6 +0,0 @@
|
|||
<?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
8
.idea/modules.xml
generated
|
|
@ -1,8 +0,0 @@
|
|||
<?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
59
.idea/php.xml
generated
|
|
@ -1,59 +0,0 @@
|
|||
<?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
63
.idea/sterntours-3.iml
generated
|
|
@ -1,63 +0,0 @@
|
|||
<?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
6
.idea/symfony2.xml
generated
|
|
@ -1,6 +0,0 @@
|
|||
<?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
7
.idea/vagrant.xml
generated
|
|
@ -1,7 +0,0 @@
|
|||
<?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
6
.idea/vcs.xml
generated
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
<?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');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,196 +0,0 @@
|
|||
<!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>
|
||||
|
|
@ -1,223 +0,0 @@
|
|||
<!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>
|
||||
|
|
@ -1,200 +0,0 @@
|
|||
{% 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 %}
|
||||
|
||||
|
|
@ -1,190 +0,0 @@
|
|||
{% 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
|
|
@ -1,183 +0,0 @@
|
|||
<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 -->
|
||||
|
|
@ -1,131 +0,0 @@
|
|||
<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
|
|
@ -1,78 +0,0 @@
|
|||
{% 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 %}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
<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>
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
{% 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 %}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
<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 %}
|
||||
|
|
@ -1,106 +0,0 @@
|
|||
<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;">> 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 -->
|
||||
|
|
@ -1,314 +0,0 @@
|
|||
<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 •
|
||||
{% 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> •
|
||||
{% else %}
|
||||
<span class="text-danger">geschlossen</span> •
|
||||
{% 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 • Formular • 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> 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>
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
{% 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 -->
|
||||
|
|
@ -1,197 +0,0 @@
|
|||
{% 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> <span class="hidden-md">Kulturreisen</span> suchen</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -1,128 +0,0 @@
|
|||
{% 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> <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 -->
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
<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>
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
{# @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>
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
{% 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 %}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
{% 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>
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
<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,
|
||||
} %}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<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 -->
|
||||
|
||||
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
{% 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>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
|
||||
{% 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 %}
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
{% 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 %}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
|
||||
{% 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 %}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
{% 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 %}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
{{ render(controller('AppBundle:Component:newsSidebarWidget', {
|
||||
title: widget.name,
|
||||
limit: widget.configNewsLimit
|
||||
})) }}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
|
||||
{{ render(controller('AppBundle:Component:offersSidebarWidget', {country: page.effectiveCountry ?? null, title:widget.name})) }}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
{% 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 %}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
{% 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 %}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
{% 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>
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
{# @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>
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
{% 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 %}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<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 -->
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
{% if page is not empty and page.effectiveCountry is not empty %}
|
||||
{{ render(controller('AppBundle:Component:travelGuideSidebarWidget', {country: page.effectiveCountry, title:widget.name})) }}
|
||||
{% endif %}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
{% if page is not empty and page.effectiveCountry is not empty %}
|
||||
{{ render(controller('AppBundle:Component:travelMagazineSidebarWidget', {country: page.effectiveCountry, title:widget.name})) }}
|
||||
{% endif %}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
{% 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>
|
||||
|
|
@ -1,251 +0,0 @@
|
|||
<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>
|
||||
|
||||
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
{# @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' %}
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
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' %}
|
||||
|
|
@ -1,106 +0,0 @@
|
|||
{# @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 ?? '-' }}
|
||||
|
||||
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
{# @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 ?? '-' }}
|
||||
|
||||
=======================================================
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
{# @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' %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
Folgende Wohnung wurde gemietet
|
||||
|
||||
URL:
|
||||
{{ lodging_url }}
|
||||
|
||||
CRM:
|
||||
{{ crm_url }}
|
||||
|
||||
{% include 'default/email/components/fewoBookingSummary.txt.twig' %}
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
{% 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 %}
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
{% 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 %}
|
||||
|
|
@ -1,390 +0,0 @@
|
|||
{% 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 %}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
<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 %}
|
||||
|
||||
{% 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>
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,7 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{% block body %}
|
||||
<section class="clearfix">
|
||||
{{ page.content|raw|keywords|lozad }}
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{% block body %}
|
||||
<section class="clearfix" style="margin-bottom: 0;">
|
||||
{{ page.content|raw|keywords|lozad }}
|
||||
</section>
|
||||
|
||||
<section class="clearfix">
|
||||
{#{% for i in 0..page.children|length//3 %}#}
|
||||
<div class="row">
|
||||
{% for child_page in page.children if child_page.status == 1 %}
|
||||
{% include 'default/components/pageBox.html.twig' %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
||||
{#
|
||||
402
|
||||
318
|
||||
315
|
||||
|
||||
UPDATE page SET page.order=page.id*-1 WHERE owner=402
|
||||
UPDATE page SET page.order=page.id*-1 WHERE owner=315
|
||||
UPDATE page SET page.order=page.id*-1 WHERE owner=318
|
||||
|
||||
Select DATE_FORMAT(page.date, '%Y%m%d')*-1 FROM page WHERE model='feedback'
|
||||
|
||||
UPDATE page SET page.order=DATE_FORMAT(page.date, '%Y%m%d')*-1 WHERE model='feedback'
|
||||
|
||||
UPDATE page SET page.model='feedback' WHERE owner=402
|
||||
UPDATE page SET page.model='feedback' WHERE owner=315
|
||||
UPDATE page SET page.model='feedback' WHERE owner=318
|
||||
#}
|
||||
|
|
@ -1,249 +0,0 @@
|
|||
{#{% extends 'admin.html.twig' %}#}
|
||||
{# @var fewo_lodging \AppBundle\Entity\FewoLodging #}
|
||||
{% extends get_base_template() %}
|
||||
|
||||
{% block stylesheets %}
|
||||
<style>.box-slider .slide:not(.active) {display: none;}</style>{# TODO Move to custom.css #}
|
||||
<link rel="stylesheet" href="{{ asset('css/my-fewo.css?v') }}{{ get_file_last_time('css/my-fewo.css') }}">
|
||||
{% endblock stylesheets %}
|
||||
{% block body %}
|
||||
|
||||
<section class="clearfix">
|
||||
<div class="content-copy">
|
||||
|
||||
<h1>{{ fewo_lodging.name }}</h1>
|
||||
|
||||
{#
|
||||
********* SLIDER *********
|
||||
#}
|
||||
|
||||
<section class="section fullscreen background padding-0 margin-bottom-20">
|
||||
<div id="myCarousel" class="carousel slide fewo">
|
||||
<!-- Indicators -->
|
||||
<ol class="carousel-indicators">
|
||||
{% for lodging_image in slider_imgs %}
|
||||
<li data-target="#myCarousel" data-slide-to="{{ loop.index-1 }}" {% if loop.first %}class="active"{% endif %}></li>
|
||||
{% endfor %}
|
||||
</ol>
|
||||
<!-- Wrapper for Slides -->
|
||||
<div class="carousel-inner">
|
||||
{% for lodging_image in slider_imgs %}
|
||||
<div class="item{% if loop.first %} active{% endif %}">
|
||||
<div class="fill" style="background-image:url({{ asset('_uploads/images/' ~ lodging_image.file) }});background-position: center center">
|
||||
<span class="image-title">{{ lodging_image.fileName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<!-- Controls -->
|
||||
<a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
|
||||
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
|
||||
<span class="sr-only">Previous</span>
|
||||
</a>
|
||||
<a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
|
||||
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
|
||||
<span class="sr-only">Next</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</section><!-- end section -->
|
||||
|
||||
{#
|
||||
********* TAB BAR *********
|
||||
#}
|
||||
|
||||
{% block travel_lodging_program_tab_bar %}
|
||||
<div class="scroller-nav-tabs scroller-left-nav-tabs"><i class="glyphicon glyphicon-chevron-left"></i></div>
|
||||
<div class="scroller-nav-tabs scroller-right-nav-tabs"><i class="glyphicon glyphicon-chevron-right"></i></div>
|
||||
<div class="wrapper-nav-tabs">
|
||||
<ul class="nav nav-tabs nav-justified list-nav-tabs">
|
||||
<li class="">
|
||||
<a href="#travel-description-content-tab" aria-controls="travel-description-content-tab" role="tab" data-toggle="tab">
|
||||
Beschreibung
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#travel-equipment-content-tab" aria-controls="travel-equipment-content-tab" role="tab" data-toggle="tab">
|
||||
Ausstattung
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#travel-saisons-content-tab" aria-controls="travel-saisons-content-tab" role="tab" data-toggle="tab">
|
||||
Saisons <i class="fa fa-star"></i> Preise
|
||||
</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<a href="#travel-booking-content-tab" class="travel-booking-content" aria-controls="travel-booking-content-tab" role="tab" data-toggle="tab">
|
||||
Kalender <i class="fa fa-star"></i> Buchen
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{% endblock travel_lodging_program_tab_bar %}
|
||||
|
||||
<div class="tab-content">
|
||||
|
||||
{#
|
||||
********* BESCHREIBUNG *********
|
||||
#}
|
||||
|
||||
<div role="tabpanel" class="tab-pane " id="travel-description-content-tab">
|
||||
|
||||
<h3>Allgemeines</h3>
|
||||
|
||||
<div class="table-responsive" id="no-more-tables">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Typ</th>
|
||||
<th>Adresse</th>
|
||||
<th>PLZ</th>
|
||||
<th>Ort</th>
|
||||
<th>Max. Personenanzahl</th>
|
||||
<th>Kaution</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td data-title="Typ">
|
||||
{{ fewo_lodging.type }}
|
||||
</td>
|
||||
<td data-title="Adresse">
|
||||
{{ fewo_lodging.adress1 }}
|
||||
{% if fewo_lodging.adress2 is not empty %}
|
||||
{{ fewo_lodging.adress2 }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td data-title="PLZ">
|
||||
{{ fewo_lodging.zipCode }}
|
||||
</td>
|
||||
<td data-title="Ort">
|
||||
{% if fewo_lodging.city is not empty %}
|
||||
{{ fewo_lodging.city }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td data-title="Max. Personenanzahl">
|
||||
{% if fewo_lodging.maximumPersons is not empty %}
|
||||
{{ fewo_lodging.maximumPersons }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td data-title="Kaution">
|
||||
{% if fewo_lodging.deposit is not empty %}
|
||||
{{ fewo_lodging.deposit|number_format(2, ',', '.') }} €
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% if fewo_lodging.description is not empty %}
|
||||
<hr>
|
||||
<div>
|
||||
{{ fewo_lodging.description|raw }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
{#
|
||||
********* AUSSTATTUNG *********
|
||||
#}
|
||||
|
||||
<div role="tabpanel" class="tab-pane" id="travel-equipment-content-tab">
|
||||
<div>
|
||||
{{ fewo_lodging.equipment|raw }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{#
|
||||
********* TERMINE UND PREISE *********
|
||||
#}
|
||||
|
||||
<div role="tabpanel" class="tab-pane" id="travel-saisons-content-tab">
|
||||
<h3>Saisons <i class="fa fa-star"></i> Preise</h3>
|
||||
<div class="table-responsive" id="no-more-tables">
|
||||
|
||||
{% if fewo_lodging.prices is not empty %}
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Beginn</th>
|
||||
<th>Ende</th>
|
||||
<th>Mindestbelegung</th>
|
||||
<th>Preis pro Nacht</th>
|
||||
<th>Service-Gebühr</th>
|
||||
<th>Kaution</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for price in fewo_lodging.prices %}
|
||||
{% if price.season is not empty %}
|
||||
<tr>
|
||||
<td data-title="Name">
|
||||
<strong class="small">
|
||||
{{ price.season.name }}
|
||||
</strong>
|
||||
</td>
|
||||
<td data-title="Beginn">
|
||||
{#<a class="default scroll-to-jump" >
|
||||
{{ price.season.fromDate|date }}
|
||||
</a>#}
|
||||
<strong>
|
||||
<a href="#jump-{{ price.season.fromDate|date("n-Y") }}"class="default travel-booking-content-open">{{ price.season.fromDate|date }}</a>
|
||||
</strong>
|
||||
</td>
|
||||
<td data-title="Ende">
|
||||
{#<a class="default scroll-to-jump" >
|
||||
{{ price.season.toDate|date }}
|
||||
</a>#}
|
||||
<strong>
|
||||
<a href="#jump-{{ price.season.toDate|date("n-Y") }}" class="default travel-booking-content-open">{{ price.season.toDate|date }}</a>
|
||||
</strong>
|
||||
</td>
|
||||
<td data-title="Mindestbelegung">
|
||||
{{ price.season.minimumStay }} {{ price.season.minimumStay < 2 ? 'Nacht' : 'Nächte' }}
|
||||
</td>
|
||||
<td data-title="Preis p.P pro Nacht">
|
||||
{{ price.perNight|number_format(2, ',', '.') }} €
|
||||
</td>
|
||||
<td data-title="Service-Gebühr">
|
||||
{{ price.flatPrice|number_format(2, ',', '.') }} €
|
||||
</td>
|
||||
<td data-title="Kaution">
|
||||
{% if fewo_lodging.deposit is not empty %}
|
||||
{{ fewo_lodging.deposit|number_format(2, ',', '.') }} €
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
Momentan sind für dieses Programm keine Termine verfügbar.
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div role="tabpanel" class="tab-pane active" id="travel-booking-content-tab">
|
||||
<h3>Kalender <i class="fa fa-star"></i> Buchen</h3>
|
||||
<style>
|
||||
.table > tbody > tr > td.active {
|
||||
background-color: rgba(89, 156, 93, 0.6);
|
||||
}
|
||||
.table > tbody > tr > td.normal {
|
||||
background-color: rgba(94, 134, 136, 0.2);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="alert alert-success"><strong>Bitte klicken Sie im Kalender auf einen freien Buchungstag (grün), um zum Buchungsformular zu gelagen.</strong></div>
|
||||
<hr>
|
||||
{% include 'default/pages/cms/calendarLodgingProgram.html.twig' %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- end section -->
|
||||
{% endblock body %}
|
||||
|
|
@ -1,165 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{% block body %}
|
||||
<section class="article clearfix">
|
||||
{% if(api is defined) %}
|
||||
<article role="article" itemscope itemtype="http://schema.org/Article">
|
||||
{% if(api.nodes_active.image.url is defined and api.nodes_active.image.url != "") %}
|
||||
<header>
|
||||
<div class="mediaTop">
|
||||
<div class="mediaTopImageItem">
|
||||
<picture>
|
||||
{{ api.nodes_active.image|imageloader }}
|
||||
</picture>
|
||||
</div>
|
||||
<div class="mediaInfo">
|
||||
<p class="mediaTitle">{{ api.nodes_active.image.title }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
{% endif %}
|
||||
|
||||
{% if(api.sites is defined) %}
|
||||
{% if(api.sites.long is defined and api.sites.short is defined) %}
|
||||
<div class="wrapper-nav-tabs">
|
||||
<ul class="nav nav-tabs nav-justified list-nav-tabs">
|
||||
{% if(api.sites.long is defined) %}
|
||||
<li class="active">
|
||||
<a href="#travel_guide_content_long" aria-controls="travel_guide_content_long" role="tab" data-toggle="tab">
|
||||
Ausführliche Darstellung <i class="hidden-xs">für Interessierte</i>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if(api.sites.short is defined) %}
|
||||
<li class="{% if(api.sites.long is not defined) %} active {% endif %}">
|
||||
<a href="#travel_guide_content_short" aria-controls="travel_guide_content_short" role="tab" data-toggle="tab">
|
||||
Zusammenfassung <i class="hidden-xs">für eilige Leser</i>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% set site_has_h1 = false %}
|
||||
<div class="tab-content">
|
||||
{% if(api.sites.long is defined) %}
|
||||
<div role="tabpanel" class="tab-pane active" id="travel_guide_content_long">
|
||||
{% if(site_has_h1) %}
|
||||
<h2 class="h1l">{{ api.sites.long.name }}</h2>
|
||||
{% else %}
|
||||
<h1 itemprop="headline">{{ api.sites.long.name }}</h1>
|
||||
{% set site_has_h1 = true %}
|
||||
{% endif %}
|
||||
{% if(api.sites.long.author_name is defined) %}
|
||||
<div itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||||
<p class="author_name" itemprop="name" rel="author">Autor dieses Artikels: {{api.sites.long.author_name}}</p>
|
||||
<p class="author_description" itemprop="description">{{api.sites.long.author_description}}</p>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
<section itemprop="articleBody">
|
||||
{{ api.sites.long.full_text|raw|dkeywords|lozad }}
|
||||
</section>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if(api.sites.short is defined) %}
|
||||
<div role="tabpanel" class="tab-pane {% if(api.sites.long is not defined) %} active {% endif %}" id="travel_guide_content_short">
|
||||
{% if(site_has_h1) %}
|
||||
<h2 class="h1l">{{ api.sites.short.name }}</h2>
|
||||
{% else %}
|
||||
<h1 itemprop="headline">{{ api.sites.short.name }}</h1>
|
||||
{% set site_has_h1 = true %}
|
||||
{% endif %}
|
||||
{% if(api.sites.short.author_name is defined) %}
|
||||
<div itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||||
<p class="author_name" itemprop="name" rel="author">Autor dieses Artikels: {{api.sites.short.author_name}}</p>
|
||||
<p class="author_description" itemprop="description">{{api.sites.short.author_description}}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
<section itemprop="articleBody">
|
||||
{{ api.sites.short.full_text|raw|dkeywords|lozad }}
|
||||
</section>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if(api.sites.long is defined and api.sites.short is defined) %}
|
||||
<div class="wrapper-nav-tabs">
|
||||
<ul class="nav nav-tabs nav-justified list-nav-tabs">
|
||||
{% if(api.sites.long is defined) %}
|
||||
<li class="active">
|
||||
<a href="#travel_guide_content_long" aria-controls="travel_guide_content_long" role="tab" data-toggle="tab">
|
||||
Ausführliche Darstellung <i class="hidden-xs">für Interessierte</i>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if(api.sites.short is defined) %}
|
||||
<li class="{% if(api.sites.long is not defined) %} active {% endif %}">
|
||||
<a href="#travel_guide_content_short" aria-controls="travel_guide_content_short" role="tab" data-toggle="tab">
|
||||
Zusammenfassung <i class="hidden-xs">für eilige Leser</i>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if(api.faqs is defined) %}
|
||||
<section class="stern-faq" itemscope itemtype="https://schema.org/FAQPage">
|
||||
<h2 class="h3 h3l">Häufige Fragen zu Urlaubsreisen in Ägypten</h2>
|
||||
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
|
||||
{% for faq in api.faqs %}
|
||||
<div class="panel panel-default" itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">
|
||||
<div class="panel-heading" role="tab" id="headingFaq_{{ faq.id }}">
|
||||
<h3 itemprop="name" class="panel-title">
|
||||
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseFaq_{{ faq.id }}" aria-expanded="true" aria-controls="collapseFaq_{{ faq.id }}">
|
||||
⭐ {{ faq.question }}
|
||||
</a>
|
||||
</h3>
|
||||
</div>
|
||||
<div id="collapseFaq_{{ faq.id }}" class="panel-collapse collapse {% if(loop.index == 1) %} in {% endif %}" role="tabpanel" aria-labelledby="headingFaq_{{ faq.id }}" itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
|
||||
<div class="panel-body" itemprop="text">
|
||||
{{ faq.answer_text|raw }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</article>
|
||||
{% endif %}
|
||||
</section>
|
||||
<hr>
|
||||
{% if(api is defined and api.children is defined and api.children is not empty) %}
|
||||
<section class="clearfix">
|
||||
<div class="row">
|
||||
{% for child_page in api.children %}
|
||||
{% if(child_page.active) %}
|
||||
<div class="col-md-4 col-sm-6">
|
||||
<div class="travel-wrapper get-box-link">
|
||||
<div class="item text-left item-relative">
|
||||
{% if(child_page.box_image_url is defined and child_page.box_image_url is not empty) %}
|
||||
<div class="item-img item-absolute">
|
||||
<div class="img-background lozad" data-real-url="{{ child_page.box_image_url }}" data-background-image="{{ child_page.box_image_url }}" style="background-image:url({{ asset('images/placeholder-image.png') }});"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="box_mid">
|
||||
|
||||
<div class="hl5">{{ child_page.name }}</div>
|
||||
</div>
|
||||
<a class="item-button is-box-link dobble_line" href="{{ child_page.url }}" title="{{ child_page.name }}">
|
||||
<span>{{ child_page.name }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,90 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<h1>{{ page.pagetitle|default(page.title) }}</h1>
|
||||
|
||||
<section class="clearfix">
|
||||
{#{% for i in 0..page.children|length//3 %}#}
|
||||
<div class="row">
|
||||
|
||||
{% for child_page in page.children if child_page.slug == "nilschiff-ss-sudan" %}
|
||||
<div class="col-md-12 col-sm-12">
|
||||
<div class="travel-wrapper get-box-link">
|
||||
<div class="item text-left">
|
||||
<div class="item-img" style="height: 220px;">
|
||||
<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>
|
||||
|
||||
{% if child_page.boxImageUrl is not empty %}
|
||||
{% set image_url = child_page.boxImageUrl %}
|
||||
{% set image_alt = child_page.travelProgram.title|default(page.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(960).guess(90) }}" style="background-image:url({{ asset('images/placeholder-image.png') }}); height: 220px;"></div>
|
||||
<noscript>
|
||||
<img width="234" height="180" src="{{ image(image_url|trim('/')).cropResize(960).guess(90) }}" class="img-responsiv img-responsiv-item" style="">
|
||||
</noscript>
|
||||
|
||||
</div>
|
||||
<div class="box_mid">
|
||||
<div class="hl5">{{ child_page.title }}</div>
|
||||
<p>{{ child_page.boxBody ?? child_page.description }}</p>
|
||||
</div>
|
||||
<a class="item-button is-box-link dobble_line" href="{{ child_page.urlPath }}" title="{{ child_page.title }}">
|
||||
<span>{{ child_page.title }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="clearfix content-pane">
|
||||
<h2 class="h3 h3l">Unsere beliebtesten Kulturreisen</h2>
|
||||
{#{% for i in 0..page.children|length//3 %}#}
|
||||
<div class="row">
|
||||
{% for child_page in child_pages if child_page.status == 1 and child_page.travelProgram is not empty %}
|
||||
{% include 'default/components/pageBox.html.twig' %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% if mediated_child_pages is not empty %}
|
||||
|
||||
<h2 class="h3 h3l">
|
||||
Vermittelte Rundreisen vom {{ page.country is not empty ? (page.country.name ~ '-') }}Spezialisten
|
||||
STERN TOURS aus Berlin
|
||||
</h2>
|
||||
|
||||
<div class="row">
|
||||
{% for child_page in mediated_child_pages %}
|
||||
|
||||
{% include 'default/components/pageBox.html.twig' %}
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</section>
|
||||
|
||||
<section class="clearfix">
|
||||
<hr class="primary">
|
||||
{{ page.content|raw|keywords|lozad }}
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{#
|
||||
{% block nav_sidebar_widget %}
|
||||
{% include 'default/components/sidebar/navSidebarWidget.html.twig' %}
|
||||
{% endblock %}
|
||||
#}
|
||||
{% block body %}
|
||||
<h1>{{ page.pagetitle|default(page.title) }}
|
||||
</h1>
|
||||
<div id="section_order">
|
||||
<section class="clearfix" id="section_order_second">
|
||||
{{ page.content|raw|keywords|lozad }}
|
||||
</section>
|
||||
<section class="clearfix" id="section_order_first">
|
||||
{% if(page.slug == "ferienwohnungen")%}
|
||||
{% if lodgingGroups is not empty %}
|
||||
{% for lodgingGroup in lodgingGroups %}
|
||||
<h1>{{ lodgingGroup.name }}</h1>
|
||||
|
||||
<div class="row">
|
||||
{% if lodgingGroup.lodgings is not empty %}
|
||||
{% for lodging in lodgingGroup.lodgings %}
|
||||
{% include 'default/components/pageLodgingBox.html.twig' %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{#{% for i in 0..page.children|length//3 %}#}
|
||||
<div class="row">
|
||||
{% for child_page in page.children if child_page.status == 1 %}
|
||||
{% include 'default/components/pageBox.html.twig' %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
|
||||
{% block body %}
|
||||
<section class="clearfix">
|
||||
<h1>{{ page.pagetitle|default(page.title) }}</h1>
|
||||
|
||||
{% 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="post" 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>
|
||||
|
||||
|
||||
{#{% for i in 0..page.children|length//3 %}#}
|
||||
<div class="row">
|
||||
{% for child_page in page.children if child_page.status == 1 %}
|
||||
|
||||
{% include 'default/components/pageBox.html.twig' %}
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="clearfix">
|
||||
{{ page.content|raw|keywords|lozad }}
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,167 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
|
||||
<section class="clearfix">
|
||||
{{ page.content|raw|keywords|lozad }}
|
||||
</section>
|
||||
|
||||
<section class="clearfix content-pane">
|
||||
<h2 class="h3 h3l" style="padding-top:0px;margin-top:0;">Programm Nilkreuzfahrt SS Sudan</h2>
|
||||
<div class="row">
|
||||
{% for child_page in box_childs if child_page.status == 1 and child_page.travelProgram is not empty %}
|
||||
|
||||
{# @var child_page \AppBundle\Entity\Page #}
|
||||
<div class="col-md-6 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.boxBody ?? child_page.description }}</p>
|
||||
</div>
|
||||
<a class="item-button is-box-link dobble_line" href="{{ child_page.urlPath }}"
|
||||
title="{{ child_page.title }}">
|
||||
<span>{{ child_page.title }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
{% include 'default/pages/cms/components/ssSudan.html.twig' %}
|
||||
|
||||
|
||||
<div class="content-pane">
|
||||
<h1>Die SS Sudan</h1>
|
||||
<p class="ft">
|
||||
Der sehr elegante Restaurantsaal besteht ebenfalls aus Mobiliar des 19. Jahrhunderts und ist mit
|
||||
Originalparkettboden ausgestattet. Lassen Sie sich im Restaurant von einer sehr abwechslungsreichen und
|
||||
raffinierten Kochkunst verwöhnen. Einen Panoramablick bietet Ihnen die Lounge/Bar. Eine große Terrasse auf
|
||||
dem Oberdeck, mit Liegestühlen und Sesseln bietet Ihnen die Möglichkeit, während die wunderbare Landschaft
|
||||
an Ihnen vorbeizieht, den Tag Tag sein zu lassen und sich ausgiebig zu erholen.
|
||||
</p>
|
||||
|
||||
<p class="ft"><strong>Hier finden Sie Links zu Informationen zum Preis der SS Sudan, zum Reiseveranstalter STERN
|
||||
TOURS und zu den letzten Kundenfeedbacks mit der Fahrt auf der SS Sudan:</strong></p>
|
||||
<ul class="">
|
||||
<li>Zu <a href="/aegypten_reisen_catalog/ss-sudan-3-naechte-preise.html"
|
||||
title="Preise 3 Nächte Schiff Sudan">Preise 3 Nächte SS Sudan</a></li>
|
||||
<li>Zu <a href="/aegypten_reisen_catalog/ss-sudan-4-naechte-preise.html"
|
||||
title="Preise Nilschiff Sudan 4 Nächte">Preise 4 Nächte SS Sudan</a><br/></li>
|
||||
<li>Zum <a href="/aegypten_reisen_catalog/ss-sudan-programm-3-nights.html"
|
||||
title="Besichtigunsprogramm 3 Nächte SS Sudan">Besichtigunsprogramm 3 Nächte SS
|
||||
Sudan</a><br/></li>
|
||||
<li>Zum <a href="/aegypten_reisen_catalog/ss-sudan-programm-4-nights.html"
|
||||
title="Besichtigungsprogramm 4 Nächte Sudan">Besichtigunsprogramm 4 Nächte SS Sudan</a>
|
||||
<br/></li>
|
||||
<li>Zum <a href="/aegypten_reisen_catalog/ss-sudan-nilkreuzfahrt.html" title="Nilkreuzfahrt SS Sudan">14 tägigen
|
||||
Beispielprogramm SS Sudan - Nilkreuzfahrt mit Kairo und Baden</a><br/></li>
|
||||
<li>Zum <a href="/docs/169/aegypten-reise-felbinger.html" title="Kundenfeedbakcs">Kundenfeedback - SS Sudan
|
||||
- Familie Felbinger</a><br/></li>
|
||||
<li>Zum <a href="/docs/169/aegypten-ss-sudan-old-mena-house.html" title="Kundenfeedbakcs">Kundenfeedback -
|
||||
SS Sudan - Familie Kreuser</a> <br/></li>
|
||||
<li>Informationen zu <a href="/aegypten_reisen_catalog/info-aegypten-spezialist.html"
|
||||
title="Kontakt Ägyptenreisen">STERN TOURS</a><br/></li>
|
||||
<li>Zu unseren <a href="/aegypten_reisen_catalog/offene-worte.html" title="offenen Worten">Offenen
|
||||
Worten</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Das Dampfschiff Sudan & Verantwortungsvoller Tourismus</h2>
|
||||
|
||||
<p class="ft">
|
||||
Das Dampfschiff Sudan wurde in Bezug auf die Umwelt und den Tourismus deutlich verändert. Zunächst wurde der
|
||||
Verbrauch von Energie gesenkt. Durch die Verbesserung der Triebwerke, durch minimierte Belastung des
|
||||
Schiffes und durch die Installation von Solarenergie für Wärme, Sanitärwasser, und die Schaufelräder ist es
|
||||
gelungen, den Kraftstoffverbrauch um 30% zu verringern und damit auch Treibhausgasemissionen. Der Konsum von
|
||||
CO2 wurde auf eine halbe Tonne pro Passagier pro Fahrt reduziert, was der hohen Achtsamkeit anzurechnen ist.
|
||||
</p>
|
||||
|
||||
<p class="ft">
|
||||
Das Wasser, welches für die Duschen verwendet wird, stammt vom Nil und wird durch mehrere Filter geführt,
|
||||
die jeden Monat streng kontrolliert werden. Der erste Filter entfernt den Sand, der zweite Filter bereitet
|
||||
das Wasser durch eine Kohlenzusammensetzung auf und der Letzte filtert Bakterien durch ultraviolettes Licht
|
||||
aus.
|
||||
</p>
|
||||
|
||||
<p class="ft">
|
||||
Tägliche strikte Maßnahmen stellen eine umweltverträgliche und nachhaltige Entwicklung sicher. Das Schiff
|
||||
nutzt ausschließlich Energiesparlampen und biologisch abbaubares, ökofreundliches Waschmittel (made in
|
||||
Egypt). Es werden so viele biologische Produkte wie möglich genutzt (mit Ausnahme der antibakteriellen Bade
|
||||
Waschprodukte, die auf Bleichmittel basieren) und das Papier wird wiederverwendet.
|
||||
</p>
|
||||
|
||||
<p class="ft">
|
||||
Die Kosmetikprodukte in den Badezimmern sind alle natürlich und basieren auf Olivenöl, welches aus Ägypten
|
||||
kommt. Um den Verbrauch von Verpackungen zu beschränken, sind alle Produkte in Behälter gefüllt.
|
||||
</p>
|
||||
|
||||
<p class="ft">
|
||||
Die gesamte Ausstattung auf dem Dampfschiff Sudan ist von ägyptischen Tischlern und Schreinern angefertigt
|
||||
worden.
|
||||
</p>
|
||||
|
||||
<p class="ft">
|
||||
Mineralwasser an Bord ist frei.
|
||||
</p>
|
||||
|
||||
<p class="ft">
|
||||
Seit dem Altertum bezaubert Ägypten jeden, der mit diesem Land in Berührung kommt. Dem Mythos und dieser
|
||||
Magie der vergangenen Zivilisation dieses atemberaubenden Landes ist bisher jeder erlegen. Die Reise nach
|
||||
Ägypten wurde mit der Zeit, sei es in kulturellen oder in Kunstkreisen, zu einem absoluten Muss. Mit dem 20.
|
||||
Jahrhundert wurde Ägypten unausweichlich zu einem Ziel der modernen Reisekultur. Der Nil, der sowohl weite
|
||||
Teile des Landes bewässert und nährt, als auch als Handels- und Verbindungsroute zwischen Europa und Afrika
|
||||
dient, ist ohne Zweifel die Lebensader Ägyptens. Den Nil zu bereisen, bedeutet die Geschichte und die
|
||||
Entwicklung Ägyptens zu verstehen. So trifft man auf den Gewässern des Nils, nebst den traditionellen
|
||||
Feluken (Küstenfahrzeugen), auch zahlreiche Boote voller interessierter Besucher.
|
||||
</p>
|
||||
|
||||
<p class="ft">
|
||||
Eine Kreuzfahrt auf dem Nil ist auf den unterschiedlichsten Schiffen zu erkunden. Jedoch haben wir uns
|
||||
speziell für die SS Sudan entschieden. Die Nillandschaft, auf einem unverwechselbarem antiken
|
||||
Kreuzfahrtschiff, erbaut 1885, wie zu Zeiten der Könige, zu erkunden, ist und bleibt einzigartig. Es ist die
|
||||
SS Sudan, auf der Agatha Christie ihre bekannte Romanfigur „Hercule Poirot“ weiterentwickelt hat. Es ist
|
||||
ebenfalls die SS Sudan, auf der Agatha Christies berühmter Kriminalroman „Tod auf dem Nil“ gedreht wurde.
|
||||
</p>
|
||||
|
||||
<h2>Video zum Rundgang auf dem Nilschiff SS Sudan</h2>
|
||||
|
||||
<div class="video-wrap">
|
||||
<div class="g-absolute-centered">
|
||||
<a data-type="youtube" data-src="https://www.youtube-nocookie.com/embed/hnjHNzdPJmc"
|
||||
href="javascript:;">
|
||||
<div class="u-icon-v3"> Video ansehen <i class="fa fa-play"></i></div>
|
||||
</a>
|
||||
</div>
|
||||
<img src="/images/placeholder-image.png" data-src="https://img.youtube.com/vi/hnjHNzdPJmc/sddefault.jpg"
|
||||
class="img-responsive lozad" alt="">
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
{% include 'default/pages/cms/components/ssSudan.html.twig' %}
|
||||
|
||||
<div class="content-pane">
|
||||
<section class="clearfix">
|
||||
{{ page.content|raw|keywords|lozad }}
|
||||
</section>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{% block body %}
|
||||
<section class="clearfix">
|
||||
{% if(page.travelGuideContentId) %}
|
||||
<div class="wrapper-nav-tabs">
|
||||
<ul class="nav nav-tabs nav-justified list-nav-tabs">
|
||||
<li class="active">
|
||||
<a href="#travel_guide_long_content" aria-controls="travel_guide_long_content" role="tab" data-toggle="tab">
|
||||
Ausführliche Darstellung <i class="hidden-xs">für Interessierte</i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#travel_guide_short_content" aria-controls="travel_guide_short_content" role="tab" data-toggle="tab">
|
||||
Zusammenfassung <i class="hidden-xs">für eilige Leser</i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane active" id="travel_guide_short_content">
|
||||
{{ page.content|raw|keywords|lozad }}
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="travel_guide_long_content">
|
||||
{{ travel_guide_content.fullText|raw|keywords|lozad }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wrapper-nav-tabs">
|
||||
<ul class="nav nav-tabs nav-justified list-nav-tabs">
|
||||
<li class="active">
|
||||
<a href="#travel_guide_long_content" aria-controls="travel_guide_long_content" role="tab" data-toggle="tab">
|
||||
Ausführliche Darstellung <i class="hidden-xs">für Interessierte</i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#travel_guide_short_content" aria-controls="travel_guide_short_content" role="tab" data-toggle="tab">
|
||||
Zusammenfassung <i class="hidden-xs">für eilige Leser</i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ page.content|raw|keywords|lozad }}
|
||||
{% endif %}
|
||||
</section>
|
||||
<hr>
|
||||
{% if( page.children is not empty) %}
|
||||
<section class="clearfix">
|
||||
<h2>{{ page.title }}</h2>
|
||||
<div class="row">
|
||||
{% for child_page in page.children %}
|
||||
{% if(child_page.status) %}
|
||||
<div class="col-md-4 col-sm-6">
|
||||
<div class="travel-wrapper get-box-link">
|
||||
<div class="item text-left">
|
||||
{% if(page.slug == 'reisefuehrer' ) %}
|
||||
<div class="item-img" style="height: 220px;">
|
||||
{% if child_page.boxImageUrl is not empty %}
|
||||
{% set image_url = child_page.boxImageUrl %}
|
||||
{% set image_alt = child_page.travelProgram.title|default(page.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(960).guess(90) }}" style="background-image:url({{ asset('images/placeholder-image.png') }}); height: 220px;"></div>
|
||||
<noscript>
|
||||
<img width="234" height="180" src="{{ image(image_url|trim('/')).cropResize(960).guess(90) }}" class="img-responsiv img-responsiv-item" style="">
|
||||
</noscript>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="box_mid">
|
||||
<div class="hl5">{{ child_page.title }}</div>
|
||||
<p>{{ child_page.boxBody ?? child_page.description }}</p>1
|
||||
</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>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,440 +0,0 @@
|
|||
{# @var travel_program \AppBundle\Entity\TravelProgram #}
|
||||
{% extends get_base_template() %}
|
||||
|
||||
{% block javascripts %}
|
||||
{{ parent() }}
|
||||
{% javascripts '@AppBundle/Resources/public/js/travelProgram.js' %}
|
||||
<script src="{{ asset_url }}" data-cookieconsent="necessary"></script>
|
||||
{% endjavascripts %}
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<section class="clearfix">
|
||||
<div class="content-copy">
|
||||
<h1>{{ travel_program.title|default(page.pagetitle)|default(page.title) }}</h1>
|
||||
<section class="section fullscreen background padding-0 margin-bottom-20">
|
||||
<div class="in-section-holder">
|
||||
{% if travel_program.lowestPrice > 0 %}
|
||||
<div class="price-over-slider">
|
||||
<div class="cprice">ab {{ travel_program.lowestPrice|number_format }} € p.P.</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if travel_program.sliderInfo is not empty %}
|
||||
<div class="price-over-slider next-over">
|
||||
<div class="cprice">{{ travel_program.sliderInfo|raw }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if travel_program.travelDates is not empty %}
|
||||
<div class="pull-right btn-over-slider">
|
||||
<button type="button"
|
||||
class="btn btn-primary btn-lg border-radius st-slider-booking-btn" id="st-slider-booking-events-scroll">
|
||||
Termine <i class="fa fa-star faa-burst animated" style="margin-top: -5px"></i> Preise
|
||||
</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="pull-right btn-over-slider btn-over-slider-bottom">
|
||||
<a href="{{ page.slug }}/pdf" title="Reisebeschreibung als PDF herunterladen"
|
||||
class="btn btn-primary btn-sm border-radius st-slider-booking-btn st-slider-booking-btn-bottom">
|
||||
<i class="fa fa-print" style="margin-top: -3px;"></i> Katalogseite zum Drucken
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="myCarousel" class="carousel slide">
|
||||
<!-- Indicators -->
|
||||
<ol class="carousel-indicators">
|
||||
{% for travel_program_image in travel_program.images %}
|
||||
<li data-target="#myCarousel" data-slide-to="{{ loop.index-1 }}" {% if loop.first %}class="active"{% endif %}></li>
|
||||
{% endfor %}
|
||||
</ol>
|
||||
<!-- Wrapper for Slides -->
|
||||
<div class="carousel-inner">
|
||||
{% for travel_program_image in travel_program.images %}
|
||||
{# @var image \AppBundle\Entity\TravelProgramImage #}
|
||||
<div class="item{% if loop.first %} active{% endif %}">
|
||||
<!-- Set the first background image using inline CSS below. -->
|
||||
{% set image_url = asset('uploads/travel_program/' ~ travel_program_image.fileNameWithExtension) %}
|
||||
<div class="fill lozad"
|
||||
data-background-image="{{ image(image_url|trim('/')).cropResize(848).guess(75) }}"
|
||||
style="background-image:url({{ asset('images/placeholder-image.png') }}); background-position: center {{ travel_program_image.position }}"></div>
|
||||
<noscript>
|
||||
<div class="fill"
|
||||
style="background-image:url({{ image(image_url|trim('/')).cropResize(848).guess(75) }}); background-position: center {{ travel_program_image.position }};"></div>
|
||||
</noscript>
|
||||
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<!-- Controls -->
|
||||
<a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
|
||||
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
|
||||
<span class="sr-only">Previous</span>
|
||||
</a>
|
||||
<a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
|
||||
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
|
||||
<span class="sr-only">Next</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</section><!-- end section -->
|
||||
|
||||
{#
|
||||
********* TAB BAR *********
|
||||
#}
|
||||
|
||||
{% block travel_program_tab_bar %}
|
||||
<div class="wrapper-nav-tabs">
|
||||
<ul class="nav nav-tabs nav-justified list-nav-tabs">
|
||||
<li class="active">
|
||||
<a href="#travel-description-content-tab" aria-controls="travel-description-content-tab"
|
||||
role="tab" data-toggle="tab" class="child-first">
|
||||
<span>1</span> Reiseablauf
|
||||
</a>
|
||||
</li>
|
||||
{% if travel_program.included is not empty or
|
||||
travel_program.excluded is not empty or
|
||||
travel_program.classDescription is not empty %}
|
||||
<li>
|
||||
<a href="#travel-service-content-tab" aria-controls="travel-service-content-tab"
|
||||
role="tab" data-toggle="tab" class="child-sec">
|
||||
<span>2</span> Leistungen
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{% endif %}
|
||||
{% if travel_program.travelDates is not empty %}
|
||||
<li>
|
||||
<a href="#travel-dates-content-tab" aria-controls="travel-dates-content-tab" role="tab"
|
||||
data-toggle="tab" class="child-sec">
|
||||
<span>3</span> Termine <i class="fa fa-star faa-burst animated"></i> Preise
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if travel_program.hasMap %}
|
||||
<li>
|
||||
<a href="#travel-map-content-tab" aria-controls="travel-map-content-tab" role="tab"
|
||||
data-toggle="tab">
|
||||
Karte
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li>
|
||||
<a href="#travel-info-content-tab" aria-controls="travel-info-content-tab" role="tab"
|
||||
data-toggle="tab">
|
||||
Landinfos
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{% endblock travel_program_tab_bar %}
|
||||
|
||||
|
||||
<div class="tab-content">
|
||||
<div id="position-scroll-tab"></div>
|
||||
|
||||
{#
|
||||
********* REISEABLAUF *********
|
||||
#}
|
||||
|
||||
<div role="tabpanel" class="tab-pane active" id="travel-description-content-tab">
|
||||
|
||||
{{ travel_program.htmlDescription|raw|keywords|lozad }}
|
||||
<br clear="all">
|
||||
|
||||
{% if (travel_program.advices is not empty) or (travel_program.generalnote is not empty) %}
|
||||
<h3>Hinweise</h3>
|
||||
<ul>
|
||||
{% if travel_program.generalnote is not empty %}
|
||||
{% for notes in travel_program.generalnote.text|trim|split('\n') %}
|
||||
{% if notes is not empty %}
|
||||
<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> <!-- END tabpanel -->
|
||||
|
||||
{#
|
||||
********* LEISTUNGEN *********
|
||||
#}
|
||||
|
||||
<div role="tabpanel" class="tab-pane" id="travel-service-content-tab">
|
||||
|
||||
<h2>Eingeschlossene Leistungen</h2>
|
||||
<ul>
|
||||
{% for travel_program_service in travel_program.included|replace({'*': '<img src="/bundles/app/images/star-mini.png" >'})|split('\n') %}
|
||||
<li>{{ travel_program_service|raw }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% if travel_program.classDescription is not empty %}
|
||||
{{ travel_program.classDescription|replace({'*': '<img src="/bundles/app/images/star-mini.png" >'})|raw }}
|
||||
{% endif %}
|
||||
|
||||
{% if travel_program.excluded is not empty %}
|
||||
<h2>Nicht eingeschlossene / zubuchbare Leistungen</h2>
|
||||
<ul>
|
||||
{% for travel_program_service in travel_program.excluded|replace({'*': '<img src="/bundles/app/images/star-mini.png" >'})|split('\n') %}
|
||||
<li>{{ travel_program_service|raw }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
</div> <!-- END tabpanel -->
|
||||
|
||||
{#
|
||||
********* TERMINE UND PREISE *********
|
||||
#}
|
||||
|
||||
<div role="tabpanel" class="tab-pane" id="travel-dates-content-tab">
|
||||
|
||||
<h2>{{ travel_program.subtitle }}</h2>
|
||||
|
||||
<div class="table-responsive" id="no-more-tables">
|
||||
|
||||
{% if travel_program.travelDates is not empty %}
|
||||
{% set has_three_bed_room = (travel_program.travelDates|first).prices[5] is defined %}
|
||||
{% set has_double_bed_room = (travel_program.travelDates|first).prices[3] is defined %}
|
||||
{% set has_singel_bed_room = (travel_program.travelDates|first).prices[1] is defined %}
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Nr.</th>
|
||||
<th>Beginn <span class="small-table-show">- Ende</span></th>
|
||||
<th class="small-table-hidden">Ende</th>
|
||||
{% if has_three_bed_room %}
|
||||
<th>Preis p.P im Dreibettzimmer</th>{% endif %}
|
||||
{% if has_double_bed_room %}
|
||||
<th>Preis p.P im Doppelzimmer</th>{% endif %}
|
||||
{% if has_singel_bed_room %}
|
||||
<th>Preis p.P im Einzelzimmer</th>{% endif %}
|
||||
<th>Abflugorte / Zuschläge</th>
|
||||
<th>Verfügbarkeit</th>
|
||||
<th>Buchungsformular</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
{% set last_name = "" %}
|
||||
{% for travel_date in travel_program.travelDates if travel_date.status >= 0 %}
|
||||
|
||||
{% if last_name != travel_date.name %}
|
||||
{% set last_name = travel_date.name %}
|
||||
|
||||
{# @var travel_date \AppBundle\Entity\TravelDate #}
|
||||
<tr>
|
||||
<td data-title="Nr."><strong class="small">{{ travel_date.name }}</strong>
|
||||
</td>
|
||||
<td data-title="Beginn">{{ travel_date.start|date }} <span class="small-table-show">{{ travel_date.end|date }}</span></td>
|
||||
<td data-title="Ende" class="small-table-hidden">{{ travel_date.end|date }}</td>
|
||||
{% if has_three_bed_room %}
|
||||
<td data-title="Preis p.P. im Dreibettzimmer" class="price">
|
||||
{% if travel_date.prices[5] is defined %}
|
||||
{% if travel_date.prices[5].available == "1" %}
|
||||
{% if travel_date.prices[5] is defined %}
|
||||
|
||||
<span class="block">
|
||||
<span class="{% if travel_date.prices[5].effectiveDiscountPrice %}old_price{% endif %}">
|
||||
{% if travel_date.prices[5].effectiveDiscountPrice %}
|
||||
<i class="icons-percent"></i>
|
||||
{% endif %}
|
||||
ab {{ travel_date.prices[5].effectivePrice|number_format }} €
|
||||
</span>
|
||||
{% if travel_date.prices[5].effectiveDiscountPrice %}
|
||||
<span class="new_price">
|
||||
ab {{ travel_date.prices[5].effectiveDiscountPrice|number_format }}
|
||||
€
|
||||
</span>
|
||||
{% endif %}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
nicht verfügbar
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endif %}
|
||||
{% if has_double_bed_room %}
|
||||
<td data-title="Preis p.P im Doppelzimmer" class="price">
|
||||
{% if travel_date.prices[3] is defined %}
|
||||
{% if travel_date.prices[3].available == "1" %}
|
||||
<span class="block">
|
||||
<span class="{% if travel_date.prices[3].effectiveDiscountPrice %}old_price{% endif %}">
|
||||
{% if travel_date.prices[3].effectiveDiscountPrice %}
|
||||
<i class="icons-percent"></i>
|
||||
{% endif %}
|
||||
ab {{ travel_date.prices[3].effectivePrice|number_format }} €
|
||||
</span>
|
||||
{% if travel_date.prices[3].effectiveDiscountPrice %}
|
||||
<span class="new_price">
|
||||
ab {{ travel_date.prices[3].effectiveDiscountPrice|number_format }}
|
||||
€
|
||||
</span>
|
||||
{% endif %}
|
||||
</span>
|
||||
{% else %}
|
||||
nicht verfügbar
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endif %}
|
||||
|
||||
{% if has_singel_bed_room %}
|
||||
<td data-title="Preis p.P im Einzelzimmer" class="price">
|
||||
{% if travel_date.prices[1] is defined %}
|
||||
{% if travel_date.prices[1].available == "1" %}
|
||||
<span class="block">
|
||||
<span class="{% if travel_date.prices[1].effectiveDiscountPrice %}old_price{% endif %}">
|
||||
{% if travel_date.prices[1].effectiveDiscountPrice %}
|
||||
<i class="icons-percent"></i>
|
||||
{% endif %}
|
||||
ab {{ travel_date.prices[1].effectivePrice|number_format }}
|
||||
€
|
||||
</span>
|
||||
{% if travel_date.prices[1].effectiveDiscountPrice %}
|
||||
<span class="new_price">
|
||||
ab {{ travel_date.prices[1].effectiveDiscountPrice|number_format }}
|
||||
€
|
||||
</span>
|
||||
{% endif %}
|
||||
</span>
|
||||
{% else %}
|
||||
nicht verfügbar
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endif %}
|
||||
<td data-title="Abflugorte / Zuschläge">
|
||||
<a href="#" class="btn btn-primary btn-sm border-radius st-slider-booking-btn" data-toggle="modal"
|
||||
data-target="#st-departures-modal-{{ loop.index0 }}">
|
||||
Flughäfen
|
||||
</a>
|
||||
|
||||
{% include 'default/components/departuresModal.html.twig' with {
|
||||
'departures': travel_date.departures,
|
||||
'id': loop.index0,
|
||||
'startWeekday': travel_date.startWeekday,
|
||||
'travelName': travel_date.name
|
||||
} %}
|
||||
</td>
|
||||
|
||||
{% if travel_date.effectiveStatus == 0 %}
|
||||
<td data-title="Verfügbarkeit" colspan="2">
|
||||
<div style="">
|
||||
<img src="/images/icons/available-{{ travel_date.effectiveStatus }}.png"
|
||||
style="height: 24px; width: 24px;vertical-align:middle"
|
||||
alt="">
|
||||
AUSGEBUCHT
|
||||
</div>
|
||||
|
||||
</td>
|
||||
{% else %}
|
||||
<td data-title="Verfügbarkeit">
|
||||
<div style="font-size: 0.95em">
|
||||
<img src="/images/icons/available-{{ travel_date.effectiveStatus }}.png"
|
||||
style="height: 24px; width: 24px;vertical-align:middle"
|
||||
alt="">
|
||||
{% if travel_date.effectiveStatus == 1 %}
|
||||
BUCHBAR
|
||||
{% endif %}
|
||||
{% if travel_date.effectiveStatus == 2 %}
|
||||
BUCHBAR
|
||||
{% endif %}
|
||||
{% if travel_date.effectiveStatus == 3 %}
|
||||
GARANTIERT
|
||||
{% endif %}
|
||||
{% if travel_date.effectiveStatus == 4 %}
|
||||
WENIGE PLÄTZE
|
||||
{% endif %}
|
||||
{% if travel_date.effectiveStatus == 5 %}
|
||||
NUR NOCH <span style="white-space: nowrap">1 PLATZ</span>
|
||||
{% endif %}
|
||||
{% if travel_date.effectiveStatus == 6 %}
|
||||
NUR NOCH <span style="white-space: nowrap">2 PLÄTZE</span>
|
||||
{% endif %}
|
||||
{% if travel_date.effectiveStatus == 7 %}
|
||||
NUR NOCH <span style="white-space: nowrap">3 PLÄTZE</span>
|
||||
{% endif %}
|
||||
{% if travel_date.effectiveStatus == 8 %}
|
||||
NUR NOCH <span style="white-space: nowrap">4 PLÄTZE</span>
|
||||
{% endif %}
|
||||
{% if travel_date.effectiveStatus == 9 %}
|
||||
NUR NOCH <span style="white-space: nowrap">5 PLÄTZE</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</td>
|
||||
<td data-title="">
|
||||
<a href="{{ page.urlPath ~ '/buchen?nr=' ~ travel_date.name }}"
|
||||
class="btn btn-primary btn-md border-radius btn-booking-form"
|
||||
rel="nofollow"
|
||||
>
|
||||
<i class="fa fa-angle-double-right"></i> Buchungs-<br class="hidden"><span class="hidden" style="margin-left: 5px;"> </span>Formular
|
||||
</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
Momentan sind für dieses Programm keine Termine verfügbar.
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div> <!-- END tabpanel -->
|
||||
|
||||
{#
|
||||
********* LANDKARTE *********
|
||||
#}
|
||||
|
||||
{% if travel_program.hasMap %}
|
||||
<div role="tabpanel" class="tab-pane" id="travel-map-content-tab">
|
||||
|
||||
{% if travel_program.mapHtml is not empty %}
|
||||
{{ travel_program.mapHtml|raw|stripslashes }}
|
||||
{% else %}
|
||||
<img src="{{ asset('/images/dummy.png') }}"
|
||||
data-src="/uploads/maps/{{ travel_program.mapImage ~ travel_program.mapImageExt }}"
|
||||
alt="Karte zum Reiseablauf" class="img-responsive lozad">
|
||||
<br clear="all">
|
||||
{% endif %}
|
||||
|
||||
</div> <!-- END tabpanel -->
|
||||
{% endif %}
|
||||
|
||||
{#
|
||||
********* LANDINFOS *********
|
||||
#}
|
||||
|
||||
<div role="tabpanel" class="tab-pane" id="travel-info-content-tab">
|
||||
|
||||
{% for country in travel_program.countries %}
|
||||
|
||||
<h2>{{ country.name }}</h2>
|
||||
{{ country.htmlInformation|raw|lozad }}
|
||||
{% endfor %}
|
||||
|
||||
</div> <!-- END tabpanel -->
|
||||
|
||||
</div>
|
||||
|
||||
{{ block('travel_program_tab_bar') }}
|
||||
</div>
|
||||
</section><!-- end section -->
|
||||
{% endblock body %}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{% block body %}
|
||||
<div id="section_order">
|
||||
<h1>{{ page.pagetitle|default(page.title) }}</h1>
|
||||
|
||||
<section class="clearfix" id="section_order_second">
|
||||
{{ page.content|keywords|raw|lozad }}
|
||||
</section>
|
||||
<section class="clearfix" id="section_order_first">
|
||||
{#{% for i in 0..page.children|length//3 %}#}
|
||||
<div class="row">
|
||||
{% for child_page in child_pages if child_page.status == 1 and child_page.travelProgram is not empty %}
|
||||
|
||||
{% include 'default/components/pageBox.html.twig' %}
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% if mediated_child_pages is not empty %}
|
||||
|
||||
<h2>
|
||||
Vermittelte Rundreisen vom {{ page.country is not empty ? (page.country.name ~ '-') }}Spezialisten
|
||||
STERN TOURS aus Berlin
|
||||
</h2>
|
||||
|
||||
<div class="row">
|
||||
{% for child_page in mediated_child_pages %}
|
||||
|
||||
{% include 'default/components/pageBox.html.twig' %}
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1,301 +0,0 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block meta_description %}
|
||||
<meta name="description" content="STERN TOURS Testversion der Startseite fuer die Abstimmung.">
|
||||
{% endblock %}
|
||||
|
||||
{% block meta_keywords %}
|
||||
<meta name="keywords" content="STERN TOURS, Kulturreisen, Ferienwohnungen Usedom">
|
||||
{% endblock %}
|
||||
|
||||
{% block meta_robots %}
|
||||
<meta name="robots" content="noindex,nofollow" />
|
||||
{% endblock %}
|
||||
|
||||
{% block canonical_tag %}{% endblock %}
|
||||
|
||||
{% block stylesheets %}
|
||||
{{ parent() }}
|
||||
<link rel="preload" as="image" href="{{ asset('img/slider/a1.jpg') }}">
|
||||
<link rel="preload" as="image" href="{{ asset('img/slider/m1.jpg') }}">
|
||||
<link rel="preload" as="image" href="{{ asset('img/slider/s1.jpg') }}">
|
||||
<link rel="preload" as="image" href="{{ asset('img/slider/u1.jpg') }}">
|
||||
<link rel="preload" as="image" href="{{ asset('img/usedom.jpg') }}">
|
||||
<style>
|
||||
.dev-home-note {
|
||||
margin-bottom: 25px;
|
||||
padding: 14px 18px;
|
||||
border-left: 4px solid #648859;
|
||||
background: #f4f7f2;
|
||||
color: #3f4a3a;
|
||||
}
|
||||
.dev-usedom-teaser {
|
||||
margin: 35px 0;
|
||||
padding: 30px;
|
||||
background: #f6f1e8;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.dev-usedom-teaser .lead {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.dev-usedom-teaser .btn {
|
||||
margin-top: 5px;
|
||||
}
|
||||
.dev-usedom-teaser-image {
|
||||
overflow: hidden;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.dev-usedom-teaser-image .img-background {
|
||||
min-height: 190px;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
}
|
||||
.dev-usedom-carousel-heading {
|
||||
margin: 8px 0 20px;
|
||||
padding: 0 15px 8px;
|
||||
border-bottom: 1px solid #d89a13;
|
||||
color: #5a5a5a;
|
||||
}
|
||||
.dev-destination-note {
|
||||
margin: 10px 0 18px;
|
||||
padding: 12px 16px;
|
||||
border-left: 4px solid #d89a13;
|
||||
background: #f8f3ea;
|
||||
}
|
||||
.dev-destination-note strong {
|
||||
display: block;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.travel-wrapper .item .item-img {
|
||||
position: relative;
|
||||
}
|
||||
.homepage-card-counter {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
z-index: 12;
|
||||
padding: 3px 8px;
|
||||
border-radius: 2px;
|
||||
background: rgb(100, 136, 89, 0.88);
|
||||
color: #fff;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
}
|
||||
.homepage-card-new-badge {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 10px;
|
||||
z-index: 12;
|
||||
padding: 3px 8px;
|
||||
border-radius: 2px;
|
||||
background: #ffc926;
|
||||
color: #1a457c;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block header2 %}
|
||||
{% include 'default/components/home/dev_slider.html.twig' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumb %}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div id="section_orders">
|
||||
<div class="dev-home-note">
|
||||
<strong>Interne Abstimmungsversion:</strong>
|
||||
Diese Startseite ist nur unter dem Testlink sichtbar und nicht fuer Suchmaschinen freigegeben.
|
||||
</div>
|
||||
|
||||
{% set homepage_offer_heading = homepage_offer_title|default('beliebtesten Kulturreisen') %}
|
||||
{% if '%count%' in homepage_offer_heading %}
|
||||
<h1>{{ homepage_offer_heading|replace({'%count%': homepage_offer_pages|length}) }}</h1>
|
||||
{% elseif homepage_offer_heading|slice(0, 6) == 'Unsere' %}
|
||||
<h1>{{ homepage_offer_heading }}</h1>
|
||||
{% else %}
|
||||
<h1>Unsere {{ homepage_offer_pages|length }} {{ homepage_offer_heading|replace({'Beliebte': 'beliebtesten', 'beliebte': 'beliebtesten'}) }}</h1>
|
||||
{% endif %}
|
||||
|
||||
<section id="dev-home-offers">
|
||||
{% if homepage_offer_pages is not empty %}
|
||||
{% include 'default/components/multiPageBoxCarousel.html.twig' with {
|
||||
pages: homepage_offer_pages,
|
||||
show_item_counter: true,
|
||||
new_page_ids: homepage_offer_new_page_ids|default([])
|
||||
} %}
|
||||
{% else %}
|
||||
<p>Aktuell konnten keine kuratierten Reiseangebote geladen werden.</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
<section class="clearfix dev-usedom-teaser" id="dev-home-usedom">
|
||||
<div class="row">
|
||||
<div class="col-md-7">
|
||||
<h2 class="h3 h3l">Lieber näher zuhause? Ferienwohnungen auf Usedom</h2>
|
||||
<p class="lead">
|
||||
Neben unseren Kulturreisen bieten wir <strong>8 Ferienwohnungen</strong> in zwei Häusern auf Usedom.
|
||||
Ideal für alle, die kurzfristig, individuell und nah an der Ostsee Urlaub machen möchten.
|
||||
</p>
|
||||
<a class="btn btn-primary" href="/ferienwohnungen" title="Ferienwohnungen auf Usedom ansehen">
|
||||
Ferienwohnungen ansehen
|
||||
</a>
|
||||
<br><br>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<div class="dev-usedom-teaser-image">
|
||||
<img class="img-responsive" src="{{ asset('img/usedom.jpg') }}" alt="Ferienwohnungen auf Usedom">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
<h2 class="h4 h3l dev-usedom-carousel-heading">Unsere 8 Ferienwohnungen auf Usedom</h2>
|
||||
{% if fewo_lodgings is not empty %}
|
||||
<div class="owl-fullwidth owl-carousel owl-theme">
|
||||
{% for lodging in fewo_lodgings %}
|
||||
<div class="owl-item-full">
|
||||
<div class="travel-wrapper get-box-link">
|
||||
<div class="item text-left">
|
||||
<div class="item-img">
|
||||
<div class="lb">
|
||||
{% if lodging.page.boxStar is not empty %}
|
||||
<div class="cstar_left">{{ lodging.page.boxStar|raw }}</div>
|
||||
{% endif %}
|
||||
{% if lodging.page.boxDiscount is not empty %}
|
||||
<div class="cdiscount">{{ lodging.page.boxDiscount|raw }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% include 'default/components/pageBoxImage.html.twig' with {page: lodging.page} %}
|
||||
</div>
|
||||
<div class="box_mid">
|
||||
<div class="hl5">{{ lodging.page.title }}</div>
|
||||
<p>{{ lodging.page.boxBody ?? lodging.page.description }}</p>
|
||||
</div>
|
||||
<a class="item-button is-box-link dobble_line" href="{{ lodging.page.urlPath }}" title="{{ lodging.page.title }}">
|
||||
<span>{{ lodging.page.title }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
<section id="dev-home-countries">
|
||||
<div class="clearfix">
|
||||
<h2 class="h3 h3l">{{ homepage_country_title|default('Alle Reisekategorien auf einen Blick') }}</h2>
|
||||
</div>
|
||||
|
||||
{% include 'default/components/multiPageBoxCarousel.html.twig' with {pages: country_pages} %}
|
||||
</section>
|
||||
|
||||
<section class="clearfix" id="dev-home-copy">
|
||||
<div class="content-copy">
|
||||
<h1>STERN TOURS - Ihr Kulturreise-Spezialist aus Berlin</h1>
|
||||
<p class="ft">
|
||||
Herzlich willkommen bei STERN TOURS, Ihrem Reiseveranstalter für ausgewählte Kulturreisen.
|
||||
Seit 1998 beraten wir Reisende zu den historischen Schätzen des Orients, Nordafrikas und
|
||||
Zentralasiens. In der aktuellen Startseitenfassung stehen besonders die Reiseziele im
|
||||
Vordergrund, die derzeit gut planbar und verkaufbar sind: Ägypten, Marokko, Usbekistan
|
||||
und Oman. Bei Destinationen mit angespannter Lage kommunizieren wir bewusst transparent
|
||||
und beraten persönlich, statt Reisen unkritisch in den Vordergrund zu stellen.
|
||||
</p>
|
||||
<hr>
|
||||
<h2 class="h3 h3l">Ägypten - Land der Pyramiden und Pharaonen</h2>
|
||||
<p class="ft">
|
||||
Ägypten bleibt eines der klassischen STERN TOURS Ziele: Pyramiden, Luxor, das Tal der Könige,
|
||||
Kairo und der Nil verbinden große Geschichte mit gut planbaren Kulturreisen. Unsere Programme
|
||||
führen zu den wichtigsten Stätten des alten Ägypten und lassen sich je nach Reiseverlauf mit
|
||||
einer Nilkreuzfahrt oder erholsamen Tagen am Roten Meer verbinden.
|
||||
Hier finden Sie unsere <a href="/aegypten-reisen/aegypten-rundreisen" title="Ägypten Rundreisen">Ägypten Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Marokko - Königsstädte, Wüste und lebendige Kultur</h2>
|
||||
<p class="ft">
|
||||
Marokko verbindet orientalische Atmosphäre mit einer guten Erreichbarkeit: Marrakesch, Fès,
|
||||
Rabat und Meknès stehen für Königsstädte, Handwerk, Märkte und eindrucksvolle Architektur.
|
||||
Ausflüge in den Atlas und in die Wüstenlandschaften machen Marokko zu einem vielseitigen Ziel
|
||||
für Kulturreisende, die derzeit eine gut planbare Alternative im nordafrikanischen Raum suchen.
|
||||
Hier finden Sie unsere <a href="/marokko-urlaub/marokko-rundreisen" title="Marokko Rundreisen">Marokko Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Usbekistan - entlang der Seidenstraße nach Samarkand</h2>
|
||||
<p class="ft">
|
||||
Usbekistan ist ein junges Reiseland mit einer sehr alten Kultur. Samarkand, Buchara und Chiwa
|
||||
stehen für die Seidenstraße, prachtvolle Medresen, türkisfarbene Kuppeln und Oasenstädte, die
|
||||
bis heute von Handel, Handwerk und Geschichte erzählen. Für kulturinteressierte Gäste ist
|
||||
Usbekistan aktuell eines der spannendsten und zugleich gut vermittelbaren Ziele im Programm.
|
||||
Hier finden Sie unsere <a href="/usbekistan-reisen/usbekistan-rundreisen" title="Usbekistan Rundreisen">Usbekistan Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Oman - Wüstenschlösser, Naturschauspiele und Badestrände</h2>
|
||||
<p class="ft">
|
||||
Der Oman bietet Wüsten, Gebirge, Oasen, Küsten und eine wohltuend ruhige Form orientalischer
|
||||
Gastfreundschaft. Maskat, Nizwa, traditionelle Souks, Forts und Fahrten durch eindrucksvolle
|
||||
Landschaften machen das Sultanat zu einem hochwertigen Kulturreiseziel. Wer eine planbare Reise
|
||||
mit Natur, Geschichte und Erholung verbinden möchte, findet im Oman eine starke Alternative.
|
||||
Hier finden Sie unsere <a href="/oman-reisen/oman-rundreisen" title="Oman Rundreisen">Oman Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Türkei - Kultur zwischen Europa und Asien</h2>
|
||||
<p class="ft">
|
||||
Die Türkei bietet mit Istanbul, Ephesus, Kappadokien und vielen antiken Stätten ein großes
|
||||
kulturelles Spektrum. Auf der aktuellen Startseite bleibt sie bewusst im Hintergrund, da der
|
||||
Fokus auf den derzeit wichtigsten STERN TOURS Zielen liegt.
|
||||
Hier finden Sie unsere <a href="/tuerkei-reisen/tuerkei-rundreisen" title="Türkei Rundreisen">Türkei Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Jordanien - Petra, Wadi Rum und persönliche Beratung</h2>
|
||||
<div class="dev-destination-note">
|
||||
<strong>Aktuelle Einordnung:</strong>
|
||||
Reisen nach Jordanien sind grundsätzlich weiterhin möglich. Aufgrund der angespannten Lage in
|
||||
der Region empfehlen wir eine persönliche Beratung und eine sorgfältige Prüfung von Reisezeitraum
|
||||
und Verfügbarkeit.
|
||||
</div>
|
||||
<p class="ft">
|
||||
Jordanien bleibt kulturell eines der eindrucksvollsten Ziele der Region: die Felsenstadt Petra,
|
||||
Wadi Rum, Amman, Jerash und das Tote Meer prägen viele Reiseverläufe. Auf der Startseite wird
|
||||
Jordanien derzeit bewusst weniger prominent beworben; Interessierte beraten wir gern individuell.
|
||||
Hier finden Sie unsere <a href="/jordanien-reisen/jordanien-rundreisen" title="Jordanien Rundreisen">Jordanien Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Israel - große Religionsgeschichte mit aktueller Lageprüfung</h2>
|
||||
<div class="dev-destination-note">
|
||||
<strong>Aktuelle Einordnung:</strong>
|
||||
Die Lage in der Region ist angespannt. Wir empfehlen, geplante Reisen nach Israel sorgfältig zu
|
||||
prüfen und sich vor einer Buchung persönlich beraten zu lassen.
|
||||
</div>
|
||||
<p class="ft">
|
||||
Israel ist ein Land von herausragender religiöser und kultureller Bedeutung: Jerusalem, Galiläa,
|
||||
das Tote Meer, Haifa und Akko stehen für Geschichte, Begegnung und Vielfalt. Aufgrund der
|
||||
aktuellen Situation tritt Israel auf der Startseite nicht in den Vordergrund; Anfragen mit
|
||||
längerem Vorlauf behandeln wir individuell und verantwortungsvoll.
|
||||
Hier finden Sie unsere <a href="/israel-reisen/israel-rundreisen" title="Israel Rundreisen">Israel Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Iran - Kulturschätze Persiens, derzeit nicht im Vordergrund</h2>
|
||||
<div class="dev-destination-note">
|
||||
<strong>Aktuelle Einordnung:</strong>
|
||||
Aufgrund der aktuellen Lage sind Iran-Reisen derzeit nicht als aktive Buchungsempfehlung auf der
|
||||
Startseite platziert. Interessierte können sich vormerken lassen und werden informiert, sobald
|
||||
Reisen wieder verantwortungsvoll planbar sind.
|
||||
</div>
|
||||
<p class="ft">
|
||||
Der Iran blickt auf Jahrtausende Kulturgeschichte zurück: Isfahan, Schiras, Yazd und Persepolis
|
||||
gehören zu den großen Namen persischer Geschichte. Diese Faszination bleibt bestehen, wird aber
|
||||
aktuell bewusst nicht verkaufsstark beworben. Der Schwerpunkt liegt auf transparenter Information
|
||||
und späterer Wiederaufnahme, sobald die Rahmenbedingungen es erlauben.
|
||||
Hier finden Sie unsere <a href="/iran-reisen/iran-rundreisen" title="Iran Rundreisen">Iran Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{% endblock body %}
|
||||
|
|
@ -1,294 +0,0 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
{% form_theme form 'default/form/theme.html.twig' %}
|
||||
|
||||
{% block stylesheets %}
|
||||
<style>.box-slider .slide:not(.active) {display: none;}</style>{# TODO Move to custom.css #}
|
||||
<link rel="stylesheet" href="{{ asset('css/my-fewo.css?v') }}{{ get_file_last_time('css/my-fewo.css') }}">
|
||||
{% endblock stylesheets %}
|
||||
|
||||
{% block javascripts %}
|
||||
{{ parent() }}
|
||||
<script src="{{ asset('js/fewoBooking-min.js?v') }}{{ get_file_last_time('js/fewoBooking-min.js') }}" data-cookieconsent="necessary"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<section class="clearfix">
|
||||
|
||||
<div class="content-copy">
|
||||
|
||||
<h1>Buchungsformular FeWo</h1>
|
||||
|
||||
|
||||
<div class="pull-right">
|
||||
<a href="{{ page.urlPath }}" class="btn btn-primary btn-sm"><< zurück zu Termine und Preise</a>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
|
||||
|
||||
<h2 style="margin-top:10px">{{ lodging.name }}</h2>
|
||||
|
||||
|
||||
<div id="booking_form" class="booking_form" style="">
|
||||
|
||||
<form class="st-booking-form" method="post" data-toggle="validator">
|
||||
|
||||
{{ form_errors(form) }}
|
||||
{{ form_errors(form.email) }}
|
||||
|
||||
<input type="hidden" name="hidden_toDate" id="hidden_toDate" value="{{ lastSeason.toDate|date('d-m-y') }}">
|
||||
<input type="hidden" name="hidden_reservationDays" id="hidden_reservationDays" value='{{ reservationDays|json_encode|raw }}'>
|
||||
<input type="hidden" name="hidden_customDays" id="hidden_customDays" value='{{ classByDays|json_encode|raw }}'>
|
||||
|
||||
|
||||
<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>Ferienwohnung</td>
|
||||
<td>
|
||||
{{ lodging.name }}
|
||||
</td>
|
||||
</tr>
|
||||
<!-- <tr>
|
||||
<td>Saison</td>
|
||||
<td>
|
||||
{{ fewo_price.season.name }}
|
||||
</td>
|
||||
</tr>
|
||||
-->
|
||||
<tr>
|
||||
<td><label class="st-required control-label required">Datum</label></td>
|
||||
<td style="white-space: normal;">
|
||||
<div class="row margin-bottom:0;">
|
||||
<div class="form-group col-xs-12 col-md-6" style="margin-bottom:0;">
|
||||
<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>
|
||||
</div>
|
||||
<div class="form-group hidden" style="margin-bottom:0;">
|
||||
<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 class="small alert alert-success" style="margin-bottom: 0; padding-top: 6px; padding-bottom: 6px">Bei Datumsänderung, immer erst das Anreisedatum, dann das Abreisedatum im Kalender auswählen.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- <tr>
|
||||
<td>Mindestbelegung</td>
|
||||
<td>
|
||||
{{ fewo_price.season.minimumStay }} {{ fewo_price.season.minimumStay < 2 ? 'Nacht' : 'Nächte' }}
|
||||
</td>
|
||||
</tr> -->
|
||||
<tr>
|
||||
<td>{{ form_label(form.travelerCountAdult, 'Reiseteilnehmer Erwachsene') }}</td>
|
||||
<td>
|
||||
<div style="max-width: 180px;">
|
||||
{{ form_widget(form.travelerCountAdult) }}
|
||||
{{ form_errors(form.travelerCountAdult) }}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ form_label(form.travelerCountChild, 'Reiseteilnehmer Kinder') }}</td>
|
||||
<td>
|
||||
<div style="max-width: 180px;">
|
||||
{{ form_widget(form.travelerCountChild) }}
|
||||
{{ form_errors(form.travelerCountChild) }}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- <tr>
|
||||
<td>{{ form_label(form.travelerCount, 'Reiseteilnehmer') }}</td>
|
||||
<td>
|
||||
<div style="max-width: 180px;">
|
||||
{{ form_widget(form.travelerCount) }}
|
||||
{{ form_errors(form.travelerCount) }}
|
||||
</div>
|
||||
</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/fewoSummary.html.twig' with {
|
||||
'fewo_booking_request' : fewo_booking_request,
|
||||
'fewo_lodging' : fewo_lodging,
|
||||
'fewo_price' : fewo_price,
|
||||
'total_price' : total_price,
|
||||
'total_price_per_night' : total_price_per_night,
|
||||
} %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</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="form-group col-md-12 col-sm-12 col-xs-12">
|
||||
{{ form_field_pho(form.salutation, 'Anrede', {'label_attr': {class: 'sr-only'}}) }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<div class="form-group">
|
||||
<div class="required">
|
||||
{{ form_field_pho(form.firstName, 'Vorname') }}
|
||||
</div>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<div class="form-group">
|
||||
<div class="required">
|
||||
{{ form_field_pho(form.lastName, 'Nachname') }}
|
||||
</div>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 col-sm-12 col-xs-12">
|
||||
<div class="form-group">
|
||||
<div class="required">
|
||||
{{ form_field_pho(form.streetAddress, 'Straße, Hausnummer') }}
|
||||
</div>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<div class="form-group">
|
||||
<div class="required">
|
||||
{{ form_field_pho(form.zipCode, 'PLZ') }}
|
||||
</div>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<div class="form-group">
|
||||
<div class="required">
|
||||
{{ form_field_pho(form.city, 'Ort') }}
|
||||
</div>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-12 col-sm-12 col-xs-12">
|
||||
{{ form_field_pho(form.nation, 'Land') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<div class="form-group">
|
||||
<div class="required">
|
||||
{{ form_field_pho(form.phone, 'Telefon tagsüber') }}
|
||||
</div>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
{{ form_field_pho(form.mobile, 'Handynummer (Bitte angeben)') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 col-sm-12 col-xs-12">
|
||||
<div class="form-group">
|
||||
<div class="required">
|
||||
{{ form_field_pho(form.email, 'E-Mail-Adresse') }}
|
||||
</div>
|
||||
<div class="help-block with-errors"></div>
|
||||
</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">
|
||||
{{ form_field(form.notes, 'Mitteilungen / Sonstiges (optional)', {
|
||||
'label_attr': {'class': 'sr-only'},
|
||||
'attr': {'rows': '6'}
|
||||
}) }}
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- end form-box -->
|
||||
|
||||
|
||||
<div class="form-box">
|
||||
<div class="">
|
||||
<div class="col-md-12 col-sm-12 col-xs-12">
|
||||
<h5>Datenschutz</h5>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
{{ form_widget(form.acceptPrivacy) }}
|
||||
<label for="{{ form.acceptPrivacy.vars.id }}">
|
||||
Hiermit willige ich in die im Rahmen der
|
||||
<a href="/datenschutz" target="_blank">
|
||||
Datenschutzerklärung
|
||||
</a> genannte Datenverarbeitung ein.
|
||||
</label>
|
||||
<span class="checkbox_marker"></span>
|
||||
{{ form_errors(form.acceptPrivacy) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
<div class="checkbox">
|
||||
{{ form_widget(form.acceptRentalConditions) }}
|
||||
<label for="{{ form.acceptRentalConditions.vars.id }}">
|
||||
Ich bin einverstanden mit den
|
||||
<a href="/pdf/Stern-Tours-Mietbedingungen.pdf" target="_blank">
|
||||
Mietbedingungen.
|
||||
</a>
|
||||
</label>
|
||||
<span class="checkbox_marker"></span>
|
||||
{{ form_errors(form.acceptRentalConditions) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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 btn-booking-form"
|
||||
>
|
||||
<span class="btn-booking-submit"><i class="fa fa-angle-double-right" style="margin-bottom:-1px!important;"></i> zahlungspflichtig<br class="visible-xs"> mieten</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>
|
||||
</div>
|
||||
</div><!-- end form-box -->
|
||||
|
||||
|
||||
{{ form_rest(form) }}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div><!-- end contact-form -->
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
{% endblock body %}
|
||||
|
|
@ -1,283 +0,0 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block meta_description %}
|
||||
<meta name="description" content="STERN TOURS Reisebüro ist Spezialist für Kulturreisen nach Ägypten, Marokko, Usbekistan, Oman und weiteren Zielen. Ferienwohnungen auf Usedom.">
|
||||
{% endblock %}
|
||||
|
||||
{% block meta_keywords %}
|
||||
<meta name="keywords" content="STERN TOURS, Reisebüro, Spezialist, Reiseveranstalter, Kulturreisen, Ägypten Urlaub, Marokko Reisen, Usbekistan Reisen, Oman Reisen, Ferienwohnungen Usedom">
|
||||
{% endblock %}
|
||||
|
||||
{% block stylesheets %}
|
||||
{{ parent() }}
|
||||
<link rel="preload" as="image" href="{{ asset('img/slider/a1.jpg') }}">
|
||||
<link rel="preload" as="image" href="{{ asset('img/slider/m1.jpg') }}">
|
||||
<link rel="preload" as="image" href="{{ asset('img/slider/s1.jpg') }}">
|
||||
<link rel="preload" as="image" href="{{ asset('img/slider/u1.jpg') }}">
|
||||
<link rel="preload" as="image" href="{{ asset('img/usedom.jpg') }}">
|
||||
<style>
|
||||
.dev-usedom-teaser {
|
||||
margin: 35px 0;
|
||||
padding: 30px;
|
||||
background: #f6f1e8;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.dev-usedom-teaser .lead {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.dev-usedom-teaser .btn {
|
||||
margin-top: 5px;
|
||||
}
|
||||
.dev-usedom-teaser-image {
|
||||
overflow: hidden;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.dev-usedom-teaser-image .img-background {
|
||||
min-height: 190px;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
}
|
||||
.dev-usedom-carousel-heading {
|
||||
margin: 8px 0 20px;
|
||||
padding: 0 15px 8px;
|
||||
border-bottom: 1px solid #d89a13;
|
||||
color: #5a5a5a;
|
||||
}
|
||||
.dev-destination-note {
|
||||
margin: 10px 0 18px;
|
||||
padding: 12px 16px;
|
||||
border-left: 4px solid #d89a13;
|
||||
background: #f8f3ea;
|
||||
}
|
||||
.dev-destination-note strong {
|
||||
display: block;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.travel-wrapper .item .item-img {
|
||||
position: relative;
|
||||
}
|
||||
.homepage-card-counter {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
z-index: 12;
|
||||
padding: 3px 8px;
|
||||
border-radius: 2px;
|
||||
background: rgb(100, 136, 89, 0.88);
|
||||
color: #fff;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
}
|
||||
.homepage-card-new-badge {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 10px;
|
||||
z-index: 12;
|
||||
padding: 3px 8px;
|
||||
border-radius: 2px;
|
||||
background: #ffc926;
|
||||
color: #1a457c;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block header2 %}
|
||||
{% include 'default/components/home/dev_slider.html.twig' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumb %}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div id="section_orders">
|
||||
{% set homepage_offer_heading = homepage_offer_title|default('beliebtesten Kulturreisen') %}
|
||||
{% if '%count%' in homepage_offer_heading %}
|
||||
<h1>{{ homepage_offer_heading|replace({'%count%': homepage_offer_pages|length}) }}</h1>
|
||||
{% elseif homepage_offer_heading|slice(0, 6) == 'Unsere' %}
|
||||
<h1>{{ homepage_offer_heading }}</h1>
|
||||
{% else %}
|
||||
<h1>Unsere {{ homepage_offer_pages|length }} {{ homepage_offer_heading|replace({'Beliebte': 'beliebtesten', 'beliebte': 'beliebtesten'}) }}</h1>
|
||||
{% endif %}
|
||||
|
||||
<section id="home-offers">
|
||||
{% if homepage_offer_pages is not empty %}
|
||||
{% include 'default/components/multiPageBoxCarousel.html.twig' with {
|
||||
pages: homepage_offer_pages,
|
||||
show_item_counter: true,
|
||||
new_page_ids: homepage_offer_new_page_ids|default([])
|
||||
} %}
|
||||
{% else %}
|
||||
<p>Aktuell konnten keine kuratierten Reiseangebote geladen werden.</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
<section class="clearfix dev-usedom-teaser" id="home-usedom">
|
||||
<div class="row">
|
||||
<div class="col-md-7">
|
||||
<h2 class="h3 h3l">Lieber näher zuhause? Ferienwohnungen auf Usedom</h2>
|
||||
<p class="lead">
|
||||
Neben unseren Kulturreisen bieten wir <strong>8 Ferienwohnungen</strong> in zwei Häusern auf Usedom.
|
||||
Ideal für alle, die kurzfristig, individuell und nah an der Ostsee Urlaub machen möchten.
|
||||
</p>
|
||||
<a class="btn btn-primary" href="/ferienwohnungen" title="Ferienwohnungen auf Usedom ansehen">
|
||||
Ferienwohnungen ansehen
|
||||
</a>
|
||||
<br><br>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<div class="dev-usedom-teaser-image">
|
||||
<img class="img-responsive" src="{{ asset('img/usedom.jpg') }}" alt="Ferienwohnungen auf Usedom">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix">
|
||||
</div>
|
||||
<h2 class="h4 h3l dev-usedom-carousel-heading">Unsere 8 Ferienwohnungen auf Usedom</h2>
|
||||
{% if fewo_lodgings is not empty %}
|
||||
<div class="owl-fullwidth owl-carousel owl-theme">
|
||||
{% for lodging in fewo_lodgings %}
|
||||
<div class="owl-item-full">
|
||||
<div class="travel-wrapper get-box-link">
|
||||
<div class="item text-left">
|
||||
<div class="item-img">
|
||||
<div class="lb">
|
||||
{% if lodging.page.boxStar is not empty %}
|
||||
<div class="cstar_left">{{ lodging.page.boxStar|raw }}</div>
|
||||
{% endif %}
|
||||
{% if lodging.page.boxDiscount is not empty %}
|
||||
<div class="cdiscount">{{ lodging.page.boxDiscount|raw }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% include 'default/components/pageBoxImage.html.twig' with {page: lodging.page} %}
|
||||
</div>
|
||||
<div class="box_mid">
|
||||
<div class="hl5">{{ lodging.page.title }}</div>
|
||||
<p>{{ lodging.page.boxBody ?? lodging.page.description }}</p>
|
||||
</div>
|
||||
<a class="item-button is-box-link dobble_line" href="{{ lodging.page.urlPath }}" title="{{ lodging.page.title }}">
|
||||
<span>{{ lodging.page.title }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
<section id="home-countries">
|
||||
<div class="clearfix">
|
||||
<h2 class="h3 h3l">{{ homepage_country_title|default('Alle Reisekategorien auf einen Blick') }}</h2>
|
||||
</div>
|
||||
|
||||
{% include 'default/components/multiPageBoxCarousel.html.twig' with {pages: country_pages} %}
|
||||
</section>
|
||||
|
||||
<section class="clearfix" id="home-copy">
|
||||
<div class="content-copy">
|
||||
<h1>STERN TOURS - Ihr Kulturreise-Spezialist aus Berlin</h1>
|
||||
<p class="ft">
|
||||
Herzlich willkommen bei STERN TOURS, Ihrem Reiseveranstalter für ausgewählte Kulturreisen.
|
||||
Seit 1998 beraten wir Reisende zu den historischen Schätzen des Orients, Nordafrikas und
|
||||
Zentralasiens. In der aktuellen Startseitenfassung stehen besonders die Reiseziele im
|
||||
Vordergrund, die derzeit gut planbar und verkaufbar sind: Ägypten, Marokko, Usbekistan
|
||||
und Oman. Bei Destinationen mit angespannter Lage kommunizieren wir bewusst transparent
|
||||
und beraten persönlich, statt Reisen unkritisch in den Vordergrund zu stellen.
|
||||
</p>
|
||||
<hr>
|
||||
<h2 class="h3 h3l">Ägypten - Land der Pyramiden und Pharaonen</h2>
|
||||
<p class="ft">
|
||||
Ägypten bleibt eines der klassischen STERN TOURS Ziele: Pyramiden, Luxor, das Tal der Könige,
|
||||
Kairo und der Nil verbinden große Geschichte mit gut planbaren Kulturreisen. Unsere Programme
|
||||
führen zu den wichtigsten Stätten des alten Ägypten und lassen sich je nach Reiseverlauf mit
|
||||
einer Nilkreuzfahrt oder erholsamen Tagen am Roten Meer verbinden.
|
||||
Hier finden Sie unsere <a href="/aegypten-reisen/aegypten-rundreisen" title="Ägypten Rundreisen">Ägypten Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Marokko - Königsstädte, Wüste und lebendige Kultur</h2>
|
||||
<p class="ft">
|
||||
Marokko verbindet orientalische Atmosphäre mit einer guten Erreichbarkeit: Marrakesch, Fès,
|
||||
Rabat und Meknès stehen für Königsstädte, Handwerk, Märkte und eindrucksvolle Architektur.
|
||||
Ausflüge in den Atlas und in die Wüstenlandschaften machen Marokko zu einem vielseitigen Ziel
|
||||
für Kulturreisende, die derzeit eine gut planbare Alternative im nordafrikanischen Raum suchen.
|
||||
Hier finden Sie unsere <a href="/marokko-urlaub/marokko-rundreisen" title="Marokko Rundreisen">Marokko Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Usbekistan - entlang der Seidenstraße nach Samarkand</h2>
|
||||
<p class="ft">
|
||||
Usbekistan ist ein junges Reiseland mit einer sehr alten Kultur. Samarkand, Buchara und Chiwa
|
||||
stehen für die Seidenstraße, prachtvolle Medresen, türkisfarbene Kuppeln und Oasenstädte, die
|
||||
bis heute von Handel, Handwerk und Geschichte erzählen. Für kulturinteressierte Gäste ist
|
||||
Usbekistan aktuell eines der spannendsten und zugleich gut vermittelbaren Ziele im Programm.
|
||||
Hier finden Sie unsere <a href="/usbekistan-reisen/usbekistan-rundreisen" title="Usbekistan Rundreisen">Usbekistan Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Oman - Wüstenschlösser, Naturschauspiele und Badestrände</h2>
|
||||
<p class="ft">
|
||||
Der Oman bietet Wüsten, Gebirge, Oasen, Küsten und eine wohltuend ruhige Form orientalischer
|
||||
Gastfreundschaft. Maskat, Nizwa, traditionelle Souks, Forts und Fahrten durch eindrucksvolle
|
||||
Landschaften machen das Sultanat zu einem hochwertigen Kulturreiseziel. Wer eine planbare Reise
|
||||
mit Natur, Geschichte und Erholung verbinden möchte, findet im Oman eine starke Alternative.
|
||||
Hier finden Sie unsere <a href="/oman-reisen/oman-rundreisen" title="Oman Rundreisen">Oman Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Türkei - Kultur zwischen Europa und Asien</h2>
|
||||
<p class="ft">
|
||||
Die Türkei bietet mit Istanbul, Ephesus, Kappadokien und vielen antiken Stätten ein großes
|
||||
kulturelles Spektrum. Auf der aktuellen Startseite bleibt sie bewusst im Hintergrund, da der
|
||||
Fokus auf den derzeit wichtigsten STERN TOURS Zielen liegt.
|
||||
Hier finden Sie unsere <a href="/tuerkei-reisen/tuerkei-rundreisen" title="Türkei Rundreisen">Türkei Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Jordanien - Petra, Wadi Rum und persönliche Beratung</h2>
|
||||
<div class="dev-destination-note">
|
||||
<strong>Aktuelle Einordnung:</strong>
|
||||
Reisen nach Jordanien sind grundsätzlich weiterhin möglich. Aufgrund der angespannten Lage in
|
||||
der Region empfehlen wir eine persönliche Beratung und eine sorgfältige Prüfung von Reisezeitraum
|
||||
und Verfügbarkeit.
|
||||
</div>
|
||||
<p class="ft">
|
||||
Jordanien bleibt kulturell eines der eindrucksvollsten Ziele der Region: die Felsenstadt Petra,
|
||||
Wadi Rum, Amman, Jerash und das Tote Meer prägen viele Reiseverläufe. Auf der Startseite wird
|
||||
Jordanien derzeit bewusst weniger prominent beworben; Interessierte beraten wir gern individuell.
|
||||
Hier finden Sie unsere <a href="/jordanien-reisen/jordanien-rundreisen" title="Jordanien Rundreisen">Jordanien Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Israel - große Religionsgeschichte mit aktueller Lageprüfung</h2>
|
||||
<div class="dev-destination-note">
|
||||
<strong>Aktuelle Einordnung:</strong>
|
||||
Die Lage in der Region ist angespannt. Wir empfehlen, geplante Reisen nach Israel sorgfältig zu
|
||||
prüfen und sich vor einer Buchung persönlich beraten zu lassen.
|
||||
</div>
|
||||
<p class="ft">
|
||||
Israel ist ein Land von herausragender religiöser und kultureller Bedeutung: Jerusalem, Galiläa,
|
||||
das Tote Meer, Haifa und Akko stehen für Geschichte, Begegnung und Vielfalt. Aufgrund der
|
||||
aktuellen Situation tritt Israel auf der Startseite nicht in den Vordergrund; Anfragen mit
|
||||
längerem Vorlauf behandeln wir individuell und verantwortungsvoll.
|
||||
Hier finden Sie unsere <a href="/israel-reisen/israel-rundreisen" title="Israel Rundreisen">Israel Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
<h2 class="h3 h3l">Iran - Kulturschätze Persiens, derzeit nicht im Vordergrund</h2>
|
||||
<div class="dev-destination-note">
|
||||
<strong>Aktuelle Einordnung:</strong>
|
||||
Aufgrund der aktuellen Lage sind Iran-Reisen derzeit nicht als aktive Buchungsempfehlung auf der
|
||||
Startseite platziert. Interessierte können sich vormerken lassen und werden informiert, sobald
|
||||
Reisen wieder verantwortungsvoll planbar sind.
|
||||
</div>
|
||||
<p class="ft">
|
||||
Der Iran blickt auf Jahrtausende Kulturgeschichte zurück: Isfahan, Schiras, Yazd und Persepolis
|
||||
gehören zu den großen Namen persischer Geschichte. Diese Faszination bleibt bestehen, wird aber
|
||||
aktuell bewusst nicht verkaufsstark beworben. Der Schwerpunkt liegt auf transparenter Information
|
||||
und späterer Wiederaufnahme, sobald die Rahmenbedingungen es erlauben.
|
||||
Hier finden Sie unsere <a href="/iran-reisen/iran-rundreisen" title="Iran Rundreisen">Iran Rundreisen</a>.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{% endblock body %}
|
||||
|
|
@ -1,106 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{% block body %}
|
||||
<section class="clearfix1">
|
||||
<article role="article">
|
||||
{% set site_has_h1 = false %}
|
||||
{% if(api is defined) %}
|
||||
{% if api.sites|length > 1 %}
|
||||
<div class="wrapper-nav-tabs">
|
||||
<ul class="nav nav-tabs nav-justified list-nav-tabs">
|
||||
{% for site in api.sites %}
|
||||
<li class="{% if loop.index==1 %} active {% endif %}">
|
||||
<a href="#travel_guide_content_{{ site.id }}" aria-controls="travel_guide_content_{{ site.id }}" role="tab" data-toggle="tab">
|
||||
{% if(site.scope == 0) %}
|
||||
Zusammenfassung <i class="hidden-xs">für eilige Leser</i>
|
||||
{% else %}
|
||||
Ausführliche Darstellung <i class="hidden-xs">für Interessierte</i>
|
||||
{% endif %}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tab-content">
|
||||
{% for site in api.sites %}
|
||||
<div role="tabpanel" class="tab-pane {% if loop.index==1 %} active {% endif %}" id="travel_guide_content_{{ site.id }}">
|
||||
{% if(site_has_h1) %}
|
||||
<h2 class="h1l">{{ site.name }}</h2>
|
||||
{% else %}
|
||||
<h1>{{ site.name }}</h1>
|
||||
{% set site_has_h1 = true %}
|
||||
{% endif %}
|
||||
{{ site.full_text|raw|keywords|lozad }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper-nav-tabs">
|
||||
<ul class="nav nav-tabs nav-justified list-nav-tabs">
|
||||
{% for site in api.sites %}
|
||||
<li class="{% if loop.index==1 %} active {% endif %}">
|
||||
<a href="#travel_guide_content_{{ site.id }}" aria-controls="travel_guide_content_{{ site.id }}" role="tab" data-toggle="tab">
|
||||
{% if(site.scope == 0) %}
|
||||
Zusammenfassung <i class="hidden-xs">für eilige Leser</i>
|
||||
{% else %}
|
||||
Ausführliche Darstellung <i class="hidden-xs">für Interessierte</i>
|
||||
{% endif %}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% else %}
|
||||
{% for site in api.sites %}
|
||||
{% if(site_has_h1) %}
|
||||
<h2 class="h1l">{{ site.name }}</h2>
|
||||
{% else %}
|
||||
<h1>{{ site.name }}</h1>
|
||||
{% set site_has_h1 = true %}
|
||||
{% endif %}
|
||||
{{ site.full_text|raw|keywords|lozad }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</article>
|
||||
</section>
|
||||
<hr>
|
||||
{% if(api is defined and api.children is defined and api.children is not empty) %}
|
||||
<section class="clearfix">
|
||||
<div class="row">
|
||||
{% for child_page in api.children %}
|
||||
{% if(child_page.active) %}
|
||||
<div class="col-md-4 col-sm-6">
|
||||
<div class="travel-wrapper get-box-link">
|
||||
<div class="item text-left">
|
||||
{% if(false and child_page.box_image_url is defined and child_page.box_image_url is not empty) %}
|
||||
<div class="item-img" style="height: 220px;">
|
||||
{% if child_page.box_image_url is defined and child_page.box_image_url is not empty %}
|
||||
{% set image_url = child_page.box_image_url %}
|
||||
{% set image_alt = child_page.name %}
|
||||
{% 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(960).guess(90) }}" style="background-image:url({{ asset('images/placeholder-image.png') }}); height: 220px;"></div>
|
||||
<noscript>
|
||||
<img width="234" height="180" src="{{ image(image_url|trim('/')).cropResize(960).guess(90) }}" class="img-responsiv img-responsiv-item" style="">
|
||||
</noscript>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="box_mid">
|
||||
<div class="hl5">{{ child_page.name }}</div>
|
||||
<p>{{ child_page.description }}</p>
|
||||
</div>
|
||||
<a class="item-button is-box-link dobble_line" href="{{ child_page.url }}" title="{{ child_page.name }}">
|
||||
<span>{{ child_page.name }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,115 +0,0 @@
|
|||
{% extends get_base_template() %}
|
||||
|
||||
{% block body %}
|
||||
<section class="clearfix">
|
||||
<div class="content-copy">
|
||||
|
||||
<h1>
|
||||
{% if travel_programs is empty %}
|
||||
Für Ihre Auswahl wurden keine Reisetermine gefunden.
|
||||
{% else %}
|
||||
Reisen mit passendem Termin gefunden: {{ travel_programs|length }}
|
||||
Reiseprogramm{% if travel_programs|length > 1 %}e{% endif %}
|
||||
{% endif %}
|
||||
</h1>
|
||||
|
||||
<div class="result-wrapper">
|
||||
|
||||
{% for travel_program in travel_programs if travel_program.travelDates is not empty %}
|
||||
<div class="result">
|
||||
<div class="row">
|
||||
<div class="image col-md-3">
|
||||
<img src="{{ travel_program.images.empty
|
||||
? '/images/icons/no-picture.png'
|
||||
: ('https://v2.sterntours.de/uploads/travel_program/' ~ travel_program.images.first.fileNameWithExtension)
|
||||
}}" class="img-responsive"
|
||||
>
|
||||
</div>
|
||||
<div class="description col-md-9">
|
||||
<span class="pull-right">
|
||||
<a href="{{ travel_program.page.urlPath }}/pdf" class="btn btn-default btn-sm border-radius">
|
||||
<i class="fa fa-file-pdf-o"></i> Druckversion
|
||||
</a>
|
||||
</span>
|
||||
<div class="title clearfix">{{ travel_program.title }}</div>
|
||||
|
||||
<div class="subtitle">{{ travel_program.subtitle }}</div>
|
||||
<div class="dates-count">
|
||||
{{ travel_program.travelDates|length }} passende{% if travel_program.travelDates|length > 1 %} Termine{% else %}r Termin{% endif %}
|
||||
</div>
|
||||
<div class="price pull-left"><span class="small">p.P.</span> ab {{ travel_program.lowestPrice|number_format }} €</div>
|
||||
|
||||
<div class="pull-right">
|
||||
<a href="{{ travel_program.page.urlPath }}"
|
||||
class="btn btn-primary btn-sm border-radius"
|
||||
target="_blank"
|
||||
>
|
||||
Angebot aufrufen
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="table-responsive no-more-tables" id="">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Termin-Nr.</th>
|
||||
<th>Beginn</th>
|
||||
<th>Ende</th>
|
||||
<th>Preis p.P im Doppelzimmer</th>
|
||||
<th>Preis p.P im Einzelzimmer</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set travel_program_loop = loop %}
|
||||
{% for travel_date in travel_program.travelDates if travel_date.status > 0 %}
|
||||
{# @var travel_date \AppBundle\Entity\TravelDate #}
|
||||
<tr>
|
||||
<td data-title="Termin-Nr."><strong>{{ travel_date.name }}</strong></td>
|
||||
<td data-title="Beginn">{{ travel_date.start|date }}</td>
|
||||
<td data-title="Ende">{{ travel_date.end|date }}</td>
|
||||
<td data-title="Preis p.P im Doppelzimmer">ab {{ travel_date.prices[3].effectivePrice|number_format }} €</td>
|
||||
<td data-title="Preis p.P im Einzelzimmer">ab {{ travel_date.prices[1].effectivePrice|number_format }} €</td>
|
||||
|
||||
<td data-title="Abflugorte / Zuschläge">
|
||||
<a href="#" class="color-brand" data-toggle="modal"
|
||||
data-target="#st-departures-modal-{{ travel_program_loop.index0 }}-{{ loop.index0 }}"
|
||||
>
|
||||
Flughäfen
|
||||
</a>
|
||||
|
||||
{% include 'default/components/departuresModal.html.twig' with {
|
||||
'departures': travel_date.departures,
|
||||
'id': travel_program_loop.index0 ~ '-' ~ loop.index0
|
||||
} %}
|
||||
</td>
|
||||
|
||||
<td data-title="Verfügbarkeit">
|
||||
<img src="/images/icons/available-{{ travel_date.effectiveStatus }}.png" alt="Verfügbarkeit" style="width: 30px;">
|
||||
</td>
|
||||
|
||||
<td data-title="">
|
||||
{# #TODO Bad performance #}
|
||||
<a href="{{ travel_program.page.urlPath }}#travel-dates-content-tab" class="btn btn-primary">Details</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
{% endblock body %}
|
||||
|
|
@ -1,113 +0,0 @@
|
|||
imports:
|
||||
- { resource: parameters.yml }
|
||||
- { resource: security.yml }
|
||||
- { resource: services.yml }
|
||||
|
||||
# Put parameters here that don't need to change on each machine where the app is deployed
|
||||
# http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
|
||||
#parameters:
|
||||
# locale: en
|
||||
|
||||
framework:
|
||||
#esi: ~
|
||||
translator: { fallbacks: ["%locale%", "en"] }
|
||||
secret: "%secret%"
|
||||
router:
|
||||
resource: "%kernel.root_dir%/config/routing.yml"
|
||||
strict_requirements: ~
|
||||
form: ~
|
||||
csrf_protection: ~
|
||||
validation: { enable_annotations: true }
|
||||
#serializer: { enable_annotations: true }
|
||||
templating:
|
||||
engines: ['twig']
|
||||
default_locale: "%locale%"
|
||||
trusted_hosts: ~
|
||||
trusted_proxies: ~
|
||||
session:
|
||||
# http://symfony.com/doc/current/reference/configuration/framework.html#handler-id
|
||||
handler_id: session.handler.native_file
|
||||
save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%"
|
||||
fragments: ~
|
||||
http_method_override: true
|
||||
assets: ~
|
||||
#profiler:
|
||||
# collect: false
|
||||
|
||||
# Twig Configuration
|
||||
twig:
|
||||
debug: "%kernel.debug%"
|
||||
strict_variables: "%kernel.debug%"
|
||||
date:
|
||||
format: d.m.Y
|
||||
interval_format: '%%d Tage'
|
||||
number_format:
|
||||
decimal_point: ','
|
||||
thousands_separator: '.'
|
||||
|
||||
# Doctrine Configuration
|
||||
doctrine:
|
||||
dbal:
|
||||
driver: pdo_mysql
|
||||
host: "%database_host%"
|
||||
port: "%database_port%"
|
||||
dbname: "%database_name%"
|
||||
user: "%database_user%"
|
||||
password: "%database_password%"
|
||||
charset: UTF8
|
||||
server_version: '8.0'
|
||||
options:
|
||||
1014: true
|
||||
mapping_types:
|
||||
enum: string
|
||||
|
||||
orm:
|
||||
auto_generate_proxy_classes: "%kernel.debug%"
|
||||
naming_strategy: doctrine.orm.naming_strategy.underscore
|
||||
auto_mapping: true
|
||||
dql:
|
||||
datetime_functions:
|
||||
#date_add: AppBundle\DoctrineExtensions\Query\MySql\DateAdd
|
||||
query_cache_driver:
|
||||
type: "%st_cache_driver%"
|
||||
metadata_cache_driver:
|
||||
type: "%st_cache_driver%"
|
||||
result_cache_driver:
|
||||
type: "%st_cache_driver%"
|
||||
|
||||
|
||||
# Swiftmailer Configuration
|
||||
swiftmailer:
|
||||
transport: "%mailer_transport%"
|
||||
host: "%mailer_host%"
|
||||
username: "%mailer_user%"
|
||||
password: "%mailer_password%"
|
||||
encryption: 'tls'
|
||||
port: 587
|
||||
auth_mode: "login"
|
||||
spool: { type: memory }
|
||||
|
||||
assetic:
|
||||
debug: '%kernel.debug%'
|
||||
use_controller: '%kernel.debug%'
|
||||
filters:
|
||||
cssrewrite: ~
|
||||
assets:
|
||||
headerLogo:
|
||||
inputs:
|
||||
- '@AppBundle/Resources/public/images/wlogo.png'
|
||||
footerText:
|
||||
inputs:
|
||||
- '@AppBundle/Resources/public/images/footer.svg'
|
||||
stof_doctrine_extensions:
|
||||
default_locale: de_DE
|
||||
orm:
|
||||
default:
|
||||
tree: true
|
||||
|
||||
white_october_tcpdf:
|
||||
class: 'AppBundle\Pdf'
|
||||
|
||||
gregwar_image:
|
||||
cache_dir: 'web/cache'
|
||||
fallback_image: 'images/placeholder-image.png'
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
# This file is auto-generated during the composer install
|
||||
parameters:
|
||||
database_host: 192.168.1.8
|
||||
database_port: 3306
|
||||
database_name: relaunch1
|
||||
database_user: kadmin
|
||||
database_password: KT32vQ7ix
|
||||
mailer_transport: smtp
|
||||
mailer_host: zimbra.managedemail.de
|
||||
mailer_user: stern@stern-tours.de
|
||||
mailer_password: 13C!NlecB!Phil4beAxKl
|
||||
#mailer_host: w00df904.kasserver.com
|
||||
#mailer_user: m0479305
|
||||
#mailer_password: m4CowydxoC4dY2DB
|
||||
secret: ce1f6c5ca9688d7e0c534fac8126f839
|
||||
st_cache_driver: array
|
||||
locale: de_DE
|
||||
base_url: 'http://sterntours.test'
|
||||
tripodo_host: null
|
||||
tripodo_user: null
|
||||
tripodo_pass: null
|
||||
image_upload_directory: '%kernel.root_dir%/../web/_uploads/images'
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
|
||||
app:
|
||||
resource: "@AppBundle/Controller/"
|
||||
type: annotation
|
||||
route1:
|
||||
path: /{req}
|
||||
defaults: { _controller: 'AppBundle:Default:default' }
|
||||
requirements:
|
||||
req: ".+"
|
||||
logout:
|
||||
path: /logout
|
||||
_image:
|
||||
path: /_image//{slug}
|
||||
defaults: { _controller: 'AppBundle:Image:show' }
|
||||
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
# This file is auto-generated during the composer install
|
||||
parameters:
|
||||
database_host: 127.0.0.1
|
||||
database_port: null
|
||||
database_name: relaunch1
|
||||
database_user: relaunch1
|
||||
database_password: pqHg45HWz8qjaSKC
|
||||
mailer_transport: smtp
|
||||
mailer_host: 127.0.0.1
|
||||
mailer_user: null
|
||||
mailer_password: null
|
||||
secret: ce1f6c5ca9688d7e0c534fac8126f839
|
||||
st_cache_driver: array
|
||||
locale: de_DE
|
||||
base_url: 'https://www.sterntours.de'
|
||||
tripodo_host: 144.76.111.241
|
||||
tripodo_user: sterntours
|
||||
tripodo_pass: 'UC782eg.Sa9#tRL?'
|
||||
image_upload_directory: '%kernel.root_dir%/../web/_uploads/images'
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
# Learn more about services, parameters and containers at
|
||||
# http://symfony.com/doc/current/book/service_container.html
|
||||
parameters:
|
||||
# parameter_name: value
|
||||
|
||||
services:
|
||||
# service_name:
|
||||
# class: AppBundle\Directory\ClassName
|
||||
# arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
|
||||
|
||||
app.controller_listener:
|
||||
class: AppBundle\Listener\KernelControllerListener
|
||||
arguments:
|
||||
- '@doctrine.orm.entity_manager'
|
||||
- '@controller_resolver'
|
||||
tags:
|
||||
- { name: kernel.event_listener, event: kernel.controller, method: onKernelController }
|
||||
|
||||
app.twig_extension:
|
||||
class: AppBundle\Twig\AppExtension
|
||||
#public: false
|
||||
arguments:
|
||||
- '@twig'
|
||||
- '@app.keyword_service'
|
||||
- '@request_stack'
|
||||
- '@doctrine.orm.entity_manager'
|
||||
tags:
|
||||
- { name: twig.extension }
|
||||
|
||||
form.type.datalist_type:
|
||||
class: AppBundle\Form\DatalistType
|
||||
tags:
|
||||
- { name: form.type, alias: datalist }
|
||||
|
||||
app.booking_exporter:
|
||||
class: AppBundle\Export\BookingSternToursCrmExporter
|
||||
arguments:
|
||||
- '@monolog.logger'
|
||||
|
||||
app.fewo_booking_exporter:
|
||||
class: AppBundle\Export\FewoBookingSternToursCrmExporter
|
||||
arguments:
|
||||
- '@monolog.logger'
|
||||
|
||||
app.contact_exporter:
|
||||
class: AppBundle\Export\ContactSternToursCrmExporter
|
||||
arguments:
|
||||
- '@monolog.logger'
|
||||
|
||||
app.keyword_service:
|
||||
class: AppBundle\Service\KeywordService
|
||||
arguments:
|
||||
- '@doctrine.orm.entity_manager'
|
||||
|
||||
app.pdf:
|
||||
class: AppBundle\Pdf
|
||||
arguments:
|
||||
- '%kernel.root_dir%'
|
||||
- '@assetic.asset_manager'
|
||||
|
||||
app.image_uploader:
|
||||
class: AppBundle\Service\FileManager
|
||||
arguments:
|
||||
- '%image_upload_directory%'
|
||||
|
||||
app.image_upload_listener:
|
||||
class: AppBundle\Listener\DoctrineFileListener
|
||||
arguments:
|
||||
- '@app.image_uploader'
|
||||
tags:
|
||||
- { name: doctrine.event_listener, event: prePersist }
|
||||
- { name: doctrine.event_listener, event: preUpdate }
|
||||
- { name: doctrine.event_listener, event: preRemove }
|
||||
|
||||
app.lodging_calendar_util:
|
||||
class: AppBundle\Service\LodgingCalendarService
|
||||
arguments:
|
||||
- '@doctrine.orm.entity_manager'
|
||||
BIN
archiv.tar.gz
BIN
archiv.tar.gz
Binary file not shown.
|
|
@ -1,73 +0,0 @@
|
|||
{
|
||||
"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": ">=7.0",
|
||||
"symfony/symfony": "3.1.*",
|
||||
"doctrine/orm": "^2.5",
|
||||
"doctrine/annotations": "^1.7",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
3190
composer.lock
generated
3190
composer.lock
generated
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB |
File diff suppressed because it is too large
Load diff
|
|
@ -1,440 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Ulrich Hecht <ulrich.hecht@hecht-software.de>
|
||||
* @date 02/22/2017
|
||||
*/
|
||||
|
||||
namespace AppBundle\Controller;
|
||||
|
||||
|
||||
use AppBundle\Entity\FewoPrice;
|
||||
use AppBundle\Entity\Page;
|
||||
use AppBundle\Entity\SunstarTravelProgram;
|
||||
use AppBundle\Entity\FewoLodgingGroup;
|
||||
use AppBundle\Form\SearchRequestType;
|
||||
use AppBundle\Form\TtSearchRequestType;
|
||||
use AppBundle\Listener\KernelControllerListener;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use AppBundle\Util;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
/**
|
||||
* Controller for CMS pages. CMS pages are represented by Page instances (i.e. entries of the page database table).
|
||||
* The template property of a Page object defines the action method below. If a travel program is assigned then the
|
||||
* travelProgramAction is used. If no template is specified, then the defaultAction is used.
|
||||
* If there is no action method, the defaultAction is called and the template name is passed as an argument. A twig
|
||||
* file with this template will be rendered in this case.
|
||||
*
|
||||
* The view templates can be found pages/cms.
|
||||
*
|
||||
* Also see {@link KernelControllerListener}, which handles routing.
|
||||
*
|
||||
* @package AppBundle\Controller
|
||||
*/
|
||||
class CmsController extends Controller
|
||||
{
|
||||
/**
|
||||
* @return EntityManager
|
||||
*/
|
||||
private function getEntityManager()
|
||||
{
|
||||
return $this->getDoctrine()->getManager();
|
||||
}
|
||||
|
||||
public function defaultAction(Page $page, $template = 'default')
|
||||
{
|
||||
return $this->render('default/pages/cms/'. $template .'.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'default',
|
||||
'page' => $page,
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
* the new for Content from API IQ
|
||||
* use when found the Content on API load in Kernel
|
||||
* */
|
||||
public function iqTravelGuideAction($api, $template = 'TravelGuide')
|
||||
{
|
||||
|
||||
/* $travel_guide_content = false;
|
||||
if($page->getTravelGuideContentId() > 0){
|
||||
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelGuides');
|
||||
$travel_guide_content = $repo->findByID($page->getTravelGuideContentId());
|
||||
}
|
||||
*/
|
||||
|
||||
return $this->render('default/pages/cms/iq'. $template .'.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'default',
|
||||
'api' => $api,
|
||||
'breadcrumb_entries' => $api->bread_crumb,
|
||||
'iq_page_title' => $api->title,
|
||||
'iq_page_description' => $api->description,
|
||||
// 'search_form' => $this->createForm(SearchRequestType::class)->createView(),
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
* the old from Content on old page objects
|
||||
* use when page->template is travelGuide
|
||||
* */
|
||||
|
||||
public function travelGuideAction(Page $page, $template = 'default')
|
||||
{
|
||||
if(!empty($page->getTemplate())) {
|
||||
$template = $page->getTemplate();
|
||||
}
|
||||
$travel_guide_content = false;
|
||||
if($page->getTravelGuideContentId() > 0){
|
||||
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelGuides');
|
||||
$travel_guide_content = $repo->findByID($page->getTravelGuideContentId());
|
||||
}
|
||||
|
||||
return $this->render('default/pages/cms/'. $template .'.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'default',
|
||||
'travel_guide_content' => $travel_guide_content,
|
||||
'page' => $page,
|
||||
]);
|
||||
}
|
||||
|
||||
public function ssSudanTourAction(Page $page, $template = 'default')
|
||||
{
|
||||
|
||||
|
||||
$slugs = array(
|
||||
'nilschiff-ss-sudan' => [0, 1],
|
||||
'bruecke-nilschiff-ss-sudan' => [31, 1],
|
||||
'sonnendeck-nilschiff-ss-sudan' => [32, 1],
|
||||
'agatha-christie-suite-nilschiff-ss-sudan' => [1, 2],
|
||||
'lady-duff-gordon-suite-nilschiff-ss-sudan' => [2, 2],
|
||||
'hercule-poirot-kabine-nilschiff-ss-sudan' => [3, 2],
|
||||
'gustave-flaubert-kabine-nilschiff-ss-sudan' => [4, 2],
|
||||
'herodote-kabine-nilschiff-ss-sudan' => [5, 2],
|
||||
'vivant-denon-kabine-nilschiff-ss-sudan' => [6, 2],
|
||||
'yacoubian-kabine-nilschiff-ss-sudan' => [7, 2],
|
||||
'le-roi-farouk-kabine-nilschiff-ss-sudan' => [8, 2],
|
||||
'mariette-auguste-pacha-kabine-nilschiff-ss-sudan' => [9, 2],
|
||||
'gerard-de-nerval-kabine-nilschiff-ss-sudan' => [10, 2],
|
||||
'ferdinand-de-lesseps-kabine-nilschiff-ss-sudan' => [11, 2],
|
||||
'david-roberts-kabine-nilschiff-ss-sudan' => [12, 2],
|
||||
'alexandre-le-grand-kabine-nilschiff-ss-sudan' => [14, 2],
|
||||
'john-mason-cook-kabine-nilschiff-ss-sudan' => [15, 2],
|
||||
'howard-carter-kabine-nilschiff-ss-sudan' => [16, 2],
|
||||
'le-venitien-inconnu-kabine-nilschiff-ss-sudan' => [17, 2],
|
||||
'suite-18-nilschiff-ss-sudan' => [18, 2],
|
||||
'reine-victoria-suite-nilschiff-ss-sudan' => [19, 3],
|
||||
'oum-kalsoum-suite-nilschiff-ss-sudan' => [20, 3],
|
||||
'naguib-mahfouz-kabine-nilschiff-ss-sudan' => [21, 3],
|
||||
'geoffroy-st-hilaire-kabine-nilschiff-ss-sudan' => [22, 3],
|
||||
'jean-francois-champollion-kabine-nilschiff-ss-sudan' => [23, 3],
|
||||
'samuel-shepheard-kabine-nilschiff-ss-sudan' => [24, 3],
|
||||
'bar-nilschiff-ss-sudan' => [33, 3],
|
||||
'restaurant-nilschiff-ss-sudan' => [34, 3],
|
||||
'maschinenraum-nilschiff-ss-sudan' => [35, 4],
|
||||
'kueche-ss-sudan' => [36, 4],
|
||||
|
||||
);
|
||||
$tour_id = 0;
|
||||
$tour_tap = 1;
|
||||
if(isset($slugs[$page->getSlug()])){
|
||||
$tour_id = $slugs[$page->getSlug()][0];
|
||||
$tour_tap = $slugs[$page->getSlug()][1];
|
||||
}
|
||||
|
||||
return $this->render('default/pages/cms/'. $page->getTemplate() .'.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'default',
|
||||
'page' => $page,
|
||||
'tour_id' => $tour_id,
|
||||
'tour_tap' => $tour_tap,
|
||||
]);
|
||||
}
|
||||
|
||||
public function ssSudanAction(Page $page, $template = 'default')
|
||||
{
|
||||
$repo = $this->getEntityManager()->getRepository('AppBundle:Page');
|
||||
|
||||
$box_childs = $repo->findParentsWithShowNav(437);
|
||||
return $this->render('default/pages/cms/'. $page->getTemplate() .'.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'default',
|
||||
'page' => $page,
|
||||
'box_childs' => $box_childs,
|
||||
'tour_id' => 0,
|
||||
'tour_tap' => 2,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
public function nilecruiseAction(Page $page, $template = 'nilecruise')
|
||||
{
|
||||
//read stern 1 + 6
|
||||
//read vermittelte
|
||||
$repo = $this->getEntityManager()->getRepository('AppBundle:Page');
|
||||
$slug_page = $repo->findOneBy(['slug' => 'aegypten-rundreisen']);
|
||||
|
||||
$childPages = $this->getEntityManager()->getRepository('AppBundle:Page')->getChildrenWithTravelProgramsAndDates($slug_page);
|
||||
|
||||
$nonMediated = [];
|
||||
$mediated = [];
|
||||
foreach ($childPages as $childPage)
|
||||
{
|
||||
if ($childPage->getStatus() == 1 && $childPage->getTravelProgram() &&
|
||||
$childPage->getTravelProgram()->getIsMediated())
|
||||
{
|
||||
$mediated[] = $childPage;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(in_array($childPage->getSlug(), ['stern1', 'stern2', 'stern3', 'stern4', 'stern5', 'stern6'])){
|
||||
$nonMediated[] = $childPage;
|
||||
}
|
||||
}
|
||||
}
|
||||
// We only need a separation if there are mediated AND non mediated travel programs
|
||||
if (empty($nonMediated) && !empty($mediated))
|
||||
{
|
||||
$childPages = $mediated;
|
||||
$mediated = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
$childPages = $nonMediated;
|
||||
}
|
||||
|
||||
return $this->render('default/pages/cms/'. $page->getTemplate() .'.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'default',
|
||||
'page' => $page,
|
||||
'child_pages' => $childPages,
|
||||
'mediated_child_pages' => $mediated,
|
||||
]);
|
||||
}
|
||||
|
||||
public function overviewAction(Page $page)
|
||||
{
|
||||
|
||||
$settings = $page->getCmsSettings();
|
||||
if (!is_array($settings))
|
||||
{
|
||||
$settings = [];
|
||||
}
|
||||
|
||||
$fewoLodgingGroupRepo = $this->getEntityManager()->getRepository('AppBundle:FewoLodgingGroup');
|
||||
$lodgingGroups = $fewoLodgingGroupRepo->findAll();
|
||||
|
||||
|
||||
return $this->render('default/pages/cms/overview.html.twig', array_merge($settings, [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'overview',
|
||||
'page' => $page,
|
||||
'lodgingGroups' => $lodgingGroups,
|
||||
]));
|
||||
}
|
||||
|
||||
public function travelProgramOverviewAction(Page $page)
|
||||
{
|
||||
$childPages =
|
||||
$this->getEntityManager()->getRepository('AppBundle:Page')->getChildrenWithTravelProgramsAndDates($page);
|
||||
|
||||
$nonMediated = [];
|
||||
$mediated = [];
|
||||
foreach ($childPages as $childPage)
|
||||
{
|
||||
if ($childPage->getStatus() == 1 && $childPage->getTravelProgram() &&
|
||||
$childPage->getTravelProgram()->getIsMediated())
|
||||
{
|
||||
$mediated[] = $childPage;
|
||||
}
|
||||
else
|
||||
{
|
||||
$nonMediated[] = $childPage;
|
||||
}
|
||||
}
|
||||
// We only need a separation if there are mediated AND non mediated travel programs
|
||||
if (empty($nonMediated) && !empty($mediated))
|
||||
{
|
||||
$childPages = $mediated;
|
||||
$mediated = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
$childPages = $nonMediated;
|
||||
}
|
||||
|
||||
return $this->render('default/pages/cms/travelProgramOverview.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'program',
|
||||
'page' => $page,
|
||||
'child_pages' => $childPages,
|
||||
'mediated_child_pages' => $mediated,
|
||||
]);
|
||||
}
|
||||
|
||||
public function traveltainmentAction(Page $page)
|
||||
{
|
||||
$destination = array_search($page->getBumaDestination(), TtSearchRequestType::$DESTINATION_CHOICES);
|
||||
$form = $this->createForm(TtSearchRequestType::class, [
|
||||
'topRegion' => $destination ? $destination : null,
|
||||
], [
|
||||
'country' => $page->getCountry(),
|
||||
]);
|
||||
|
||||
return $this->render('default/pages/cms/traveltainment.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'default',
|
||||
'page' => $page,
|
||||
'show_search_sidebar_widget' => false,
|
||||
'tt_search_form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function travelProgramAction(Page $page)
|
||||
{
|
||||
|
||||
$this->getDoctrine()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($page->getTravelProgram());
|
||||
|
||||
// replace this example code with whatever you need
|
||||
return $this->render('default/pages/cms/travelProgram.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'program',
|
||||
'page' => $page,
|
||||
'show_offers_sidebar_widget' => false,
|
||||
'travel_program' => $page->getTravelProgram(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function fewoLodgingAction(Page $page)
|
||||
{
|
||||
$calendarService = $this->container->get('app.lodging_calendar_util');
|
||||
$lodging = $page->getFewoLodging();
|
||||
|
||||
$prices = $lodging->getPricesFilterNow();
|
||||
$lodging->setPrices($prices);
|
||||
$paddedCalendar = $calendarService->getCalendarWithPadding($calendarService->getMinCalendarEntriesByLodging($lodging));
|
||||
if (count($lodging->getPrices()->toArray()) != 0)
|
||||
{
|
||||
$calendar = $calendarService->calendarAndFillDayStates($paddedCalendar, $lodging);
|
||||
// $calendar = $calendarService->mergeWithPaddedCalendar($calendar, $paddedCalendar);
|
||||
} else {
|
||||
$calendar = $paddedCalendar;
|
||||
}
|
||||
$imgs = array();
|
||||
$imgs_pre = array();
|
||||
$imgs_post = array();
|
||||
|
||||
$lodgingGroup = $lodging->getGroup();
|
||||
foreach ($lodgingGroup->getImages() as $image) {
|
||||
if($image->getComp() == 'pre'){
|
||||
$imgs_pre[] = $image;
|
||||
}
|
||||
if($image->getComp() == 'post'){
|
||||
$imgs_post[] = $image;
|
||||
}
|
||||
}
|
||||
foreach ($lodging->getImages() as $image) {
|
||||
$imgs[] = $image;
|
||||
}
|
||||
if(!$page->getPagetitle()){
|
||||
$page->setPagetitle($page->getTitle());
|
||||
}
|
||||
|
||||
return $this->render('default/pages/cms/fewoTravelProgram.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'program',
|
||||
'page' => $page,
|
||||
'fewo_lodging' => $lodging,
|
||||
'slider_imgs' => array_merge ($imgs_pre, $imgs, $imgs_post),
|
||||
//'lodging' => $lodging, //so wurde es im AdminController aufgerufen
|
||||
'calendar' => $calendar,
|
||||
'show_search_sidebar_widget' => false,
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
public function pdfAction(Page $page)
|
||||
{
|
||||
$travelProgram = $page->getTravelProgram();
|
||||
$program_id = $travelProgram->getId();
|
||||
|
||||
if($program_id != NULL)
|
||||
{
|
||||
|
||||
$url = Util::getBaseUrl().$page->getUrlPath();
|
||||
|
||||
// Initialisierung
|
||||
$pdfObj = $this->container->get('app.pdf');
|
||||
$pdfObj->SetMargins(PDF_MARGIN_LEFT, 40, PDF_MARGIN_RIGHT);
|
||||
$pdfObj->SetAutoPageBreak(true, 65);
|
||||
$pdfObj->AddPage();
|
||||
|
||||
// Erzeugen des HTML über das Twig-Template
|
||||
$pageHTML = $this->render('default/pages/cms/travelProgramPDF.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'page' => $page,
|
||||
'show_offers_sidebar_widget' => false,
|
||||
'travel_program' => $page->getTravelProgram()
|
||||
]);
|
||||
|
||||
|
||||
// Filtern von Hyper-Links
|
||||
$filteredContent = preg_replace('#<p><a(.*)>(.*)</a></p>#Uis', '', $pageHTML->getContent());
|
||||
$filteredContent = preg_replace('#<a(.*)>#Uis', '', $filteredContent);
|
||||
$filteredContent = preg_replace('#</a>#Uis', '', $filteredContent);
|
||||
//$filteredContent = str_replace('*', '<img src="https://www.stern-tours.de/images/icons/star-mini.png" />', $filteredContent);
|
||||
|
||||
|
||||
// $filteredContent = str_replace('*', '<img src="/assetic/sun.jpg" height="6" width="6" />', $filteredContent);
|
||||
|
||||
// Schreiben des HTML
|
||||
$pdfObj->writeHTML('<strong>Reiseangebot zu finden unter:</strong><br /><a href="'.$url.'"style="text-decoration: none!; font-size: 10px; color: black;">'.$url.'</a><br />');
|
||||
$pdfObj->writeHTML($filteredContent);
|
||||
|
||||
// Ersetzen der Umlaute
|
||||
$germanLetters = array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
|
||||
$replace = array("ae","oe","ue","Ae","Oe","Ue","ss");
|
||||
$filename = preg_replace($germanLetters, $replace, $travelProgram->getTitle());
|
||||
|
||||
header('Link: <'.$travelProgram->getUrl().'>; rel="canonical"');
|
||||
|
||||
$pdfObj->Output($filename.'.pdf', 'D');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param Page $page
|
||||
*
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*
|
||||
* @todo This is actually the same as overview, but with different sidebar. Utilize cmsSettings field of page entity for such requirements
|
||||
*/
|
||||
public function jugendreisenAction(Page $page)
|
||||
{
|
||||
return $this->render('default/pages/cms/overview.html.twig', [
|
||||
'page' => $page,
|
||||
'site_loading' => 'default',
|
||||
'show_search_sidebar_widget' => false,
|
||||
'show_offers_sidebar_widget' => false,
|
||||
]);
|
||||
}
|
||||
|
||||
public function sunstarAction(Page $page)
|
||||
{
|
||||
/** @var SunstarTravelProgram[] $sunstarTravelPrograms */
|
||||
$sunstarTravelPrograms = $this->getDoctrine()->getRepository('AppBundle:SunstarTravelProgram')
|
||||
->findBy(['destination' => $page->getCmsSettings()]);
|
||||
|
||||
return $this->render('default/pages/cms/sunstar.html.twig', [
|
||||
'page' => $page,
|
||||
'site_loading' => 'default',
|
||||
'show_search_sidebar_widget' => false,
|
||||
'show_offers_sidebar_widget' => false,
|
||||
'sunstar_travel_programs' => $sunstarTravelPrograms,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,430 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace AppBundle\Controller;
|
||||
|
||||
use AppBundle\Entity\Page;
|
||||
use AppBundle\Entity\TravelCountry;
|
||||
use AppBundle\Form\SearchRequestType;
|
||||
use AppBundle\Util;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
|
||||
/**
|
||||
* Controller for re-usable view components. They are normally included by a render twig-expression. Example:
|
||||
*
|
||||
* <code>{{ render(controller('AppBundle:Component:travelGuideSidebarWidget', {country: page.country})) }}</code>
|
||||
*/
|
||||
class ComponentController extends Controller
|
||||
{
|
||||
|
||||
private $headerContent;
|
||||
/**
|
||||
* @return EntityManager
|
||||
*/
|
||||
public function getEntityManager()
|
||||
{
|
||||
return $this->getDoctrine()->getManager();
|
||||
}
|
||||
|
||||
|
||||
public function getHeaderContent(){
|
||||
|
||||
if(!$this->headerContent){
|
||||
$this->headerContent = Util::loadFromApi('cms/header/info', ['url'=>""]);
|
||||
}
|
||||
if (!$this->headerContent) {
|
||||
$this->headerContent = $this->getEmptyHeaderContent();
|
||||
}
|
||||
return $this->headerContent;
|
||||
|
||||
}
|
||||
|
||||
private function getEmptyHeaderContent()
|
||||
{
|
||||
$inactive = (object) ['active' => 0, 'content' => ''];
|
||||
|
||||
return (object) [
|
||||
'info' => (object) [
|
||||
'office_important_note_active' => 0,
|
||||
'office_important_note' => '',
|
||||
'office_appointment' => '',
|
||||
],
|
||||
'available' => (object) [
|
||||
'phone' => $inactive,
|
||||
'local' => $inactive,
|
||||
],
|
||||
'local' => (object) [],
|
||||
'phone' => (object) [],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
public function getHeaderTravelProgram($page){
|
||||
$programmes = [
|
||||
'aegypten-reisen' => 1,
|
||||
'israel-reisen' => 22,
|
||||
'jordanien-reisen' => 197,
|
||||
'oman-reisen' => 194
|
||||
];
|
||||
$p_id = null;
|
||||
foreach($programmes as $key=>$id){
|
||||
if(strpos($_SERVER['REQUEST_URI'], $key) !== false){
|
||||
$p_id = $id;
|
||||
}
|
||||
}
|
||||
if($p_id === null){
|
||||
if($page){
|
||||
$p_id = $page->getId()%2 ? 1 : 22;
|
||||
}
|
||||
$p_id = 1;
|
||||
}
|
||||
|
||||
|
||||
$em = $this->getEntityManager();
|
||||
// $em->flush();
|
||||
$TravelProgramRepo = $em->getRepository('AppBundle:TravelProgram');
|
||||
$TravelProgram = $TravelProgramRepo->find($p_id);
|
||||
$em->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($TravelProgram, false, 1, 'start_week');
|
||||
|
||||
/*foreach($TravelProgram->getTravelDates('header') as $travelDate){
|
||||
var_dump($travelDate->getStart()->format("d.m.Y"));
|
||||
echo "<br>";
|
||||
}*/
|
||||
// $em->persist($TravelProgram);
|
||||
// $em->flush();
|
||||
|
||||
|
||||
|
||||
return $TravelProgram;
|
||||
}
|
||||
|
||||
public function headerAction($page)
|
||||
{
|
||||
$navPages = $this->getEntityManager()->getRepository('AppBundle:Page')->findTopCountryNavPages();
|
||||
$content = $this->getHeaderContent();
|
||||
$header_travel_program = $this->getHeaderTravelProgram($page);
|
||||
|
||||
$local = [];
|
||||
foreach ($content->local as $key=>$value){
|
||||
$local[$key] = $value;
|
||||
}
|
||||
|
||||
$phone = [];
|
||||
foreach ($content->phone as $key=>$value){
|
||||
$phone[$key] = $value;
|
||||
}
|
||||
return $this->render('default/components/header.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'nav_pages' => $navPages,
|
||||
'content' => $content,
|
||||
'local' => $local,
|
||||
'phone' => $phone,
|
||||
'header_travel_program' => $header_travel_program,
|
||||
]);
|
||||
}
|
||||
|
||||
public function footerAction()
|
||||
{
|
||||
$content = $this->getHeaderContent();
|
||||
return $this->render('default/components/footer.html.twig', [
|
||||
'content' => $content,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function breadcrumbAction(Page $page)
|
||||
{
|
||||
return $this->render('default/components/breadcrumb.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'breadcrumb_entries' => Util::createBreadcrumb($page),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
public function navSidebarApiWidgetAction($api, $title = 'Reiseführer')
|
||||
{
|
||||
|
||||
return $this->render('default/components/sidebar/navSidebarApiWidgetInner.html.twig', [
|
||||
'api'=>$api,
|
||||
'title' => "Reiseführer",
|
||||
]);
|
||||
}
|
||||
|
||||
public function navSidebarWidgetAction(Page $page, $title = 'Reiseprogramme')
|
||||
{
|
||||
if(!empty($page->getTitle())){
|
||||
$title = $page->getTitle();
|
||||
}
|
||||
$pageRepo = $this->getEntityManager()->getRepository('AppBundle:Page');
|
||||
$view = [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'page' => $page,
|
||||
'slider_title' => $title,
|
||||
|
||||
];
|
||||
|
||||
if ($page->getHasChildren())
|
||||
{
|
||||
if ($page->getLvl() == 0)
|
||||
{
|
||||
$view['nav_pages'] = $page->getChildren();
|
||||
|
||||
$view['nav_child_pages'] = [];
|
||||
}
|
||||
else
|
||||
{
|
||||
$view['nav_pages'] = $pageRepo->getSiblings($page);
|
||||
$view['nav_child_pages'] = $page->getChildren();
|
||||
}
|
||||
$view['nav_open_node'] = $page;
|
||||
}
|
||||
else
|
||||
{
|
||||
$parent = $page->getParent();
|
||||
if ($parent)
|
||||
{
|
||||
$view['nav_pages'] = $pageRepo->getSiblings($parent);
|
||||
if (empty($view['nav_pages']))
|
||||
{
|
||||
$view['nav_pages'] = $pageRepo->getSiblings($page);
|
||||
}
|
||||
else
|
||||
{
|
||||
$view['nav_child_pages'] = $pageRepo->getSiblings($page);
|
||||
}
|
||||
$view['nav_open_node'] = $parent;
|
||||
}
|
||||
else
|
||||
{
|
||||
$view['nav_pages'] = $pageRepo->getSiblings($page);
|
||||
$view['nav_child_pages'] = [];
|
||||
$view['nav_open_node'] = null;
|
||||
}
|
||||
}
|
||||
return $this->render('default/components/sidebar/navSidebarWidgetInner.html.twig', $view);
|
||||
}
|
||||
|
||||
|
||||
public function searchSidebarApiWidgetAction($api, $title = 'Suche')
|
||||
{
|
||||
$combinedDestination = null;
|
||||
$destination = null;
|
||||
//todo need Country by name
|
||||
if(isset($api->country_id)){
|
||||
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
|
||||
$destination = $repo->find($api->country_id);
|
||||
}
|
||||
|
||||
$search_request_b = Util::getMySession('search_request_b');
|
||||
$search_request_e = Util::getMySession('search_request_e');
|
||||
$search_request_c = Util::getMySession('search_request_c');
|
||||
|
||||
if($search_request_b){
|
||||
$timestap_b = strtotime($search_request_b);
|
||||
$search_request_b = new \DateTime();
|
||||
$search_request_b->setTimestamp($timestap_b);
|
||||
}
|
||||
if($search_request_e){
|
||||
$timestap_e = strtotime($search_request_e);
|
||||
$search_request_e = new \DateTime();
|
||||
$search_request_e->setTimestamp($timestap_e);
|
||||
}
|
||||
|
||||
/*if($search_request_c){
|
||||
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
|
||||
$destination = $repo->find($search_request_c);
|
||||
}*/
|
||||
|
||||
return $this->render('default/components/sidebar/searchSidebarWidgetInner.html.twig', [
|
||||
'slider_title' => "suche",
|
||||
'search_form' => $this->createForm(SearchRequestType::class, [
|
||||
'c' =>$destination,
|
||||
'b' => $search_request_b ? $search_request_b : null,
|
||||
'e' => $search_request_e ? $search_request_e : null,
|
||||
'c2' => $combinedDestination,
|
||||
])->createView()
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function searchSidebarWidgetAction(Page $page, $title = 'Suche')
|
||||
{
|
||||
$combinedDestination = null;
|
||||
if ($page->getTravelProgram())
|
||||
{
|
||||
$countries = $page->getTravelProgram()->getCountries();
|
||||
$destination = $countries->first();
|
||||
if (count($countries) > 1)
|
||||
{
|
||||
$combinedDestination = $countries[1];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$destination = $page->getCountry();
|
||||
}
|
||||
|
||||
$search_request_b = Util::getMySession('search_request_b');
|
||||
$search_request_e = Util::getMySession('search_request_e');
|
||||
$search_request_c = Util::getMySession('search_request_c');
|
||||
|
||||
if($search_request_b){
|
||||
$timestap_b = strtotime($search_request_b);
|
||||
$search_request_b = new \DateTime();
|
||||
$search_request_b->setTimestamp($timestap_b);
|
||||
}
|
||||
if($search_request_e){
|
||||
$timestap_e = strtotime($search_request_e);
|
||||
$search_request_e = new \DateTime();
|
||||
$search_request_e->setTimestamp($timestap_e);
|
||||
}
|
||||
|
||||
/*if($search_request_c){
|
||||
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
|
||||
$destination = $repo->find($search_request_c);
|
||||
}*/
|
||||
return $this->render('default/components/sidebar/searchSidebarWidgetInner.html.twig', [
|
||||
'slider_title' => "suche",
|
||||
'search_form' => $this->createForm(SearchRequestType::class, [
|
||||
'c' => $destination,
|
||||
'b' => $search_request_b ? $search_request_b : null,
|
||||
'e' => $search_request_e ? $search_request_e : null,
|
||||
'c2' => $combinedDestination,
|
||||
])->createView()
|
||||
]);
|
||||
}
|
||||
|
||||
public function travelGuideSidebarWidgetAction(TravelCountry $country, $title = 'Reiseführer')
|
||||
{
|
||||
$repo = $this->getEntityManager()->getRepository('AppBundle:Page');
|
||||
$rootPage = $repo->find(13);
|
||||
$pages = $repo->getChildrenQueryBuilder($rootPage)
|
||||
->andWhere('IDENTITY(node.country) = '. $country->getId())
|
||||
->andWhere('node.status > 0')
|
||||
->getQuery()
|
||||
->execute()
|
||||
;
|
||||
return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [
|
||||
'slider_title' => $title,
|
||||
'target_widget' => 'travel-leader-widget',
|
||||
'pages' => $pages
|
||||
]);
|
||||
}
|
||||
|
||||
public function travelMagazineSidebarWidgetAction(TravelCountry $country, $title = 'Reisemagazin')
|
||||
{
|
||||
$repo = $this->getEntityManager()->getRepository('AppBundle:Page');
|
||||
$rootPage = $repo->find(2803);
|
||||
$pages = $repo->getChildrenQueryBuilder($rootPage)
|
||||
->andWhere('IDENTITY(node.country) = '. $country->getId())
|
||||
->andWhere('node.status > 0')
|
||||
->getQuery()
|
||||
->execute()
|
||||
;
|
||||
return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [
|
||||
'slider_title' => $title,
|
||||
'target_widget' => 'travel-magazine-widget',
|
||||
'pages' => $pages
|
||||
]);
|
||||
}
|
||||
|
||||
public function offersSidebarWidgetAction(TravelCountry $country = null, $title = 'Angebote')
|
||||
{
|
||||
return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [
|
||||
'slider_title' => $title,
|
||||
'target_widget' => 'offer-widget',
|
||||
'pages' => $this->getOffersByCountry($country),
|
||||
]);
|
||||
}
|
||||
|
||||
public function offersCarouselAction(TravelCountry $country = null)
|
||||
{
|
||||
return $this->render('default/components/multiPageBoxCarousel.html.twig', [
|
||||
'pages' => $this->getOffersByCountry($country),
|
||||
]);
|
||||
}
|
||||
|
||||
private function getOffersByCountry(TravelCountry $country = null)
|
||||
{
|
||||
$repo = $this->getDoctrine()->getRepository('AppBundle:Page');
|
||||
return $country === null
|
||||
? $repo->findOffers()
|
||||
: $repo->findWithTravelProgramsOfCountry($country)
|
||||
;
|
||||
}
|
||||
|
||||
public function feedbacksSidebarWidgetAction(TravelCountry $country, $title = 'Kundenfeedback')
|
||||
{
|
||||
return $this->render(':default/components/sidebar:textSliderSidebarWidget.html.twig', [
|
||||
'slider_title' => $title,
|
||||
'target_widget' => 'feedback-widget',
|
||||
'slides' => $this->getDoctrine()->getRepository('AppBundle:Page')->findFeedbacks(
|
||||
$country->getFeedbackPage()->getId()),
|
||||
'theme' => 'gray-box',
|
||||
]);
|
||||
}
|
||||
|
||||
public function newsSidebarWidgetAction($title = 'News', $limit = 3)
|
||||
{
|
||||
$limit = max(1, min(12, (int) $limit));
|
||||
|
||||
return $this->render('default/components/sidebar/pageSliderSidebarWidget.html.twig', [
|
||||
'slider_title' => $title,
|
||||
'target_widget' => 'news-widget',
|
||||
'pages' => $this->getEntityManager()->getRepository('AppBundle:Page')->findHomepageNews($limit),
|
||||
'theme' => 'gray-box',
|
||||
]);
|
||||
}
|
||||
|
||||
public function makeSidebarWidgetAction($site_loading = 'default', Page $page = null, $api=null, $search_form = null){
|
||||
|
||||
$show_seal_of_approval = false;
|
||||
//default
|
||||
switch ($site_loading){
|
||||
case 'home' :
|
||||
$site = 'home';
|
||||
break;
|
||||
case 'search' :
|
||||
$site = 'search';
|
||||
break;
|
||||
case 'default' :
|
||||
$site = 'default';
|
||||
break;
|
||||
case 'overview' :
|
||||
$site = 'overview';
|
||||
break;
|
||||
case 'program' :
|
||||
$site = 'program';
|
||||
break;
|
||||
case 'booking' :
|
||||
$site = 'booking';
|
||||
$show_seal_of_approval = true;
|
||||
break;
|
||||
case 'bookingconfirm' :
|
||||
$site = 'bookingconfirm';
|
||||
$show_seal_of_approval = true;
|
||||
break;
|
||||
default :
|
||||
$site = 'default';
|
||||
break;
|
||||
}
|
||||
$sidebarRepo = $this->getEntityManager()->getRepository('AppBundle:SidebarWidget');
|
||||
$widgets = $sidebarRepo->findWidgetsBy($site);
|
||||
|
||||
$vars = [ 'page' => $page,
|
||||
'api' => $api,
|
||||
'site_loading' => $site_loading,
|
||||
'widgets' => $widgets,
|
||||
'show_seal_of_approval' => $show_seal_of_approval,
|
||||
'loop_half' => ceil(count($widgets) / 2)
|
||||
];
|
||||
if($search_form != null){
|
||||
$vars['search_form'] = $search_form;
|
||||
}
|
||||
return $this->render(':default/components/sidebar:sidebar.html.twig', $vars);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,650 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace AppBundle\Controller;
|
||||
|
||||
use AppBundle\Entity\BreadcrumbEntry;
|
||||
use AppBundle\Entity\ContactRequest;
|
||||
use AppBundle\Entity\Page;
|
||||
use AppBundle\Form\ContactRequestType;
|
||||
use AppBundle\Form\SearchRequestType;
|
||||
use AppBundle\Form\TtSearchRequestType;
|
||||
use AppBundle\Util;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Gedmo\Tree\TreeListener;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
|
||||
class DefaultController extends Controller
|
||||
{
|
||||
/**
|
||||
* @return EntityManager
|
||||
*/
|
||||
public function getEntityManager()
|
||||
{
|
||||
return $this->getDoctrine()->getManager();
|
||||
}
|
||||
|
||||
public function defaultAction(Request $request)
|
||||
{
|
||||
throw $this->createNotFoundException();
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/")
|
||||
*/
|
||||
public function homeAction()
|
||||
{
|
||||
list($search_request_c, $search_request_b, $search_request_e) = $this->getSearchSessionValues();
|
||||
|
||||
return $this->render('default/pages/home.html.twig', array_merge(
|
||||
$this->buildHomepageViewContext($search_request_c, $search_request_b, $search_request_e),
|
||||
[
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'home',
|
||||
'canonical_url' => Util::getBaseUrl(),
|
||||
'show_search_sidebar_widget' => false,
|
||||
'show_offers_sidebar_widget' => false,
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/dev/seite/startseite")
|
||||
*/
|
||||
public function devHomepageAction()
|
||||
{
|
||||
list($search_request_c, $search_request_b, $search_request_e) = $this->getSearchSessionValues();
|
||||
|
||||
return $this->render('default/pages/dev/home.html.twig', array_merge(
|
||||
$this->buildHomepageViewContext($search_request_c, $search_request_b, $search_request_e),
|
||||
[
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'home',
|
||||
'show_search_sidebar_widget' => false,
|
||||
'show_offers_sidebar_widget' => false,
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function getSearchSessionValues()
|
||||
{
|
||||
$search_request_b = Util::getMySession('search_request_b');
|
||||
$search_request_e = Util::getMySession('search_request_e');
|
||||
$search_request_c = Util::getMySession('search_request_c');
|
||||
|
||||
if ($search_request_b) {
|
||||
$timestap_b = strtotime($search_request_b);
|
||||
$search_request_b = new \DateTime();
|
||||
$search_request_b->setTimestamp($timestap_b);
|
||||
}
|
||||
if ($search_request_e) {
|
||||
$timestap_e = strtotime($search_request_e);
|
||||
$search_request_e = new \DateTime();
|
||||
$search_request_e->setTimestamp($timestap_e);
|
||||
}
|
||||
|
||||
if ($search_request_c) {
|
||||
$repo = $this->getEntityManager()->getRepository('AppBundle:TravelCountry');
|
||||
$search_request_c = $repo->find($search_request_c);
|
||||
}
|
||||
|
||||
return [$search_request_c, $search_request_b, $search_request_e];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $search_request_c
|
||||
* @param mixed $search_request_b
|
||||
* @param mixed $search_request_e
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function buildHomepageViewContext($search_request_c, $search_request_b, $search_request_e)
|
||||
{
|
||||
$pageRepo = $this->getEntityManager()->getRepository('AppBundle:Page');
|
||||
$sidebarWidgetRepo = $this->getEntityManager()->getRepository('AppBundle:SidebarWidget');
|
||||
$plannableTripsWidget = $sidebarWidgetRepo->findActiveWidgetByComponent('homepagePlannableTrips');
|
||||
$popularTripsWidget = $sidebarWidgetRepo->findActiveWidgetByComponent('homepagePopularTrips');
|
||||
$travelCategoriesWidget = $sidebarWidgetRepo->findActiveWidgetByComponent('homepageTravelCategories');
|
||||
$newsWidget = $sidebarWidgetRepo->findActiveWidgetByComponent('newsSidebarWidget', 'home');
|
||||
$homepageOfferPages = $popularTripsWidget
|
||||
? $pageRepo->findActiveTravelPagesByIds($popularTripsWidget->getConfigPageIds())
|
||||
: [];
|
||||
$devHomeSidebarOfferPages = $plannableTripsWidget
|
||||
? $pageRepo->findActiveTravelPagesByIds($plannableTripsWidget->getConfigPageIds())
|
||||
: [];
|
||||
|
||||
if (empty($homepageOfferPages)) {
|
||||
$homepageOfferPages = $pageRepo->findHomepageOffers();
|
||||
}
|
||||
if (empty($devHomeSidebarOfferPages)) {
|
||||
$devHomeSidebarOfferPages = $pageRepo->findHomepageOffers(4);
|
||||
}
|
||||
|
||||
$countryPages = $travelCategoriesWidget
|
||||
? $pageRepo->findActiveCountryPagesByIds($travelCategoriesWidget->getConfigPageIds())
|
||||
: [];
|
||||
if (empty($countryPages)) {
|
||||
$countryPages = $pageRepo->findHomepageCountryPages();
|
||||
}
|
||||
|
||||
$fewoLodgings = [];
|
||||
$lodgingGroups = $this->getEntityManager()->getRepository('AppBundle:FewoLodgingGroup')->findAll();
|
||||
foreach ($lodgingGroups as $lodgingGroup) {
|
||||
foreach ($lodgingGroup->getLodgings() as $lodging) {
|
||||
$fewoLodgings[] = $lodging;
|
||||
if (count($fewoLodgings) >= 8) {
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'search_form' => $this->createForm(SearchRequestType::class, [
|
||||
'c' => $search_request_c ? $search_request_c : null,
|
||||
'b' => $search_request_b ? $search_request_b : null,
|
||||
'e' => $search_request_e ? $search_request_e : null,
|
||||
])->createView(),
|
||||
'tt_search_form' => $this->createForm(TtSearchRequestType::class)->createView(),
|
||||
'homepage_offer_pages' => $homepageOfferPages,
|
||||
'homepage_offer_title' => $popularTripsWidget && $popularTripsWidget->getName() ? $popularTripsWidget->getName() : 'beliebtesten Kulturreisen',
|
||||
'homepage_offer_new_page_ids' => $popularTripsWidget ? $popularTripsWidget->getConfigNewPageIds() : [],
|
||||
'country_pages' => $countryPages,
|
||||
'homepage_country_title' => $travelCategoriesWidget && $travelCategoriesWidget->getName()
|
||||
? $travelCategoriesWidget->getName()
|
||||
: 'Alle Reisekategorien auf einen Blick',
|
||||
'fewo_lodgings' => $fewoLodgings,
|
||||
'dev_home_sidebar' => true,
|
||||
'dev_home_sidebar_offer_title' => $plannableTripsWidget && $plannableTripsWidget->getName() ? $plannableTripsWidget->getName() : 'Aktuell planbare Reisen',
|
||||
'dev_home_sidebar_offer_pages' => $devHomeSidebarOfferPages,
|
||||
'dev_home_sidebar_new_badge_active' => $plannableTripsWidget ? $plannableTripsWidget->getConfigNewBadgeActive() : false,
|
||||
'dev_home_sidebar_new_page_ids' => $plannableTripsWidget ? $plannableTripsWidget->getConfigNewPageIds() : [],
|
||||
'dev_home_sidebar_news_title' => $newsWidget && $newsWidget->getName() ? $newsWidget->getName() : 'Reisenews',
|
||||
'dev_home_sidebar_news_pages' => $pageRepo->findHomepageNews($newsWidget ? $newsWidget->getConfigNewsLimit() : 3),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/suche")
|
||||
*/
|
||||
public function searchAction(Request $request)
|
||||
{
|
||||
|
||||
$form = $this->createForm(SearchRequestType::class);
|
||||
if (empty($request->query->get('b')))
|
||||
{
|
||||
$request->query->set('b', (new \DateTime('+5 day'))->format('d.m.Y'));
|
||||
}
|
||||
if (empty($request->query->get('e')))
|
||||
{
|
||||
$request->query->set('e', (new \DateTime('+31 day'))->format('d.m.Y'));
|
||||
}
|
||||
//store date form request
|
||||
|
||||
$session = $request->getSession();
|
||||
$session->set('search_request_b', $request->query->get('b'));
|
||||
$session->set('search_request_e', $request->query->get('e'));
|
||||
$session->set('search_request_c', $request->query->get('c'));
|
||||
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isValid())
|
||||
{
|
||||
$data = $form->getData();
|
||||
|
||||
$destinationIds = [];
|
||||
if (!empty($data['c']))
|
||||
{
|
||||
$destinationIds = [$data['c']->getId()];
|
||||
}
|
||||
if (!empty($destinationIds) && !empty($data['c2']))
|
||||
{
|
||||
$destinationIds[] = $data['c2']->getId();
|
||||
}
|
||||
$r = $this->getDoctrine()->getRepository('AppBundle:TravelPeriod')->getTravelProgramsWithTravelDatesForTimePeriod(
|
||||
$data['b'], $data['e'], $destinationIds, count($destinationIds) > 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
$r = [];
|
||||
}
|
||||
|
||||
return $this->render('default/pages/search.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'search',
|
||||
'breadcrumb_entries' => [new BreadcrumbEntry('Suchen')],
|
||||
'search_form' => $form->createView(),
|
||||
'travel_programs' => $r,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/tt-suche")
|
||||
*/
|
||||
public function ttSearchAction(Request $request)
|
||||
{
|
||||
$form = $this->createForm(TtSearchRequestType::class);
|
||||
if (empty($request->query->get('termin')))
|
||||
{
|
||||
$request->query->set('termin', (new \DateTime('+5 day'))->format('d.m.Y'));
|
||||
}
|
||||
if (empty($request->query->get('ruecktermin')))
|
||||
{
|
||||
$request->query->set('ruecktermin', (new \DateTime('+19 day'))->format('d.m.Y'));
|
||||
}
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isValid())
|
||||
{
|
||||
$data = $form->getData();
|
||||
|
||||
//$ttUrl = "http://dtps-ibe.traveltainment.de/hotel/?&taid=DRS32"; //ibe=package";
|
||||
|
||||
/*$requests = "&ibe=package&aidgiata=49720&ddate=".date("Y-m-d", 1523397600)."&depap=TXL&rdate=".date("Y-m-d", 1524002400)."&dur=6,2&brand=FTI&oid=ASW318;PAUS;;DSQF&adult=2";*/
|
||||
$ttUrl = "";
|
||||
$ttUrl .= '&ddate=' . $data['termin']->format('d.m.Y');
|
||||
$ttUrl .= '&rdate=' . $data['ruecktermin']->format('d.m.Y');
|
||||
if (!empty($data['dauer'])){
|
||||
$ttUrl .= '&dur='.str_replace("_", ",", $data['dauer']);
|
||||
}
|
||||
$ttUrl .= '&adult=2';
|
||||
if (!empty($data['t']))
|
||||
{
|
||||
$ttUrl .= '&adult='. $data['t'];
|
||||
$count = 0;
|
||||
for ($i = 0; $i < 3; ++$i)
|
||||
{
|
||||
if (!empty($data['child'.$i]))
|
||||
{
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
$ttUrl .= '&child='. $count;
|
||||
}
|
||||
// $ttUrl .= '&ibes=';
|
||||
if (!empty($data['topRegion']))
|
||||
{
|
||||
if(isset(TtSearchRequestType::$DESTINATION_CHOICES[$data['topRegion']])){
|
||||
// $ttUrl .= 'hotel&rgid='. TtSearchRequestType::$DESTINATION_CHOICES[$data['topRegion']];
|
||||
$ttUrl .= '&rid='. TtSearchRequestType::$DESTINATION_CHOICES[$data['topRegion']];
|
||||
$ttUrl = "https://dtps-ibe.traveltainment.de/hotel/?&taid=DRS32".$ttUrl;
|
||||
}else{
|
||||
// $ttUrl .= 'package&rgid='. $data['topRegion'];
|
||||
$ttUrl .= '&rid='. $data['topRegion'];
|
||||
$ttUrl = "https://dtps-ibe.traveltainment.de/offer/?&taid=DRS32".$ttUrl;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//https://dtps-ibe.traveltainment.de/hotel?taid=DRS32&ddate=2018-07-25&rdate=2018-08-08&adult=2&rid=2202
|
||||
//http://dtps-ibe.traveltainment.de/hotel?taid=DRS32&ddate=2018-07-25&rdate=2018-08-08&dur=6,14&adult=1&child=0&rgid=2202
|
||||
else
|
||||
{
|
||||
//$ttUrl .= 'package';
|
||||
$ttUrl = "https://dtps-ibe.traveltainment.de/offer/?&taid=DRS32".$ttUrl;
|
||||
}
|
||||
if (!empty($data['abflughafen'])) $ttUrl .= '&depap='. $data['abflughafen'];
|
||||
if (!empty($data['shotel'])) $ttUrl .= '&accom='. urlencode($data['shotel']);
|
||||
if (!empty($data['kategorie'])) $ttUrl .= '&stars='. $data['kategorie'];
|
||||
if (!empty($data['zimmer'])) $ttUrl .= '&room='. $data['zimmer'];
|
||||
if (!empty($data['verpflegung'])) $ttUrl .= '&board='. $data['verpflegung'];
|
||||
if (!empty($data['hbfges'])) $ttUrl .= '&raavg='. $data['hbfges'];
|
||||
if (!empty($data['hbfanz'])) $ttUrl .= '&hbfanz='. $data['hbfanz'];
|
||||
if (!empty($data['hbfempf'])) $ttUrl .= '&racnt='. $data['hbfempf'];
|
||||
//if ($data['familie_kinder'] ?? false) $ttUrl .= '&familie_kinder=0';
|
||||
//if ($data['strand'] ?? false) $ttUrl .= '&beach=0';
|
||||
//if ($data['wellness'] ?? false) $ttUrl .= '&wellness=0';
|
||||
//if ($data['typ'] ?? false) $ttUrl .= '&typ=0';
|
||||
if (!empty($data['sportangebot'])) $ttUrl .= '&sports='. $data['sportangebot'];
|
||||
|
||||
/*$ttUrl = 'http://www.vidado.com/booking/ibe_bp2/index.php?CID=8ce65750ce5af9d9a6b22c9b04772ea7&formular=4&engine=pauschal&showresult=1';
|
||||
$ttUrl .= '&termin=' . $data['termin']->format('d.m.Y');
|
||||
$ttUrl .= '&ruecktermin=' . $data['ruecktermin']->format('d.m.Y');
|
||||
if (!empty($data['dauer'])) $ttUrl .= '&dauer='. $data['dauer'];
|
||||
if (!empty($data['t']))
|
||||
{
|
||||
$ttUrl .= '&personen=25'. str_repeat(';25', $data['t'] - 1);
|
||||
for ($i = 0; $i < 3; ++$i)
|
||||
{
|
||||
if (!empty($data['child'.$i]))
|
||||
{
|
||||
$ttUrl .= ';'. $data['child'. $i];
|
||||
}
|
||||
}
|
||||
}
|
||||
$ttUrl .= '&detail=';
|
||||
if (!empty($data['topRegion']) && isset(TtSearchRequestType::$DESTINATION_CHOICES[$data['topRegion']]))
|
||||
{
|
||||
$ttUrl .= 'hotel&topRegion='. TtSearchRequestType::$DESTINATION_CHOICES[$data['topRegion']];
|
||||
}
|
||||
else
|
||||
{
|
||||
$ttUrl .= 'zielgebiet';
|
||||
}
|
||||
if (!empty($data['abflughafen'])) $ttUrl .= '&abflughafen='. $data['abflughafen'];
|
||||
if (!empty($data['shotel'])) $ttUrl .= '&shotel='. urlencode($data['shotel']);
|
||||
if (!empty($data['kategorie'])) $ttUrl .= '&kategorie='. $data['kategorie'];
|
||||
if (!empty($data['zimmer'])) $ttUrl .= '&zimmer='. $data['zimmer'];
|
||||
if (!empty($data['verpflegung'])) $ttUrl .= '&verpflegung='. $data['verpflegung'];
|
||||
if (!empty($data['hbfges'])) $ttUrl .= '&hbfges='. $data['hbfges'];
|
||||
if (!empty($data['hbfanz'])) $ttUrl .= '&hbfanz='. $data['hbfanz'];
|
||||
if (!empty($data['hbfempf'])) $ttUrl .= '&hbfempf='. $data['hbfempf'];
|
||||
if ($data['familie_kinder'] ?? false) $ttUrl .= '&familie_kinder=0';
|
||||
if ($data['strand'] ?? false) $ttUrl .= '&strand=0';
|
||||
if ($data['wellness'] ?? false) $ttUrl .= '&wellness=0';
|
||||
if ($data['typ'] ?? false) $ttUrl .= '&typ=0';
|
||||
if (!empty($data['sportangebot'])) $ttUrl .= '&sportangebot='. $data['sportangebot'];
|
||||
*/
|
||||
|
||||
}else{
|
||||
if(strpos($_SERVER['QUERY_STRING'], 'ttexpedient')){
|
||||
|
||||
$get_array = array();
|
||||
parse_str($_SERVER['QUERY_STRING'], $get_array);
|
||||
|
||||
if(!empty($get_array['detail'])) { $det=$get_array['detail']; }
|
||||
else { $det=""; }
|
||||
|
||||
if(!empty($get_array['IFF'])) { $iff=$get_array['IFF']; }
|
||||
else { $iff=""; }
|
||||
|
||||
if(!empty($get_array['abflughafen'])) { $airp=$get_array['abflughafen']; }
|
||||
else { $airp=""; }
|
||||
|
||||
if(!empty($get_array['sleistung'])) { $sleist=$get_array['sleistung']; }
|
||||
else { $sleist=""; }
|
||||
|
||||
if(!empty($get_array['showresult'])) { $show=$get_array['showresult']; }
|
||||
else { $show=""; }
|
||||
|
||||
if(!empty($get_array['personen'])) { $pers=$get_array['personen']; }
|
||||
else { $pers=""; }
|
||||
|
||||
if(!empty($get_array['marke'])) { $va=$get_array['marke']; }
|
||||
else { $va=""; }
|
||||
|
||||
if(!empty($get_array['termin'])) { $hin=$get_array['termin']; }
|
||||
else { $hin=""; }
|
||||
|
||||
if(!empty($get_array['ruecktermin'])) { $rueck=$get_array['ruecktermin']; }
|
||||
else { $rueck=""; }
|
||||
|
||||
if(!empty($get_array['dauer'])) { $dau=$get_array['dauer']; }
|
||||
else { $dau=""; }
|
||||
|
||||
if(!empty($get_array['bplink'])) { $bli=$get_array['bplink']; }
|
||||
else { $bli=""; }
|
||||
|
||||
if(!empty($get_array['ttexpedient'])) { $exp=$get_array['ttexpedient']; }
|
||||
|
||||
|
||||
else { $exp=""; }
|
||||
if($dau != "" && strpos($dau, "_")){
|
||||
$dau = explode("_", $dau);
|
||||
asort($dau);
|
||||
$dau = implode(",", $dau);
|
||||
}
|
||||
$adult = substr_count($pers, '25');
|
||||
$child = "";
|
||||
$ps = explode(';', $pers);
|
||||
|
||||
foreach ($ps as $p) {
|
||||
if($p < 25){
|
||||
$child .= $p.",";
|
||||
}
|
||||
}
|
||||
$board = "";
|
||||
$room = "";
|
||||
|
||||
if($sleist != "" && strpos($sleist, ";")) {
|
||||
$eleist = explode(';', $sleist);
|
||||
$v = end($eleist);
|
||||
if(strpos($v, "F") !== false){
|
||||
$board = 2;
|
||||
}
|
||||
if(strpos($v, "H") !== false){
|
||||
$board = 3;
|
||||
}
|
||||
if(strpos($v, "V") !== false){
|
||||
$board = 4;
|
||||
}
|
||||
if(strpos($v, "A") !== false){
|
||||
$board = 5;
|
||||
}
|
||||
if(strpos($v, "EZ") !== false){
|
||||
$room = 1;
|
||||
}
|
||||
if(strpos($v, "DZ") !== false){
|
||||
$room = 2;
|
||||
}
|
||||
if(strpos($v, "FZ") !== false){
|
||||
$room = 3;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
$child = rtrim($child, ',');
|
||||
$url = "https://dtps-ibe.traveltainment.de/offer?taid=DRS32";
|
||||
$url .= '&ibe=package&adult='.$adult.'&ddate='.date("Y-m-d", $hin).'&rdate='.date("Y-m-d", $rueck).'&depap='.$airp.'&aid='.$iff.'&brand='.$va.'&dur='.$dau.'&child='.$child.'&board='.$board.'&room='.$room.'&dur=exact';
|
||||
|
||||
|
||||
|
||||
$ttUrl = urldecode($url);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $this->render('default/pages/ttSearch.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'search',
|
||||
'breadcrumb_entries' => [new BreadcrumbEntry('Suchen')],
|
||||
'tt_search_form' => $form->createView(),
|
||||
'tt_url' => $ttUrl ?? null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/kontakt")
|
||||
*/
|
||||
public function contactAction(Request $request)
|
||||
{
|
||||
$contactRequest = new ContactRequest();
|
||||
$form = $this->createForm(ContactRequestType::class, $contactRequest);
|
||||
$breadcrumbEntries = [new BreadcrumbEntry('Kontaktformular')];
|
||||
|
||||
$re_error = "";
|
||||
if ($request->getMethod() == 'POST')
|
||||
{
|
||||
$error = false;
|
||||
|
||||
if(empty($request->get('g-recaptcha-response'))){
|
||||
$re_error = 'Bitte lösen Sie das reCAPTCHA.';
|
||||
$error = true;
|
||||
}
|
||||
//your site secret key
|
||||
$secret = '6LfjBm8UAAAAANKNzGhSiMaoEg9mUswlaZkOHgI4';
|
||||
//get verify response data
|
||||
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$request->get('g-recaptcha-response'));
|
||||
$responseData = json_decode($verifyResponse);
|
||||
|
||||
|
||||
if (!is_object($responseData) || empty($responseData->success)) {
|
||||
$re_error = 'Bitte lösen Sie das reCAPTCHA';
|
||||
$error = true;
|
||||
}
|
||||
|
||||
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isValid() && !$error)
|
||||
{
|
||||
/** @var ContactRequest $contactRequest */
|
||||
$contactRequest = $form->getData();
|
||||
|
||||
$ret = $this->get('app.contact_exporter')->v3process($contactRequest);
|
||||
$error_crm = 'CRM Fehler';
|
||||
|
||||
$this->get('mailer')->send(\Swift_Message::newInstance()
|
||||
->setSubject('Kontaktformular (stern-tours.de)')
|
||||
->setFrom('stern@stern-tours.de', 'STERN TOURS')
|
||||
->setTo('stern@stern-tours.de')
|
||||
->setBody(
|
||||
$this->renderView('default/email/contactServiceEmail.txt.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'crm_v1_url' => isset($ret->url_v1) ? $ret->url_v1 : $error_crm,
|
||||
'crm_v3_url' => isset($ret->url_v3) ? $ret->url_v3 : $error_crm,
|
||||
'contact_request' => $contactRequest,
|
||||
]),
|
||||
'text/plain', 'utf-8'
|
||||
)
|
||||
);
|
||||
|
||||
// #TODO This will lead to multiple submissions. Redirect instead!
|
||||
return $this->render('default/pages/contactConfirmation.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'breadcrumb_entries' => $breadcrumbEntries,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->render('default/pages/contact.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'default',
|
||||
'breadcrumb_entries' => $breadcrumbEntries,
|
||||
'contact_form' => $form->createView(),
|
||||
're_error' => $re_error,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/sitemap")
|
||||
*/
|
||||
public function sitemapAction()
|
||||
{
|
||||
$repo = $this->getDoctrine()->getRepository('AppBundle:Page');
|
||||
$rootNodes = $repo->getRootNodesQueryBuilder()
|
||||
->andWhere('node.status = 1')
|
||||
->andWhere('node.lvl = 0')
|
||||
->getQuery()
|
||||
->execute()
|
||||
;
|
||||
/** @var Page[] $pageNodes Actually no entity objects but associative arrays representing page entities */
|
||||
$pageNodes = [];
|
||||
foreach ($rootNodes as $rootNode)
|
||||
{
|
||||
$pageNodes[] = $repo->buildTree($repo->getNodesHierarchyQueryBuilder($rootNode, false, [], true)
|
||||
->leftJoin('node.travelProgram', 'tp')
|
||||
->andWhere('(tp.id IS NULL OR tp.status = 1)')
|
||||
->andWhere('node.status = 1')
|
||||
->getQuery()
|
||||
->getArrayResult()
|
||||
)[0];
|
||||
}
|
||||
return $this->render('default/pages/sitemap.html.twig', [
|
||||
'breadcrumb_entries' => [new BreadcrumbEntry('Sitemap')],
|
||||
'site_loading' => 'default',
|
||||
'page_nodes' => $pageNodes
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
Suche Kindknoten
|
||||
Für jeden Kindknoten
|
||||
++LFT
|
||||
Setze LFT
|
||||
f()
|
||||
++LFT
|
||||
RGT = LFT
|
||||
Setze RGT
|
||||
*/
|
||||
|
||||
/**
|
||||
* @Route("/create-tree")
|
||||
*/
|
||||
public function createTreeAction()
|
||||
{
|
||||
set_time_limit(0);
|
||||
ini_set('memory_limit', '2048M');
|
||||
|
||||
$em = $this->getEntityManager();
|
||||
|
||||
$em->getConnection()->executeUpdate(
|
||||
'UPDATE page SET lvl = NULL, lft = NULL, rgt = NULL, parent_id = NULL, tree_root = NULL');
|
||||
|
||||
foreach ($em->getEventManager()->getListeners() as $event => $listeners) {
|
||||
foreach ($listeners as $hash => $listener) {
|
||||
if ($listener instanceof TreeListener)
|
||||
{
|
||||
$em->getEventManager()->removeEventListener($event, $listener);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$em->beginTransaction();
|
||||
|
||||
// Add missing owner relation for catalog root pages (e.g. children of 'aegypten-reisen')
|
||||
$em->getConnection()->executeUpdate('UPDATE page SET owner = 47 WHERE catalog_id = 3 AND owner = 0');
|
||||
$em->getConnection()->executeUpdate('UPDATE page SET owner = 66 WHERE catalog_id = 6 AND owner = 0');
|
||||
$em->getConnection()->executeUpdate('UPDATE page SET owner = 2803 WHERE catalog_id = 14 AND owner = 0');
|
||||
// Add missing owner relation
|
||||
$em->getConnection()->executeUpdate('UPDATE page SET owner = 13 WHERE id in (1314,1426,1472,1548)');
|
||||
|
||||
$lft = 0;
|
||||
$this->createTree(0, $lft, 0);
|
||||
$em->flush();
|
||||
|
||||
// Reset the owner field to avoid problems in the old website
|
||||
$em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE parent_id = 47 AND catalog_id = 3');
|
||||
$em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE parent_id = 66 AND catalog_id = 6');
|
||||
$em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE parent_id = 2803 AND catalog_id = 14');
|
||||
$em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE id in (1314,1426,1472,1548)');
|
||||
|
||||
$em->commit();
|
||||
|
||||
die("DONE.");
|
||||
}
|
||||
|
||||
private function createTree($owner, &$lft, $lvl, $root = null)
|
||||
{
|
||||
$em = $this->getEntityManager();
|
||||
|
||||
$qb = $em->createQueryBuilder()->from('AppBundle:Page', 'p')->select('p');
|
||||
$qb->where($qb->expr()->eq('p.owner', $owner));
|
||||
if ($owner == 0)
|
||||
{
|
||||
$qb->orWhere('p.owner IS NULL');
|
||||
}
|
||||
$qb->orderBy('p.order');
|
||||
$qb->addOrderBy('p.title');
|
||||
$pages = $qb->getQuery()->execute();
|
||||
foreach ($pages as $page)
|
||||
{
|
||||
/** @var Page $page */
|
||||
|
||||
if ($owner == 0)
|
||||
{
|
||||
$root = $page->getId();
|
||||
}
|
||||
|
||||
++$lft;
|
||||
$page->setLft($lft);
|
||||
$page->setLvl($lvl);
|
||||
$page->setRoot($em->getReference('AppBundle:Page', $root));
|
||||
if ($owner != 0)
|
||||
{
|
||||
$page->setParent($em->getReference('AppBundle:Page', $owner));
|
||||
}
|
||||
|
||||
$this->createTree($page->getId(), $lft, $lvl + 1, $root);
|
||||
|
||||
++$lft;
|
||||
$page->setRgt($lft);
|
||||
|
||||
$em->persist($page);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,466 +0,0 @@
|
|||
<?php
|
||||
namespace AppBundle\Controller;
|
||||
|
||||
//TODO bereinigen
|
||||
use AppBundle\Entity\BookingRequest;
|
||||
use AppBundle\Entity\BreadcrumbEntry;
|
||||
use AppBundle\Entity\FewoLodging;
|
||||
use AppBundle\Entity\FewoPrice;
|
||||
use AppBundle\Entity\Page;
|
||||
use AppBundle\Entity\TravelDate;
|
||||
use AppBundle\Entity\Traveler;
|
||||
use AppBundle\Entity\TravelPeriodPrice;
|
||||
use AppBundle\Entity\TravelPeriodPriceType;
|
||||
use AppBundle\Form\BookingRequestType;
|
||||
use AppBundle\Form\FewoReservationType;
|
||||
use AppBundle\Util;
|
||||
|
||||
|
||||
use AppBundle\Entity\FewoSeason;
|
||||
use AppBundle\Entity\FewoBookingRequest;
|
||||
use AppBundle\Form\FewoBookingRequestType;
|
||||
use AppBundle\Entity\FewoReservation;
|
||||
|
||||
use Doctrine\ORM\Query;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class FewoBookingController extends Controller
|
||||
{
|
||||
|
||||
private $calendar;
|
||||
|
||||
public function getEntityManager()
|
||||
{
|
||||
return $this->getDoctrine()->getManager();
|
||||
}
|
||||
|
||||
private function initCalender($lodging){
|
||||
|
||||
$calendarService = $this->container->get('app.lodging_calendar_util');
|
||||
$paddedCalendar = $calendarService->getCalendarWithPadding($calendarService->getMinCalendarEntriesByLodging($lodging));
|
||||
if (count($lodging->getPrices()->toArray()) != 0) {
|
||||
$this->calendar = $calendarService->calendarAndFillDayStates($paddedCalendar, $lodging);
|
||||
} else {
|
||||
$this->calendar = $paddedCalendar;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param FewoLodging $lodging
|
||||
* @param $endDate
|
||||
* @return array
|
||||
*/
|
||||
public function reservationDays(FewoLodging $lodging, $endDate)
|
||||
{
|
||||
$reservations = $lodging->getReservationsFilter(new \DateTime(), $endDate);
|
||||
|
||||
$days = array();
|
||||
foreach($reservations as $reservation) {
|
||||
|
||||
$setFromIntervall = clone $reservation->getFromDate();
|
||||
$fromDate = $reservation->getFromDate();
|
||||
$toDate = $reservation->getToDate();
|
||||
|
||||
// $diff = $fromDate->diff($toDate);
|
||||
$interval = \DateInterval::createFromDateString('1 day');
|
||||
$period = new \DatePeriod($setFromIntervall->modify('+1 day'), $interval, $toDate);
|
||||
|
||||
//days
|
||||
foreach ($period as $dt) {
|
||||
$days[] = $dt->format("d.m.Y");
|
||||
}
|
||||
}
|
||||
return $days;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param FewoLodging $lodging
|
||||
* @param $endDate
|
||||
* @return array
|
||||
*/
|
||||
public function classByDays(FewoLodging $lodging, $endDate)
|
||||
{
|
||||
$ret = array();
|
||||
foreach ($this->calendar as $month => $calendar_month) {
|
||||
foreach ($calendar_month['data'] as $key => $day) {
|
||||
if($day && $day->getDate()){
|
||||
$toClass = "";
|
||||
|
||||
if($day->getIsBookable() && !$day->getIsPastDate()) {
|
||||
$toClass .= " bookable";
|
||||
}
|
||||
|
||||
$ret[$day->getDate()->format("d.m.Y")] = $day->getCssClass()."".$toClass;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FewoLodging $lodging
|
||||
* @return bool
|
||||
*/
|
||||
private function getSeasonLast(FewoLodging $lodging)
|
||||
{
|
||||
$lodgingPrices = $lodging->getPrices();
|
||||
$season = false;
|
||||
$lastDate = new \DateTime();
|
||||
foreach($lodgingPrices as $price)
|
||||
{
|
||||
if($price->getSeason()){
|
||||
if($price->getSeason()->getToDate() > $lastDate){
|
||||
$season = $price->getSeason();
|
||||
$lastDate = $price->getSeason()->getToDate();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return $season;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FewoBookingRequest $fewoBookingRequest
|
||||
* @param FewoLodging $fewoLodging
|
||||
*/
|
||||
private function checkIsPossible(FewoBookingRequest $fewoBookingRequest, FewoLodging $lodging){
|
||||
|
||||
$fromDate = clone $fewoBookingRequest->getFromDate();
|
||||
$toDate = clone $fewoBookingRequest->getToDate();
|
||||
|
||||
|
||||
$interval = \DateInterval::createFromDateString('1 day');
|
||||
$period = new \DatePeriod($fromDate, $interval, $toDate->modify('+1 day'));
|
||||
$check_days = array();
|
||||
//days
|
||||
foreach ($period as $dt) {
|
||||
$check_days[] = $dt->format("d.m.Y");
|
||||
}
|
||||
|
||||
foreach ($this->calendar as $month => $calendar_month) {
|
||||
foreach ($calendar_month['data'] as $key => $day) {
|
||||
if($day && $day->getDate()) {
|
||||
if (in_array($day->getDate()->format("d.m.Y"), $check_days)) {
|
||||
if($day->getIsReserved() || $day->getIsPastDate()) {
|
||||
return false;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public function indexAction(Page $fewoTravelProgramPage, $action, Request $request)
|
||||
{
|
||||
$calendarService = $this->container->get('app.lodging_calendar_util');
|
||||
|
||||
|
||||
$em = $this->getEntityManager();
|
||||
$fewoLodgingRepo = $em->getRepository('AppBundle:FewoLodging');
|
||||
$fewoPriceRepo = $em->getRepository('AppBundle:FewoPrice');
|
||||
|
||||
if (!$request->query->has('pnr') || !$request->query->has('fd'))
|
||||
{
|
||||
return $this->redirect($fewoTravelProgramPage->getUrlPath());
|
||||
}
|
||||
|
||||
$lodging = $fewoTravelProgramPage->getFewoLodging();
|
||||
$this->initCalender($lodging);
|
||||
|
||||
$maxPersons = $lodging->getMaximumPersons();
|
||||
$maxAdults = $lodging->getMaximumAdults();
|
||||
$maxChilds = $lodging->getMaximumChilds();
|
||||
|
||||
|
||||
$fewoBookingRequest = new FewoBookingRequest();
|
||||
$fewoBookingRequest->setLodging($lodging);
|
||||
|
||||
$reservation = new FewoReservation();
|
||||
$lastSeason = $this->getSeasonLast($lodging);
|
||||
|
||||
$reservationDays = $this->reservationDays($lodging, $lastSeason->getToDate());
|
||||
$classByDays = $this->classByDays($lodging, $lastSeason->getToDate());
|
||||
|
||||
|
||||
|
||||
//first init for form ...
|
||||
$fromDate = $request->query->get('fd');
|
||||
$priceId = $request->query->get('pnr');
|
||||
$price = $fewoPriceRepo->find($priceId);
|
||||
$season = $price->getSeason();
|
||||
$minimumStay = $season->getMinimumStay();
|
||||
|
||||
$fromDate = $calendarService->convertDate($fromDate);
|
||||
$fromDateTime = new \DateTime($fromDate);
|
||||
|
||||
$toDate = new \DateTime($fromDate);
|
||||
$toDate->modify('+'.$season->getMinimumStay().' day');
|
||||
$toDate = $toDate->format('d.m.Y');
|
||||
$toDateTime = new \DateTime($toDate);
|
||||
|
||||
$fewoBookingRequest->setFromDate($fromDateTime);
|
||||
$fewoBookingRequest->setToDate($toDateTime);
|
||||
$fewoBookingRequest->setNumberDays($minimumStay);
|
||||
$fewoBookingRequest->setPrice($price);
|
||||
|
||||
$nationalities = $this->getDoctrine()
|
||||
->getRepository('AppBundle:TravelNationality')
|
||||
->createQueryBuilder('n')
|
||||
->getQuery()->getResult(Query::HYDRATE_ARRAY);
|
||||
|
||||
$form = $this->createForm(FewoBookingRequestType::class, $fewoBookingRequest, [
|
||||
'lodging' => $lodging,
|
||||
'maxPersons' => $maxPersons,
|
||||
'maxAdults' => $maxAdults,
|
||||
'maxChilds' => $maxChilds,
|
||||
'nationalities' => $nationalities,
|
||||
'fromDate' => $fromDate,
|
||||
'toDate' => $toDate,
|
||||
]);
|
||||
|
||||
//overwrite is an request from form
|
||||
if ($request->getMethod() == 'POST')
|
||||
{
|
||||
$form->handleRequest($request);
|
||||
$fewoBookingRequest = $form->getData();
|
||||
|
||||
$finalFromDate = $fewoBookingRequest->getFromDate();
|
||||
$finalToDate = $fewoBookingRequest->getToDate();
|
||||
|
||||
$timeDiff = date_diff($finalFromDate, $finalToDate);
|
||||
$numberDays = $timeDiff->days;
|
||||
$season = $fewoLodgingRepo->findSeasonForLodgingBy($lodging, $finalFromDate);
|
||||
if($season){
|
||||
$price = $fewoPriceRepo->findOneBy(['lodging' => $lodging, 'season' => $season]);
|
||||
if($price){
|
||||
$season = $price->getSeason();
|
||||
$minimumStay = $season->getMinimumStay();
|
||||
$fewoBookingRequest->setPrice($price);
|
||||
$fewoBookingRequest->setNumberDays($numberDays);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$isPossible = $this->checkIsPossible($fewoBookingRequest, $lodging);
|
||||
$priceResult = $this->calculatePriceNew($fewoBookingRequest, $lodging, $price);
|
||||
$totalPrice = 0;
|
||||
$perDayTotalPrice = 0;
|
||||
// $totalPrice = $this->calculatePrice($fewoBookingRequest, $lodging, $price);
|
||||
//$perDayTotalPrice = $this->calculatePerDayTotalPrice($fewoBookingRequest, $price);
|
||||
$fewoBookingRequest->setTotalPrice($priceResult['price_total']);
|
||||
|
||||
$isPossible = true;
|
||||
|
||||
if($action == '/buchen')
|
||||
{
|
||||
|
||||
if ($request->getMethod() == 'POST' && $form->isValid() && $isPossible)
|
||||
{
|
||||
$reservation->setFromDate($fewoBookingRequest->getFromDate());
|
||||
$reservation->setToDate($fewoBookingRequest->getToDate());
|
||||
$reservation->setStatus(0); // 0 = belegt; 1 = nicht verfügbar
|
||||
$reservation->setType(0); // 0 = Buchung; 1 = Händisch
|
||||
|
||||
$reservation->setLodging($lodging);
|
||||
$em->persist($reservation);
|
||||
$em->flush();
|
||||
|
||||
//TODO add to new CRM
|
||||
$crmBookingUrl = $this->get('app.fewo_booking_exporter')->process($fewoBookingRequest, $lodging, $price, $priceResult, $reservation->getId());//, $travelDate, $bookingPriceInfo);
|
||||
if (!$crmBookingUrl)
|
||||
{
|
||||
$crmBookingUrl = '[CRM-EXPORT FEHLGESCHLAGEN]';
|
||||
}
|
||||
|
||||
/* else
|
||||
{
|
||||
$crmBookingUrl = preg_replace('/\\/api/', '', $crmBookingUrl) . '/edit';
|
||||
}
|
||||
*/
|
||||
$this->get('mailer')->send(\Swift_Message::newInstance()
|
||||
->setSubject('Ihre FeWo-Mietauftrag bei STERN TOURS')
|
||||
->setFrom('stern@stern-tours.de', 'STERN TOURS')
|
||||
->setTo($fewoBookingRequest->getEmail())
|
||||
->setBody(
|
||||
$this->renderView('default/email/fewoBookingConfirmationEmail.txt.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir') . '/..') . DIRECTORY_SEPARATOR,
|
||||
'fewo_booking_request' => $fewoBookingRequest,
|
||||
'fewo_lodging' => $lodging,
|
||||
'fewo_price' => $price,
|
||||
'priceResult' => $priceResult,
|
||||
'isPossible' => $isPossible,
|
||||
]),
|
||||
'text/plain', 'utf-8'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
$this->get('mailer')->send(\Swift_Message::newInstance()
|
||||
->setSubject('FEWO-BUCHUNG: ' . $lodging->getName())
|
||||
->setFrom('stern@stern-tours.de', 'STERN TOURS')
|
||||
->setTo('stern@stern-tours.de')
|
||||
//->setTo('kevin@adametz.media')
|
||||
->setBody(
|
||||
$this->renderView('default/email/fewoBookingServiceEmail.txt.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir') . '/..') . DIRECTORY_SEPARATOR,
|
||||
'crm_url' => $crmBookingUrl,
|
||||
'lodging_url' => Util::getBaseUrl() . $fewoTravelProgramPage->getUrlPath(),
|
||||
'fewo_booking_request' => $fewoBookingRequest,
|
||||
'fewo_lodging' => $lodging,
|
||||
'fewo_price' => $price,
|
||||
'priceResult' => $priceResult,
|
||||
'isPossible' => $isPossible,
|
||||
|
||||
]),
|
||||
'text/plain', 'utf-8'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
return $this->render('default/pages/fewoBookingConfirmation.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'site_loading' => 'bookingconfirm',
|
||||
'page' => $fewoTravelProgramPage,
|
||||
'fewo_booking_request' => $fewoBookingRequest,
|
||||
'fewo_lodging' => $lodging,
|
||||
'fewo_price' => $price,
|
||||
'total_price' => $totalPrice,
|
||||
'total_price_per_night' => $perDayTotalPrice,
|
||||
'show_search_sidebar_widget' => false,
|
||||
'isPossible' => $isPossible,
|
||||
'priceResult' => $priceResult,
|
||||
]);
|
||||
}
|
||||
|
||||
// GET
|
||||
return $this->render('default/pages/fewoBooking.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
'site_loading' => 'booking',
|
||||
'fewo_booking_request' => $fewoBookingRequest,
|
||||
'lodging' => $lodging,
|
||||
'fromDate' => $fromDate,
|
||||
'toDate' => $toDate,
|
||||
'fewo_lodging' => $lodging,
|
||||
'fewo_price' => $price,
|
||||
'total_price' => $totalPrice,
|
||||
'total_price_per_night' => $perDayTotalPrice,
|
||||
'page' => $fewoTravelProgramPage,
|
||||
'show_search_sidebar_widget' => false,
|
||||
'lastSeason' => $lastSeason,
|
||||
'reservationDays' => $reservationDays,
|
||||
'classByDays' => $classByDays,
|
||||
'terms_filename' => $this->getDoctrine()->getRepository('AppBundle:TravelOrganizer')->find(1)->getFileName(),
|
||||
'isPossible' => $isPossible,
|
||||
'priceResult' => $priceResult,
|
||||
]);
|
||||
|
||||
}
|
||||
elseif($action == '/berechne-gesamtpreis')
|
||||
{
|
||||
return $this->render('default/components/booking/fewoSummary.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'fewo_booking_request' => $fewoBookingRequest,
|
||||
'fewo_lodging' => $lodging,
|
||||
'fewo_price' => $price,
|
||||
'total_price' => $totalPrice,
|
||||
'total_price_per_night' => $perDayTotalPrice,
|
||||
'isPossible' => $isPossible,
|
||||
'priceResult' => $priceResult,
|
||||
]);
|
||||
|
||||
}
|
||||
throw new \Exception('Unknown FewoBookingController action: '. $action);
|
||||
}
|
||||
|
||||
private function calculatePriceNew(FewoBookingRequest $fewoBookingRequest, FewoLodging $lodging){
|
||||
|
||||
|
||||
$fromDate = clone $fewoBookingRequest->getFromDate();
|
||||
$toDate = clone $fewoBookingRequest->getToDate();
|
||||
|
||||
|
||||
$interval = \DateInterval::createFromDateString('1 day');
|
||||
$period = new \DatePeriod($fromDate, $interval, $toDate);
|
||||
$check_days = array();
|
||||
//days
|
||||
foreach ($period as $dt) {
|
||||
$check_days[] = $dt->format("d.m.Y");
|
||||
}
|
||||
|
||||
$result = [];
|
||||
$result['total'] = 0;
|
||||
$result['price_total'] = 0;
|
||||
$result['deposit'] = $lodging->getDeposit();
|
||||
$result['flatPrice'] = 0;
|
||||
$result['days'] = 0;
|
||||
$result['season'] = [];
|
||||
$frist_day = false;
|
||||
foreach ($this->calendar as $month => $calendar_month) {
|
||||
foreach ($calendar_month['data'] as $key => $day) {
|
||||
if($day && $day->getDate()) {
|
||||
if (in_array($day->getDate()->format("d.m.Y"), $check_days)) {
|
||||
|
||||
if(!empty($day->getPrice())){
|
||||
$season = $day->getPrice()->getSeason()->getName();
|
||||
if(!isset($result['season'][$season])){
|
||||
$result['season'][$season]['fromDay'] = $day->getDate()->format("d.m.Y");
|
||||
$result['flatPrice'] = $day->getPrice()->getFlatPrice();
|
||||
$result['season'][$season]['price'] = 0;
|
||||
$result['season'][$season]['numberDays'] = 0;
|
||||
$result['season'][$season]['perNight'] = $day->getPrice()->getPerNight();
|
||||
$result['season'][$season]['minimumStay'] = $day->getPrice()->getSeason()->getMinimumStay();
|
||||
}
|
||||
|
||||
if(!$frist_day){
|
||||
$result['season'][$season]['price'] += $day->getPrice()->getPerNight();
|
||||
$result['season'][$season]['numberDays'] ++;
|
||||
$result['season'][$season]['toDay'] = $day->getDate()->format("d.m.Y");
|
||||
$result['total'] += $day->getPrice()->getPerNight();
|
||||
|
||||
$result['days'] ++;
|
||||
|
||||
}else{
|
||||
$frist_day = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$result['total_price'] = $result['flatPrice'] + $result['total'] + $result['deposit'];
|
||||
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
public function calculatePrice(FewoBookingRequest $fewoBookingRequest, FewoLodging $fewoLodging, FewoPrice $fewoPrice)
|
||||
{
|
||||
$result = $fewoLodging->getDeposit();
|
||||
$result = $result + $fewoPrice->getFlatPrice();
|
||||
|
||||
for($i = 0; $i < $fewoBookingRequest->getNumberDays(); $i++)
|
||||
{
|
||||
$result = $result + $fewoPrice->getPerNight();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function calculatePerDayTotalPrice(FewoBookingRequest $fewoBookingRequest, FewoPrice $fewoPrice)
|
||||
{
|
||||
$result = 0;
|
||||
for($i = 0; $i < $fewoBookingRequest->getNumberDays(); $i++)
|
||||
{
|
||||
$result = $result + $fewoPrice->getPerNight();
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace AppBundle\Controller;
|
||||
|
||||
|
||||
use AppBundle\Util;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class ImageController extends Controller
|
||||
{
|
||||
public function showAction()
|
||||
{
|
||||
|
||||
$path = Util::getRootDir();
|
||||
$path .= 'web/images/placeholder-image.png';
|
||||
$image_name = 'placeholder-image.png';
|
||||
|
||||
|
||||
$file = file_get_contents($path);
|
||||
$headers = array('Content-Type' => 'image/jpeg',
|
||||
'Content-Disposition' => 'inline; filename="' . $image_name . '"');
|
||||
|
||||
|
||||
|
||||
|
||||
//return 'data:image/image/jpeg;base64,'.base64_encode($file);
|
||||
|
||||
return new Response($file, 200, $headers);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue