Publicador de contenidos
Se ha producido un error al procesar la plantilla.
Failed to "?eval" string with this error:

---begin-message---
Syntax error in ?eval-ed string in line 1, column 177:
Lexical error: encountered "u" (117), after "\"Elma Saiz, durante su participaci\u00f3n en un di\u00e1logo organizado por el Cercle d\u00b4Economia en Barcelona sobre \\".
---end-message---

The failing expression:
==> newsImage?eval  [in template "20097#20123#NOTICIA" at line 185, column 126]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign imageData = newsImage?eval  [in template "20097#20123#NOTICIA" in macro "getRelatedNews" at line 185, column 105]
	- Reached through: @getRelatedNews  [in template "20097#20123#NOTICIA" at line 130, column 4]
----
1<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")> 
2<#assign dlAppLocalServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] > 
3<#assign dlUtil = staticUtil["com.liferay.document.library.kernel.util.DLUtil"] > 
4<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") > 
5<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')> 
6<#assign assetPublisherHelper = serviceLocator.findService('com.liferay.asset.publisher.util.AssetPublisherHelper')> 
7<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]> 
8<#assign assetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")> 
9<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
10<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
11 
12<#assign articleId = .vars['reserved-article-id'].data> 
13<#assign className = "com.liferay.journal.model.JournalArticle"> 
14<#assign currentArticle = journalArticleLocalService.getLatestArticle(groupId, articleId, 0)/> 
15<#assign categoryList = assetCategoryLocalServiceUtil.getCategories(className, currentArticle.resourcePrimKey) > 
16<#assign tagList=assetTagLocalService.getTags(className, currentArticle.resourcePrimKey) > 
17<#assign tagSearchLayoutURL = portalUtil.getLayoutURL(layoutLocalService.fetchLayoutByFriendlyURL(themeDisplay.getLayoutSet().getGroupId(), themeDisplay.getLayoutSet().getPrivateLayout(), "/tag-search"),themeDisplay) > 
18 
19<#if (newsImage.getData())?? && newsImage.getData() != ""> 
20<#assign imageAlt = newsImage.getAttribute("alt")>   
21</#if> 
22 
23<#if !imageAlt?has_content> 
24     
25    <#assign imageAlt =.vars['reserved-article-title'].data> 
26</#if> 
27 
28 
29<div class="container ss-news"> 
30    <#if Antetitulo?? && Antetitulo.getData() != ""> 
31        <div class="row pt-2 pb-4 ml-1"> 
32        ${Antetitulo.getData()} 
33        </div> 
34    </#if> 
35    <#if title?? && title.getData() != ""> 
36        <div class="h3 row border-bottom pb-3 w-100 d-flex flex-nowrap"> 
37            <i class="ss-icon ss-icon-portal ss-icon--24 mr-3 mt-3"> 
38                <i class="path path1"></i> 
39                <i class="path path2"></i> 
40                <i class="path path3"></i> 
41            </i> 
42            <span> ${title.getData()}</span> 
43        </div> 
44    </#if> 
45 
46    <div class="row pt-2 pb-4 ml-1"> 
47        <div class="col-6 col-lg-2 p-0"> 
48            ${dateUtil.getDate(currentArticle.displayDate, "dd/MM/yyyy", locale, timeZone)} 
49        </div> 
50 
51        <div class="col-6 col-lg-4 p-0"> 
52            <#list categoryList as category> 
53                <p class="text--color mb-0"> 
54                    <strong> 
55                        ${category.getTitle(locale)} 
56                    </strong> 
57                </p> 
58            </#list> 
59        </div> 
60    </div> 
61 
62    <#if getterUtil.getBoolean(showImageInDetail.getData())> 
63        <#assign marginBottom = "pb-4" /> 
64    <#else> 
65        <#assign marginBottom = "pb-2" /> 
66    </#if> 
67 
68    <div class="row pt-2 ${marginBottom} ml-1"> 
69        ${author.getData()} 
70    </div> 
71 
72    <#if getterUtil.getBoolean(showImageInDetail.getData())> 
73        <div class="row pb-5 w-100"> 
74            <#if newsImage.getData()?? && newsImage.getData() != ""> 
75                <img class="w-100" alt="${getImageAlt(newsImage)}" 
76                     data-fileentryid="${newsImage.getAttribute("fileEntryId")}" src="${newsImage.getData()}"/> 
77            </#if> 
78        </div> 
79    </#if> 
80 
81    <#if mainText?? && mainText.getData() != ""> 
82        <div class="row"> 
83            <div class="col-12 p-0"> 
84            ${mainText.getData()} 
85            </div> 
86        </div> 
87    </#if> 
88 
89    <#if documenTitle?? && documenTitle.getData() != "" && documenTitle.getSiblings()?has_content> 
90        <div class="row mt-3 mb-3"> 
91            <#list documenTitle.getSiblings() as cur_documenTitle> 
92                <div class="col-12 col-md-6 col-lg-4"> 
93                    <a class="ss-text-link card ss-card shadow p-4 d-flex flex-column justify-content-between" href="${cur_documenTitle.document.getData()}" target="_blank" title="<@liferay_ui["message"] key="accesibility.new-window" />"> 
94                        <span class="h5 font-weight-bold">${cur_documenTitle.getData()}</span> 
95                        <i class="ss-icon ss-icon-download ss-icon--24 align-self-end"></i> 
96                    </a> 
97                </div> 
98            </#list> 
99        </div> 
100    </#if> 
101 
102    <div class="asset-tags mb-3"> 
103        <span class="taglib-asset-tags-summary"> 
104            <#if tagSearchLayoutURL?contains("/portal/layout")> 
105                <#list tagList as tag>       
106                    ${tag.name}  
107                </#list> 
108            <#else> 
109                <#list tagList as tag>   
110                    <#assign tagURL = renderResponse.createRenderURL() /> 
111 
112                    ${tagURL.setParameter("resetCur", "true")} 
113                    ${tagURL.setParameter("tag", tag.name)} 
114 
115                    <#assign searchURL = tagURL?keep_after("?")/> 
116                    <#assign searchURL = "${tagSearchLayoutURL}?" + searchURL /> 
117 
118                    <a class="label label-lg label-secondary text-uppercase" href="${searchURL}"> 
119                        ${tag.name} 
120                    </a> 
121                </#list> 
122            </#if> 
123        </span> 
124    </div> 
125 
126 
127</div> 
128 
129 <!-- Contenidos relacionados --> 
130   <@getRelatedNews />    
131 
132<script type="text/javascript"> 
133    // Correccion del scroll automatico que se realiza en el detalle de las noticias 
134    var esDetalleNoticia = true; 
135</script> 
136 
137<!-- Contenidos relacionados --> 
138<#macro getRelatedNews> 
139 
140    <#assign tagsListIds = []> 
141    <#list tagList as tag> 
142        <#assign tagsListIds = tagsListIds + [tag.tagId]> 
143    </#list> 
144 
145    <#assign groupIds = [groupId]> 
146    <#assign void = assetEntryQuery.setGroupIds(groupIds)> 
147    <#assign void = assetEntryQuery.setClassName(className)> 
148    <#assign void = assetEntryQuery.setAnyTagIds(tagsListIds)> 
149    <#assign void = assetEntryQuery.setOrderByCol1("publishDate")> 
150    <#assign relatedNews = assetEntryLocalService.getEntries(assetEntryQuery)> 
151 
152    <#if relatedNews?has_content && (relatedNews?size > 1) &&  (tagsListIds?size >= 1)> 
153 
154        <#assign baseUrl = themeDisplay.getScopeGroup().getPathFriendlyURL(themeDisplay.getLayout().isPrivateLayout(),themeDisplay)> 
155        <#assign groupUrl = groupLocalService.getGroup(themeDisplay.getLayout().getGroupId()).getFriendlyURL()> 
156 
157        <#assign relatedCount = 0 > 
158        <nav class="row mb-5 mt-5"> 
159            <div class="h4 col-12 mb-4"><@liferay_ui["message"] key="related.news" /></div> 
160			  <ul class="row mb-5 mt-5 list-related-news list-related-news"> 
161				<#list relatedNews as related> 
162					<#if journalArticleLocalService.getArticlesByResourcePrimKey(related.getClassPK())?has_content && (journalArticleLocalService.getArticlesByResourcePrimKey(related.getClassPK())?size >= 1)> 
163						<#if relatedCount < 3> 
164 
165							<#if related.getClassName() == className> 
166 
167								<#assign relatedCount = relatedCount + 1/> 
168 
169								<#assign assetRenderer = related.getAssetRenderer()/> 
170								<#assign journalArticle =  assetRenderer.getAssetObject() /> 
171 
172							<#-- Si es contenido web y de la misma estructura--> 
173								<#if articleId != journalArticle.articleId && currentArticle.getDDMStructureKey() == journalArticle.getDDMStructureKey()> 
174									<li class="col-12 col-md-6 col-xl-4"> 
175										<#assign document = saxReaderUtil.read(journalArticle.getContent())> 
176										<#assign rootElement = document.getRootElement()> 
177										<#assign defaultLanguageId = parseXml ("@default-locale", rootElement)> 
178										<#assign layoutURL = journalArticle.urlTitle /> 
179										<#assign newsTitle = getField("title", locale, defaultLanguageId, rootElement)!> 
180										<#assign newsImage = getField("newsImage", locale, defaultLanguageId, rootElement)!> 
181										<div class="ss-card ss-card--news card"> 
182											<#if newsImage?has_content> 
183												<div class="card-img-top"> 
184 
185													<#assign imageData = newsImage?eval /> 
186													<#assign image = getDocumentURL(imageData)/> 
187													<img src="${image}" alt="${imageAlt}"/> 
188												</div> 
189											</#if> 
190											<#if newsTitle?has_content && newsTitle != ""> 
191												<#assign newsUrl = getterUtil.getString(assetRenderer.getURLViewInContext(renderRequest, renderResponse,null)) /> 
192												<#if validator.isNotNull(newsUrl) > 
193													<div class="card-body shadow"> 
194														<a class="ss-text-link" 
195															href="${newsUrl}"  
196															title="Ir al contenido relacionado: ${newsTitle}">${newsTitle}</a> 
197													</div> 
198												<#elseif renderRequest.portlet.portletName == "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet" > 
199													<div class="card-body shadow">   
200														<a class="ss-text-link" 
201															href="${assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, related)}" title="Ir al contenido relacionado: ${newsTitle}">${newsTitle}</a> 
202													</div> 
203												</#if> 
204											</#if> 
205										</div> 
206									</li> 
207								</#if> 
208							</#if> 
209						</#if> 
210					</#if> 
211				</#list> 
212			</ul> 
213        </nav> 
214    </#if> 
215</#macro> 
216 
217<#function getField field languageId defaultLanguageId xml> 
218    <#local defaultSelector = "//dynamic-content[@language-id='" + defaultLanguageId + "' and ancestor-or-self::*[@name='" + field + "']]"> 
219    <#local localeSelector = "//dynamic-content[@language-id='" + languageId + "' and parent::*[@name='" + field + "']]"> 
220    <#local selector = saxReaderUtil.createXPath(localeSelector)> 
221    <#local value = selector.selectSingleNode(xml)!> 
222    <#if value?has_content><#return value.getText()></#if> 
223    <#local selector = saxReaderUtil.createXPath(defaultSelector)> 
224    <#local value = selector.selectSingleNode(xml)!> 
225    <#if value?has_content><#return value.getText()></#if> 
226    <#return ""> 
227</#function> 
228 
229<#function parseXml xpath xml> 
230    <#local selector = saxReaderUtil.createXPath(xpath)> 
231    <#local result = selector.selectSingleNode(xml)!> 
232    <#if result?has_content><#return result.getStringValue()></#if> 
233    <#return ""> 
234</#function> 
235 
236<#function getDocumentURL documentJson> 
237     
238    <#attempt> 
239    <#if documentJson?has_content> 
240        <#assign 
241        uuid = documentJson.uuid 
242        groupId = documentJson.groupId 
243        dlFile = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(uuid,groupId?number) 
244        documentURL =  dlUtil.getPreviewURL(dlFile, dlFile.getFileVersion(), themeDisplay, '') 
245        /> 
246        <#return documentURL> 
247    </#if> 
248    <#recover> 
249     
250    <#assign documentURL ="${themeDisplay.getPathThemeImages()}/ImagenDefectoNoticia.png"/> 
251    <#return documentURL> 
252    <!-- Si se produce una excepción, haz algo aquí --> 
253     
254    </#attempt> 
255     
256    <#return ''> 
257</#function> 
258 
259<#function getImageAlt imageVar> 
260    <#assign imageAlt = imageVar.getAttribute("alt")> 
261    <#if !imageAlt?has_content> 
262        <#assign imageAlt =.vars['reserved-article-title'].data> 
263    </#if> 
264    <#return imageAlt> 
265     
266</#function> 
Publicador de contenidos
Twitter RvstaSegSocial
Organismos lista