{% import 'blocks/macros.html.twig' as macros %}
{% extends 'layouts\\base.html.twig' %}
{% block head %}
{% embed 'partials\\head.html.twig'%}
{% block ogtype %}article{% endblock %}
{% endembed %}
{# JSON-LD NewsArticle #}
{% set data = {
'@context': 'https://schema.org',
'@type': 'NewsArticle',
headline: title|default(''),
publisher: {
'@type': 'Organization',
name: 'Conta lá',
logo: {
'@type': 'ImageObject',
url: CDN_URL|default('') ~ get_config('logo_mobile','')|default('')
}
},
datePublished: page.publishDate ? page.publishDate|date('c') : '',
mainEntityOfPage: {
'@type': 'WebPage',
'@id': app.request.getSchemeAndHttpHost() ~ canonicalUrl|raw
}
} %}
{# Image #}
{% if default_image|default %}
{% set data = data|merge({ image: default_image|imagine_filter('news')|urldecode }) %}
{% endif %}
{# Authors #}
{% if page.pageAuthors|length > 0 %}
{% set authors = [] %}
{% for author in page.pageAuthors %}
{% set authors = authors|merge([{ '@type': 'Person', name: author.name|default('') }]) %}
{% endfor %}
{% set data = data|merge({ author: authors }) %}
{% endif %}
{# Render #}
<script type="application/ld+json">{{ data|json_encode(constant('JSON_UNESCAPED_SLASHES'))|raw }}</script>
{{ encore_entry_link_tags('news') }}
{% endblock %}
{% block body_class %} class="white-layout"{% endblock %}
{% block content %}
{% set exclusiveTag = page.tags|filter(t => t.domainValue.type.name == 'Exclusive')|first|default(null) %}
{% set repeatable = _repeatable|default([]) %}
{# New structure: repeatable is an array of groups, each group contains all fields for that item #}
{% set hasGallery = repeatable|length > 0 %}
{% set repeatableCount = repeatable|length %}
<section class="block-contenttype-content">
<div class="container ">
<article class="row">
<div class="col-12 col-lg-auto order-3 order-lg-1">
<div class="social-share">
{% set shareUrl = (app.request.getSchemeAndHttpHost() ~ app.request.requestUri)|url_encode %}
{% set shareText = (title|default('') ~ ' ' ~ (app.request.getSchemeAndHttpHost() ~ app.request.requestUri))|url_encode %}
{# FACEBOOK #}
<a href="https://www.facebook.com/sharer.php?u={{ shareUrl }}"
target="_blank" rel="noopener noreferrer" title="Partilha no Facebook">
{{ file_get_contents(asset('custom/social-share/facebook.svg', 'global'))|raw }}
</a>
{# WHATSAPP #}
<a href="{% if is_mobile() %}
whatsapp://send?text={{ shareText }}
{% else %}
https://api.whatsapp.com/send?text={{ shareText }}
{% endif %}"
target="_blank" rel="noopener noreferrer" title="Partilha no WhatsApp">
{{ file_get_contents(asset('custom/social-share/whatsapp.svg', 'global'))|raw }}
</a>
{# X (Twitter) #}
<a href="https://twitter.com/intent/tweet?url={{ shareUrl }}&text={{ title|default('')|url_encode }}"
target="_blank" rel="noopener noreferrer" title="Partilha no X">
{{ file_get_contents(asset('custom/social-share/x.svg', 'global'))|raw }}
</a>
{# <a href="https://www.linkedin.com/cws/share?url={{app.request.getSchemeAndHttpHost()~app.request.requestUri}}" target="_blank"><i class="fab fa-linkedin" aria-hidden="true"></i></a> #}
{# <a href="mailto:info@example.com?&subject=&cc=&bcc=&body={{ app.request.uri }}%0A" target="_blank">
<i class="fa fa-envelope"></i>
</a> #}
<input type="text" id="urlpage" class="d-none" value="{{app.request.getSchemeAndHttpHost()~app.request.requestUri}}">
<a href="{{app.request.getSchemeAndHttpHost()~app.request.requestUri}}" target="_blank" class="copyclipboard">
{{ file_get_contents(asset('custom/social-share/url.svg', 'global'))|raw }}
</a>
</div>
</div>
<div class="col order-2">
<h1>{{title|default}}</h1>
{% set pageInfo = get_page_info(app.request.locale, page.id, true, "Temas") %}
{% set categories = pageInfo.categories|default %}
{# ------ TEMAS ----- #}
{% set maxVisible = 10 %}
{% if categories or exclusiveTag %}
<div class="categories">
{{ macros.renderCategoryPopover(categories, maxVisible, false, exclusiveTag, languagecode,'',false) }}
</div>
{% endif %}
{% if short_text|default %}
<div id="shorttext" class="fullcontent">
{{ short_text|raw }}
</div>
{% endif %}
{# ------ AUTHORS ----- #}
{% include 'partials/elements/authors.twig' %}
{% if date|default and hide_date|default != '1' %}
{% set tz = 'Europe/Lisbon' %}
{% set dateToShow = pageInfo.page.publishDate|default(date) %}
{# 24h para pt/es; 12h com AM/PM para en #}
{% set fmt = app.request.locale starts with('en') ? 'MMM dd yyyy, HH:mm' : 'dd MMM yyyy, HH:mm' %}
<div class="date time">
{{ file_get_contents(asset('custom/time-icon.svg', 'global'))|raw }}
{{ dateToShow|localizeddate('none', 'none', app.request.locale, tz, fmt) }}
</div>
{% endif %}
{% if full_text|default %}
<hr>
<div class="d-flex align-items-center justify-content-between mb-3">
<button id="textSizeBtn" aria-label="{{ 'change_text_size'|trans ({},'custom' )|html_entity_decode|raw }}" class="text-size" >
<span aria-hidden="true">{{ file_get_contents(asset('custom/fontsize-icon.svg', 'global'))|raw }}</span>
<div>{{ 'text_size'|trans ({},'custom' )|html_entity_decode|raw }}</div>
<div id="popover">
<div class="option" data-size="small" onclick="handleTextSizeChange('small')"><span class="small">A</span> {{ 'small'|trans ({},'custom' )|html_entity_decode|raw }}</div>
<div class="option" data-size="medium" onclick="handleTextSizeChange('medium')"><span class="medium">A</span> {{ 'medium'|trans ({},'custom' )|html_entity_decode|raw }}</div>
<div class="option" data-size="large" onclick="handleTextSizeChange('large')"><span class="large">A</span> {{ 'large'|trans ({},'custom' )|html_entity_decode|raw }}</div>
</div>
</button>
<button class="read-fullcontent" aria-label="{{ 'listen_publication_content'|trans ({},'custom' )|html_entity_decode|raw }}" data-lang="{{ app.request.locale }}-{{ app.request.locale|upper }}" data-minutes="{{ 'minutes'|trans ({},'custom' )|html_entity_decode|raw }}" data-seconds="{{ 'seconds'|trans ({},'custom' )|html_entity_decode|raw }}">
<span aria-hidden="true">{{ file_get_contents(asset('custom/sound-icon.svg', 'global'))|raw }}</span>
<div>
{{ 'listening'|trans ({},'custom' )|html_entity_decode|raw }} (<span class="timeread"></span>)
</div>
</button>
</div>
{% endif %}
{# ===== MEDIA SECTION ===== #}
{# Preparar variáveis de imagem default #}
{% if is_mobile() %}
{% set defaultimage = default_image_mobile|default(default_image|default('')) %}
{% set defaultimage_alt = default_image_mobile_alt|default(default_image_alt|default('')) %}
{% set defaultimage_title = default_image_mobile_title|default(default_image_title|default('')) %}
{% set imageFilter = 'small' %}
{% else %}
{% set defaultimage = default_image|default(default_image_mobile|default('')) %}
{% set defaultimage_alt = default_image_alt|default(default_image_mobile_alt|default('')) %}
{% set defaultimage_title = default_image_title|default(default_image_mobile_title|default('')) %}
{% set imageFilter = 'news' %}
{% endif %}
{# Determinar se existe media principal (vídeo tem prioridade) #}
{% set hasMainVideo = video_youtubeid|default %}
{% set hasMainImage = defaultimage|default %}
{% set hasMainMedia = hasMainVideo or hasMainImage %}
{% if hasMainMedia or hasGallery %}
{% if hasGallery %}
{# COM GALERIA - Slider #}
<div class="slick-carousel news-media-slider" data-slick='{"dots":true,"arrows":true,"adaptiveHeight":false}'>
{# Slide 1: Vídeo principal OU Imagem principal #}
{% if hasMainVideo %}
<div>
<div class="news-media-frame">
<div class="plyr__video-embed video-player">
<iframe
src="https://www.youtube.com/embed/{{ video_youtubeid }}?origin={{ app.request.getSchemeAndHttpHost()|url_encode }}&iv_load_policy=3&modestbranding=1&playsinline=1&showinfo=0&rel=0&enablejsapi=1&mute=1"
allowfullscreen
allowtransparency
allow="autoplay; encrypted-media; fullscreen; picture-in-picture"
></iframe>
</div>
</div>
{% if video_thumb_title|default %}
<div class="media-alt">{{ video_thumb_title|raw }}</div>
{% endif %}
</div>
{% elseif hasMainImage %}
<div>
<div class="news-media-frame">
<img loading="lazy" src="{{ defaultimage|imagine_filter(imageFilter)|urldecode }}" alt="{{ defaultimage_alt }}" title="{{ defaultimage_title }}" class="img-fluid">
</div>
{% if defaultimage_title %}
<div class="media-alt">{{ 'photography'|trans({},'custom') }} {{ defaultimage_title|raw }}</div>
{% endif %}
</div>
{% endif %}
{# Slides da galeria #}
{% for item in repeatable %}
{% set youtubeId = item.gallery_video_id|default('') %}
{% if youtubeId %}
{# Slide de vídeo #}
<div>
<div class="news-media-frame">
<div class="plyr__video-embed video-player">
<iframe
src="https://www.youtube.com/embed/{{ youtubeId }}?origin={{ app.request.getSchemeAndHttpHost()|url_encode }}&iv_load_policy=3&modestbranding=1&playsinline=1&showinfo=0&rel=0&enablejsapi=1&mute=1"
allowfullscreen
allowtransparency
allow="autoplay; encrypted-media; fullscreen; picture-in-picture"
></iframe>
</div>
</div>
{% if item.gallery_caption|default %}
<div class="media-alt">{{ item.gallery_caption|raw }}</div>
{% endif %}
</div>
{% else %}
{# Slide de imagem #}
{% if is_mobile() %}
{% set galleryImage = item.gallery_image_mobile|default(item.gallery_image|default('')) %}
{% set galleryImageAlt = item.gallery_image_mobile_alt|default(item.gallery_image_alt|default('')) %}
{% set galleryImageTitle = item.gallery_image_mobile_title|default(item.gallery_image_title|default('')) %}
{% else %}
{% set galleryImage = item.gallery_image|default(item.gallery_image_mobile|default('')) %}
{% set galleryImageAlt = item.gallery_image_alt|default(item.gallery_image_mobile_alt|default('')) %}
{% set galleryImageTitle = item.gallery_image_title|default(item.gallery_image_mobile_title|default('')) %}
{% endif %}
{% if galleryImage %}
<div>
<div class="news-media-frame">
<img loading="lazy" src="{{ galleryImage|imagine_filter(imageFilter)|urldecode }}" alt="{{ galleryImageAlt }}" title="{{ galleryImageTitle }}" class="img-fluid">
</div>
{% if item.gallery_caption|default %}
<div class="media-alt">{{ item.gallery_caption|raw }}</div>
{% endif %}
</div>
{% endif %}
{% endif %}
{% endfor %}
</div>
{% else %}
{# SEM GALERIA - Media único #}
{% if hasMainVideo %}
<div class="plyr__video-embed video-player">
<iframe
src="https://www.youtube.com/embed/{{ video_youtubeid }}?origin=https://plyr.io&iv_load_policy=3&modestbranding=1&playsinline=1&showinfo=0&rel=0&enablejsapi=1{% if video_autoplay|default %}&autoplay=1&muted=1{% endif %}"
allowfullscreen
allowtransparency
{% if video_autoplay|default %}allow="autoplay"{% endif %}
></iframe>
</div>
{% if video_thumb_title|default %}
<div class="media-alt">{{ video_thumb_title|raw }}</div>
{% endif %}
{% elseif hasMainImage %}
<img loading="lazy" src="{{ defaultimage|imagine_filter(imageFilter)|urldecode }}" alt="{{ defaultimage_alt }}" title="{{ defaultimage_title }}" class="img-fluid">
{% if defaultimage_title %}
<div class="media-alt">{{ 'photography'|trans({},'custom') }} {{ defaultimage_title|raw }}</div>
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{# ===== END MEDIA SECTION ===== #}
{% if full_text|default %}
<div id="fulltext" class="fullcontent">
{{ full_text|raw }}
{# Blocks/content #}
<div class="row fullcontent">
{{ parent() }}
</div>
</div>
{% endif %}
{# Tags #}
{% if page.tags|length %}
<div class="related-tags">
{{ 'related_tags'|trans ({},'custom' )|html_entity_decode|raw }}
<div class="tags-list">
{% for tag in page.tags %}
{% set description = tag.domainValue.getLocalizedContents(languagecode).description|default %}
{% set machineName = tag.domainValue.machineName|default %}
<div>
<a
role="button"
data-link="/pt/pesquisa?tags[]={{ machineName|e }}"
>
{{ description }}
</a>
</div>
{% endfor %}
</div>
</div>
{% endif %}
</div>
<div class="col-12 col-lg-auto order-3 right-column">
{% if is_ad_zone_active('halfpage') %}
<aside>
{% include 'partials/ads-banners/halfpage.html.twig' %}
</aside>
{% endif %}
</div>
</article>
</div>
</section>
{# Snippet Veja também #}
{% set snippet = render(controller('App\\Controller\\PageContentController::renderSnippet', {"stdSnippets": get_config('snippet_news',''), "pageId": page.id})) %}
{% if snippet|default %}
{{snippet|raw}}
{% endif %}
{% endblock %}
{% block scripts %}
{{ parent() }}
{% if is_ad_zone_active('mrec') %}
<template id="mrec-template">{% include 'partials/ads-banners/mrec.html.twig' %}</template>
{{ encore_entry_script_tags('ad-news') }}
{% endif %}
{{ encore_entry_script_tags('news') }}
{% endblock %}