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:hover {
78 box-shadow: rgba(0, 0, 0, 0.24) 0px 5px 10px
79}
80
81
82 /* Number of Cards by Row based on Viewport */
83 @media (min-width: 576px) {
84 .card-deck .card {
85 min-width: 50.1%; /* 1 Column */
86 margin-bottom: 12px;
87 }
88 }
89
90 @media (min-width: 768px) {
91 .card-deck .card {
92 min-width: 33.4%; /* 2 Columns */
93 }
94 }
95
96 @media (min-width: 992px) {
97 .card-deck .card {
98 min-width: 25.1%; /* 3 Columns */
99 }
100 }
101
102
103</style>
104
105
106
107<div class="container rounded-0 p-0">
108 <div class="card-deck">
109 <#list entries as curEntry>
110 <#assign renderer = curEntry.getAssetRenderer() />
111 <#assign className = renderer.getClassName() />
112 <#if className == "com.liferay.journal.model.JournalArticle" && renderer.getArticle()?? >
113 <#assign journalArticle = renderer.getArticle() >
114 <#assign Title = journalArticle.getTitle(locale) />
115 <#assign entryTitle = htmlUtil.escape(renderer.getTitle(locale)) />
116 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
117 <#assign rootElement = document.getRootElement() >
118 <#assign viewURL = "/web/communication/detail?groupId=${curEntry.getGroupId()}&articleId=${journalArticle.getArticleId()}&redirect=${backLink}" />
119 <#-- image -->
120 <#assign xPathSelectorItem = saxReaderUtil.createXPath("dynamic-element[@name='Image']") >
121 <#if xPathSelectorItem.selectSingleNode(rootElement)?? >
122 <#--<#assign ItemNode = xPathSelectorItem.selectSingleNode(rootElement).selectSingleNode("dynamic-content") >
123 <#assign Image = ItemNode.getStringValue() >-->
124
125
126
127
128 <#attempt>
129 <#assign Image = getStructureValue("Image",rootElement).getData() />
130 <#recover>
131 <#assign Image = "" />
132 </#attempt>
133
134
135
136 <#assign noImage = 0 />
137 <#if Image != "">
138 <#assign imgJson = jsonFactoryUtil.createJSONObject(Image)>
139 <#assign Image = "/documents/"+ imgJson.groupId +"/" + imgJson.uuid >
140 </#if>
141 <#else>
142 <#assign Image = "" >
143 <#assign noImage = 1 />
144 </#if>
145 <#if Image =="">
146 <#assign Image = "${themeDisplay.getPathThemeCss()}/../assets/img/default/default-news.jpg" />
147 <#assign noImage = 1 />
148 <#else>
149 <#assign Image = Image + "?imagePreview=1" >
150 </#if>
151 <#-- Type & Categories -->
152 <#assign strCategories = "">
153 <#assign Type = "" />
154 <#assign categoryList = curEntry.getCategories() />
155 <#list categoryList as category>
156 <#assign vocabulary = assetVocabularyService.getVocabulary(category.vocabularyId)>
157 <#if vocabulary.name = "020 Typologies">
158 <#if category.getTitle(locale) != "News-Accueil">
159 <#assign Type= category.getTitle(locale) />
160 </#if>
161 </#if>
162 <#if vocabulary.name = "010 Pouvoirs">
163 <#assign strCategories = category.getDescription(locale) />
164 </#if>
165 </#list>
166
167 <div class="card border-0 rounded-0 newsbackground mb-4 ">
168 <div class="card-body pb-0" onclick="window.open('${viewURL}');" style="cursor:pointer;">
169 <div class="row" style="min-height:20px;">
170 <div class="col-6">
171 <p class="m-0 card-text"><small class="text-muted">${Type}</small></p>
172 </div>
173 <div class="col-6 text-right">
174 <p class="m-0 card-text"><small class="text-muted">${dateUtil.getDate(curEntry.getPublishDate(), "dd.MM.yyyy", locale)}</small></p>
175 </div>
176 </div>
177 <div class="row" style="min-height:45px;">
178 <div class="col-12">
179 <p class="m-0 card-text text-danger">${strCategories}</p>
180 </div>
181 </div>
182 <div class="row" style="min-height:50px;">
183 <div class="col-12">
184 <h4 class="mt-3" style="hyphens: auto;">${Title}</h4>
185 </div>
186 </div>
187 </div>
188 <#if noImage==0>
189 <div class="card-footer m-0 p-0 border-0 newsbackground" style="height:220px;overflow:hidden;">
190 <a href="${viewURL}" class="" target="_blank">
191 <#if imgJson?? && imgJson.uuid??>
192 <#attempt>
193 <#assign imageFileEntry = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(imgJson.uuid?string,imgJson.groupId?number) />
194 <#assign imageFileVersion = imageFileEntry.getFileVersion().getFileVersionId()>
195 <#assign imageFile = dLAppLocalService.getFileVersion(imageFileVersion)>
196 <img data-fileentryid="${imageFile.fileEntryId}" alt="${imageFile.description}" src="${Image}" class="img-fluid" />
197
198 <#recover>
199 </#attempt>
200 </#if>
201 </a>
202 <#else>
203 <div class="card-footer pb-0 border-0 newsbackground align-top mb-2" style="min-height:200px;cursor:pointer;" onclick="window.open('${viewURL}');">
204 <div class="summaryTxt2">
205 ${curEntry.getSummary(locale)}
206 </div>
207 </#if>
208 </div>
209 <#if renderer.hasEditPermission(themeDisplay.getPermissionChecker())>
210 <@getIvsEditIcon/>
211 </#if>
212
213 </div>
214
215 </#if>
216 </#list>
217 </div>
218</div>
219
220<#macro getIvsEditIcon >
221 <#if renderer.hasEditPermission(themeDisplay.getPermissionChecker())>
222 <#assign redirectURL = renderResponse.createRenderURL() />
223
224 ${redirectURL.setParameter("mvcPath", "/add_asset_redirect.jsp")}
225 ${redirectURL.setWindowState("pop_up")}
226
227 <#assign editPortletURL = renderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL)!"" />
228
229 <#if validator.isNotNull(editPortletURL)>
230 <div style="position:absolute;bottom:3px;right:3px;background:#f3f3f2ba;padding:5px 10px 5px 10px;border-radius: 3px;color:#343a40">
231 <#assign url="javascript:Liferay.Util.openWindow({id:'" + renderResponse.getNamespace() + "editAsset', title: 'Edit', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});" />
232 <a href="${url}"><i class="icon-pencil"></i></a>
233 </div>
234
235 </#if>
236 </#if>
237</#macro>
238
239
240<#function getStructureValue elementName xmlContent>
241 <#assign availableLanguagesXPathSelector = saxReaderUtil.createXPath("/*/@available-locales") />
242 <#assign available = "" />
243 <#if availableLanguagesXPathSelector.selectSingleNode(xmlContent)?? >
244 <#assign available = availableLanguagesXPathSelector.selectSingleNode(xmlContent) />
245 </#if>
246 <#if available?contains(locale.toString())>
247 <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='" + locale + "']" />
248 <#elseif available?contains("fr_FR")>
249 <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='fr_FR']" />
250 <#else>
251 <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='" + entry.getDefaultLanguageId() + "']" />
252 </#if>
253 <#assign xPathSelector = saxReaderUtil.createXPath(curElementXPath) />
254 <#if xPathSelector.selectSingleNode(xmlContent)?? >
255 <#assign structureValue = xPathSelector.selectSingleNode(xmlContent) />
256 <#else>
257 <#assign structureValue = "" />
258 </#if>
259 <#return structureValue/>
260</#function>