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

Open in your IDE?
  1. {% extends "@StartPlatzStyleBundle/Bootstrap4/base.homepage.with-sections.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.     {% include "@StartPlatzStyle/CSS/_homepage.sinlge-event.version-2023-fall.html.twig" %}
  36.     {% if event.additionalCss is not empty %}
  37.         <!-- addition css styles only for this event -->
  38.         <style>
  39.             {{ event.additionalCss }}
  40.         </style>
  41.     {% endif %}
  42.     {% include "@StartPlatzStyleBundle/_meta-pixel.html.twig" with { meta_pixel_id: event.metaPixelId|default(null) } only %}
  43. {% endblock %}
  44. {% block navigation %}
  45.     {% include "@StartPlatzStyleBundle/Navigation/_nav.homepage.bootstrap4.html.twig" %}
  46. {% endblock %}
  47. {% block title %}{{ event.seoTitle }}{% endblock %}
  48. {% block content %}
  49.     {% set lang = lang|default('DE') %}
  50.     {% set showTeaser = showTeaser|default(false) %}
  51.     <!-- homepage single event starts -->
  52.     {% if showTeaser is defined and showTeaser %}
  53.         {% include "@StartPlatzEvent/Default/_event.section.header.html.twig" %}
  54.     {% endif %}
  55.     <section class="bg-sp-grey">
  56.         <div class="container">
  57.             <!-- Custom content-wrapper class to limit content width and improve readability -->
  58.             <div class="content-wrapper">
  59.                 <div class="row pt-3 bg-white">
  60.                     <div class="col-12" >
  61.                         <!-- start part for article image and teaser -->
  62.                         {% if showTeaser is defined and showTeaser %}
  63.                             {% include "@StartPlatzEvent/Default/_event.part.articleImage-and-teaser.html.twig" %}
  64.                         {% else %}
  65.                             {% include "@StartPlatzEvent/Default/_event.part.articleImage-and-title.html.twig" %}
  66.                         {% endif %}
  67.                     <!-- end part for article image and teaser -->
  68.                         <!-- Archive Banner (SEO-optimized: no redirect) -->
  69.                         {% include '@StartPlatzEvent/Default/_event.part.archive-banner.html.twig' with {
  70.                             'event': event
  71.                         } %}
  72.                         <!-- end archive banner -->
  73.                         <!-- start part flashbag notices -->
  74.                         {% if app.session.flashbag.has('notice')  %}
  75.                             <div class="row">
  76.                                 <div class="col-12 px-md-5">
  77.                                     {% for flashMessage in app.session.flashbag.get('notice') %}
  78.                                         <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>
  79.                                     {% endfor %}
  80.                                     {{ editFeedback|raw }}
  81.                                 </div>
  82.                             </div>
  83.                         {% endif %}
  84.                         <!-- end part flashbag notices -->
  85.                         {% if settings.batchType is not defined or settings.batchType != "memberDocumentation" %}
  86.                         <!-- start part feedback application process -->
  87.                         <div class="row">
  88.                             <div class="col-12 px-md-5">
  89.                                 {% include "@StartPlatzEvent/Default/_event.part.feedback-application-process.html.twig" %}
  90.                             </div>
  91.                         </div>
  92.                         <!-- end part feedback application process -->
  93.                         {% endif %}
  94.                         <!-- start part content -->
  95.                         {% if batch and batch.hasCustomPage() %}
  96.                             {% set displayContent = batch.landingPageContent %}
  97.                         {% elseif batch and batch.pitchDescription and batch.pitchDescription|trim != '' %}
  98.                             {% set displayContent = batch.pitchDescription %}
  99.                         {% else %}
  100.                             {% set displayContent = event.content %}
  101.                         {% endif %}
  102.                         {% if showTeaser %}
  103.                             <div class="row">
  104.                                 <div class="col-12 px-md-5">
  105.                                     {{ displayContent|raw }}
  106.                                 </div>
  107.                             </div>
  108.                         {% else %}
  109.                             <div class="row">
  110.                                 <div class="col-12 px-md-5">
  111.                                     <hr>
  112.                                     {{ displayContent|raw }}
  113.                                 </div>
  114.                             </div>
  115.                         {% endif %}
  116.                         <!-- end part content -->
  117.                         {% if settings.batchType is defined and settings.batchType == "memberDocumentation" %}
  118.                             <!-- start documentation section -->
  119.                             <div class="row">
  120.                                 <div class="col-12 px-md-5">
  121.                                     {% include "@StartPlatzEvent/Default/_documentation.batch.html.twig"%}
  122.                                 </div>
  123.                             </div>
  124.                             <!-- end documentation section -->
  125.                         {% else %}
  126.                             <!-- start part ticketing and registering -->
  127.                             {% if event.ticketing %}
  128.                                 <h2 id="Anmeldung" class="text-center">Anmeldung</h2>
  129.                                 <p>
  130.                                     {{ event.ticketing|raw }}
  131.                                 </p>
  132.                             {% elseif event.applicationUrl and 'startplatz.de' not in event.applicationUrl %}
  133.                                 {# External URL always takes precedence, even with batch #}
  134.                                 <h2 id="Anmeldung" class="text-center">Anmeldung</h2>
  135.                                 {% include "@StartPlatzEvent/Default/_registration.appicationUrl.html.twig"%}
  136.                             {% elseif event.applicationUrl and not batch%}
  137.                                 {# Internal startplatz.de URL only when no batch exists #}
  138.                                 <h2 id="Anmeldung" class="text-center">Anmeldung</h2>
  139.                                 {% include "@StartPlatzEvent/Default/_registration.appicationUrl.html.twig"%}
  140.                             {% elseif event.ctaContent or (settings.doNotshowApplicationSection is defined and settings.doNotshowApplicationSection) %}
  141.                                 <!-- Application Section will not be shown -->
  142.                             {% elseif batch and batchIsOpen %}
  143.                                 {% if batch.priceInEuroCent > 0 %}
  144.                                     {% include "@StartPlatzEvent/Default/_registration.batch.html.twig"%}
  145.                                 {% else  %}
  146.                                     {% if settings.isPreRegistration is defined and settings.isPreRegistration %}
  147.                                         {% include "@StartPlatzEvent/Default/_registration.pre-registration-batch.html.twig"%}
  148.                                     {% else %}
  149.                                         {% include "@StartPlatzEvent/Default/_registration.batch.html.twig"%}
  150.                                     {% endif%}
  151.                                 {% endif %}
  152.                             {% else %}
  153.                                 <h2 id="Anmeldung" class="text-center">Anmeldung nicht möglich</h2>
  154.                             {% endif %}
  155.                             <!-- end part ticketing and registering -->
  156.                         {% endif %}
  157.                         <!-- start cta content -->
  158.                         {% if event.ctaContent %}
  159.                             <div class="row">
  160.                                 <div class="col-12 px-md-5">
  161.                                     {{ include(template_from_string(event.ctaContent)) }}
  162.                                 </div>
  163.                             </div>
  164.                         {% endif %}
  165.                         <!-- end cta content -->
  166.                         <!-- start post cta content -->
  167.                         {% if event.postCtaContent %}
  168.                             <div class="row">
  169.                                 <div class="col-12 px-md-5">
  170.                                     {{ event.postCtaContent|raw }}
  171.                                 </div>
  172.                             </div>
  173.                         {% endif %}
  174.                         <!-- end post cta content -->
  175.                         <!-- start tags -->
  176.                         <div class="row">
  177.                             <div class="col-12 px-md-5 text-center">
  178.                                 {{ layout.hashTagList( event.tags|split('#'), 'events_list', templateVars, 'tmp' ) }}
  179.                             </div>
  180.                         </div>
  181.                         <!-- end tags -->
  182.                         <!-- start part speakers and partners -->
  183.                         {% if speakers %}
  184.                             <div class="row">
  185.                                 <div class="col-12 px-md-5">
  186.                                     {% include "@StartPlatzEvent/Default/_event.part.speakers-and-partners.html.twig" %}
  187.                                 </div>
  188.                             </div>
  189.                         {% endif %}
  190.                         <!-- end part speakers and partners -->
  191.                         <!-- start part past batches -->
  192.                         {% include "@StartPlatzEvent/Default/_section.past-batches.html.twig" with {
  193.                             'event': event,
  194.                             'isMultiBatchEvent': isMultiBatchEvent,
  195.                             'pastBatches': pastBatches,
  196.                             'isEnglish': isEnglish
  197.                         } %}
  198.                         <!-- end part past batches -->
  199.                         <!-- start part event series -->
  200.                         {% if event.seriesTag %}
  201.                             <div class="row">
  202.                                 <div class="col-12 px-md-5">
  203.                                     {% include "@StartPlatzEvent/Default/_event.part.event-series.html.twig" %}
  204.                                 </div>
  205.                             </div>
  206.                         {% endif %}
  207.                         <!-- end part event series -->
  208.                         {% if preview is defined and preview == 'byGuestEditor' %}
  209.                             <div class="row">
  210.                                 <a href="{{ path('guest_events_add', {'id': event.id}) }}" class="btn btn-success pull-right" role="button">Zurück zur Event-Seite</a>
  211.                             </div>
  212.                         {% endif %}
  213.                     </div>
  214.                 </div>
  215.             </div> <!-- End of content-wrapper -->
  216.         </div>
  217.     </section>
  218.     {% if app.user and batch %}
  219.         <section class="bg-sp-grey pt-1">
  220.             <div class="container">
  221.                 <div class="content-wrapper">
  222.                     <div class="row pt-3 bg-white">
  223.                         <div class="col-12">
  224.                             <div class="row">
  225.                                 <div class="col-12 px-md-5 text-center">
  226.                                     <h2>Promote This Event</h2>
  227.                                     <p>Teile diesen Event-Link und hilf uns, mehr Aufmerksamkeit für dieses Event zu generieren.</p>
  228.                                     <div class="input-group mb-3">
  229.                                         <input type="text" class="form-control" id="promotionUrl" readonly value="{{ promotionUrl }}">
  230.                                         <div class="input-group-append">
  231.                                             <button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('#promotionUrl')">Kopieren</button>
  232.                                         </div>
  233.                                     </div>
  234.                                 </div>
  235.                             </div>
  236.                         </div>
  237.                     </div>
  238.                 </div>
  239.             </div>
  240.         </section>
  241.         <script>
  242.             function copyToClipboard(elementId) {
  243.                 var copyText = document.querySelector(elementId);
  244.                 copyText.select();
  245.                 document.execCommand("copy");
  246.             }
  247.         </script>
  248.     {% endif %}
  249.     {% if app.user is defined and application  is defined and application is not null and application.canReadList %}
  250.             <section class="bg-sp-grey pt-3">
  251.                 <div class="container">
  252.                     <div class="content-wrapper">
  253.                         <div class="row pt-3 pb-3 bg-white">
  254.                             <div class="col-12">
  255.                                 Hier kannst Du die Teilnehmerliste einsehen
  256.                                 <a class="btn btn-outline-dark btn-sm" href="{{ path('admin_event_participants', {id: event.id} ) }}" role="button">participants</a>
  257.                             </div>
  258.                         </div>
  259.                     </div>
  260.                 </div>
  261.             </section>
  262.     {% endif %}
  263.     {% if app.user and app.user.email == event.createdBy %}
  264.         <section class="bg-sp-grey pt-3">
  265.             <div class="container">
  266.                 <div class="content-wrapper">
  267.                     <div class="row pt-3 pb-3 bg-white">
  268.                         <div class="col-12">
  269.                             Hier kannst du den Event bearbeiten
  270.                             <a class="btn btn-outline-dark btn-sm" href="{{ path('guest_events_edit', {id: event.id} ) }}" role="button">update</a>
  271.                             Hier kannst Du die Teilnehmerliste einsehen
  272.                             <a class="btn btn-outline-dark btn-sm" href="{{ path('admin_event_participants', {id: event.id} ) }}" role="button">participants</a>
  273.                         </div>
  274.                     </div>
  275.                 </div>
  276.             </div>
  277.         </section>
  278.     {% endif %}
  279.     {% if app.user is defined %}
  280.         {% if app.user.admin is defined and app.user.admin %}
  281.             <section class="bg-sp-grey pt-3">
  282.                 <div class="container">
  283.                     <div class="content-wrapper">
  284.                         <div class="row pt-3 bg-white">
  285.                             <div class="col-12">
  286.                                 <div class="row">
  287.                                     <div class="col-12 px-md-5 pb-3 text-center">
  288.                                         <a class="btn btn-outline-dark btn-sm" href="{{ path('admin_event_show', {id: event.id} ) }}" role="button">update</a>
  289.                                         <a class="btn btn-outline-dark btn-sm" href="{{ path('admin_event_participants', {id: event.id} ) }}" role="button">participants</a>
  290.                                     </div>
  291.                                     <div class="col-12 pb-3 text-center">
  292.                                         {{ layout.tagList( event.tags|split('#'), 'events_list', 'btn-success', templateVars, 'tmp' ) }}
  293.                                     </div>
  294.                                 </div>
  295.                             </div>
  296.                         </div>
  297.                     </div>
  298.                 </div>
  299.             </section>
  300.         {% endif %}
  301.     {% endif %}
  302.     <!-- homepage single event ends -->
  303. {% endblock %}
  304. {% block footer %}
  305.     {% include '@StartPlatzWebsiteBundle/Default/footerBootstrap40.html.twig' %}
  306. {% endblock %}
  307. {% block infiniteLoop %}{% endblock %}
  308. {% block javascriptInfiniteLoop %}{% endblock %}