Título Acontece na Unicap

EDITAL 2023.2 – PROGRAMA DE INTERCÂMBIO ESTUDANTIL UNICAP Duplicar 0

Um erro ocorreu enquanto processava o modelo.
Java method "jdk.proxy3.$Proxy82.getUser(long)" threw an exception when invoked on jdk.proxy3.$Proxy82 object "com.liferay.message.boards.internal.service.MBMessageUserLocalServiceWrapper@60723e4e"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign modifierUser = userLocalServi...  [in template "22092#22119#1705218" at line 61, column 19]
----
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    .img-social-share{ 
14    display:none !important; 
15
16</style> 
17<#setting url_escaping_charset="UTF-8"> 
18<#assign  
19    groupId = themeDisplay.getLayout().getGroupId() 
20    journalArticleId = .vars['reserved-article-id'].data 
21    journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
22    Article = journalArticleLocalService.getArticle(groupId, journalArticleId) 
23    classPK = Article.getResourcePrimKey()?eval 
24    currentURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() 
25 
26    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
27    entry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", classPK) 
28/> 
29<div class="row"> 
30    <div class="col-md-8"> 
31        <div class="blog-internal"> 
32            <div class="banner-noticia4"> 
33                <#if CoverImage.getData()?? && CoverImage.getData() != ""> 
34                    <img class="embed-responsive" alt="${CoverImage.getAttribute("alt")}" data-fileentryid="${CoverImage.getAttribute("fileEntryId")}" src="${CoverImage.getData()}" /> 
35                </#if> 
36 
37                <@liferay_util["html-top"]><meta name="twitter:title" content="${.vars['reserved-article-title'].data} "></@> 
38                <@liferay_util["html-top"]><meta name="twitter:description" content="<#outputformat "plainText">${htmlUtil.stripHtml(Content.getData())}</#outputformat>"></@> 
39                <@liferay_util["html-top"]><meta name="twitter:image" content="${themeDisplay.getURLPortal()}${CoverImage.getData()}"></@> 
40                <@liferay_util["html-top"]><meta name="twitter:card" content="summary_large_image"></@> 
41                <@liferay_util["html-top"]><meta property="og:type" content="article"></@> 
42                <@liferay_util["html-top"]><meta property="og:site_name" content="${themeDisplay.getSiteGroupName()}"></@> 
43                <@liferay_util["html-top"]><meta property="og:title" content="${.vars['reserved-article-title'].data}"></@> 
44                <@liferay_util["html-top"]><meta property="og:description" content="<#outputformat "plainText">${htmlUtil.stripHtml(Content.getData())}</#outputformat>"></@> 
45                <@liferay_util["html-top"]><meta property="og:image" content="${themeDisplay.getURLPortal()}${CoverImage.getData()}"></@> 
46                <@liferay_util["html-top"]><meta property="og:url" content="${themeDisplay.getURLPortal()}${themeDisplay.getURLCurrent()}"></@> 
47 
48                <div class="title-absolute"> 
49                    <div class="bg-titlte"></div> 
50                    <h1>${.vars['reserved-article-title'].data}</h1> 
51                </div> 
52            </div> 
53           <div class="container-content blog-padding"> 
54                  <div class="author-blog"> 
55                  <#-- INICIO DECLARAÇÕES VARIAVEIS PARA ULTIMO EDITOR -->   
56                  <#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService") /> 
57                  <#assign groupId = groupId?long /> 
58                  <#assign articleId = .vars["reserved-article-id"].data /> 
59                  <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
60                  <#assign article = journalArticleLocalService.getLatestArticle(groupId, articleId) /> 
61                  <#assign modifierUser = userLocalService.getUser(article.getStatusByUserId()) /> 
62                  <#-- FIM DECLARAÇÕES --> 
63               
64								 
65								    <#assign selectedOptions = selectPublished.getOptions() /> 
66                    <#assign optionsMap = selectPublished.getOptionsMap() />          
67										<#assign selectedKey = selectedOptions?first /> 
68 
69										<#-- <#assign publicadoPor = .vars['reserved-article-author-name'].data /> nome do criador do conteúdo --> 
70										 
71										<#assign publicadoPor = modifierUser.getFullName() />								 
72                     
73                    <#if selectedKey?has_content>                        
74                          <@liferay_ui["message"] key="published"/> <span class="text-lowercase"><@liferay_ui["message"] key="per"/></span>: ${optionsMap[selectedKey]!""}   
75										<#else> 
76										      <@liferay_ui["message"] key="published"/> <span class="text-lowercase"><@liferay_ui["message"] key="per"/></span>: ${publicadoPor} 
77										</#if>	 
78                </div> 
79 
80                <div class="content-blog"> 
81							 
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                         
90                        <div class="views"> 
91                        <span class="icon-eye-open"></span> 
92                        <span class="number-views">${entry.getViewCount()}</span> 
93                        </div> 
94                    </div> 
95 
96                   <#-- <div class="content-share"> 
97                        <span class="text-capitalize"><@liferay_ui["message"] key="share"/>:</span> 
98                        <div class="click-share"> 
99                            <@liferay_social_bookmarks["bookmarks"] 
100                                className="com.liferay.journal.model.JournalArticle" 
101                                classPK=journalArticleId?eval 
102                                displayStyle="inline" 
103                                target="_blank" 
104                                title=.vars['reserved-article-title'].data 
105                                url=currentURL 
106                            /> 
107                        </div> 
108                    </div> --> 
109										 
110										 
111										<div class="content-share"> 
112    <span class="text-capitalize"><@liferay_ui["message"] key="share"/>:</span> 
113    <div class="click-share"> 
114 
115        <#assign shareTitle = .vars['reserved-article-title'].data?url /> 
116        <#assign shareURL = currentURL?url /> 
117 
118        <a href= "https://www.facebook.com/sharer/sharer.php?u=${shareURL}" 
119				 
120           target="_blank" rel="noopener noreferrer" class="share-btn share-facebook" aria-label="Facebook" style="text-decoration: none;"> 
121            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="35" height="35" fill="currentColor"> 
122                <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"/> 
123            </svg> 
124        </a> 
125 
126        <a href="https://twitter.com/intent/tweet?url=${shareURL}&text=${shareTitle}" 
127           target="_blank" rel="noopener noreferrer" class="share-btn share-x" aria-label="X (Twitter)" style="text-decoration: none;"> 
128            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="35" height="35" fill="currentColor"> 
129                <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"/> 
130            </svg> 
131        </a> 
132 
133        <a href="https://www.linkedin.com/shareArticle?mini=true&url=${shareURL}&title=${shareTitle}" 
134           target="_blank" rel="noopener noreferrer" class="share-btn share-linkedin" aria-label="LinkedIn" style="text-decoration: none;"> 
135            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="35" height="35" fill="currentColor"> 
136                <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"/> 
137            </svg> 
138        </a> 
139 
140        <a href="https://wa.me/?text=${shareTitle}%20${shareURL}" 
141           target="_blank" rel="noopener noreferrer" class="share-btn share-whatsapp" aria-label="WhatsApp" style="text-decoration: none;"> 
142            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="35" height="35" fill="currentColor"> 
143                <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"/> 
144            </svg> 
145        </a> 
146 
147    </div> 
148</div> 
149										 
150										 
151                </div> 
152            </div> 
153             
154            <#if AssociarPagina?? && AssociarPagina.getSiblings()?has_content> 
155                <#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
156                <#if AssociarPagina.getData()?? && AssociarPagina.getData() != ""> 
157                    <div class="brc-noticias hide"> 
158                        <#list AssociarPagina.getSiblings() as cur_AssociarPagina> 
159                            <#if cur_AssociarPagina.getData()?eval.layoutId??> 
160                                <#assign layout = layoutService.getLayout(themeDisplay.getScopeGroupId(),false,cur_AssociarPagina.getData()?eval.layoutId?number) /> 
161                                <#assign pageTitleCustom = layout.getName(locale) /> 
162                                <li class="breadcrum-custom-news"> 
163                                    <a class="text-light" title="${pageTitleCustom}" href="${cur_AssociarPagina.getFriendlyUrl()}"> 
164                                        ${pageTitleCustom} 
165                                    </a> 
166                                </li> 
167                            </#if> 
168                        </#list> 
169                    </div> 
170                </#if> 
171            </#if> 
172             
173        </div> 
174    </div> 
175    <div class="d-none d-xl-block col-xl-1"></div> 
176    <div class="col-md-4 col-xl-3"> 
177        <#assign 
178            currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", classPK) 
179            currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() 
180        /> 
181 
182        <#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")! /> 
183 
184        <#if assetLinkLocalService?has_content> 
185            <#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId, true) /> 
186        <#else> 
187            <#assign currentArticleRelatedLinks = [] /> 
188        </#if> 
189         
190        <#if currentArticleRelatedLinks?size != 0> 
191            <#assign 
192                baseUrl = currentURL?split(.vars['reserved-article-url-title'].data)[0] 
193            /> 
194            <div class="row"> 
195                <#list currentArticleRelatedLinks[0..*5] as related_entry> 
196                    <#assign  
197                        relatedAssetEntryId = related_entry.getEntryId2()  
198                        relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) 
199                        relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() 
200                        relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntryPrimKey) 
201                        viewURL = baseUrl+ relatedArticle.getUrlTitle() 
202 
203                        article = relatedArticle 
204                        docXml = saxReaderUtil.read(article.getContent()) 
205                        contentNoticia = docXml.valueOf("//dynamic-element[@name='Content']/dynamic-content/text()") 
206                        contentInfoComplementar = docXml.valueOf("//dynamic-element[@name='InfoComplementar']/dynamic-content/text()") 
207                        image = docXml.valueOf("//dynamic-element[@name='CoverImage']/dynamic-content/text()") 
208                        imgJson = jsonFactoryUtil.createJSONObject(image) 
209                        urlImage = "/documents/"+ imgJson.groupId +"/" +imgJson.fileEntryId +"/"+ imgJson.name?url +"/"+imgJson.uuid 
210 
211                        colorBg = "vermelho" 
212                        colorText = "secondary" 
213                    /> 
214                    <#if related_entry?is_even_item> 
215                        <#assign  
216                            colorBg = "secondary" 
217                            colorText = "white" 
218                        /> 
219                    </#if> 
220                    <#if contentInfoComplementar?? && contentInfoComplementar!= ""> 
221                    <div class="col-md-12 mb-6"> 
222                        <#if image?? && image!= ""> 
223                        <img src="${urlImage}" alt="info complementar" /> 
224                        </#if> 
225 
226                        <div class="card-footer"> 
227                            ${contentInfoComplementar} 
228                        </div> 
229                    </div> 
230                    <#else> 
231                        <div class="col-md-12 mb-6"> 
232                            <div class="card-related"> 
233                            <#if getterUtil.getBoolean(ImagemPossuiFiltro.getData())> 
234                            <div class="card bg-${colorBg}"> 
235                            <#else> 
236                            <div class="card"> 
237                            </#if> 
238                                <div class="background-image bg-color-yes" style="background-image: url(${urlImage});"> 
239                                </div> 
240                                <div class="card-footer bg-${colorBg}"> 
241                                    <h3 class="font-size-default"> 
242                                        <a href="${viewURL}" class="stretched-link text-${colorText}" title="${article.getTitle(locale)}"> 
243                                            ${article.getTitle(locale)} 
244                                        </a> 
245                                    </h3> 
246                                </div> 
247                                </div> 
248                            </div> 
249                        </div>                     
250                    </#if> 
251                </#list> 
252            </div> 
253        </#if> 
254    </div> 
255</div> 
256 
257<style> 
258    .card-related h3 { 
259      font-size: 1.7rem; 
260      margin: 0; 
261      font-weight: normal; 
262
263    .card-related:hover .card { 
264        background-color: #690013!important; 
265
266    .card-related a { 
267        transition: color ease 0.4s; 
268
269    .card-related a:hover { 
270        color: #fff!important; 
271        text-decoration: none; 
272
273    .card-related { 
274      height: 100%; 
275
276    .card-related .card { 
277      margin: 0; 
278      height: 100%; 
279      transition: background-color ease 0.4s; 
280
281    .card-related .background-image { 
282      min-height: 257px; 
283      width: 100%; 
284      overflow: hidden; 
285      background-size: cover; 
286      background-position: center; 
287      background-repeat: no-repeat; 
288      mix-blend-mode: multiply; 
289      opacity: 1; 
290      transition: opacity ease 0.4s; 
291
292    .card-related .card-footer { 
293      padding: 1.25rem; 
294
295    .card-related .bg-color-no{ 
296      mix-blend-mode: normal; 
297
298    .card-related .font-size-smaller { 
299      font-size: 1.6rem; 
300
301    .card-related .font-size-bigger { 
302      font-size: 1.9rem; 
303
304 
305.blog-internal .banner-noticia4 { 
306    overflow: hidden; 
307    background-position: initial; 
308    background-size: contain; 
309    position: relative; 
310    background-repeat: no-repeat; 
311
312.blog-internal .title-absolute { 
313    position: inherit; 
314    bottom: 0; 
315    left: 0; 
316    width: 100%; 
317    padding: 1rem 6rem; 
318
319@media (max-width: 767.98px) { 
320.blog-internal .title-absolute h1 { 
321    position: inherit; 
322    z-index: 2; 
323    color: #c8b06e; 
324    font-size: 2rem; 
325    margin-left: -4rem; 
326    margin-right: -4rem; 
327
328
329 
330    .views .number-views { 
331    opacity: 1; 
332    align-items: center; 
333    margin-top: 1rem; 
334    padding: 0; 
335    background-color: initial !important; 
336    color: #72848c; 
337    font-size: 2rem; 
338
339    .views .icon-eye-open { 
340    opacity: 1; 
341    align-items: center; 
342    margin-top: 1rem; 
343    padding: 0; 
344    background-color: initial !important; 
345    color: #9c001c; 
346    font-size: 2rem; 
347
348 
349a.lfr-portal-tooltip.btn.btn-monospaced.btn-outline-borderless.btn-sm.btn-outline-secondary { 
350    display: flex; 
351
352</style> 
353<script> 
354    $(function(){ 
355        var container = $(".blog-internal").closest('.asset-full-content'); 
356        container.addClass('noticia-custom'); 
357 
358        var breadcrumb = $('ul.breadcrumb'); 
359        var brcCustom = $('.brc-noticias'); 
360        if(breadcrumb.length && brcCustom.length){ 
361            breadcrumb.find('li:first-child, li:last-child').addClass('item-brc'); 
362            breadcrumb.find('li:not(.item-brc)').remove(); 
363            breadcrumb.find('li:last-child').before(brcCustom.html()); 
364
365 
366        $('.asset-full-content').css({"opacity":"1","visibility":"visible"}); 
367        $('html, body').animate({ 
368            scrollTop: $(".noticia-custom .asset-anchor").offset().top 
369        }, 500); 
370        setTimeout(function(){ 
371            $('.content-share .inline-item svg').attr('viewBox', '0 0 512 512') 
372        }, 5000) 
373    }) 
374</script> 

Título Notícias Acontece na Unicap

Publicador de Conteúdos e Mídias

Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> liferay_ui["ratings"]  [in template "22092#22119#475677" at line 79, column 55]

----
Tip: It's the final [] step that caused this error, not those before it.
----
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: @liferay_ui["ratings"] className="com...  [in template "22092#22119#475677" at line 79, column 53]
----
1<#if !entries?has_content> 
2        <#if !themeDisplay.isSignedIn()> 
3            ${renderRequest.setAttribute("PORTLET_CONFIGURATOR_VISIBILITY", true)} 
4        </#if> 
5 
6        <div class="alert alert-info"> 
7            <@liferay_ui["message"] key="there-are-no-results" /> 
8        </div> 
9    </#if> 
10    <#if entries?has_content> 
11        <div class="row row-card-blog"> 
12            <#assign countItem = 0/> 
13            <#list entries as entry> 
14                <#assign 
15                    assetRenderer = entry.getAssetRenderer() 
16                /> 
17                <#if assetRenderer.getClassName()=="com.liferay.journal.model.JournalArticle"> 
18                    <#setting url_escaping_charset="UTF-8"> 
19                    <#assign 
20                        article = assetRenderer.getArticle() 
21                        docXml = saxReaderUtil.read(article.getContent()) 
22                        contentNoticia = docXml.valueOf("//dynamic-element[@name='Content']/dynamic-content/text()") 
23                        image = docXml.valueOf("//dynamic-element[@name='CoverImage']/dynamic-content/text()") 
24                        imgJson = jsonFactoryUtil.createJSONObject(image) 
25                        urlImage = "/documents/"+ imgJson.groupId +"/" +imgJson.fileEntryId +"/"+ imgJson.name?url +"/"+imgJson.uuid 
26                    /> 
27                    <#if urlImage??> 
28                        <#assign cardImage = true /> 
29                    <#elseif article.getSmallImageURL()?? && article.getSmallImageURL() != ""> 
30                        <#assign cardImage = true /> 
31                        <#assign urlImage = article.getSmallImageURL()/> 
32                    <#else> 
33                        <#assign cardImage = false /> 
34                    </#if> 
35                     
36                    <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) /> 
37                    <#if assetLinkBehavior != "showFullContent" && assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL)??> 
38                        <#assign viewURL = assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 
39                    </#if> 
40                    <div class="col-12 col-md-6 change-class hide"> 
41                        <div class="card card-custom-blog d-flex flex-column" > 
42                            <#if cardImage> 
43                                <div class="card-img-overflow"> 
44                                    <img class="card-img-top" src="${urlImage}" alt="${imgJson.name}"/> 
45                                </div> 
46                            </#if> 
47 
48                            <div class="card-body d-flex flex-column"> 
49                                <h3 class="text-dark">${stringUtil.shorten(htmlUtil.stripHtml(entry.getTitle(locale)), 100)}</h3> 
50                                <div class="d-none d-xl-block card-text text-dark"> 
51                                    <#if validator.isNotNull(entry.getDescription(locale))> 
52                                        <#assign content = entry.getDescription(locale) /> 
53                                    <#else> 
54                                        <#assign content = contentNoticia /> 
55                                    </#if> 
56                                    <#if cardImage> 
57                                        <p>${stringUtil.shorten(htmlUtil.stripHtml(content), 160)}</p> 
58                                    <#else> 
59                                        <p>${stringUtil.shorten(htmlUtil.stripHtml(content), 400)}</p> 
60                                    </#if> 
61                                </div> 
62                                <div class="d-block d-xl-none card-text text-dark"> 
63                                    <#if validator.isNotNull(entry.getDescription(locale))> 
64                                        <#assign content = entry.getDescription(locale) /> 
65                                    <#else> 
66                                        <#assign content = contentNoticia /> 
67                                    </#if> 
68                                    <#if cardImage> 
69                                        <p>${stringUtil.shorten(htmlUtil.stripHtml(content), 120)}</p> 
70                                    <#else> 
71                                        <p>${stringUtil.shorten(htmlUtil.stripHtml(content), 400)}</p> 
72                                    </#if> 
73                                </div> 
74                                <div class="footer-card-custom d-flex justify-content-between align-items-center mt-auto"> 
75                                    <div class="container-left"> 
76                                        <div class="likes-blog align-items-center comments-blog d-inline-flex"> 
77                                            <#if getterUtil.getBoolean(enableRatings)> 
78                                                <div> 
79                                                    <@liferay_ui["ratings"] 
80                                                        className="com.liferay.journal.model.JournalArticle" 
81                                                        classPK=entry.getClassPK() 
82                                                        type="like" 
83                                                    /> 
84                                                </div> 
85                                            </#if> 
86                                        </div> 
87                                        <div class="comments-blog align-items-center comments-blog d-inline-flex"> 
88                                            <#if getterUtil.getBoolean(enableComments)> 
89                                                <div> 
90                                                    <span class="inline-item inline-item-before"> 
91                                                        <@clay["icon"] symbol="comments" /> 
92                                                    </span> 
93                                                    <span class="count-comment" data-groupid="${entry.getGroupId()}" data-classname="${entry.getClassName()}" data-classpk="${entry.getClassPK()}">0</span> 
94                                                </div> 
95                                            </#if> 
96                                        </div> 
97                                    </div> 
98                                    <div class="container-link-ler-mais align-items-center comments-blog d-inline-flex">                                     
99                                        <a class="stretched-link text-primary text-uppercase" href="${viewURL}"><@liferay_ui["message"] key="read-more"/><i style="margin-left: 5px;" class="icon-arrow-right"></i></a> 
100                                    </div> 
101                                </div> 
102                            </div> 
103                             
104                        </div> 
105                    </div> 
106                <#else> 
107                    Erro na configuração do Publicador de Conteúdo 
108                    <script> 
109                        if(!window.displayAlertCards) { 
110                            alert("Por gentileza, configurar o publicador de conteúdos 'Notícias' para receber apenas conteúdos do tipo Notícia") 
111
112                        window.displayAlertCards = true; 
113                    </script> 
114                </#if> 
115            </#list> 
116        </div>   
117    </#if> 
118    <script type="text/javascript"> 
119        $(function(){ 
120           /* var iOS =  !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform); 
121            if(iOS && innerWidth < 768){ 
122                $('.card-custom-blog h3').css({ 
123                    'overflow': 'inherit', 
124                    'min-height': '45px', 
125                    'overflow': 'hidden', 
126                    'margin-bottom': '0' 
127                }) 
128 
129                $('.card-custom-blog .card-img-overflow').css({ 
130                    'height': '300px' 
131                }) 
132                 
133                $(window).resize(function(){ 
134                    if(innerWidth < 500){ 
135                        $('.card-custom-blog').addClass('card-hack-iphone') 
136                        $('.card-custom-blog').removeClass('card-hack-iphone-b') 
137                    }else{ 
138                        $('.card-custom-blog').addClass('card-hack-iphone-b') 
139                        $('.card-custom-blog').removeClass('card-hack-iphone') 
140
141                }) 
142            } */ 
143 
144 
145            var widthContainer = $('.row-card-blog').closest('section').width(); 
146            var cards = $(".change-class"); 
147            if(widthContainer > 850) { 
148                $(".change-class").addClass('col-lg-3'); 
149
150            cards.removeClass('hide'); 
151 
152            $('.count-comment').each(function(i, e){ 
153                var classPk = $(this).data('classpk'); 
154                var className = $(this).data('classname'); 
155                var groupid = $(this).data('groupid'); 
156                if(className && classPk){ 
157                    Liferay.Service( 
158                        '/comment.commentmanagerjsonws/get-comments-count', 
159
160                            groupId: groupid, 
161                            className: className, 
162                            classPK: classPk 
163                        }, 
164                        function(countComment) { 
165                            if(!isNaN(countComment)) { 
166                                $(e).text(countComment); 
167
168
169                    ); 
170
171            }) 
172        }) 
173    </script> 
174    <style> 
175        @media (min-width: 767.99px) { 
176            .card-custom-blog .card-title { 
177                max-height: 95px; 
178                overflow: hidden; 
179
180
181        .row-card-blog .change-class { 
182            margin-bottom: 1.625rem; 
183
184        .card-custom-blog.card:hover { 
185            opacity: 0.90; 
186
187        .card-custom-blog h3 { 
188            text-overflow: ellipsis; 
189            width: 100%; 
190            -webkit-line-clamp: 2; 
191            display: -webkit-box; 
192            -webkit-box-orient: vertical; 
193            overflow: hidden; 
194            height: auto; 
195
196 
197        .card-custom-blog .card-text { 
198            min-height: auto; 
199
200        .card-custom-blog .card-body { 
201            border-top: 1rem solid #690013; 
202
203        .card-custom-blog .card-img-overflow { 
204            max-height: 44.445%; 
205            overflow: hidden; 
206
207        .card-custom-blog .rating-thumb-down { 
208            display: none; 
209
210        .card-custom-blog .rating-thumb-up { 
211            opacity: 1; 
212            font-size: 1rem; 
213            padding: 0; 
214
215        .card-custom-blog .rating-thumb-up svg{ 
216            display: none; 
217
218        .card-custom-blog .rating-thumb-up span.inline-item:first-child{ 
219            font-family: 'fontawesome-alloy'; 
220            speak: none; 
221            font-style: normal; 
222            font-weight: normal; 
223            font-variant: normal; 
224            text-transform: none; 
225            line-height: 1; 
226            -webkit-font-smoothing: antialiased; 
227
228        .footer-card-custom { 
229            padding: 0.4375rem 0; 
230
231        .footer-card-custom *{ 
232            color: #690013!important; 
233            font-weight: 500!important; 
234
235        .card-custom-blog .rating-thumb-up span.inline-item:first-child:before{ 
236            content: "\f004"; 
237
238        @media (min-width: 1440.99px) { 
239            .card-custom-blog .taglib-ratings.like { 
240                padding-right: 3rem; 
241
242            .card-custom-blog { 
243                height: 450px !important; 
244
245
246        @media (max-width: 1440.98px) { 
247            .card-custom-blog { 
248                height: 340px !important; 
249
250            .card-custom-blog .card-text p{ 
251                display: -webkit-box; 
252                -webkit-line-clamp: 3; 
253                -webkit-box-orient: vertical; 
254                overflow: hidden; 
255
256
257        @media (max-width: 767.98px) { 
258            .card-custom-blog .card-img-overflow { 
259                max-height: none !important; 
260
261            .card-custom-blog { 
262               height: auto !important; 
263
264
265       .card-body {     
266         padding-bottom: 0 !important; 
267				 min-height: auto !important; 
268
269      /*  .card-hack-iphone{ min-height: 400px !important; max-height: 450px;} 
270        .card-hack-iphone-b{ min-height: 1000px !important; max-height: 1050px;} */ 
271 
272    </style>