2013_Almeida Coquet - Ilustração na imprensa desportiva - 2013_Almeida Coquet - Ilustração na imprensa desportiva
Ocorreu um erro ao processar o template.
The following has evaluated to null or missing: ==> journalArticleService.fetchArticleByUrlTitle(groupId, urlTitle) [in template "43131#43158#518775" at line 176, column 30] ---- Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign article = journalArticleServi... [in template "43131#43158#518775" at line 176, column 11] ----
1<style>
2
3 /* BREADCRUMB */
4 nav.breadcrumb-nav {
5 margin-top: 50px;
6 margin-right: 70px;
7 }
8
9 .breadcrumb-element.list-inline-item {
10 padding: 2px 10px;
11 margin-right: 0;
12 }
13
14
15 .breadcrumb-element.list-inline-item:not(:first-child) {
16 border-left: 1px solid #E2E2E2;
17 }
18
19 .breadcrumb-element.list-inline-item:last-child {
20 border-left: 1px solid #015174;
21 }
22
23
24 li.breadcrumb-element {
25 font-size: 0.875rem;
26 }
27
28 li.breadcrumb-element.active {
29 color: #015174;
30 }
31
32 li.breadcrumb-element a {
33 color: #7E7E7E;
34 }
35
36 /* END BREADCRUMB */
37
38 .container-image {
39 background-color: white;
40 background-size: cover;
41 }
42
43 .conteudo {
44 background-color: white;
45 padding-top: 40px;
46 padding-bottom: 40px;
47 }
48
49 .conteudo h1 {
50 font-size: 1.875rem;
51 }
52
53
54 .conteudo h2 {
55 color: #A1BB15;
56 padding-top: 20px;
57 font-size: 1.5rem;
58 }
59
60 .corpoDoTexto {
61 padding-top: 20px;
62 }
63
64 .data-criacao {
65 border-bottom: 2px solid #E2E2E2;
66 padding-top: 30px;
67 padding-bottom: 10px;
68 color: #E2E2E2;
69 }
70
71 .data-criacao .fas {
72 color: #A1BB15;
73 padding-right: 10px;
74 }
75
76 #news {
77 padding-bottom: 50px;
78 }
79
80 h3 {
81 border-bottom: 2px solid #E2E2E2;
82 padding-bottom: 10px;
83 }
84
85 #relatedNews {
86
87 color: #A1BB15;
88 }
89
90 #relatedNews h2 {
91 font-size: 1rem;
92 padding-bottom: 20px;
93 text-transform: uppercase;
94 letter-spacing: 5px;
95 word-spacing: 10px;
96 }
97
98 .verde, a.verde:hover {
99 color: #A1BB15;
100 }
101
102 .info-contato {
103 padding: 0.5rem 0;
104 }
105
106 .card-img-top {
107 width: 100%;
108 height: auto;
109 }
110
111 .card-text-title {
112 font-size: 1.125rem;
113 }
114
115 .a2a_kit {
116 z-index: 1000;
117 }
118
119 .stretched-link::after {
120 z-index: 0 !important;
121 }
122
123 .badge-silver {
124 background-color: #e0e0e0;
125 color: #272833;
126 font-size: 1rem;
127 letter-spacing: 0.09rem;
128 }
129
130 .badge-silver:hover {
131 background-color: #c3c3c3;
132 color: #272833;
133 }
134
135 .fa-facebook-square {
136 color: #3b5998;
137 }
138
139 .fa-instagram {
140 color: #405DE6;
141 }
142
143 .fa-twitter {
144 color: #00acee;
145 }
146
147 .fa-youtube {
148 color: #c4302b;
149 }
150
151 .col-md-12 .card {
152 background: white;
153 }
154</style>
155<#assign urlTitle = themeDisplay.getURLCurrent()/>
156<#assign lang = themeDisplay.getLanguageId() />
157
158<#if urlTitle[0..2] == '/-/'>
159 <#assign urlTitle = urlTitle?replace('/-/', '') />
160<#else>
161 <#if lang == 'en_US'>
162 <#assign urlTitle = urlTitle?replace('/en/-/', '') />
163 <#else>
164 <#assign urlTitle = urlTitle?replace('/pt/-/', '') />
165 </#if>
166</#if>
167<#assign assetEntryService = staticUtil["com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil"] />
168<#assign assetLinkLocalService = staticUtil["com.liferay.asset.kernel.service.AssetLinkLocalServiceUtil"] />
169<#assign layoutLocalService = staticUtil["com.liferay.portal.kernel.service.LayoutLocalServiceUtil"] />
170<#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
171<#assign dlAppServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppServiceUtil"] />
172<#assign classNameUtil = staticUtil["com.liferay.portal.kernel.service.ClassNameServiceUtil"] />
173<#assign articleClassName = classNameUtil.fetchClassName("com.liferay.journal.model.JournalArticle") />
174
175
176 <#assign article = journalArticleService.fetchArticleByUrlTitle(groupId, urlTitle) />
177
178
179
180 <#assign assetEntry = assetEntryService.fetchEntry(articleClassName.getClassNameId(), article.getResourcePrimKey()) />
181 <#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(assetEntry.getEntryId()) />
182 <#assign document = saxReaderUtil.read(article.getContentByLocale(lang)) />
183 <#assign rootElement = document.getRootElement() />
184
185
186
187
188 <#assign relationsNewsArray = []>
189<#assign imagensArray = []>
190<#assign telefonesArray = []>
191<#assign ficheirosArray = []>
192<#assign emailsArray = []>
193<#assign sitesArray = []>
194<#assign redesSociaisArray = []>
195
196<#assign ficheiro = "" />
197<#assign ficheiroURL = "" />
198<#assign data = dateUtil.newTime() />
199<#assign titulo = "" />
200<#assign subtitulo = "" />
201<#assign corpoDoTexto = "" />
202<#assign redeSocial = "" />
203 <#assign imagem = "" />
204
205<#list rootElement.elements() as el>
206 <#list el.elements() as il>
207 <#if il.attributeValue("name")??>
208 <#if "imagem" == il.attributeValue("name")>
209 <#if il.element("dynamic-content")?has_content && il.element("dynamic-content").getData()?has_content>
210 <#assign imagem = il.element("dynamic-content").getData()?eval />
211 <#assign imagensArray += [imagem] />
212 </#if>
213 </#if>
214
215 <#if "data" == il.attributeValue("name")>
216
217 <#assign data = il.element("dynamic-content").getData() />
218 <#if data?has_content>
219 <#assign data = data?split("-")[2] + "/"+ data?split("-")[1] + "/" + data?split("-")[0]/>
220 </#if>
221 </#if>
222
223 <#if "titulo" == il.attributeValue("name")>
224 <#assign titulo = il.element("dynamic-content").getData() />
225 </#if>
226
227 <#if "subtitulo" == il.attributeValue("name")>
228 <#assign subtitulo = il.element("dynamic-content").getData() />
229
230 </#if>
231
232 <#if "corpoDoTexto" == il.attributeValue("name")>
233 <#assign corpoDoTexto = il.element("dynamic-content").getData() />
234 </#if>
235
236 <#if "DocumentosEMdias19f7" == il.attributeValue("name")>
237 <#assign ficheiro = il.element("dynamic-content").getData() />
238 <#if ficheiro?has_content>
239 <#assign ficheiro = ficheiro?eval />
240 <#assign ficheirosArray += ["/c/document_library/get_file?uuid=" + ficheiro.uuid + "&groupId=" + ficheiro.groupId + "|" + ficheiro.title] />
241 </#if>
242 </#if>
243
244
245 <#if "telefone" == il.attributeValue("name")>
246 <#if il.element("dynamic-content").getData()?has_content>
247 <#assign telefonesArray += [il.element("dynamic-content").getData()] />
248 </#if>
249 </#if>
250
251 <#if "email" == il.attributeValue("name")>
252 <#if il.element("dynamic-content").getData()?has_content>
253 <#assign emailsArray += [il.element("dynamic-content").getData()] />
254 </#if>
255 </#if>
256
257 <#--
258 <#if "site" == il.attributeValue("name")>
259 <#assign site = il.element("dynamic-content").getData() />
260 <#assign layoutID = site?split("@")?first />
261 <#assign groupID = site?split("@")?last />
262 <#if layoutID?has_content && groupID?has_content>
263 <#assign pageLayout = layoutLocalService.getLayout(groupID?number?long, false, layoutID?number?long) />
264 <#assign pageURL = pageLayout.getFriendlyURL() />
265 <#assign pageTitle = pageLayout.getName() />
266 <#assign sitesArray += [pageURL + "|" +pageTitle]/>
267 </#if>
268 </#if> -->
269
270 <#if "site" == il.attributeValue("name")>
271 <#if il.element("dynamic-content").getData()?has_content>
272 <#assign sitesArray += [il.element("dynamic-content").getData()] />
273 </#if>
274 </#if>
275
276 <#if "redesocial1" == il.attributeValue("name")>
277 <#assign redeSocial = il.element("dynamic-content").getData() />
278 <#if redeSocial?has_content>
279 <#assign redesSociaisArray += [redeSocial]/>
280 </#if>
281 </#if>
282
283 </#if>
284
285 </#list>
286</#list>
287
288
289<div class="container-fluid">
290
291 <div class="container">
292
293 <div class="row">
294 <div class="col-12">
295 <nav class="breadcrumb-nav">
296 <ul class="breadcrumb-ul list-unstyled list-inline">
297 <li class="breadcrumb-element list-inline-item"><a href="/"><i class="fa fa-home"></i></a></li>
298 <li class="breadcrumb-element list-inline-item"><a href="/exposicoes">
299
300 <#if themeDisplay.getLanguageId() == "en_US">
301 Exhibitions
302 <#else>
303 Exposições
304 </#if>
305 </a></li>
306 <li class="breadcrumb-element list-inline-item active">${titulo}</li>
307 </ul>
308 </nav>
309 </div>
310 <div class="col-md-8">
311 <section id="news">
312
313 <div class="row conteudo">
314 <div class="col-md-12">
315 <h1>${titulo}</h1>
316 <h2>${subtitulo}</h2>
317 <div class="data-criacao">
318 <span><i class="fas fa-clock"></i>${data}</span>
319 </div>
320 </div>
321 </div>
322 <div class="row">
323 <div>
324 <div id="carouselIndicators" class="carousel slide"
325 data-ride="carousel">
326 <ol class="carousel-indicators">
327 <#list imagensArray as item>
328 <#if item?is_first>
329 <li data-target="#carouselIndicators" data-slide-to="${item?index}"
330 class="active"></li>
331 <#else>
332 <li data-target="#carouselIndicators"
333 data-slide-to="${item?index}"></li>
334 </#if>
335 </#list>
336 </ol>
337 <div class="carousel-inner">
338 <#list imagensArray as item>
339 <#if item?is_first>
340 <div class="carousel-item active">
341 <#else>
342 <div class="carousel-item">
343 </#if>
344 <#assign imagemFileEntry = dlAppServiceUtil.getFileEntry(item.fileEntryId?number) />
345 <#if !shareImgFileEntry??>
346 <#assign shareImgFileEntry = imagemFileEntry />
347 </#if>
348 <@adaptive_media_image["img"] class="d-block w-100 container-image" fileVersion=imagemFileEntry.getFileVersion() alt="${item.alt}"/>
349 </div>
350 </#list>
351 </div>
352
353 <a class="carousel-control-prev" href="#carouselIndicators" role="button"
354 data-slide="prev">
355 <span class="carousel-control-prev-icon" aria-hidden="true"></span>
356 <span class="sr-only">
357
358 <#if themeDisplay.getLanguageId() == "en_US">
359 Previous
360 <#else>
361 Anteriormente
362 </#if>
363
364
365 </span>
366 </a>
367 <a class="carousel-control-next" href="#carouselIndicators" role="button"
368 data-slide="next">
369 <span class="carousel-control-next-icon" aria-hidden="true"></span>
370 <span class="sr-only">
371
372 <#if themeDisplay.getLanguageId() == "en_US">
373 Next
374 <#else>
375 Próximo
376 </#if>
377
378
379 </span>
380 </a>
381
382 </div>
383
384 </div>
385 </div>
386
387 <div class="row">
388 <div class="col-12">
389 <div class="corpoDoTexto">
390 ${corpoDoTexto}
391 </div>
392 </div>
393 </div>
394 <#if ficheirosArray?has_content>
395
396 <div class="row conteudo">
397 <div class="col-12">
398 <h3>
399
400 <#if themeDisplay.getLanguageId() == "en_US">
401 More information
402 <#else>
403 Mais informações
404 </#if>
405
406 </h3>
407 </div>
408 <div class="col-12">
409 <ul>
410 <#list ficheirosArray as item>
411 <li><a class="verde" target="_blank"
412 href="${item?split("|")?first}">${item?split("|")?last}</a>
413 </li>
414 </#list>
415 </ul>
416 </div>
417 </div>
418
419 </#if>
420
421 <#if telefonesArray?has_content || emailsArray?has_content || sitesArray?has_content || redesSociaisArray?has_content>
422 <div class="conteudo">
423
424 <h3>
425
426 <#if themeDisplay.getLanguageId() == "en_US">
427 Contacts
428 <#else>
429 Contactos
430 </#if>
431
432
433
434
435 </h3>
436
437
438 <#if telefonesArray?has_content>
439 <div class="info-contato">
440 <div class="row">
441 <div class="col-md-2">
442 <b>
443
444 <#if themeDisplay.getLanguageId() == "en_US">
445 Phone
446 <#else>
447 Telefone
448 </#if>
449
450
451 </b>
452 </div>
453 <div class="col-md-10">
454 <#list telefonesArray as item>
455 <p>${item}</p>
456 </#list>
457 </div>
458 </div>
459 </div>
460 </#if>
461
462 <#if emailsArray?has_content>
463 <div class="info-contato">
464 <div class="row">
465 <div class="col-md-2">
466 <b>Email</b>
467 </div>
468 <div class="col-md-10">
469 <#list emailsArray as item>
470 <p>${item}</p>
471 </#list>
472 </div>
473 </div>
474 </div>
475 </#if>
476
477 <#if sitesArray?has_content>
478 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
479 <#assign baseURL = portalUtil.getPortalURL(request) />
480 <div class="info-contato">
481 <div class="row">
482 <div class="col-md-2">
483 <b>Site</b>
484 </div>
485 <div class="col-md-10">
486
487 <#list sitesArray as item>
488 <p><a class="verde" href="${item}" target="${item?starts_with(baseURL)?then('_self', '_blank')}">${item}</a></p>
489 </#list>
490 </div>
491 </div>
492 </div>
493 </#if>
494
495 <#if redesSociaisArray?has_content>
496 <div class="info-contato">
497 <div class="row">
498 <div class="col-md-2">
499 <b>
500
501 <#if themeDisplay.getLanguageId() == "en_US">
502 Social Media
503 <#else>
504 Redes Sociais
505 </#if>
506
507
508
509 </b>
510 </div>
511 <div class="col-md-10">
512 <#list redesSociaisArray as item>
513 <#if item?contains("linked")>
514 <a href="${item}" target="_blank"><i
515 class="fab fa-linkedin fa-2x"></i></a>
516 </#if>
517 <#if item?contains("facebook")>
518 <a href="${item}" target="_blank"><i
519 class="fab fa-facebook-square fa-2x"></i></a>
520 </#if>
521 <#if item?contains("insta")>
522 <a href="${item}" target="_blank"><i
523 class="fab fa-instagram fa-2x"></i></a>
524 </#if>
525 <#if item?contains("twitter")>
526 <a href="${item}" target="_blank"><i
527 class="fab fa-twitter fa-2x"></i></a>
528 </#if>
529 <#if item?contains("youtube")>
530 <a href="${item}" target="_blank"><i
531 class="fab fa-youtube fa-2x"></i></a>
532 </#if>
533 </#list>
534 </div>
535 </div>
536 </div>
537 </#if>
538
539 </#if>
540
541 <div class="row">
542 <div class="col-12 text-right">
543 <#if themeDisplay.getLanguageId() == "en_US">
544 <p style="color:#9e9797">Updated
545 in: ${ article.getModifiedDate()?string["dd/MM/yyyy"]}</p>
546 <#else>
547 <p style="color:#9e9797">Atualizado
548 em: ${ article.getModifiedDate()?string["dd/MM/yyyy"]}</p>
549 </#if>
550 </div>
551
552 <div class="a2a_kit a2a_kit_size_32 a2a_default_style"
553 data-a2a-icon-color = "transparent, black">
554 <a class="a2a_button_facebook"></a>
555 <a class="a2a_button_twitter"></a>
556 <a class="a2a_button_whatsapp"></a>
557 <a class="a2a_button_facebook_messenger"></a>
558 <a class="a2a_button_email"></a>
559 <a class="a2a_button_copy_link"></a>
560 <a class="a2a_dd" href="https://www.addtoany.com/share"></a>
561 </div>
562
563 <#if assetEntry.getTags()?has_content>
564 <div class="col-12 mt-4">
565 <#list assetEntry.getTags() as tag>
566 <a href="/pesquisa?q=${tag.name}" class="badge badge-pill badge-silver p-2">${tag.name}</a>
567 </#list>
568 </div>
569 </#if>
570
571 <@liferay_util["html-top"]>
572
573
574 <meta property="og:title" content="${titulo}" />
575 <meta property="og:description" content="${subtitulo}" />
576 <meta property="og:type" content="article" />
577 <meta property="og:locale" content="${locale}" />
578 <meta property="og:site_name" content="${company.getName()}" />
579 <meta property="og:url" content="${themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()}">
580 <#if tagsArray?has_content>
581 <meta property="article:tag" content="${tags?join(",")}" />
582 </#if>
583
584 <#if shareImgFileEntry??>
585 <meta property="og:image" itemprop="image" content="${themeDisplay.getURLPortal()}/o/adaptive-media/image/${shareImgFileEntry.getFileEntryId()}/thumbnail-600x0/${shareImgFileEntry.getFileName()}" />
586 </#if>
587 </@>
588 </div>
589
590
591 </section>
592 </div>
593
594 <div class="col-md-4">
595 <#if currentArticleRelatedLinks?has_content>
596 <aside id="relatedNews">
597 <div class="container-fluid">
598 <div class="container">
599 <h2>
600 <#if themeDisplay.getLanguageId() == "en_US">
601 Related News
602 <#else>
603 Notícias Relacionadas
604 </#if>
605
606
607 </h2>
608 <div class="row">
609 <#list currentArticleRelatedLinks as related>
610 <#assign assertRelated = assetEntryService.getEntry(related.getEntryId2()) />
611 <#assign assetRendererRelated = assertRelated.getAssetRenderer() />
612 <#assign articleRelated = assetRendererRelated.getArticle() />
613 <#assign documentRelated = saxReaderUtil.read(articleRelated.getContent()) />
614 <#assign rootElementRelated = documentRelated.getRootElement() />
615 <#assign assetRelatedUrlTitle = articleRelated.getUrlTitle(locale) />
616
617 <#assign tituloRelated = "" />
618 <#assign subtituloRelated = "" />
619
620 <#list rootElementRelated.elements() as el>
621 <#list el.elements() as il>
622 <#if "imagem" == il.attributeValue("name") && il.element("dynamic-content").getData()?has_content>
623 <#assign imagemURLRelated = il.element("dynamic-content").getData()?eval />
624 </#if>
625
626 <#if "titulo" == il.attributeValue("name")>
627 <#assign tituloRelated = il.element("dynamic-content").getData() />
628 </#if>
629
630 <#if "subtitulo" == il.attributeValue("name")>
631 <#assign subtituloRelated = il.element("dynamic-content").getData() />
632
633 </#if>
634
635 </#list>
636 </#list>
637
638 <div class="col-md-12">
639 <div class="card">
640 <#if imagemURLRelated?has_content>
641 <@adaptive_media_image["img"] class="card-img-top"
642 fileVersion=dlAppServiceUtil.getFileEntry(imagemURLRelated.fileEntryId?number).getFileVersion()
643 alt="${imagemURLRelated.alt}" />
644 </#if>
645 <div class="card-body" style="color: #3B3B3B">
646 <p class="card-text card-text-title verde"> ${tituloRelated}</p>
647 <br/>
648 <p class="card-text card-text-subtitle"> ${subtituloRelated}</p>
649 <a href="/noticias/${assetRelatedUrlTitle}"
650 class="stretched-link"></a>
651
652 </div>
653
654 </div>
655 </div>
656 </#list>
657 </div>
658 </div>
659 </div>
660 </aside>
661 </#if>
662 </div>
663 </div>
664 </div>
665
666</div>