src/Elements/Bundle/DemiFrontendBundle/Resources/views/Events/detail.html.twig line 1

Open in your IDE?
  1. {% set currtime = carbon().create() %}
  2. {% set url = linkGenerator().generate(event, {'relative': true})%}
  3. {% set cannoUrl = linkGenerator().generate(event) %}
  4. {% do elements_canonical().checkAllParams(false).setDomain(cannoUrl) %}
  5. {% if not cannoUrl is same as(app.request.pathInfo) or event.getProperty('seo_noindex') == true %}
  6.      {% do elements_robots().setNoIndex(true) %}
  7. {% endif %}
  8. {% do pimcore_placeholder('addBreadcrumb').set({
  9.     'parentId' : document.getId(),
  10.     'url' : url,
  11.     'label' : event.getName()
  12. }) %}
  13. {% do jsConfig().add('backButton', true) %}
  14. {% set metaTitle = event.getName() %}
  15. {% if event.getMetaTitle() is not empty %}
  16.     {% set metaTitle = event.getMetaTitle() %}
  17. {% endif %}
  18. {% set metaDesc = event.getDescription(constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_EVENT_HEADER'), app.request.getLocale(), currtime) %}
  19. {% if metaDesc is empty %}
  20.     {% set metaDesc = event.getDescription(constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_EVENT_HEADER_SHORT'), app.request.getLocale(), currtime) %}
  21. {% endif %}
  22. {% if not event.getMetaDescription() is empty %}
  23.     {% set metaDesc = event.getMetaDescription(app.request.getLocale()) %}
  24. {% endif %}
  25. {% if metaDesc is empty %}
  26.     {% set metaDesc = demi_fillTranslation({"[OBJECT]" : event.getName(), "[TOWN]" : event.getTowns()[0] ? event.getTowns()[0].getName() : "",
  27.         "[REGION]" : event.getTowns()[0] ? event.getTowns()[0].getRegion().getName() : ""}, "demi.events.detail.seo.fallbackdescription") %}
  28. {% endif %}
  29. {#    {% do pimcore_placeholder('object_seotitle').set(metaTitle) %}#}
  30. {#    {% do pimcore_placeholder('object_seodescription').set(metaDesc) %}#}
  31. {% do elements_head_title().setTitle(metaTitle, true) %}
  32. {% do elements_head_meta().setDescription(metaDesc, true) %}
  33. {% do elements_opengraph().setUrl(url) %}
  34. {% set headerShort = '' %}
  35. {% set headerLong = '' %}
  36. {% if event.getDescriptions() is not empty %}
  37.     {% set headerShort = event.getDescription(constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_EVENT_HEADER_SHORT'), app.request.getLocale(), currtime) %}
  38.     {% if headerShort is empty %}
  39.         {% set headerShort = event.getDescription(constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_EVENT_HEADER_SHORT'), demi_core_configuration("getFallBackLanguage", {}), currtime) %}
  40.     {% endif %}
  41.     {% set headerLong = event.getDescription(constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_EVENT_HEADER'), app.request.getLocale(), currtime) %}
  42.     {% if headerLong is empty %}
  43.         {% set headerLong = event.getDescription(constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_EVENT_HEADER'), demi_core_configuration("getFallBackLanguage", {}), currtime) %}
  44.     {% endif %}
  45. {% endif %}
  46. {% set dateRanges = {} %}
  47. {% set fromToRanges = {} %}
  48. {% set unformatedDates = true %}
  49. {% set dateRangeData = demi_core_eventGetDateRanges(event, dateRanges, fromToRanges, carbon().create().startOfDay(), unformatedDates) %}
  50. {% set dateRanges = dateRangeData.dateRanges %}
  51. {% set fromToRanges = dateRangeData.fromToRanges %}
  52. {% set hasRanges = dateRangeData.hasRanges %}
  53. {% set jsonLd = demi_eventGetJsonLdData(event, fromToRanges, {"currtime" : currtime, "locale" : app.request.getLocale(), "metadesc" : metaDesc}) %}
  54. {% do jsonLd().add("event", jsonLd) %}
  55. {% set descriptionTypes = [] %}
  56. {% set localDescriptions= [] %}
  57. {% for description in event.getDescriptions() | filter((description) => description.getDescriptionLanguage is same as app.request.locale()) %}
  58.     {% if description.getProperty("demi_descriptionType") is not empty and description.getDescriptionType() is same as constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_FERATEL_LOCAL') %}
  59.         {% set localDescriptions = localDescriptions|merge([description]) %}
  60.     {% else %}
  61.         {% set descriptionTypes = descriptionTypes | merge([description.getDescriptionType()]) %}
  62.     {% endif %}
  63. {% endfor %}
  64. {% set descriptionTypes = descriptionTypes | filter(value =>
  65.     value is not same as constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_EVENT_HEADER') and
  66.     value is not same as constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_EVENT_HEADER_SHORT') and
  67.     value is not same as constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_EVENT_CURRENT_INFORMATION')) %}
  68. {% set videoArray = [] %}
  69. {% set linkArray = [] %}
  70. {% if event.getLinks() and event.getLinks().getItems() | length > 0 %}
  71.     {% for link in event.getLinks().getItems() %}
  72.         {% if link.getLinkType() is same as constant('\\Elements\\Demi\\Deskline\\Constant\\LinkTypeInterface::DESKLINE_LINK_VIDEO') %}
  73.             {% set videoArray = videoArray| merge([link]) %}
  74.         {% else %}
  75.             {% set linkArray = linkArray | merge([link]) %}
  76.         {% endif %}
  77.     {% endfor %}
  78. {% endif %}
  79. {% set allDescriptions = event.demiGetDescriptions(carbon().create()) %}
  80. {% if allDescriptions is not empty and allDescriptions | length > 0 %}
  81.     {% for text in allDescriptions | filter(text =>
  82.         text.getDescriptionType() is same as constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_INFRASTRUCTURE_SHORT') and
  83.         text.getDescriptionLanguage() == app.request.getLocale() and 'L' in text.getSystems() and 'T' not in text.getSystems()) %}
  84.         {% set priceInfo = text.getText() %}
  85.     {% endfor %}
  86. {% endif %}
  87. {% if event.getImageDocuments() is not empty %}
  88.     {% set detailSlides = event.getImageDocuments(null, currtime) %}
  89.     {% if detailSlides is not empty and detailSlides | length > 0 %}
  90.         {% do elements_opengraph().addImage(detailSlides[0].getDocument().getFullPath()) %}
  91.     {% endif %}
  92. {% endif %}
  93. {% set availableBlocks = {
  94.     (constant('\\Elements\\Demi\\Deskline\\Constant\\AddressInterface::ADDRESS_EVENT_VENUE')) : {
  95.         'name' : 'venue',
  96.         'inhalt' : [],
  97.         'detailIcon' : 'icon-map_marker'
  98.     },
  99.     (constant('\\Elements\\Demi\\Deskline\\Constant\\AddressInterface::ADDRESS_ORGANIZER')) : {
  100.         'name' : 'organizer',
  101.         'inhalt' : [],
  102.         'detailIcon' : 'icon-kontakt'
  103.     },
  104.     (constant('\\Elements\\Demi\\Deskline\\Constant\\AddressInterface::ADDRESS_BOOKING')) : {
  105.         'name' : 'booking',
  106.         'inhalt' : [],
  107.         'detailIcon' : 'icon-preis'
  108.     },
  109.     (constant('\\Elements\\Demi\\Deskline\\Constant\\AddressInterface::ADDRESS_INFO')) : {
  110.         'name' : 'info',
  111.         'inhalt' : [],
  112.         'detailIcon' : 'icon-info '
  113.     },
  114. } %}
  115. {% set availableBlocks = demi_parseAddressData(event, availableBlocks) %}
  116. {% set venueData = '' %}
  117. {% set bookingData = '' %}
  118. {% set organizerData = '' %}
  119. {% set infoData = '' %}
  120. {% for key,block in availableBlocks | filter((block, key) => block['inhalt'] is not empty) %}
  121.     {% set azDetail = [] %}
  122.     {% set show = false %}
  123.     {% set path =  demi_core_configuration("getInfrastructureDetailPath",{}) is not null ? demi_core_configuration("getInfrastructureDetailPath",{}).getFullPath() : '' %}
  124.     {% if key is same as constant('\\Elements\\Demi\\Deskline\\Constant\\AddressInterface::ADDRESS_EVENT_VENUE') and event.getConnectedEntries() is not empty and event.getConnectedEntries()|length > 0 %}
  125.         {% for entry in event.getConnectedEntries() | filter(entry => entry is instanceof("\\Pimcore\\Model\\DataObject\\DemiInfrastructure")) | slice(0,1) %}
  126.             {% set show = true %}
  127.             {% set azDetail = azDetail | merge({
  128.                 'url' : demi_demiUrl({
  129.                     'path' : path,
  130.                     'name' : entry.getName(),
  131.                     'id' : entry.getId()
  132.                 }, 'demi_infrastructure_detail'),
  133.                 'name' : entry.getName() }) %}
  134.         {% endfor %}
  135.     {% endif %}
  136.     {% if block['inhalt']['address'] is not empty %}
  137.         {% set show = true %}
  138.     {% endif %}
  139.     {% if show %}
  140.         {% if key is same as constant('\\Elements\\Demi\\Deskline\\Constant\\AddressInterface::ADDRESS_EVENT_VENUE') %}
  141.             {% set venueData = demi_core_eventSetAddressData(block, azDetail) %}
  142.         {% elseif key is same as constant('\\Elements\\Demi\\Deskline\\Constant\\AddressInterface::ADDRESS_ORGANIZER') %}
  143.             {% set organizerData = demi_core_eventSetAddressData(block, azDetail) %}
  144.         {% elseif key is same as constant('\\Elements\\Demi\\Deskline\\Constant\\AddressInterface::ADDRESS_BOOKING') %}
  145.             {% set bookingData = demi_core_eventSetAddressData(block, azDetail) %}
  146.         {% elseif key is same as constant('\\Elements\\Demi\\Deskline\\Constant\\AddressInterface::ADDRESS_INFO') %}
  147.             {% set infoData = demi_core_eventSetAddressData(block, azDetail) %}
  148.         {% endif %}
  149.     {% endif %}
  150. {% endfor %}
  151. {% set coord = [] %}
  152. {% if event.getPosition() is not empty %}
  153.     {% set coord = {'lat': event.getPosition().getLatitude(), 'lng':event.getPosition().getLongitude()} %}
  154. {% elseif event.getConnectedEntries() is not empty %}
  155.     {% for entry in event.getConnectedEntries() | filter(entry => entry is instanceof("\\Pimcore\\Model\\DataObject\\DemiInfrastructure") and entry.getPosition() is not empty) | slice(0,1) %}
  156.         {% set coord = {'lat': entry.getPosition().getLatitude(), 'lng':entry.getPosition().getLongitude()} %}
  157.     {% endfor %}
  158. {% endif %}
  159. {% set generalDocuments = [] %}
  160. {% if event.getDocuments() is not empty %}
  161.     {% for generalDocument in event.getDocuments() | filter(generalDocument => generalDocument is not instanceof("\\Pimcore\\Model\\DataObject\\DemiDocumentImage")) %}
  162.         {% set generalDocuments =  generalDocuments | merge([generalDocument]) %}
  163.     {% endfor %}
  164. {% endif %}
  165. {% set coord = coord is empty ? venueData['inhalt']['address'] is defined : coord %}
  166. {% set durationString = "" %}
  167. {% if event.getDurationValue() > 0 and
  168.     event.getDurationType() is not same as constant("\\Elements\\Demi\\Deskline\\Constant\\ShoppingCart\\DurationTypeInterface::NONE") and
  169.     event.getDurationType() is not empty %}
  170.     {% set s = event.getDurationValue() is same as 1 ? "" : "s" %}
  171.     {% set durationString = ('demi.events.detail.duration' | trans) ~ ": " ~
  172.         event.getDurationValue() ~ " " ~ (('demi.events.detail.duration.' ~ (event.getDurationType()[:1] | lower) ~ event.getDurationType()[1:] ~ s)  | trans) %}
  173. {% endif %}
  174.  {% set templateData = {
  175.      'headerImage' : event.getFirstImage(null, currtime),
  176.      'detailHeadline' : event.getName(),
  177.      'detailLead' : headerShort,
  178.      'detailDescription' : headerLong,
  179.      'currentInformation' : event.getDescription(constant('\\Elements\\Demi\\Deskline\\Constant\\DescriptionInterface::DESCRIPTION_EVENT_CURRENT_INFORMATION') ,app.request.locale(), currtime),
  180.      'hasGlossar' : not event.getProperty('noGlossary'),
  181.      'headerMapCoord' : coord,
  182.      'googlePlaceId' : event.getProperty('google_place_id'),
  183.      'icon' : 'icon-marker',
  184.      'backlinktext' : 'demi.events.detail.backlink' | trans,
  185.      'venue' : venueData,
  186.      'booking' : bookingData,
  187.      'organizer' : organizerData,
  188.      'info' : infoData,
  189.      'detailDate' : unformatedDates ? dateRanges : dateRanges | join('<br>'),
  190.      'detailDateRanges' : hasRanges,
  191.      'detailUnformatedDates' : unformatedDates,
  192.      'detailAccordionId' : 1,
  193.      'detailPriceText' : priceInfo is defined ? priceInfo : '',
  194.      'video' : videoArray ?? [],
  195.      'detailSlides' : detailSlides ?? [],
  196.      'detailExtension' : event.getDemiExtension(),
  197.      'detailLinks' : linkArray,
  198.      'linkHeadline' : 'demi.events.detail.links' | trans,
  199.      'downloadHeadline' : 'demi.events.detail.downloads' | trans,
  200.      'downloads' : generalDocuments,
  201.      'detailLocation' : event.getLocation(app.request.getLocale()),
  202.      'detailDuration' : durationString,
  203.      'detailArchiveText' : event.getArchive() ? 'demi.events.detail.archive-text' | trans : '',
  204.      'detailDescriptionTypes' : descriptionTypes,
  205.      'detailLocalDescriptions' : localDescriptions,
  206.      'eventLocation': (event.towns is not empty ? event.towns[0].name : '') ~ (event.towns and event.location ? ' - ' : '') ~ (event.location ?: '')
  207.  } %}
  208. {% if endDate|default(null) %} {# already calculated in controller #}
  209.     {% do pimcore_placeholder('unavailable_after').set(carbon().createFromTimestamp(endDate.timestamp).endOfDay.toRfc850String()) %}
  210. {% endif %}
  211. {% extends('@ElementsDemiFrontend/Layout/project-layout.html.twig') %}
  212. {% block content %}
  213.     {{ include("@ElementsDemiFrontend/Includes/canonicalOverride.html.twig", {
  214.         "object" : event
  215.     }) }}
  216.     {{ include('@ElementsDemiFrontend/Includes/tags/detail-event.html.twig', {
  217.         'event' : event,
  218.         'fromToRanges' : fromToRanges,
  219.         'dateRanges' : dateRanges,
  220.         'headerShort' : headerShort
  221.     }) }}
  222.     <div id="demi-event-content" class="demi-event-detail js-smoothscroll">
  223.         {% if app.request.cookies.get('pimcore_admin_sid') and not event.getPublished() %}
  224.             <div class="col-xs-12">
  225.                 <div>
  226.                     <div class="alert alert-danger">
  227.                         OBJECT NOT PUBLISHED
  228.                     </div>
  229.                 </div>
  230.             </div>
  231.         {% endif %}
  232.         {{ include("@ElementsDemiFrontend/Events/detail/detail-templates.html.twig", {
  233.             'templateData' : templateData
  234.         }) }}
  235.         {{ include('@ElementsDemiFrontend/Events/includes/slide-before-footer.html.twig') }}
  236.     </div>
  237. {% endblock %}