Communiqués, conférences de presse et publication
An error occurred while processing the template.
Java method "jdk.proxy4.$Proxy190.getFileEntryByUuidAndGroupId(String, long)" threw an exception when invoked on jdk.proxy4.$Proxy190 object "com.liferay.document.library.internal.service.FriendlyURLDLFileEntryLocalServiceWrapper@34add71c"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign imageFileEntry = dlFileEntryL... [in template "10155#10193#14104459" in function "findImageFileEntryByJournalArticle" at line 184, column 33]
- Reached through: @listItem entry [in template "10155#10193#14104459" at line 45, column 33]
---- 1<style> 2.image-container { 3 width: 100%; 4 aspect-ratio: 3 / 2; /* Maintain 3:2 aspect ratio */ 5 overflow: hidden; 6 position: relative; 7} 8 9.image-fit { 10 width: 100%; 11 /* height: 100%;*/ 12 object-fit: cover; /* Ensures the image fills the container without distortion */ 13 position: absolute; 14 top: 0; 15 left: 0; 16} 17.image-cursor-pointer{ 18 cursor: pointer; 19} 20.min-height-45 { 21 min-height: 4.5rem; 22} 23</style> 24 25 26<#-- Import JSONFactoryUtil to parse the JSON string --> 27<#assign jsonFactoryUtil = staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"]> 28<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")> 29<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 30<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")> 31<#assign assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyService")> 32 33 34 35<#setting url_escaping_charset='ISO-8859-1'> 36 <#assign backLink = currentURL?url/> 37 38 39 40 41<div> 42 <#if entries?has_content> 43 <ul class="list-unstyled d-flex flex-wrap justify-content-between"> 44 <#list entries as entry> 45 <@listItem entry /> 46 </#list> 47 </ul> 48 </#if> 49</div> 50 51 52<#macro listItem entry> 53 54 <li class="col-12 /*col-sm-6*/ col-md-6 col-lg-6 col-xl-4 d-flex "> 55 56 57 <#assign renderer = entry.getAssetRenderer() /> 58 <#assign className = renderer.getClassName() /> 59 <#if className == "com.liferay.journal.model.JournalArticle" && renderer.getArticle()?? > 60 <#assign journalArticle = renderer.getArticle() /> 61 <#assign viewURL = "/web/communication/detail?groupId=${entry.getGroupId()}&articleId=${journalArticle.getArticleId()}&redirect=${backLink}" /> 62 63 64 65 66 67 <#assign imageFileEntry = findImageFileEntryByArticle(journalArticle) /> 68 <#assign strCategories = ""> 69 <#assign typologie = "" /> 70 71 <#assign categoryList = article.getCategories() /> 72 <#list categoryList as category> 73 <#assign vocabulary = assetVocabularyService.getVocabulary(category.vocabularyId)> 74 <#if vocabulary.name = "020 Typologies"> 75 <#if category.getTitle(locale) != "News-Accueil"> 76 <#assign typologie= category.getTitle(locale) /> 77 </#if> 78 </#if> 79 <#if vocabulary.name = "010 Pouvoirs"> 80 <#assign strCategories = category.getDescription(locale) /> 81 </#if> 82 <#if vocabulary.name = "News ICT VS"> 83 <#assign strCategories = strCategories + "#" +category.getTitle(locale)+" " /> 84 </#if> 85 </#list> 86 87 88 <article class="position-relative mb-4 bg-light w-100"> 89 90 <#--<article class="d-flex flex-row flex-nowrap position-relative mb-4">--> 91 92 93 94 <header class="p-3 bg-light w-100"> 95 <div class="d-flex justify-content-between text-muted small"> 96 <p class="mb-0">${typologie}</p> 97 <time datetime="${ja.getDisplayDate()?datetime?string("yyyy-MM-dd")}"> 98 ${ja.getDisplayDate()?datetime?string("dd.MM.yyyy")} 99 </time> 100 </div> 101 <p class="text-vs-red">${strCategories}</p> 102 <h3 class="min-height-45"> 103 <a href="${viewURL}" class="font-weight-bolder text-vs-black stretched-link"> 104 ${entry.getTitle(locale)} 105 </a> 106 </h3> 107 108 109 <#attempt> 110 <#if journalArticle.isSmallImage()> 111 112 <#elseif entry.getDescription(locale)?trim != "" && !imageFileEntry?has_content> 113 <div class=""> 114 ${entry.getSummary(locale)} 115 </div> 116 117 </#if> 118 <#recover> 119 </#attempt> 120 121 122 123 124 125 126 </header> 127 128 <#if imageFileEntry?has_content> 129 <figure class="image-container mb-0 w-100"> 130 <@displayImage imageFileEntry /> 131 </figure> 132 <#elseif journalArticle?? > 133 <#attempt> 134 <#if journalArticle.isSmallImage()> 135 <#assign thumbnailUrl=journalArticle.getSmallImageURL() /> 136 <figure class="image-container mb-0 w-100"> 137 <img class="image-fit image-cursor-pointer" src="${thumbnailUrl}" alt="Thumbnail"> 138 <figure class="image-container"> 139 </#if> 140 <#recover> 141 142 </#attempt> 143 </#if> 144 </article> 145 146 </li> 147 </#if> 148</#macro> 149 150<!-- Fonction pour rechercher l'image --> 151<#function findImageFileEntryByArticle journalArticle> 152 <#assign imageFileEntry = ""?default("") /> 153 <#assign ja = journalArticle /> 154 <#if ja?exists && ja?has_content> 155 <#assign imageFileEntry = findImageFileEntryByJournalArticle(ja) /> 156 </#if> 157 <#return imageFileEntry /> 158</#function> 159 160 161 162<#function findImageFileEntryByJournalArticle ja> 163 164 <#assign imageFileEntry = ""?default("nix") /> 165 <#if ja?exists && ja?has_content> 166 <#assign article = AssetEntryLocalService.fetchEntry("com.liferay.journal.model.JournalArticle", ja.resourcePrimKey) /> 167 <#assign ddmFormValuesReader = article.getAssetRenderer().getDDMFormValuesReader()> 168 <#assign ddmFormValues = ddmFormValuesReader.getDDMFormValues()> 169 <#assign ddmFormFieldValuesMap = ddmFormValues.getDDMFormFieldValues() > 170 <#if ddmFormFieldValuesMap?has_content> 171 <#list ddmFormFieldValuesMap as fmval> 172 <#assign val = fmval.getValue()> 173 <#assign name = fmval.getName()> 174 <#if val?exists && val?has_content> 175 <!-- Com & media --> 176 <#if name == "Image"> 177 <#assign data = val.getString(locale)?default("false")> 178 <#if data != "false"> 179 <#assign jsonObject = jsonFactoryUtil.createJSONObject(data)> 180 <#assign groupIdString = jsonObject.getString("groupId")!"0" /> 181 <#if groupIdString?has_content> 182 <#assign imageGroupId = jsonObject.getString("groupId")?number?long /> 183 <#assign imageUuid = jsonObject.getString("uuid") /> 184 <#assign imageFileEntry = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(imageUuid, imageGroupId) /> 185 </#if> 186 </#if> 187 </#if> 188 <!-- Newsfeed --> 189 <#if name == "ImageFieldSet"> 190 <#assign nestedFields = fmval.getNestedDDMFormFieldValues()> 191 <#if nestedFields?has_content> 192 <#list nestedFields as nestedField> 193 <#assign nestedVal = nestedField.getValue()> 194 <#assign nestedName = nestedField.getName()> 195 <#if nestedVal?exists && nestedVal?has_content> 196 <#assign nestedData = nestedVal.getString(locale)?default("No data available")> 197 <#if nestedName == "Image"> 198 199 200 <#if nestedName == "Image"> 201 <#attempt> 202 <#assign imageObject = nestedData?eval> 203 <#if imageObject?? && imageObject.fileEntryId??> 204 <#assign imageGroupId = imageObject.groupId?number?long /> 205 <#assign imageFileEntry = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(imageObject.uuid, imageGroupId) /> 206 </#if> 207 <#recover> 208 </#attempt> 209 </#if> 210 211 212 213 214 215 </#if> 216 </#if> 217 </#list> 218 </#if> 219 </#if> 220 </#if> 221 </#list> 222 </#if> 223 </#if> 224 <#return imageFileEntry /> 225</#function> 226 227 228 229 230<#macro displayImage imageFileEntry> 231 <#if imageFileEntry?has_content> 232 <#assign imageUrl = "/documents/" + imageFileEntry.getGroupId() + "/" + imageFileEntry.getUuid() /> 233 <#assign latestFileVersion = imageFileEntry.getLatestFileVersion(true) /> 234 <picture data-fileentryid="${imageFileEntry.getFileEntryId()}"> 235 <source srcset="${themeDisplay.getPortalURL()}/o/adaptive-media/image/${imageFileEntry.getFileEntryId()}/Preview-1000x0/${imageFileEntry.getFileName()}" /> 236 <img class="image-fit image-cursor-pointer" alt="Foo alt-image description" data-fileentryid="${imageFileEntry.getFileEntryId()}" src="${imageUrl}" /> 237 </picture> 238 </#if> 239</#macro> 