Experiência de projeto de extensão do curso de Fotografia se transforma em artigo científico que será apresentado em congresso internacional na Colômbia - Unicap
Título Notícias
Notícias
Experiência de projeto de extensão do curso de Fotografia se transforma em artigo científico que será apresentado em congresso internacional na Colômbia
The following has evaluated to null or missing:
==> selectedOptions?first [in template "22092#22119#81555" at line 68, column 104]
----
Tip: If the failing expression is known to 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 selectedKey = selectedOptions... [in template "22092#22119#81555" at line 68, column 81]
----
1<style>
2 .noticia-custom .component-title, .noticia-custom .asset-avatar, .noticia-custom .user-info, .noticia-custom .asset-details .asset-ratings, .noticia-custom .asset-details .taglib-social-bookmarks {
3 display: none;
4 }
5 .asset-full-content {
6 opacity: 0;
7 visibility: hidden;
8 }
9 .noticia-custom .lfr-asset-anchor {
10 position: absolute;
11 top: 0;
12 }
13</style>
14<#setting url_escaping_charset="UTF-8">
15<#assign
16 groupId = themeDisplay.getLayout().getGroupId()
17 journalArticleId = .vars['reserved-article-id'].data
18 journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
19 Article = journalArticleLocalService.getArticle(groupId, journalArticleId)
20 classPK = Article.getResourcePrimKey()?eval
21 currentURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()
22
23 assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
24 entry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", classPK)
25/>
26<div class="row">
27 <div class="col-md-8">
28 <div class="blog-internal">
29 <div class="banner-noticia">
30 <div class="date-blog absolute">
31 <span class="day-date">${dateUtil.getDate(Article.getDisplayDate(), "dd", locale)}</span>
32 <span class="year-date">${dateUtil.getDate(Article.getDisplayDate(), "MMM yyyy", locale)}</span>
33 </div>
34 <#if CoverImage.getData()?? && CoverImage.getData() != "">
35 <img class="embed-responsive" alt="${CoverImage.getAttribute("alt")}" data-fileentryid="${CoverImage.getAttribute("fileEntryId")}" src="${CoverImage.getData()}" />
36 </#if>
37
38 <@liferay_util["html-top"]><meta name="twitter:title" content="${.vars['reserved-article-title'].data} "></@>
39 <@liferay_util["html-top"]><meta name="twitter:description" content="<#outputformat "plainText">${htmlUtil.stripHtml(Content.getData())}</#outputformat>"></@>
40 <@liferay_util["html-top"]><meta name="twitter:image" content="${themeDisplay.getURLPortal()}${CoverImage.getData()}"></@>
41 <@liferay_util["html-top"]><meta name="twitter:card" content="summary_large_image"></@>
42 <@liferay_util["html-top"]><meta property="og:type" content="article"></@>
43 <@liferay_util["html-top"]><meta property="og:site_name" content="${themeDisplay.getSiteGroupName()}"></@>
44 <@liferay_util["html-top"]><meta property="og:title" content="${.vars['reserved-article-title'].data}"></@>
45 <@liferay_util["html-top"]><meta property="og:description" content="<#outputformat "plainText">${htmlUtil.stripHtml(Content.getData())}</#outputformat>"></@>
46 <@liferay_util["html-top"]><meta property="og:image" content="${themeDisplay.getURLPortal()}${CoverImage.getData()}"></@>
47 <@liferay_util["html-top"]><meta property="og:url" content="${themeDisplay.getURLPortal()}${themeDisplay.getURLCurrent()}"></@>
48
49 <div class="title-absolute">
50 <div class="bg-titlte"></div>
51 <h1>${.vars['reserved-article-title'].data}</h1>
52 </div>
53 </div>
54 <div class="container-content blog-padding">
55 <div class="author-blog">
56 <#-- INICIO DECLARAÇÕES VARIAVEIS PARA ULTIMO EDITOR -->
57 <#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService") />
58 <#assign groupId = groupId?long />
59 <#assign articleId = .vars["reserved-article-id"].data />
60 <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
61 <#assign article = journalArticleLocalService.getLatestArticle(groupId, articleId) />
62 <#assign modifierUser = userLocalService.getUser(article.getStatusByUserId()) />
63 <#-- FIM DECLARAÇÕES -->
64
65
66 <#assign selectedOptions = selectPublished.getOptions() />
67 <#assign optionsMap = selectPublished.getOptionsMap() />
68 <#assign selectedKey = selectedOptions?first />
69
70 <#-- <#assign publicadoPor = .vars['reserved-article-author-name'].data /> nome do criador do conteúdo -->
71
72 <#assign publicadoPor = modifierUser.getFullName() />
73
74 <#if selectedKey?has_content>
75 <@liferay_ui["message"] key="published"/> <span class="text-lowercase"><@liferay_ui["message"] key="per"/></span>: ${optionsMap[selectedKey]!""}
76 <#else>
77 <@liferay_ui["message"] key="published"/> <span class="text-lowercase"><@liferay_ui["message"] key="per"/></span>: ${publicadoPor}
78 </#if>
79 </div>
80
81 <div class="content-blog">
82 ${Content.getData()}
83 </div>
84
85 <div class="content-social-blog">
86
87 <div class="content-view">
88 <span class="text-capitalize"><@liferay_ui["message"] key="views"/>: </span>
89 <div class="views">
90 <span class="icon-eye-open"></span>
91 <span class="number-views">${entry.getViewCount()}</span>
92 </div>
93 </div>
94
95 <#-- <div class="content-share">
96 <span class="text-capitalize"><@liferay_ui["message"] key="share"/></span>
97 <div class="click-share">
98 <@liferay_social_bookmarks["bookmarks"]
99 className="com.liferay.journal.model.JournalArticle"
100 classPK=journalArticleId?eval
101 displayStyle="inline"
102 target="_blank"
103 title=.vars['reserved-article-title'].data
104 url=currentURL
105 />
106 </div>
107 </div> -->
108
109 <div class="content-share">
110 <span class="text-capitalize"><@liferay_ui["message"] key="share"/>:</span>
111 <div class="click-share">
112
113 <#assign shareTitle = .vars['reserved-article-title'].data?url />
114 <#assign shareURL = currentURL?url />
115
116 <a href= "https://www.facebook.com/sharer/sharer.php?u=${shareURL}"
117
118 target="_blank" rel="noopener noreferrer" class="share-btn share-facebook" aria-label="Facebook" style="text-decoration: none;">
119 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="35" height="35" fill="currentColor">
120 <path d="M22 12c0-5.52-4.48-10-10-10S2 6.48 2 12c0 4.84 3.44 8.87 8 9.8V15H8v-3h2V9.5C10 7.57 11.57 6 13.5 6H16v3h-2c-.55 0-1 .45-1 1v2h3v3h-3v6.95c5.05-.5 9-4.76 9-9.95z"/>
121 </svg>
122 </a>
123
124 <a href="https://twitter.com/intent/tweet?url=${shareURL}&text=${shareTitle}"
125 target="_blank" rel="noopener noreferrer" class="share-btn share-x" aria-label="X (Twitter)" style="text-decoration: none;">
126 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="35" height="35" fill="currentColor">
127 <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622 5.911-5.622zm-1.161 17.52h1.833L7.084 4.126H5.117z"/>
128 </svg>
129 </a>
130
131 <a href="https://www.linkedin.com/shareArticle?mini=true&url=${shareURL}&title=${shareTitle}"
132 target="_blank" rel="noopener noreferrer" class="share-btn share-linkedin" aria-label="LinkedIn" style="text-decoration: none;">
133 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="35" height="35" fill="currentColor">
134 <path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"/>
135 </svg>
136 </a>
137
138 <a href="https://wa.me/?text=${shareTitle}%20${shareURL}"
139 target="_blank" rel="noopener noreferrer" class="share-btn share-whatsapp" aria-label="WhatsApp" style="text-decoration: none;">
140 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="35" height="35" fill="currentColor">
141 <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413z"/>
142 </svg>
143 </a>
144
145 </div>
146</div>
147
148 </div>
149 </div>
150
151 <#if AssociarPagina?? && AssociarPagina.getSiblings()?has_content>
152 <#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
153 <#if AssociarPagina.getData()?? && AssociarPagina.getData() != "">
154 <div class="brc-noticias hide">
155 <#list AssociarPagina.getSiblings() as cur_AssociarPagina>
156 <#if cur_AssociarPagina.getData()?eval.layoutId??>
157 <#assign layout = layoutService.getLayout(themeDisplay.getScopeGroupId(),false,cur_AssociarPagina.getData()?eval.layoutId?number) />
158 <#assign pageTitleCustom = layout.getName(locale) />
159 <li class="breadcrum-custom-news">
160 <a class="text-light" title="${pageTitleCustom}" href="${cur_AssociarPagina.getFriendlyUrl()}">
161 ${pageTitleCustom}
162 </a>
163 </li>
164 </#if>
165 </#list>
166 </div>
167 </#if>
168 </#if>
169
170 </div>
171 </div>
172 <div class="d-none d-xl-block col-xl-1"></div>
173 <div class="col-md-4 col-xl-3">
174 <#assign
175 currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", classPK)
176 currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId()
177 />
178
179 <#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")! />
180
181 <#if assetLinkLocalService?has_content>
182 <#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId, true) />
183 <#else>
184 <#assign currentArticleRelatedLinks = [] />
185 </#if>
186
187 <#if currentArticleRelatedLinks?size != 0>
188 <#assign
189 baseUrl = currentURL?split(.vars['reserved-article-url-title'].data)[0]
190 />
191 <div class="row">
192 <#list currentArticleRelatedLinks[0..*5] as related_entry>
193 <#assign
194 relatedAssetEntryId = related_entry.getEntryId2()
195 relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId)
196 relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK()
197 relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntryPrimKey)
198 viewURL = baseUrl + relatedArticle.getUrlTitle()
199
200 article = relatedArticle
201 docXml = saxReaderUtil.read(article.getContent())
202 contentNoticia = docXml.valueOf("//dynamic-element[@name='Content']/dynamic-content/text()")
203 contentInfoComplementar = docXml.valueOf("//dynamic-element[@name='InfoComplementar']/dynamic-content/text()")
204 image = docXml.valueOf("//dynamic-element[@name='CoverImage']/dynamic-content/text()")
205 imgJson = jsonFactoryUtil.createJSONObject(image)
206 urlImage = "/documents/"+ imgJson.groupId +"/" +imgJson.fileEntryId +"/"+ imgJson.name?url +"/"+imgJson.uuid
207
208 colorBg = "vermelho"
209 colorText = "secondary"
210 />
211 <#if related_entry?is_even_item>
212 <#assign
213 colorBg = "secondary"
214 colorText = "white"
215 />
216 </#if>
217 <#if contentInfoComplementar?? && contentInfoComplementar != "">
218 <div class="col-md-12 mb-6">
219 <#if image?? && image != "">
220 <img src="${urlImage}" alt="info complementar" />
221 </#if>
222 <div class="card-footer">
223 ${contentInfoComplementar}
224 </div>
225 </div>
226 <#else>
227 <div class="col-md-12 mb-6">
228 <div class="card-related">
229 <#if getterUtil.getBoolean(ImagemPossuiFiltro.getData())>
230 <div class="card bg-${colorBg}">
231 <#else>
232 <div class="card">
233 </#if>
234 <div class="background-image bg-color-yes" style="background-image: url(${urlImage});">
235 </div>
236 <div class="card-footer bg-${colorBg}">
237 <h3 class="font-size-default">
238 <a href="${viewURL}" class="stretched-link text-${colorText}" title="${article.getTitle(locale)}">
239 ${article.getTitle(locale)}
240 </a>
241 </h3>
242 </div>
243 </div>
244 </div>
245 </div>
246 </#if>
247 </#list>
248 </div>
249 </#if>
250 </div>
251</div>
252
253<style>
254 .card-related h3 {
255 font-size: 1.7rem;
256 margin: 0;
257 font-weight: normal;
258 }
259 .card-related:hover .card {
260 background-color: #690013!important;
261 }
262 .card-related a {
263 transition: color ease 0.4s;
264 }
265 .card-related a:hover {
266 color: #fff!important;
267 text-decoration: none;
268 }
269 .card-related {
270 height: 100%;
271 }
272 .card-related .card {
273 margin: 0;
274 height: 100%;
275 transition: background-color ease 0.4s;
276 }
277 .card-related .background-image {
278 min-height: 257px;
279 width: 100%;
280 overflow: hidden;
281 background-size: cover;
282 background-position: center;
283 background-repeat: no-repeat;
284 mix-blend-mode: multiply;
285 opacity: 1;
286 transition: opacity ease 0.4s;
287 }
288 .card-related .card-footer {
289 padding: 1.25rem;
290 }
291 .card-related .bg-color-no {
292 mix-blend-mode: normal;
293 }
294 .card-related .font-size-smaller {
295 font-size: 1.6rem;
296 }
297 .card-related .font-size-bigger {
298 font-size: 1.9rem;
299 }
300 .views .number-views {
301 opacity: 1;
302 align-items: center;
303 margin-top: 1rem;
304 padding: 0;
305 background-color: initial !important;
306 color: #72848c;
307 font-size: 2rem;
308 }
309 .views .icon-eye-open {
310 opacity: 1;
311 align-items: center;
312 margin-top: 1rem;
313 padding: 0;
314 background-color: initial !important;
315 color: #9c001c;
316 font-size: 2rem;
317 }
318</style>
319
320<script>
321 $(function(){
322 var container = $(".blog-internal").closest('.asset-full-content');
323 container.addClass('noticia-custom');
324
325 var breadcrumb = $('ul.breadcrumb');
326 var brcCustom = $('.brc-noticias');
327 if(breadcrumb.length && brcCustom.length){
328 breadcrumb.find('li:first-child, li:last-child').addClass('item-brc');
329 breadcrumb.find('li:not(.item-brc)').remove();
330 breadcrumb.find('li:last-child').before(brcCustom.html());
331 }
332
333 $('.asset-full-content').css({"opacity":"1","visibility":"visible"});
334 $('html, body').animate({
335 scrollTop: $(".noticia-custom .asset-anchor").offset().top
336 }, 500);
337 setTimeout(function(){
338 $('.content-share .inline-item svg').attr('viewBox', '0 0 512 512')
339 }, 5000)
340 })
341</script>
342
343<script>
344 function executarJS() {
345 const existingSVG = document.querySelector('.lexicon-icon-twitter');
346
347 if (!existingSVG) return;
348
349 const newSVGCode = `
350 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 1227" fill="none">
351 <g clip-path="url(#a)">
352 <path d="M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z" fill="#9c001c" class="fill-000000"></path>
353 </g>
354 <defs>
355 <clipPath id="a">
356 <path fill="#ffffff" d="M0 0h1200v1227H0z" class="fill-ffffff"></path>
357 </clipPath>
358 </defs>
359 </svg>
360 `;
361
362 const newSVG = new DOMParser().parseFromString(newSVGCode, 'image/svg+xml').querySelector('svg');
363 existingSVG.parentNode.replaceChild(newSVG, existingSVG);
364 }
365
366 window.addEventListener('load', executarJS);
367</script>
Barra de busca
Aplicações Aninhadas
Expediente - Coluna 1
EXPEDIENTE
EDIÇÃO:
Paula Losada (1.652 DRT/PE)
Daniel França (3.120 DRT/PE)
Elano Lorenzato (2.781 DRT/PE)
Sílvio Araújo (4.012 DRT/PE)
Expediente - Coluna 2
REPÓRTER CINEMATOGRÁFICO:
Alex Costa (5.182 -DRT/PE)
DESIGNER:
Java Araújo
WEB DESIGNER:
Elano Lorenzato (2.781 DRT/PE)
Expediente - Coluna 3
CONTATO:
Rua do Príncipe, 526,
Bloco R, sala 117,
Boa Vista, Recife-PE.
Cep: 50050-900.
Telefone: (81) 2119.4010.
E-mail: assecom@unicap.br
Título Notícias Acontece na Unicap
Acontece na Unicap
Publicador de Conteúdos e Mídias
Ibict prepara diretório nacional de avaliadores científicos no Brasil
Nova plataforma em acesso aberto quer facilitar a identificação de especialistas para revistas, agências de fomento, eventos e instituições de...
Nova plataforma em acesso aberto quer facilitar a identificação de especialistas para revistas, agências de...
Avaliação Institucional 2026.1
Data: 27/05/2026 a 30/06/2026 Olá, estudantes e professores(as). A Avaliação Institucional do semestre 2026.1 ocorrerá de 27 de maio a...
Data: 27/05/2026 a 30/06/2026 Olá, estudantes e professores(as). A Avaliação Institucional do...
Filmes para contemplação e ação - Evangelho da revolução
A Universidade Católica de Pernambuco convida para a exibição especial do filme: O Evangelho da revolução. Dir. François-Xavier Drouet (França e Brasil,...
A Universidade Católica de Pernambuco convida para a exibição especial do filme: O Evangelho da revolução. Dir....
PPGPSI - Simpósio - Violência contra as Mulheres e Feminicídio no Brasil
A Universidade Católica de Pernambuco promove, no próximo dia 27 de maio, no Auditório G2, simpósio sobre a violência contra as mulheres e o feminicídio no...
A Universidade Católica de Pernambuco promove, no próximo dia 27 de maio, no Auditório G2, simpósio sobre a violência...





