70JÁ! - 70JÁ!
COMO PODEMOS AJUDAR?
- ASSOCIATIVISMO JOVEM
- DESPORTO FEDERADO
- EDUCAÇÃO NÃO FORMAL E FORMAÇÃO
- DESPORTO PARA TODOS
- CULTURA E CRIATIVIDADE
- ENTIDADES DESPORTIVAS
- CIDADANIA, INCLUSÃO E PARTICIPAÇÃO
- ÉTICA NO DESPORTO
- HABITAÇÃO, EMPREGO E EMPREENDEDORISMO
- FORMAÇÃO E CERTIFICAÇÃO NO DESPORTO
- SAÚDE JUVENIL
- INSTALAÇÕES DESPORTIVAS
- VOLUNTARIADO E TEMPOS LIVRES
- MEDICINA DESPORTIVA
- ASSOCIATIVISMO JOVEM
Programas de Apoio ao Associativismo Jovem
Programa Formar+
Estatística e Publicação de Associações
- DESPORTO FEDERADO
Alto Rendimento
Seguro Desportivo
- EDUCAÇÃO NÃO FORMAL E FORMAÇÃO
Mobilidade Internacional
- DESPORTO PARA TODOS
Áreas de Intervenção
Projetos
- CIDADANIA, INCLUSÃO E PARTICIPAÇÃO
Igualdade de Género no Desporto
Informação Útil
- ÉTICA NO DESPORTO
- FORMAÇÃO E CERTIFICAÇÃO NO DESPORTO
Técnicos de Fitness
Treinadores de Desporto
Apoio à Formação
Mergulho Recreativo
- SAÚDE JUVENIL
Programa Cuida-te
Cuida-te Saúde Mental e Bem-estar Emocional
Cuida-te Sexualidade
Cuida-te Comportamentos Aditivos
- VOLUNTARIADO E TEMPOS LIVRES
Voluntariado
Programa Agora Nós
Tempos Livres
- ASSOCIATIVISMO JOVEM
- Programas de Apoio ao Associativismo Jovem
- ASSOCIATIVISMO JOVEM
- Estatística e Publicação de Associações
- DESPORTO FEDERADO
- Alto Rendimento
Medidas de Apoio
Outras Informações
- EDUCAÇÃO NÃO FORMAL E FORMAÇÃO
- Mobilidade Internacional
- DESPORTO PARA TODOS
- Projetos
- CIDADANIA, INCLUSÃO E PARTICIPAÇÃO
- Igualdade de Género no Desporto
- CIDADANIA, INCLUSÃO E PARTICIPAÇÃO
- Informação Útil
- HABITAÇÃO, EMPREGO E EMPREENDEDORISMO
- Estágio e Emprego
Estágios
Emprego
- HABITAÇÃO, EMPREGO E EMPREENDEDORISMO
- Mobilidade Internacional
- FORMAÇÃO E CERTIFICAÇÃO NO DESPORTO
- Técnicos de Fitness
- FORMAÇÃO E CERTIFICAÇÃO NO DESPORTO
- Treinadores de Desporto
- FORMAÇÃO E CERTIFICAÇÃO NO DESPORTO
- Apoio à Formação
- FORMAÇÃO E CERTIFICAÇÃO NO DESPORTO
- Mergulho Recreativo
- SAÚDE JUVENIL
- Programa Cuida-te
Gabinetes de Saúde Juvenil
- SAÚDE JUVENIL
- Cuida-te Saúde Mental e Bem-estar Emocional
- SAÚDE JUVENIL
- Cuida-te Sexualidade
Planeamento Familiar, Métodos Contracetivos e Contraceção de Emergência
Puberdade e Sexualidade
Saúde Reprodutiva
Saúde Sexual
- SAÚDE JUVENIL
- Cuida-te Comportamentos Aditivos
- VOLUNTARIADO E TEMPOS LIVRES
- Programa Agora Nós
- MEDICINA DESPORTIVA
- Serviços
Exames Médicos
- DESPORTO FEDERADO
- Alto Rendimento
- Medidas de Apoio
- DESPORTO FEDERADO
- Alto Rendimento
- Outras Informações
- SAÚDE JUVENIL
- Programa Cuida-te
- Gabinetes de Saúde Juvenil
- SAÚDE JUVENIL
- Cuida-te Sexualidade
- Planeamento Familiar, Métodos Contracetivos e Contraceção de Emergência
- SAÚDE JUVENIL
- Cuida-te Sexualidade
- Puberdade e Sexualidade
- SAÚDE JUVENIL
- Cuida-te Sexualidade
- Saúde Reprodutiva
- SAÚDE JUVENIL
- Cuida-te Sexualidade
- Saúde Sexual
null 70JÁ!
Elias Monteiro
modificado à 1 Ano atrás.
Ocorreu um erro ao processar o template.
The following has evaluated to null or missing: ==> journalArticleService.fetchArticleByUrlTitle(groupId, parseUrl[0]) [in template "20101#20127#13793727" at line 181, column 22] ---- 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 "20101#20127#13793727" at line 181, column 3] ----
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 #campaign {
77 padding-bottom: 50px;
78 }
79
80 h3 {
81 border-bottom: 2px solid #E2E2E2;
82 padding-bottom: 10px;
83 }
84
85 #relatedCampaign {
86 color: #A1BB15;
87 }
88
89 #relatedCampaign h2 {
90 font-size: 1rem;
91 padding-bottom: 20px;
92 text-transform: uppercase;
93 letter-spacing: 5px;
94 word-spacing: 10px;
95 }
96
97 .verde, a.verde:hover {
98 color: #A1BB15;
99 }
100
101 .info-contato {
102 padding: 0.5rem 0;
103 }
104
105 .card-img-top {
106 width: 100%;
107 height: auto;
108 }
109
110 .card-text-title {
111 font-size: 1.125rem;
112 }
113
114 .a2a_kit {
115 z-index: 1000;
116 }
117
118 .stretched-link::after {
119 z-index: 0 !important;
120 }
121
122 .badge-silver {
123 background-color: #e0e0e0;
124 color: #272833;
125 font-size: 1rem;
126 letter-spacing: 0.09rem;
127 }
128
129 .badge-silver:hover {
130 background-color: #c3c3c3;
131 color: #272833;
132 }
133
134.fa-linkedin {
135 color: #0e76a8;
136}
137
138.fa-twitter-square {
139 color: #00acee;
140}
141
142.fa-youtube-square {
143 color: #c4302b;
144}
145
146.fa-instagram-square {
147 color: black;
148}
149
150
151</style>
152<#assign urlTitle = themeDisplay.getURLCurrent()/>
153<#assign lang = themeDisplay.getLanguageId() />
154
155<#if urlTitle[0..2] == '/-/'>
156 <#assign urlTitle = urlTitle?replace('/-/', '') />
157<#else>
158 <#if lang == 'en_US'>
159 <#assign urlTitle = urlTitle?replace('/en/-/', '') />
160 <#else>
161 <#assign urlTitle = urlTitle?replace('/pt/-/', '') />
162 </#if>
163</#if>
164
165<#assign dlAppServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppServiceUtil"] />
166
167<#assign assetEntryService = staticUtil["com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil"] />
168<#assign assetLinkLocalService = staticUtil["com.liferay.asset.kernel.service.AssetLinkLocalServiceUtil"] />
169<#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
170
171<#assign classNameUtil = staticUtil["com.liferay.portal.kernel.service.ClassNameServiceUtil"] />
172<#assign articleClassName = classNameUtil.fetchClassName("com.liferay.journal.model.JournalArticle") />
173
174<#attempt>
175
176 <#assign article = journalArticleService.fetchArticleByUrlTitle(groupId, urlTitle) />
177
178<#recover>
179 <#assign parseUrl = urlTitle?split('?') >
180
181 <#assign article = journalArticleService.fetchArticleByUrlTitle(groupId, parseUrl[0]) />
182</#attempt>
183
184<#assign assetEntry = assetEntryService.fetchEntry(articleClassName.getClassNameId(), article.getResourcePrimKey()) />
185<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(assetEntry.getEntryId()) />
186
187<#assign document = saxReaderUtil.read(article.getContent()) />
188<#assign rootElement = document.getRootElement() />
189
190<#assign imagensArray = []>
191<#assign telefonesArray = []>
192<#assign ficheirosArray = []>
193<#assign emailsArray = []>
194<#assign sitesArray = []>
195<#assign redesSociaisArray = []>
196
197<#assign data = "" />
198<#assign imagem = "" />
199<#assign imageURL = "" />
200<#assign subtitulo = "" />
201<#assign titulo = "" />
202<#assign corpoDoTexto = "" />
203<#assign entidadeOrganizadora = "" />
204<#assign formatoData = "dd/MM/yyyy" />
205
206<#list rootElement.elements() as el>
207 <#list el.elements() as il>
208
209 <#if "titulo" == il.attributeValue("name")>
210 <#assign titulo = il.element("dynamic-content").getData() />
211 </#if>
212
213 <#if "data" == il.attributeValue("name") && il.element("dynamic-content").getData()?has_content>
214 <#assign data = il.element("dynamic-content").getData()?date("yyyy-MM-dd") />
215 <#assign data = data?string[formatoData] />
216 </#if>
217 <#if "subtitulo" == il.attributeValue("name") && il.element("dynamic-content")?has_content>
218 <#assign subtitulo = il.element("dynamic-content").getData() />
219 </#if>
220
221 <#if "corpoDoTexto" == il.attributeValue("name") && il.element("dynamic-content")?has_content>
222 <#assign corpoDoTexto = il.element("dynamic-content").getData() />
223 </#if>
224
225 <#if "EntidadeOrganizadora" == il.attributeValue("name") && il.element("dynamic-content")?has_content>
226 <#assign entidadeOrganizadora = il.element("dynamic-content").getData() />
227 </#if>
228
229 <#if "imagensLink" == il.attributeValue("name")>
230 <#if il.element("dynamic-content").getData()?has_content >
231 <#assign imagem = il.element("dynamic-content").getData()?eval />
232 <#assign imagensArray += [imagem] />
233 </#if>
234 </#if>
235
236 <#if "maisinformacaoFicheiro" == 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 <#if "site" == il.attributeValue("name")>
258 <#if il.element("dynamic-content").getData()?has_content>
259 <#assign sitesArray += [il.element("dynamic-content").getData()] />
260 </#if>
261 </#if>
262
263
264 <#if "redesocial1" == il.attributeValue("name")>
265 <#assign redeSocial = il.element("dynamic-content").getData() />
266 <#if redeSocial?has_content>
267 <#assign redesSociaisArray += [redeSocial]/>
268 </#if>
269 </#if>
270 </#list>
271</#list>
272
273
274<div class="container-fluid">
275
276 <div class="container">
277
278 <div class="row">
279 <div class="col-12">
280 <nav class="breadcrumb-nav">
281 <ul class="breadcrumb-ul list-unstyled list-inline">
282 <li class="breadcrumb-element list-inline-item"><a href="/"><i class="fa fa-home"></i></a></li>
283 <li class="breadcrumb-element list-inline-item"><a href="/campanhas">Campanhas</a></li>
284 <li class="breadcrumb-element list-inline-item active">${titulo}</li>
285 </ul>
286 </nav>
287 </div>
288 <div class="col-md-8">
289
290 <section id="campaign">
291
292 <div class="row conteudo">
293 <div class="col-md-12">
294 <h1>${titulo}</h1>
295 <h2>${subtitulo}</h2>
296 <#if data?has_content >
297 <div class="data-criacao">
298 <span><i class="fas fa-clock"></i>${data}</span>
299 </div>
300 </#if>
301 </div>
302 </div>
303 <div class="row">
304 <div class="col-6 offset-3">
305 <div id="carouselIndicators" class="carousel slide"
306 data-ride="carousel">
307 <ol class="carousel-indicators">
308 <#list imagensArray as item>
309 <#if item?is_first>
310 <li data-target="#carouselIndicators" data-slide-to="${item?index}"
311 class="active"></li>
312 <#else>
313 <li data-target="#carouselIndicators"
314 data-slide-to="${item?index}"></li>
315 </#if>
316 </#list>
317 </ol>
318 <div class="carousel-inner">
319 <#list imagensArray as item>
320 <#if item?is_first>
321 <div class="carousel-item active">
322 <#else>
323 <div class="carousel-item">
324 </#if>
325 <#assign imagemFileEntry = dlAppServiceUtil.getFileEntry(item.fileEntryId?number) />
326 <#if !shareImgFileEntry??>
327 <#assign shareImgFileEntry = imagemFileEntry />
328 </#if>
329 <@adaptive_media_image["img"] class="d-block w-100 container-image"
330 fileVersion=imagemFileEntry.getFileVersion()
331 alt="${item.alt}"/>
332 </div>
333 </#list>
334 </div>
335
336 <a class="carousel-control-prev" href="#carouselIndicators" role="button"
337 data-slide="prev">
338 <span class="carousel-control-prev-icon" aria-hidden="true"></span>
339 <span class="sr-only">Previous</span>
340 </a>
341 <a class="carousel-control-next" href="#carouselIndicators" role="button"
342 data-slide="next">
343 <span class="carousel-control-next-icon" aria-hidden="true"></span>
344 <span class="sr-only">Next</span>
345 </a>
346 </div>
347 </div>
348
349 </div>
350
351 <div class="row">
352 <div class="col-12">
353 <div class="corpoDoTexto">
354 ${corpoDoTexto}
355 </div>
356 </div>
357 </div>
358 <#if ficheirosArray?has_content>
359
360 <div class="row conteudo">
361 <div class="col-12">
362 <h3>Mais Informações</h3>
363 </div>
364 <div class="col-12">
365 <ul>
366 <#list ficheirosArray as item>
367 <li><a class="verde" target="_blank"
368 href="${item?split("|")?first}">${item?split("|")?last}</a>
369 </li>
370 </#list>
371 </ul>
372 </div>
373 </div>
374
375 </#if>
376
377 <#if telefonesArray?has_content || emailsArray?has_content || sitesArray?has_content || redesSociaisArray?has_content>
378 <div class="conteudo">
379
380 <h3>Contatos</h3>
381
382
383 <#if telefonesArray?has_content>
384 <div class="info-contato">
385 <div class="row">
386 <div class="col-md-2">
387 <b>Telefone</b>
388 </div>
389 <div class="col-md-10">
390 <#list telefonesArray as item>
391 <p>${item}</p>
392 </#list>
393 </div>
394 </div>
395 </div>
396 </#if>
397
398 <#if emailsArray?has_content>
399 <div class="info-contato">
400 <div class="row">
401 <div class="col-md-2">
402 <b>Email</b>
403 </div>
404 <div class="col-md-10">
405 <#list emailsArray as item>
406 <p>${item}</p>
407 </#list>
408 </div>
409 </div>
410 </div>
411 </#if>
412
413 <#if sitesArray?has_content>
414 <div class="info-contato">
415 <div class="row">
416 <div class="col-md-2">
417 <b>Site</b>
418 </div>
419 <div class="col-md-10">
420
421 <#list sitesArray as item>
422 <p><a class="verde" href="${item}">${item}</a></p>
423 </#list>
424 </div>
425 </div>
426 </div>
427 </#if>
428
429 <#if redesSociaisArray?has_content>
430 <div class="info-contato">
431 <div class="row">
432 <div class="col-md-2">
433 <b>Redes Sociais</b>
434 </div>
435 <div class="col-md-10">
436 <#list redesSociaisArray as item>
437 <#if item?contains("linked")>
438 <a href="${item}"><i
439 class="fab fa-linkedin fa-2x"></i></a>
440 </#if>
441 <#if item?contains("facebook")>
442 <a href="${item}"><i
443 class="fab fa-facebook-square fa-2x"></i></a>
444 </#if>
445 <#if item?contains("twitter")>
446 <a href="${item}"><i
447 class="fab fa-twitter-square fa-2x"></i></a>
448 </#if>
449 <#if item?contains("youtube")>
450 <a href="${item}"><i
451 class="fab fa-youtube-square text-danger fa-2x"></i></a>
452 </#if>
453 <#if item?contains("instagram")>
454 <a href="${item}"><i
455 class="fab fa-instagram-square fa-2x"></i></a>
456 </#if>
457 </#list>
458 </div>
459 </div>
460 </div>
461 </#if>
462
463 </#if>
464
465 <div class="col-12 text-right">
466 <p style="color:#9e9797">Atualizado
467 em: ${ article.getModifiedDate()?string["dd/MM/yyyy"]}</p>
468 </div>
469
470 <div class="a2a_kit a2a_kit_size_32 a2a_default_style"
471 data-a2a-icon-color = "transparent, black">
472 <a class="a2a_button_facebook"></a>
473 <a class="a2a_button_twitter"></a>
474 <a class="a2a_button_whatsapp"></a>
475 <a class="a2a_button_facebook_messenger"></a>
476 <a class="a2a_button_email"></a>
477 <a class="a2a_button_copy_link"></a>
478 <a class="a2a_dd" href="https://www.addtoany.com/share"></a>
479 </div>
480
481 <#if assetEntry.getTags()?has_content>
482 <div class="col-12 mt-4">
483 <#list assetEntry.getTags() as tag>
484 <a href="/pesquisa?q=${tag.name}" class="badge badge-pill badge-silver p-2">${tag.name}</a>
485 </#list>
486 </div>
487 </#if>
488
489 <@liferay_util["html-top"]>
490 <script crossorigin="anonymous" src="${themeDisplay.getPortalURL()}/documents/20123/259580/fontawesome.js"></script>
491 <script src="${themeDisplay.getPortalURL()}/documents/20123/259580/page.js"></script>
492 <meta property="og:title" content="${titulo}" />
493 <meta property="og:description" content="${subtitulo}" />
494 <meta property="og:type" content="article" />
495 <meta property="og:locale" content="${locale}" />
496 <meta property="og:site_name" content="${company.getName()}" />
497 <meta property="og:url" content="${themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()}">
498 <#if tagsArray?has_content>
499 <meta property="article:tag" content="${tags?join(",")}" />
500 </#if>
501
502 <#if shareImgFileEntry??>
503 <meta property="og:image" itemprop="image" content="${themeDisplay.getURLPortal()}/o/adaptive-media/image/${shareImgFileEntry.getFileEntryId()}/thumbnail-600x0/${shareImgFileEntry.getFileName()}" />
504 </#if>
505 </@>
506 </div>
507
508
509 </section>
510 </div>
511
512 <div class="col-md-4">
513 <#if currentArticleRelatedLinks?has_content>
514 <aside id="relatedCampaign">
515 <div class="container-fluid">
516 <div class="container">
517 <h2>Outras Campanhas</h2>
518 <div class="row">
519 <#list currentArticleRelatedLinks as related>
520 <#assign assertRelated = assetEntryService.getEntry(related.getEntryId2()) />
521 <#assign assetRendererRelated = assertRelated.getAssetRenderer() />
522 <#assign articleRelated = assetRendererRelated.getArticle() />
523 <#assign documentRelated = saxReaderUtil.read(articleRelated.getContent()) />
524 <#assign rootElementRelated = documentRelated.getRootElement() />
525 <#assign assetRelatedUrlTitle = articleRelated.getUrlTitle(locale) />
526
527 <#assign imagemURLRelated = "" />
528 <#assign tituloRelated = "" />
529 <#assign subtituloRelated = "" />
530
531 <#list rootElementRelated.elements() as el>
532 <#list el.elements() as il>
533 <#if "imagensLink" == il.attributeValue("name") && il.attributeValue("name")?has_content>
534 <#assign imagemURLRelated = il.element("dynamic-content").getData()?eval />
535 </#if>
536
537 <#if "titulo" == il.attributeValue("name") && il.attributeValue("name")?has_content>
538 <#assign tituloRelated = il.element("dynamic-content").getData() />
539 </#if>
540
541 <#if "subtitulo" == il.attributeValue("name") && il.attributeValue("name")?has_content>
542 <#assign subtituloRelated = il.element("dynamic-content").getData() />
543 </#if>
544
545 </#list>
546 </#list>
547
548 <div class="col-md-12">
549 <div class="card"
550 style="background-color: white;">
551 <#if imagemURLRelated?has_content>
552 <@adaptive_media_image["img"] class="card-img-top"
553 fileVersion=dlAppServiceUtil.getFileEntry(imagemURLRelated.fileEntryId?number).getFileVersion()
554 alt="${imagemURLRelated.alt}" />
555 </#if>
556 <div class="card-body" style="color: #3B3B3B">
557 <p class="card-text card-text-title verde"> ${tituloRelated}</p>
558 <br/>
559 <p class="card-text card-text-subtitle"> ${subtituloRelated}</p>
560 <a href="/campanhas/${assetRelatedUrlTitle}"
561 class="stretched-link"></a>
562 </div>
563
564 </div>
565 </div>
566 </#list>
567 </div>
568 </div>
569 </div>
570 </aside>
571 </#if>
572 </div>
573 </div>
574 </div>
575
576</div>
- --- NACIONAIS ---
- Agência Nacional Erasmus+ Juventude/Desporto e Corpo Europeu de Solidariedade
- Autoridade para a Prevenção e Combate à Violência no Desporto
- Cartão Jovem
- Conselho Nacional da Juventude
- Confederação do Desporto de Portugal
- Comité Olímpico de Portugal
- Comité Paralímpico de Portugal
- Desporto Escolar
- ePortugal
- Federação Académica do Desporto Universitário
- Federação Nacional das Associações Juvenis
- --- INTERNACIONAIS ---
- BeActive
- Comissão Europeia
- Centro de Informação Europeia Jacques Delors
- Conselho da Europa
- CPLP Juventude e Desporto
- Corpo Europeu de Solidariedade
- Erasmus+
- Eryica
- Eurodesk
- Fórum Europeu da Juventude
- Organismo Internacional de Juventude para a Ibero-América
- Portal Europeu da Juventude
- Start to Talk
- TAFISA
DJ Bot (Em Treino)
x
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.