src/StartPlatz/Bundle/EventBundle/Resources/views/Default/event-single.lp.html.twig line 1

Open in your IDE?
  1. {% extends "@StartPlatzStyleBundle/Bootstrap4/base.homepage.event-lp.html.twig" %}
  2. {% import "@StartPlatzEventBundle/Admin/_macros.bs4.html.twig" as layout %}
  3. {% set currentPath = app.request.get('_route') %}
  4. {% block metaData %}
  5.     {# Optimize meta description for archived events #}
  6.     {% if event.status == 'archive' %}
  7.         {% set archivePrefix = 'Vergangene Veranstaltung vom ' ~ event.startDate|date('d.m.Y') ~ ': ' %}
  8.         <meta name="description" content="{{ archivePrefix }}{{ event.seoDescription|slice(0, 140) }}">
  9.     {% else %}
  10.         <meta name="description" content="{{ event.seoDescription }}">
  11.     {% endif %}
  12.     <meta name="keywords" content="{{ event.seoKeyword }}">
  13.     <meta name="author" content="{{ event.trainer }}">
  14.     {% if app.environment == 'prod' %}
  15.         <meta name="robots" content="index,follow">
  16.         {% if event.seriesTag is not empty %}
  17.             <link rel="canonical" href="{{ path('event_series', {'seriesTag': event.seriesTag}) }}" />
  18.         {% else %}
  19.             <link rel="canonical" href="https://www.startplatz.de/event/{{ event.slug | url_encode }}" />
  20.         {% endif %}
  21.     {% else %}
  22.         <meta name="robots" content="noindex,nofollow">
  23.     {% endif %}
  24.     <!-- Open Graph -->
  25.     <meta property="og:title" content="{{ event.seoTitle }}">
  26.     <meta property="og:description" content="{{ event.seoDescription }}">
  27.     <meta property="og:image" content="{{ event.imageLink }}">
  28.     <!-- Twitter Card -->
  29.     <meta name="twitter:card" content="summary">
  30.     <meta name="twitter:title" content="{{ event.seoTitle }}">
  31.     <meta name="twitter:description" content="{{ event.seoDescription }}">
  32.     <meta name="twitter:image" content="{{ event.imageLink }}">
  33. {% endblock %}
  34. {% block additionalHead %}
  35.     {#
  36.     {% include "@StartPlatzStyle/CSS/_homepage.sinlge-event.version-2023-fall.html.twig" %}
  37.     #}
  38.     <style>
  39.         html {
  40.             scroll-behavior: smooth;
  41.         }
  42.         :target::before {
  43.             content: "";
  44.             display: block;
  45.             height: 70px;
  46.             margin-top: -70px;
  47.         }
  48.         body {
  49.             background-image: url('{{ event.bgImagelink }}'); /* Pfad zu Ihrem Bild */
  50.             background-size: cover; /* Stellt sicher, dass das Bild die ganze Seite bedeckt */
  51.             background-position: center; /* Zentriert das Bild */
  52.             background-attachment: fixed; /* Verhindert, dass das Bild beim Scrollen mitbewegt wird */
  53.             font-family: 'Source Sans Pro', sans-serif;
  54.         }
  55.         /*
  56.         .content-wrapper class to limit the maximum width of the content area.
  57.         It ensures better readability by centering the content and setting a maximum width.
  58.         */
  59.         .content-wrapper {
  60.             max-width: 800px;  /* You can adjust this value based on your design needs */
  61.             margin-left: auto;
  62.             margin-right: auto;
  63.         }
  64.         .btn-outline-primary {
  65.             color: #495057; /* This color should match the text color of the landing page */
  66.             border-color: #495057; /* Same as above, can be the primary color of your site */
  67.         }
  68.         .btn-outline-primary:hover {
  69.             background-color: #495057; /* This should be a prominent color that matches your design */
  70.             color: #ffffff; /* Usually, white text works well on a darker background */
  71.             border-color: #495057; /* Match the hover background for a solid look */
  72.         }
  73.     </style>
  74.     {% if event.additionalCss is not empty %}
  75.         <!-- addition css styles only for this event -->
  76.         <style>
  77.             {{ event.additionalCss }}
  78.         </style>
  79.     {% endif %}
  80. {% endblock %}
  81. {% block navigation %}{% endblock %}
  82. {% block title %}{{ event.seoTitle }}{% endblock %}
  83. {% block content %}
  84.     {% set lang = lang|default('DE') %}
  85.     {% if event.teaser %}
  86.         {{ include(template_from_string(event.teaser)) }}
  87.     {% endif %}
  88.     <section class="bg-sp-grey">
  89.         <div class="container">
  90.             <!-- Custom content-wrapper class to limit content width and improve readability -->
  91.             <div class="content-wrapper">
  92.                 <div class="row pt-3 bg-white mb-3">
  93.                     <div class="col-12" >
  94.                         {% if embed and not event.isSinglePage %}
  95.                             {% include "@StartPlatzEvent/Default/_event.part.articleImage-and-title.html.twig" %}
  96.                         {% endif %}
  97.                         <!-- Archive Banner (SEO-optimized: no redirect) -->
  98.                         {% include '@StartPlatzEvent/Default/_event.part.archive-banner.html.twig' with {
  99.                             'event': event
  100.                         } %}
  101.                         <!-- end archive banner -->
  102.                         <!-- start part flashbag notices -->
  103.                         {% if app.session.flashbag.has('notice')  %}
  104.                             <div class="row">
  105.                                 <div class="col-12 px-md-5">
  106.                                     {% for flashMessage in app.session.flashbag.get('notice') %}
  107.                                         <div class="text-center alert {% if 'SUCCESS' in flashMessage %}alert-success{% elseif 'ERROR' in flashMessage  %}alert-danger{% else %}alert-default{% endif %}" role="alert">{{ flashMessage|replace({'SUCCESS': ''})|raw }}</div>
  108.                                     {% endfor %}
  109.                                     {{ editFeedback|raw }}
  110.                                 </div>
  111.                             </div>
  112.                         {% endif %}
  113.                         <!-- end part flashbag notices -->
  114.                         {% if settings.batchType is not defined or settings.batchType != "memberDocumentation" %}
  115.                             <!-- start part feedback application process -->
  116.                             <div class="row">
  117.                                 <div class="col-12 px-md-5">
  118.                                     {% include "@StartPlatzEvent/Default/_event.part.feedback-application-process.html.twig" %}
  119.                                 </div>
  120.                             </div>
  121.                             <!-- end part feedback application process -->
  122.                         {% endif %}
  123.                         <!-- start part content -->
  124.                         <div class="row">
  125.                             <div class="col-12 px-md-5">
  126.                                 {{ event.content|raw }}
  127.                             </div>
  128.                         </div>
  129.                         <!-- end part content -->
  130.                         {% if event.alert == "Anfrage" %}
  131.                             <!-- start part anfrage and registering -->
  132.                             {% include "@StartPlatzEvent/Default/_registration.anfrage.html.twig"%}
  133.                             <!-- end part anfrage and registering -->
  134.                         {% else %}
  135.                             <!-- start part ticketing and registering -->
  136.                             {% if event.ticketing %}
  137.                                 <h2 id="Anmeldung" class="text-center">Anmeldung</h2>
  138.                                 <p>
  139.                                     {{ event.ticketing|raw }}
  140.                                 </p>
  141.                             {% elseif event.applicationUrl and not batch%}
  142.                                 <h2 id="Anmeldung" class="text-center">Anmeldung</h2>
  143.                                 {% include "@StartPlatzEvent/Default/_registration.appicationUrl.html.twig"%}
  144.                             {% elseif event.ctaContent or (settings.doNotshowApplicationSection is defined and settings.doNotshowApplicationSection) %}
  145.                                 <!-- Application Section will not be shown -->
  146.                             {% elseif batch and batchIsOpen %}
  147.                                 {% if batch.priceInEuroCent > 0 %}
  148.                                     {% include "@StartPlatzEvent/Default/_registration.batch.html.twig"%}
  149.                                 {% else  %}
  150.                                     {% if settings.isPreRegistration is defined and settings.isPreRegistration %}
  151.                                         {% include "@StartPlatzEvent/Default/_registration.pre-registration-batch.html.twig"%}
  152.                                     {% else %}
  153.                                         {% include "@StartPlatzEvent/Default/_registration.batch.html.twig"%}
  154.                                     {% endif%}
  155.                                 {% endif %}
  156.                             {% else %}
  157.                                 <h2 id="Anmeldung" class="text-center">Anmeldung nicht möglich</h2>
  158.                             {% endif %}
  159.                             <!-- end part ticketing and registering -->
  160.                         {% endif %}
  161.                         <!-- start cta content -->
  162.                         {% if event.ctaContent %}
  163.                             <div class="row">
  164.                                 <div class="col-12 px-md-5">
  165.                                     {{ include(template_from_string(event.ctaContent)) }}
  166.                                 </div>
  167.                             </div>
  168.                         {% endif %}
  169.                         <!-- end cta content -->
  170.                         <!-- start post cta content -->
  171.                         {% if event.postCtaContent %}
  172.                             <div class="row">
  173.                                 <div class="col-12 px-md-5">
  174.                                     {{ event.postCtaContent|raw }}
  175.                                 </div>
  176.                             </div>
  177.                         {% endif %}
  178.                         <!-- end post cta content -->
  179.                         <!-- start tags -->
  180.                         <div class="row">
  181.                             <div class="col-12 px-md-5 text-center mb-3">
  182.                                 {{ layout.hashTagList( event.tags|split('#'), 'events_list', templateVars, 'tmp' ) }}
  183.                             </div>
  184.                         </div>
  185.                         <!-- end tags -->
  186.                         <!-- start part speakers and partners -->
  187.                         {% if speakers %}
  188.                             <div class="row">
  189.                                 <div class="col-12 px-md-5">
  190.                                     {% include "@StartPlatzEvent/Default/_event.part.speakers-and-partners.html.twig" %}
  191.                                 </div>
  192.                             </div>
  193.                         {% endif %}
  194.                         <!-- end part speakers and partners -->
  195.                         <!-- start part event series -->
  196.                         {% if event.seriesTag %}
  197.                             <div class="row">
  198.                                 <div class="col-12 px-md-5">
  199.                                     {% include "@StartPlatzEvent/Default/_event.part.event-series.html.twig" %}
  200.                                 </div>
  201.                             </div>
  202.                         {% endif %}
  203.                         <!-- end part event series -->
  204.                         {% if preview is defined and preview == 'byGuestEditor' %}
  205.                             <div class="row">
  206.                                 <a href="{{ path('guest_events_add', {'id': event.id}) }}" class="btn btn-success pull-right" role="button">Zurück zur Event-Seite</a>
  207.                             </div>
  208.                         {% endif %}
  209.                     </div>
  210.                 </div>
  211.             </div> <!-- End of content-wrapper -->
  212.         </div>
  213.     </section>
  214.     {% if app.user and batch %}
  215.         <section class="bg-sp-grey pt-1">
  216.             <div class="container">
  217.                 <div class="content-wrapper">
  218.                     <div class="row pt-3 bg-white">
  219.                         <div class="col-12">
  220.                             <div class="row">
  221.                                 <div class="col-12 px-md-5 text-center">
  222.                                     <h2>Promote This Event</h2>
  223.                                     <p>Teile diesen Event-Link und hilf uns, mehr Aufmerksamkeit für dieses Event zu generieren.</p>
  224.                                     <div class="input-group mb-3">
  225.                                         <input type="text" class="form-control" id="promotionUrl" readonly value="{{ promotionUrl }}">
  226.                                         <div class="input-group-append">
  227.                                             <button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('#promotionUrl')">Kopieren</button>
  228.                                         </div>
  229.                                     </div>
  230.                                 </div>
  231.                             </div>
  232.                         </div>
  233.                     </div>
  234.                 </div>
  235.             </div>
  236.         </section>
  237.         <script>
  238.             function copyToClipboard(elementId) {
  239.                 var copyText = document.querySelector(elementId);
  240.                 copyText.select();
  241.                 document.execCommand("copy");
  242.             }
  243.         </script>
  244.     {% endif %}
  245.     {% if app.user is defined and application  is defined and application is not null and application.canReadList %}
  246.             <section class="bg-sp-grey pt-3">
  247.                 <div class="container">
  248.                     <div class="content-wrapper">
  249.                         <div class="row pt-3 pb-3 bg-white">
  250.                             <div class="col-12">
  251.                                 Hier kannst Du die Teilnehmerliste einsehen
  252.                                 <a class="btn btn-outline-dark btn-sm" href="{{ path('admin_event_participants', {id: event.id} ) }}" role="button">participants</a>
  253.                             </div>
  254.                         </div>
  255.                     </div>
  256.                 </div>
  257.             </section>
  258.     {% endif %}
  259.     {% if app.user and app.user.email == event.createdBy %}
  260.         <section class="bg-sp-grey pt-3">
  261.             <div class="container">
  262.                 <div class="content-wrapper">
  263.                     <div class="row pt-3 pb-3 bg-white">
  264.                         <div class="col-12">
  265.                             Hier kannst du den Event bearbeiten
  266.                             <a class="btn btn-outline-dark btn-sm" href="{{ path('guest_events_edit', {id: event.id} ) }}" role="button">update</a>
  267.                             Hier kannst Du die Teilnehmerliste einsehen
  268.                             <a class="btn btn-outline-dark btn-sm" href="{{ path('admin_event_participants', {id: event.id} ) }}" role="button">participants</a>
  269.                         </div>
  270.                     </div>
  271.                 </div>
  272.             </div>
  273.         </section>
  274.     {% endif %}
  275.     {% if app.user is defined %}
  276.         {% if app.user.admin is defined and app.user.admin %}
  277.             <section class="bg-sp-grey pt-3">
  278.                 <div class="container">
  279.                     <div class="content-wrapper">
  280.                         <div class="row pt-3 bg-white mb-3">
  281.                             <div class="col-12">
  282.                                 <div class="row">
  283.                                     <div class="col-12 px-md-5 pb-3 text-center">
  284.                                         <a class="btn btn-outline-dark btn-sm" href="{{ path('admin_event_edit', {id: event.id} ) }}" role="button">update</a>
  285.                                         <a class="btn btn-outline-dark btn-sm" href="{{ path('admin_event_participants', {id: event.id} ) }}" role="button">participants</a>
  286.                                     </div>
  287.                                     <div class="col-12 pb-3 text-center">
  288.                                         {{ layout.tagList( event.tags|split('#'), 'events_list', 'btn-success', templateVars, 'tmp' ) }}
  289.                                     </div>
  290.                                 </div>
  291.                             </div>
  292.                         </div>
  293.                     </div>
  294.                 </div>
  295.             </section>
  296.         {% endif %}
  297.     {% endif %}
  298.     <!-- homepage single event ends -->
  299. {% endblock %}
  300. {% block footer %}
  301.     {% if not embed|default(false) %}
  302.         {% include '@StartPlatzWebsiteBundle/Default/footerBootstrap40.html.twig' %}
  303.     {% endif %}
  304. {% endblock %}
  305. {% block infiniteLoop %}{% endblock %}
  306. {% block javascriptInfiniteLoop %}{% endblock %}
  307. {% block ajax_helpers %}{% endblock %}
  308. {% block javascripts %}{% endblock %}