Nos derniers rapports et publications récentes

Filtre

Date
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> rapport  [in template "6026335353695249076#20119#648874" at line 6, column 36]

----
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: @getFileExtensionFromUrl url="${rappo...  [in template "6026335353695249076#20119#648874" at line 6, column 3]
----
1<#assign fileExtension = "other-ext"> 
2<#assign extensions = [".pdf", ".pptx", ".xls", ".docx", "doc", "xlsx", "ppt"]> 
3	 
4  <@getFileExtensionFromUrl url="${rapport.getData()}"/> 
5	 
6<div class="card rapport-publication h-100"> 
7	<div class="card-bd"> 
8	 
9		 
10		<div class="card-content"> 
11		<div class="card-head"> 
12			<div class="file-ext-icon file-ext-${fileExtension?replace(".", "")}"></div> 
13		<h3 class="card-title"> ${.vars["reserved-article-title"].data}</h3> 
14		</div> 
15  
16	 
17</div> 
18	<div class="card-text"><small class="text-muted"> <#assign publishDate_Data = getterUtil.getString(publishDate.getData())> 
19<#if publishDate??> 
20<#if validator.isNotNull(publishDate_Data)> 
21	<#assign publishDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publishDate_Data, locale)> 
22 
23	Publié le: ${dateUtil.getDate(publishDate_DateObj, "dd/MM/yyyy", locale)} 
24	 
25</#if> 
26</#if> 
27  </small></div> 
28 
29		<div class="d-flex justify-content-between align-items-center card-footer"> 
30			<a href="${rapport.getData()}" class="btn btn-outline-primary"> 
31							<img src="/documents/d/iam-portal/icon-eye"> 
32							${languageUtil.get(locale, "View")} 
33							</a> 
34			<a download href="${rapport.getData()}" class="btn btn-primary"> <img src="/documents/d/iam-portal/icon-download"> 
35								${languageUtil.get(locale, "Download")} </a> 
36		</div> 
37	</div> 
38</div> 
39  
40<#macro getFileExtensionFromUrl url> 
41 
42<#assign urlParts  = url?split("/")> 
43 
44 
45<#-- Iterate over the array of strings --> 
46<#list urlParts as string> 
47    <#list extensions as ext> 
48        <#if string?ends_with(ext)> 
49            <#assign fileExtension = ext> 
50            <#break> 
51        </#if> 
52    </#list> 
53    <#if fileExtension != "other-ext"> 
54        <#break> 
55    </#if> 
56</#list> 
57</#macro> 
58 
59 
60 
61<style> 
62.rapport-publication { 
63    padding: 20px; 
64    width: 100%; 
65    padding: 20px 4px; 
66
67 
68.rapport-publication .card-content { 
69	padding: 10px; 
70	flex-grow: 1; 
71
72.rapport-publication .card-head { 
73    display: flex; 
74		gap :5px 
75
76.rapport-publication .card-content .card-text { 
77	margin-top: 5px; 
78
79 
80.rapport-publication .card-footer { 
81	background-color: transparent; 
82	border-top: 0; 
83 
84	    gap: 31px !important; 
85    padding: 0px 28px; 
86
87.rapport-publication .card-footer .btn{ 
88    padding: 5px 0 !important; 
89    width: 60%; 
90    font-size: 12px; 
91	display: flex; 
92	align-items: center; 
93	justify-content: center; 
94  gap: 6px; 
95	font-size: 14px; 
96 
97	font-family: Montserrat-SemiBold; 
98 
99
100.rapport-publication .card-footer .btn-outline-primary{ 
101	color: #005BC3; 
102	border-color: #005BC3; 
103
104.rapport-publication .card-footer .btn-primary{ 
105	color: #fff; 
106	background-color: #F96511; 
107	border-color: #F96511; 
108
109.rapport-publication .card-title-1 { 
110   font-size: 12px; 
111color:##1F5B9B; 
112    font-family: Montserrat-semiBold; 
113
114.rapport-publication .text-muted { 
115    font-size: 14px; 
116color:#1F5B9B; 
117
118 
119.rapport-publication .card-bd { 
120  display: flex; 
121	flex-direction: column; 
122	gap: 10px; 
123	height: 100%; 
124
125 
126.rapport-publication .card-title { 
127  color: #28313A; 
128  font-family: Montserrat-SemiBold; 
129  font-size: 17px; 
130	    width: 100%; 
131
132 
133.rapport-publication .card-content .text-muted { 
134   color: #707070; 
135   font-family: Montserrat-Medium; 
136   font-size: 14px; 
137
138 
139.rapport-publication .card-content { 
140   display:flex; 
141	 flex-direction: column; 
142	 gap: 5px; 
143
144 
145.rapport-publication .file-ext-icon { 
146    width: 70px; 
147    height: 55px; 
148 
149    background-repeat: no-repeat; 
150    background-position: center; 
151
152 
153.rapport-publication .file-ext-pdf { 
154  background-image: url(/documents/d/iam-portal/icon-pdf); 
155
156 
157 
158.rapport-publication .file-ext-docx, .rapport-publication .file-ext-doc { 
159  background-image: url(/documents/d/iam-portal/icon-docx-1); 
160
161 
162.rapport-publication .file-ext-xls, .rapport-publication .file-ext-xlsx { 
163  background-image: url(/documents/d/iam-portal/icon-xls); 
164
165 
166.rapport-publication .file-ext-ppt, .rapport-publication .file-ext-pptx { 
167  background-image: url(/documents/d/iam-portal/icon-ppt); 
168
169 
170.rapport-publication .file-ext-other-ext { 
171  background-image: url(/documents/d/iam-portal/icon-other-ext); 
172
173.rapport-publication  .card-text  { 
174    margin-left: 20px; 
175
176 
177 
178@media screen and (max-width: 767px) { 
179  .rapport-publication .card-title { 
180    font-size: 16px; 
181
182		 
183	.rapport-publication .text-muted { 
184    font-size: 14px; 
185
186	 
187	.rapport-publication .card-content { 
188    gap: 10px; 
189
190	  
191.rapport-publication  .card-text  { 
192    margin-left: 10px; 
193
194 
195	  
196	 .rapport-publication { 
197     padding: 10px; 
198
199		 
200	 .rapport-publication .card-bd { 
201      gap: 10px; 
202
203		 
204	 .rapport-publication .card-footer { 
205        padding: 0 !important; 
206				gap: 10px !important; 
207        flex-wrap: wrap; 
208        justify-content: center !important; 
209
210		  
211		 .rapport-publication .card-footer .btn { 
212		    width: 100%; 
213
214		  
215		 .rapport-publication .card-head { 
216        flex-wrap: wrap; 
217				gap: 10px !important; 
218        justify-content: center; 
219
220			 
221			.row { 
222			   gap: 10px !important; 
223
224			 
225			.row .col-md-6 { 
226			   width: 250px; 
227
228			 
229		 
230
231 
232</style>