parceiro
Er trad een fout op tijdens de verwerking van de sjabloon.
The following has evaluated to null or missing: ==> journalArticleService.fetchArticleByUrlTitle(groupId, urlTitle?url('UTF-8')) [in template "33911#33938#38542" at line 169, column 20] ---- 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 "33911#33938#38542" at line 169, column 1] ----
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: #EF7105;
56 padding-top: 20px;
57 font-size: 1.5rem;
58 }
59
60 .conteudo h4 {
61 padding-top: 20px;
62 }
63
64 .corpoDoTexto {
65 padding-top: 20px;
66 }
67
68 .data-criacao {
69 border-bottom: 2px solid #E2E2E2;
70 padding-top: 30px;
71 padding-bottom: 10px;
72 }
73
74 .data-criacao .fas {
75 color: #EF7105;
76 padding-right: 10px;
77 }
78
79 #event {
80 padding-bottom: 50px;
81 }
82
83 h3 {
84 border-bottom: 2px solid #E2E2E2;
85 padding-bottom: 10px;
86 }
87
88 #relatedEvents {
89
90 color: #EF7105;
91 }
92
93 #relatedEvents h2 {
94 font-size: 1rem;
95 padding-bottom: 20px;
96 text-transform: uppercase;
97 letter-spacing: 5px;
98 word-spacing: 10px;
99 }
100
101 .laranja, a.laranja:hover {
102 color: #EF7105;
103 }
104
105 .info-contato {
106 padding: 0.5rem 0;
107 }
108
109 .card-img-top {
110 width: 100%;
111 height: auto;
112 }
113
114 .card-text-title {
115 font-size: 1.125rem;
116 }
117
118 .image-center {
119 display: block;
120 margin-left: auto;
121 margin-right: auto;
122 }
123
124 .a2a_kit {
125 z-index: 1000;
126 }
127
128 .stretched-link::after {
129 z-index: 0 !important;
130 }
131
132 .badge-silver {
133 background-color: #e0e0e0;
134 color: #272833;
135 font-size: 1rem;
136 letter-spacing: 0.09rem;
137 }
138
139 .badge-silver:hover {
140 background-color: #c3c3c3;
141 color: #272833;
142 }
143
144 .fa-facebook-square {
145 color: #3b5998;
146 }
147
148 .fa-instagram {
149 color: #405DE6;
150 }
151
152 .fa-twitter {
153 color: #00acee;
154 }
155
156 .fa-youtube {
157 color: #c4302b;
158 }
159</style>
160
161<#assign urlTitle = paramUtil.getString(themeDisplay.getRequest(), "titulo", "") />
162<#assign assetEntryService = staticUtil["com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil"] />
163<#assign assetLinkLocalService = staticUtil["com.liferay.asset.kernel.service.AssetLinkLocalServiceUtil"] />
164<#assign layoutLocalService = staticUtil["com.liferay.portal.kernel.service.LayoutLocalServiceUtil"] />
165<#assign dlAppServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppServiceUtil"] />
166<#assign classNameUtil = staticUtil["com.liferay.portal.kernel.service.ClassNameServiceUtil"] />
167<#assign articleClassName = classNameUtil.fetchClassName("com.liferay.journal.model.JournalArticle") />
168<#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
169<#assign article = journalArticleService.fetchArticleByUrlTitle(groupId, urlTitle?url('UTF-8')) />
170
171<#assign assetEntry = assetEntryService.fetchEntry(articleClassName.getClassNameId(), article.getResourcePrimKey()) />
172<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(assetEntry.getEntryId()) />
173
174<#assign document = saxReaderUtil.read(article.getContent()) />
175<#assign rootElement = document.getRootElement() />
176
177<#assign relationsNewsArray = []>
178<#assign imagensArray = []>
179<#assign telefonesArray = []>
180<#assign ficheirosArray = []>
181<#assign emailsArray = []>
182<#assign sitesArray = []>
183<#assign redesSociaisArray = []>
184<#assign sessoesArray = []>
185
186<#assign imagemEvento = "" />
187<#assign imageURL = "" />
188<#assign DataDoEvento = "" />
189<#assign titulo = "" />
190<#assign subtitulo = "" />
191<#assign corpoDoTexto = "" />
192<#assign hora = "" />
193<#assign entidadeOrganizadora = "" />
194<#assign sessaoString = "" />
195
196<#list rootElement.elements() as el>
197 <#list el.elements() as il>
198 <#if il.attributeValue("name")??>
199
200 <#if "DataDoEvento" == il.attributeValue("name")>
201 <#assign DataDoEvento = il.element("dynamic-content").getData() />
202 </#if>
203
204 <#if "Hora" == il.attributeValue("name")>
205 <#assign hora = il.element("dynamic-content").getData() />
206 </#if>
207
208 <#if "titulo" == il.attributeValue("name")>
209 <#assign titulo = il.element("dynamic-content").getData() />
210 </#if>
211
212 <#if "subtitulo" == il.attributeValue("name")>
213 <#assign subtitulo = il.element("dynamic-content").getData() />
214 </#if>
215
216 <#if "corpoDoTexto" == il.attributeValue("name")>
217 <#assign corpoDoTexto = il.element("dynamic-content").getData() />
218 </#if>
219
220 <#if "maisinformacaoFicheiro" == il.attributeValue("name")>
221 <#assign ficheiro = il.element("dynamic-content").getData() />
222 <#if ficheiro?has_content>
223 <#assign ficheiro = ficheiro?eval />
224 <#assign ficheirosArray += ["/c/document_library/get_file?uuid=" + ficheiro.uuid + "&groupId=" + ficheiro.groupId + "|" + ficheiro.title] />
225 </#if>
226 </#if>
227
228 <#if "imagemEvento" == il.attributeValue("name") && il.element("dynamic-content").getData()?has_content>
229 <#assign imagem = il.element("dynamic-content").getData()?eval />
230 <#assign imagensArray += [imagem] />
231 </#if>
232
233 <#if "entidadeOrganizadora" == il.attributeValue("name")>
234 <#assign entidadeOrganizadora = il.element("dynamic-content").getData() />
235 </#if>
236
237 <#if "telefone" == il.attributeValue("name")>
238 <#if il.element("dynamic-content").getData()?has_content>
239 <#assign telefonesArray += [il.element("dynamic-content").getData()] />
240 </#if>
241 </#if>
242
243 <#if "email" == il.attributeValue("name")>
244 <#if il.element("dynamic-content").getData()?has_content>
245 <#assign emailsArray += [il.element("dynamic-content").getData()] />
246 </#if>
247 </#if>
248
249
250
251 <#if "site" == il.attributeValue("name")>
252 <#if il.element("dynamic-content").getData()?has_content>
253 <#assign sitesArray += [il.element("dynamic-content").getData()] />
254 </#if>
255 </#if>
256
257 <#if "redesocial" == il.attributeValue("name")>
258 <#assign redeSocial = il.element("dynamic-content").getData() />
259 <#if redeSocial?has_content>
260 <#assign redesSociaisArray += [redeSocial]/>
261 </#if>
262 </#if>
263
264 <#if "dataInicioDoEvento" == il.attributeValue("name")>
265 <#if il.element("dynamic-content").getData()?has_content>
266 <#assign dataInicioDoEventoTemp = il.element("dynamic-content").getData() />
267 <#assign sessaoString += dataInicioDoEventoTemp?split("-")[2] + "/"+ dataInicioDoEventoTemp?split("-")[1] + "/" + dataInicioDoEventoTemp?split("-")[0] + "||" />
268 <#else>
269 <#assign sessaoString += "N/A||" />
270 </#if>
271
272 </#if>
273
274 <#if "horaInicio" == il.attributeValue("name")>
275 <#if il.element("dynamic-content").getData()?has_content>
276 <#assign sessaoString += il.element("dynamic-content").getData() + "||" />
277 <#else>
278 <#assign sessaoString += "N/A||" />
279 </#if>
280 </#if>
281
282 <#if "dataFimDoEvento" == il.attributeValue("name")>
283 <#if il.element("dynamic-content").getData()?has_content>
284 <#assign dataFimDoEventoTemp = il.element("dynamic-content").getData() />
285 <#assign sessaoString += dataFimDoEventoTemp?split("-")[2] + "/"+ dataFimDoEventoTemp?split("-")[1] + "/" + dataFimDoEventoTemp?split("-")[0] + "||" />
286 <#else>
287 <#assign sessaoString += "N/A||" />
288 </#if>
289 </#if>
290
291 <#if "horaFim" == il.attributeValue("name")>
292 <#if il.element("dynamic-content").getData()?has_content>
293 <#assign sessaoString += il.element("dynamic-content").getData() + "||" />
294 <#else>
295 <#assign sessaoString += "N/A||" />
296 </#if>
297 </#if>
298
299 <#if "localizacao" == il.attributeValue("name")>
300 <#if il.element("dynamic-content").getData()?has_content>
301 <#assign sessaoString += il.element("dynamic-content").getData() + "@@" />
302 <#else>
303 <#assign sessaoString += "N/A@@" />
304 </#if>
305 </#if>
306
307
308
309 </#if>
310 </#list>
311</#list>
312
313
314<div class="container-fluid">
315
316 <div class="container">
317
318 <div class="row">
319 <div class="col-12">
320 <nav class="breadcrumb-nav">
321 <ul class="breadcrumb-ul list-unstyled list-inline">
322 <li class="breadcrumb-element list-inline-item"><a href="/"><i class="fa fa-home"></i></a></li>
323 <li class="breadcrumb-element list-inline-item"><a href="/eventos">Eventos</a></li>
324 <li class="breadcrumb-element list-inline-item active">${titulo}</li>
325 </ul>
326 </nav>
327 </div>
328 <div class="col-md-8">
329
330 <section id="event">
331
332 <div class="row conteudo">
333 <div class="col-md-12">
334 <h1>${titulo}</h1>
335 <h2>${subtitulo}</h2>
336 <h4>${entidadeOrganizadora}</h4>
337 <div class="data-criacao clearfix">
338 <div class="float-left">
339 <span><i class="fas fa-clock"></i>${DataDoEvento} <span
340 class="laranja">${hora}</span></span>
341 </div>
342 <div class="float-left">
343
344 <#list sessaoString?remove_ending("@@")?split("@@") as evento>
345 <p>
346 <#if evento??>
347 <#assign eventoSplitted = evento?split("||") />
348 <#if eventoSplitted?size gte 1 && !eventoSplitted[0]?contains("N/A")>${eventoSplitted[0]}</#if>
349 <#if eventoSplitted?size gte 2 && !eventoSplitted[1]?contains("N/A")><span class="laranja">${eventoSplitted[1]}</span></#if>
350 <#if eventoSplitted?size gte 3 && !eventoSplitted[2]?contains("N/A")>- ${eventoSplitted[2]}</#if>
351 <#if eventoSplitted?size gte 4 && !eventoSplitted[3]?contains("N/A")><span class="laranja">${eventoSplitted[3]}</span></#if>
352 <#if eventoSplitted?size == 5 && !eventoSplitted[4]?contains("N/A")>- ${eventoSplitted[4]}</#if>
353 </#if>
354 </p>
355
356 </#list>
357 </div>
358 </div>
359 </div>
360 </div>
361 <div class="row">
362 <div class="image-center">
363 <div id="carouselIndicators" class="carousel slide"
364 data-ride="carousel">
365 <ol class="carousel-indicators">
366 <#list imagensArray as item>
367 <#if item?is_first>
368 <li data-target="#carouselIndicators" data-slide-to="${item?index}"
369 class="active"></li>
370 <#else>
371 <li data-target="#carouselIndicators"
372 data-slide-to="${item?index}"></li>
373 </#if>
374 </#list>
375 </ol>
376 <div class="carousel-inner">
377 <#list imagensArray as item>
378 <#if item?is_first>
379 <div class="carousel-item active">
380 <#else>
381 <div class="carousel-item">
382 </#if>
383 <#assign imagemFileEntry = dlAppServiceUtil.getFileEntry(item.fileEntryId?number) />
384 <#if !shareImgFileEntry??>
385 <#assign shareImgFileEntry = imagemFileEntry />
386 </#if>
387 <@adaptive_media_image["img"] class="d-block w-100 container-image img-responsive" fileVersion=imagemFileEntry.getFileVersion() alt="${item.alt}"/>
388 </div>
389 </#list>
390 </div>
391
392 <a class="carousel-control-prev" href="#carouselIndicators" role="button"
393 data-slide="prev">
394 <span class="carousel-control-prev-icon" aria-hidden="true"></span>
395 <span class="sr-only">Previous</span>
396 </a>
397 <a class="carousel-control-next" href="#carouselIndicators" role="button"
398 data-slide="next">
399 <span class="carousel-control-next-icon" aria-hidden="true"></span>
400 <span class="sr-only">Next</span>
401 </a>
402 </div>
403 </div>
404
405 </div>
406
407 <div class="row">
408 <div class="col-12">
409 <div class="corpoDoTexto">
410 ${corpoDoTexto}
411 </div>
412 </div>
413 </div>
414 <#if ficheirosArray?has_content>
415
416 <div class="row conteudo">
417 <div class="col-12">
418 <h3>Mais Informações</h3>
419 </div>
420 <div class="col-12">
421 <ul>
422 <#list ficheirosArray as item>
423 <li><a class="laranja" target="_blank"
424 href="${item?split("|")?first}">${item?split("|")?last}</a>
425 </li>
426 </#list>
427 </ul>
428 </div>
429 </div>
430
431 </#if>
432
433 <#if telefonesArray?has_content || emailsArray?has_content || sitesArray?has_content || redesSociaisArray?has_content>
434 <div class="conteudo">
435
436 <h3>Contatos</h3>
437
438
439 <#if telefonesArray?has_content>
440 <div class="info-contato">
441 <div class="row">
442 <div class="col-md-2">
443 <b>Telefone</b>
444 </div>
445 <div class="col-md-10">
446 <#list telefonesArray as item>
447 <p>${item}</p>
448 </#list>
449 </div>
450 </div>
451 </div>
452 </#if>
453
454 <#if emailsArray?has_content>
455 <div class="info-contato">
456 <div class="row">
457 <div class="col-md-2">
458 <b>Email</b>
459 </div>
460 <div class="col-md-10">
461 <#list emailsArray as item>
462 <p>${item}</p>
463 </#list>
464 </div>
465 </div>
466 </div>
467 </#if>
468
469 <#if sitesArray?has_content>
470 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
471 <#assign baseURL = portalUtil.getPortalURL(request) />
472 <div class="info-contato">
473 <div class="row">
474 <div class="col-md-2">
475 <b>Site</b>
476 </div>
477 <div class="col-md-10">
478
479 <#list sitesArray as item>
480 <p><a class="laranja" href="${item}" target="${item?starts_with(baseURL)?then('_self', '_blank')}">${item}</a></p>
481 </#list>
482 </div>
483 </div>
484 </div>
485 </#if>
486
487 <#if redesSociaisArray?has_content>
488 <div class="info-contato">
489 <div class="row">
490 <div class="col-md-2">
491 <b>Redes Sociais</b>
492 </div>
493 <div class="col-md-10">
494 <#list redesSociaisArray as item>
495 <#if item?contains("linked")>
496 <a href="${item}" target="_blank"><i
497 class="fab fa-linkedin fa-2x"></i></a>
498 </#if>
499 <#if item?contains("facebook")>
500 <a href="${item}" target="_blank"><i
501 class="fab fa-facebook-square fa-2x"></i></a>
502 </#if>
503 <#if item?contains("insta")>
504 <a href="${item}" target="_blank"><i
505 class="fab fa-instagram fa-2x"></i></a>
506 </#if>
507 <#if item?contains("twitter")>
508 <a href="${item}" target="_blank"><i
509 class="fab fa-twitter fa-2x"></i></a>
510 </#if>
511 <#if item?contains("youtube")>
512 <a href="${item}" target="_blank"><i
513 class="fab fa-youtube fa-2x"></i></a>
514 </#if>
515 </#list>
516 </div>
517 </div>
518 </div>
519 </#if>
520
521 </#if>
522
523 <div class="col-12 text-right">
524 <p style="color:#9e9797">Atualizado
525 em: ${ article.getModifiedDate()?string["dd/MM/yyyy"]}</p>
526 </div>
527
528 <div class="a2a_kit a2a_kit_size_32 a2a_default_style"
529 data-a2a-icon-color = "transparent, black">
530 <a class="a2a_button_facebook"></a>
531 <a class="a2a_button_twitter"></a>
532 <a class="a2a_button_whatsapp"></a>
533 <a class="a2a_button_facebook_messenger"></a>
534 <a class="a2a_button_email"></a>
535 <a class="a2a_button_copy_link"></a>
536 <a class="a2a_dd" href="https://www.addtoany.com/share"></a>
537 </div>
538
539 <#if assetEntry.getTags()?has_content>
540 <#assign tags = [] />
541 <div class="col-12 mt-4">
542 <#list assetEntry.getTags() as tag>
543 <#assign tags += [tag.name] />
544 <a href="/pesquisa?q=${tag.name}" class="badge badge-pill badge-silver p-2">${tag.name}</a>
545 </#list>
546 </div>
547 </#if>
548
549 <@liferay_util["html-top"]>
550 <script crossorigin="anonymous" src="${themeDisplay.getPortalURL()}/documents/20123/259580/fontawesome.js"></script>
551 <script src="${themeDisplay.getPortalURL()}/documents/20123/259580/page.js"></script>
552 <meta property="og:title" content="${titulo}" />
553 <meta property="og:description" content="${subtitulo}" />
554 <meta property="og:type" content="article" />
555 <meta property="og:locale" content="${locale}" />
556 <meta property="og:site_name" content="${company.getName()}" />
557 <meta property="og:url" content="${themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()}">
558 <#if tagsArray?has_content>
559 <meta property="article:tag" content="${tags?join(",")}" />
560 </#if>
561
562 <#if shareImgFileEntry??>
563 <meta property="og:image" itemprop="image" content="${themeDisplay.getURLPortal()}/o/adaptive-media/image/${shareImgFileEntry.getFileEntryId()}/thumbnail-600x0/${shareImgFileEntry.getFileName()}" />
564 </#if>
565 </@>
566 </div>
567
568
569 </section>
570 </div>
571
572 <div class="col-md-4">
573 <#if currentArticleRelatedLinks?has_content>
574 <aside id="relatedEvents">
575 <div class="container-fluid">
576 <div class="container">
577 <h2>Outros Eventos</h2>
578 <div class="row">
579 <#list currentArticleRelatedLinks as related>
580 <#assign assertRelated = assetEntryService.getEntry(related.getEntryId2()) />
581 <#assign assetRendererRelated = assertRelated.getAssetRenderer() />
582 <#assign articleRelated = assetRendererRelated.getArticle() />
583 <#assign documentRelated = saxReaderUtil.read(articleRelated.getContent()) />
584 <#assign rootElementRelated = documentRelated.getRootElement() />
585 <#assign assetRelatedUrlTitle = articleRelated.getUrlTitle(locale) />
586
587 <#assign imagensArrayRelated = []>
588 <#assign imagemURLRelated = "" />
589 <#assign tituloRelated = "" />
590 <#assign subtituloRelated = "" />
591
592 <#list rootElementRelated.elements() as el>
593 <#list el.elements() as il>
594 <#if "imagemEvento" == il.attributeValue("name") && il.element("dynamic-content").getData()?has_content>
595 <#assign imagemURLRelated = il.element("dynamic-content").getData()?eval />
596 <#assign imagensArrayRelated += [imagemURLRelated] />
597 </#if>
598
599 <#if "titulo" == il.attributeValue("name")>
600 <#assign tituloRelated = il.element("dynamic-content").getData() />
601 </#if>
602
603 <#if "subtitulo" == il.attributeValue("name")>
604 <#assign subtituloRelated = il.element("dynamic-content").getData() />
605
606 </#if>
607
608 </#list>
609 </#list>
610
611 <div class="col-md-12">
612 <div class="card"
613 style="background-color: white;">
614 <#if imagemURLRelated?has_content>
615 <@adaptive_media_image["img"] class="card-img-top" fileVersion=dlAppServiceUtil.getFileEntry(imagemURLRelated.fileEntryId?number).getFileVersion() alt="${imagemURLRelated.alt}"/>
616 </#if>
617 <div class="card-body" style="color: #3B3B3B">
618 <p class="card-text card-text-title laranja"> ${tituloRelated}</p>
619 <br/>
620 <p class="card-text card-text-subtitle"> ${subtituloRelated}</p>
621 <a href="/eventos/${assetRelatedUrlTitle}"
622 class="stretched-link"></a>
623 </div>
624 </div>
625 </div>
626 </#list>
627 </div>
628 </div>
629 </div>
630 </aside>
631 </#if>
632 </div>
633 </div>
634 </div>
635
636</div>
- --- NATIONAL ---
- AIDGLOBAL
- Erasmus + Youth in Action National Agency
- Association for Family Protection
- Sonha, Faz e Acontece Youth Association
- Santarém Special Sport Association
- National Youth Council
- European Intercultural Club
- DYPALL NETWORK
- Santarém Higher School of Sport
- AFS Interculture Portugal
- MOVIJOVEM - Youth Mobility
- REDE - Portuguese Network of Young People for Gender Equality
- --- INTERNATIONAL ---
- Council of Europe
- Directorate of Democratic Participation of the Council of Europe
- Directorate General of Democracy (“DGII”) of the Council of Europe
- Youth Department of the Council of Europe
- European Youth Centre Budapest
- European Youth Centre Strasbourg
- European Youth Foundation
- European Youth Forum
- Eurodesk
- European Youth Information and Counselling Agency
- European Youth Portal
- --- COUNCIL OF EUROPE QUALITY LABELLED YOUTH CENTRES ---
- Brežice Youth Centre
- CEULAJ - Centro Eurolatinoamericano de Juventud
- Destelheide Youth Centre
- De Hoge Rielen Youth Centre
- Ecocenter Radulovacki Youth Centre
- Killarney Youth Centre
- Marienthal Youth Centre
- Marttinen Youth Centre
- Plovdiv Youth Centre
- Stara Zagora Youth Centre
- Timisoara Youth House
- Villa Elba Youth Centre
- WannseeFORUM Youth Centre
SUBSCREVER NEWSLETTER
Newsletter subscrito com sucesso Não foi subscrever o Newsletter. Por favor tente mais tardeUtilizamos cookies no nosso site para lhe proporcionar a melhor experiência. Ao continuar a navegar, está a autorizar a nossa utilização destes cookies. No entanto, se pretender saber mais informações, nomeadamente como alterar as suas definições, consulte a nossa Politica .