1<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")>
2<#assign dLAppLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")>
3
4
5<#assign dlAppServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") />
6
7<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService")>
8<#assign assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyService")>
9
10<#setting url_escaping_charset='ISO-8859-1'>
11<#assign backLink = currentURL?url/>
12<#assign liferay_ui = taglibLiferayHash["/META-INF/liferay-ui.tld"] />
13<#assign strLang="Fr" />
14<#if locale.getLanguage()?lower_case == "de">
15 <#assign strLang = "De" />
16</#if>
17<#-- AP Block Title-->
18<#assign apBlockTitle= "" />
19<#if portletPreferences["blockTitle"+strLang]?? && portletPreferences["blockTitle"+strLang][0]?? >
20 <#assign apBlockTitle= portletPreferences["blockTitle"+strLang][0]>
21</#if>
22<#-- AP Block SubTitle -->
23<#assign apBlockSubTitle= "" />
24<#if portletPreferences["blockSubTitle"+strLang]?? && portletPreferences["blockSubTitle"+strLang][0]?? >
25 <#assign apBlockSubTitle= portletPreferences["blockSubTitle"+strLang][0]>
26</#if>
27<#-- AP Link Title -->
28<#assign apLinkTitle= "" />
29<#if portletPreferences["linkTitle"+strLang]?? && portletPreferences["linkTitle"+strLang][0]?? >
30 <#assign apLinkTitle= portletPreferences["linkTitle"+strLang][0]>
31</#if>
32<#-- AP Link URL -->
33<#assign apLinkURL= "" />
34<#if portletPreferences["linkURL"+strLang]?? && portletPreferences["linkURL"+strLang][0]?? >
35 <#assign apLinkURL= portletPreferences["linkURL"+strLang][0]>
36</#if>
37<#-- AP Link Sub Title-->
38<#assign apLinkSubTitle= "" />
39<#if portletPreferences["linkSubTitle"+strLang]?? && portletPreferences["linkSubTitle"+strLang][0]?? >
40 <#assign apLinkSubTitle= portletPreferences["linkSubTitle"+strLang][0]>
41</#if>
42
43
44<#assign plusButton = "PLUS D’ACTUALITÉS"/>
45<#if locale = "de_DE">
46 <#assign local_back = "MEHR NEWS"/>
47</#if>
48
49
50<style>
51.newsbackground{
52 background-color:#F3F3F2;
53}
54
55.summaryTxt2{
56 display: -webkit-box;
57 -webkit-line-clamp: 9;
58 -webkit-box-orient: vertical;
59 -webkit-box-align: top;
60 overflow: hidden;
61 text-overflow: ellipsis;
62}
63
64.plusButton{
65 background-color:#E22B28;
66 text-align:center;
67 padding-top:10px;
68 padding-bottom: 10px;
69 color:#ffffff;
70}
71
72.plusButton:hover{
73 color:#ffffff;
74 background-color:#E22B28;
75}
76
77.card-com-preview:hover {
78 box-shadow: rgba(0, 0, 0, 0.24) 0px 5px 10px
79}
80
81.card-com-preview h3 > a {color: black;}
82.card-com-preview h3 > a:hover {color: inherit;}
83
84.card-com-preview h3 {
85 font-size: 1.1em;
86 font-family: "Source Sans Pro", sans-serif;
87 line-height: 1.2;
88 font-weight: 700;
89}
90
91</style>
92
93
94
95<div class="container rounded-0 p-0">
96 <div class="row">
97 <#list entries as curEntry>
98 <#if curEntry.getAssetRenderer()??>
99 <#assign renderer = curEntry.getAssetRenderer() />
100 <#assign className = renderer.getClassName() />
101 <#if className == "com.liferay.journal.model.JournalArticle" && renderer.getArticle()?? >
102 <#assign journalArticle = renderer.getArticle() >
103 <#assign Title = journalArticle.getTitle(locale) />
104 <#assign entryTitle = htmlUtil.escape(renderer.getTitle(locale)) />
105 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
106 <#assign rootElement = document.getRootElement() >
107 <#assign viewURL = "/web/communication/detail?groupId=${curEntry.getGroupId()}&articleId=${journalArticle.getArticleId()}&redirect=${backLink}" />
108 <#-- image -->
109 <#assign xPathSelectorItem = saxReaderUtil.createXPath("dynamic-element[@name='Image']") >
110 <#if xPathSelectorItem.selectSingleNode(rootElement)?? >
111 <#--<#assign ItemNode = xPathSelectorItem.selectSingleNode(rootElement).selectSingleNode("dynamic-content") >
112 <#assign Image = ItemNode.getStringValue() >-->
113
114
115
116
117 <#attempt>
118 <#assign imagevalue = getStructureValue("Image",rootElement) />
119 <#if imagevalue != "">
120 <#assign Image = imagevalue.getData() />
121 </#if>
122 <#recover>
123 <#assign Image = "" />
124 </#attempt>
125
126
127
128 <#assign noImage = 0 />
129 <#if Image != "">
130 <#assign imgJson = jsonFactoryUtil.createJSONObject(Image)>
131 <#assign Image = "/documents/"+ imgJson.groupId +"/" + imgJson.uuid >
132 </#if>
133 <#else>
134 <#assign Image = "" >
135 <#assign noImage = 1 />
136 </#if>
137 <#if Image =="">
138 <#assign Image = "${themeDisplay.getPathThemeCss()}/../assets/img/default/default-news.jpg" />
139 <#assign noImage = 1 />
140 <#else>
141 <#assign Image = Image + "?imagePreview=1" >
142 </#if>
143 <#-- Type & Categories -->
144 <#assign strCategories = "">
145 <#assign Type = "" />
146 <#assign categoryList = curEntry.getCategories() />
147 <#list categoryList as category>
148 <#assign vocabulary = assetVocabularyService.getVocabulary(category.vocabularyId)>
149 <#if vocabulary.name = "020 Typologies">
150 <#if category.getTitle(locale) != "News-Accueil">
151 <#assign Type= category.getTitle(locale) />
152 </#if>
153 </#if>
154 <#if vocabulary.name = "010 Pouvoirs">
155 <#assign strCategories = category.getDescription(locale) />
156 </#if>
157 </#list>
158
159 <div class="col-lg-4 col-md-6">
160 <div class="card card-com-preview border-0 rounded-0 newsbackground mb-4 " onclick="window.open('${viewURL}');">
161 <div class="card-body pb-0" style="cursor:pointer;">
162 <div class="row" style="min-height:20px;">
163 <div class="col-6">
164 <p class="m-0 card-text"><small class="text-muted">${Type}</small></p>
165 </div>
166 <div class="col-6 text-right">
167 <p class="m-0 card-text"><small class="text-muted">${dateUtil.getDate(curEntry.getPublishDate(), "dd.MM.yyyy", locale)}</small></p>
168 </div>
169 </div>
170 <div class="row" style="min-height:45px;">
171 <div class="col-12">
172 <p class="m-0 card-text text-danger">${strCategories}</p>
173 </div>
174 </div>
175 <div class="row" style="min-height:50px;">
176 <div class="col-12" style="min-height:90px;">
177
178 <h3 class="mt-3" style="hyphens: auto;"><a href="${viewURL}" class="" target="_blank">${Title}</a></h3>
179
180 </div>
181 </div>
182 </div>
183 <#if noImage==0>
184 <div class="card-footer m-0 p-0 border-0 newsbackground" style="height:220px;overflow:hidden;">
185
186 <#if imgJson?? && imgJson.uuid??>
187 <#attempt>
188 <#assign imageFileEntry = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(imgJson.uuid?string,imgJson.groupId?number) />
189 <#assign imageFileVersion = imageFileEntry.getFileVersion().getFileVersionId()>
190 <#assign imageFile = dLAppLocalService.getFileVersion(imageFileVersion)>
191 <img data-fileentryid="${imageFile.fileEntryId}" alt="${imageFile.description}" src="${Image}" class="img-fluid" style="cursor: pointer;"/>
192
193 <#recover>
194 </#attempt>
195 </#if>
196
197 <#else>
198 <div class="card-footer pb-0 border-0 newsbackground align-top mb-2" style="min-height:200px;cursor:pointer;" onclick="window.open('${viewURL}');">
199 <div class="summaryTxt2">
200 ${curEntry.getSummary(locale)}
201 </div>
202 </#if>
203 </div>
204 <#if renderer.hasEditPermission(themeDisplay.getPermissionChecker())>
205 <@getIvsEditIcon/>
206 </#if>
207
208 </div>
209 </div>
210 </#if>
211 </#if>
212 </#list>
213 </div>
214</div>
215
216<#macro getIvsEditIcon >
217 <#if renderer.hasEditPermission(themeDisplay.getPermissionChecker())>
218 <#assign redirectURL = renderResponse.createRenderURL() />
219
220 ${redirectURL.setParameter("mvcPath", "/add_asset_redirect.jsp")}
221 ${redirectURL.setWindowState("pop_up")}
222
223 <#assign editPortletURL = renderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL)!"" />
224
225 <#if validator.isNotNull(editPortletURL)>
226 <div style="position:absolute;bottom:3px;right:3px;background:#f3f3f2ba;padding:5px 10px 5px 10px;border-radius: 3px;color:#343a40">
227 <#assign url="javascript:Liferay.Util.openWindow({id:'" + renderResponse.getNamespace() + "editAsset', title: 'Edit', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});" />
228 <a href="${url}"><i class="icon-pencil"></i></a>
229 </div>
230
231 </#if>
232 </#if>
233</#macro>
234
235
236<#function getStructureValue elementName xmlContent>
237 <#assign availableLanguagesXPathSelector = saxReaderUtil.createXPath("/*/@available-locales") />
238 <#assign available = "" />
239 <#if availableLanguagesXPathSelector.selectSingleNode(xmlContent)?? >
240 <#assign available = availableLanguagesXPathSelector.selectSingleNode(xmlContent) />
241 </#if>
242 <#if available?contains(locale.toString())>
243 <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='" + locale + "']" />
244 <#elseif available?contains("fr_FR")>
245 <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='fr_FR']" />
246 <#else>
247 <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='" + entry.getDefaultLanguageId() + "']" />
248 </#if>
249 <#assign xPathSelector = saxReaderUtil.createXPath(curElementXPath) />
250 <#if xPathSelector.selectSingleNode(xmlContent)?? >
251 <#assign structureValue = xPathSelector.selectSingleNode(xmlContent) />
252 <#else>
253 <#assign structureValue = "" />
254 </#if>
255 <#return structureValue/>
256</#function>