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>
Avez-vous besoin d'aide ?