Projets proposés

 

À l'issue du vote des Targéens, voici le palmarès des projets en fonction du nombre de votes obtenus.

Contenu avec Participation citoyenne Patrimoine .

Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> listTags[1]  [in template "10108#1166444#6869110" at line 65, column 62]

----
Tip: It's the final [] step that caused this error, not those before it.
----
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: #assign etiquette = listTags[1].getNa...  [in template "10108#1166444#6869110" at line 65, column 41]
----
1<#function getField fields name> 
2	<#if fields?is_sequence> 
3		<#list fields as field> 
4			<#if field.getName() == name> 
5				<#return field.getValue().getString(local)> 
6			</#if> 
7		</#list> 
8	</#if> 
9</#function> 
10 
11<#function getImageURL rootElement name> 
12    <#assign 
13		xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${name}']") 
14		Visuel = xPathSelector.selectSingleNode(rootElement) 
15
16    <#return Visuel.getStringValue()> 
17</#function> 
18 
19<#if serviceLocator??> 
20	<#assign assetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")> 
21</#if> 
22 
23<#-- Filter by tag (reload the agregator) --> 
24<#assign selectedTag = '' /> 
25<#if currentURL?contains("p_r_p_categoryId") > 
26	<#assign selectedTag = request.getParameter("p_r_p_categoryId") /> 
27	<!-- Param selected : ${selectedTag} --> 
28<#else> 
29	<!-- No Param selected --> 
30	<#assign selectedTag = '' /> 
31</#if> 
32 
33<#assign allTags = portletPreferences['queryValues0'] /> 
34<#if allTags?has_content > 
35    <article class="category-navigator"> 
36		<@displayTags allTags /> 
37    </article> 
38</#if> 
39 
40<article class="cagc-general-aggregator cagc-filtered-aggregator"> 
41    <#if entries?has_content> 
42     
43    <ul class="asset-card-list"> 
44	 
45		<#list entries as curEntry> 
46			<#assign  
47				renderer = curEntry.getAssetRenderer() 
48				className = renderer.getClassName() 
49			/> 
50 
51			<#if className == "com.liferay.journal.model.JournalArticle"> 
52 
53				<#assign 
54					journalArticle = renderer.getArticle()  
55					document = saxReaderUtil.read(journalArticle.getContent())  
56					rootElement = document.getRootElement() 
57					fields = renderer.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValues() 
58					 
59					<#-- Get the tag (etiquette) of the current entry --> 
60					etiquette = '' 
61					listTags = assetTagLocalService.getAssetEntryAssetTags(curEntry.getEntryId()) 
62				/> 
63				 
64				<#if listTags?size != 0 > 
65					<#assign etiquette = listTags[1].getName() /> <#-- TODO : change 1 to 0 --> 
66				</#if> 
67				 
68				<#if etiquette == selectedTag || selectedTag == ''> 
69				<li class="component-card text-break"> 
70					<#-- ------- initialisation des champs structure ---------------- --> 
71					<#assign  
72						NumeroDuProjet    = "${getField(fields, 'NumeroDuProjet')}" 
73						NombreDeVotes     = "${getField(fields, 'NombreDeVotes')}" 
74						Thematique        = "${getField(fields, 'Thematique')}" 
75						NomDuProjet       = "${getField(fields, 'NomDuProjet')}" 	 
76						Resume   		  = "${getField(fields, 'Resume')}"		 
77						Description       = "${getField(fields, 'Description')}" 
78						Chiffrage    	  = "${getField(fields, 'Chiffrage')}" 
79						IllustrationProjet= "${getImageURL(rootElement, 'IllustrationProjet')}" 
80						Localisation  	  = "${getImageURL(rootElement, 'Localisation')}" 
81
82						 
83					<#if IllustrationProjet?trim!= ""> 
84						<#assign 
85						pageObject1 = jsonFactoryUtil.createJSONObject(IllustrationProjet) 
86						localGroupId = pageObject1.getLong('groupId') 
87						localUuid = pageObject1.getString('uuid') 
88						IllustrationProjet = "/c/document_library/get_file?uuid=${localUuid}&groupId=${localGroupId}"  
89
90					</#if> 
91					<#if Localisation?trim!= ""> 
92						<#assign 
93						pageObject2 = jsonFactoryUtil.createJSONObject(Localisation) 
94						localGroupId = pageObject2.getLong('groupId') 
95						localUuid = pageObject2.getString('uuid') 
96						Localisation = "/c/document_library/get_file?uuid=${localUuid}&groupId=${localGroupId}" 
97
98					</#if> 
99					<#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) /> 
100 
101					<#--  ------- gabarit d affichage ----------------	--> 
102					 
103					<div class="card card-full"> 
104						<#if IllustrationProjet?trim != ""> 
105							<img alt="" class="image-size" src="${IllustrationProjet}" /> 
106						</#if> 
107						<#if NumeroDuProjet?trim != ""> 
108							<p class="numeroDuProjet">${NumeroDuProjet}</p> 
109						</#if> 
110						<div class="card-body cardbody"> 
111							<div class="info"> 
112								<#if NombreDeVotes?trim != ""> 
113									<p class="nombreDeVotes">Nb points : ${NombreDeVotes}</p> 
114								<#else> 
115									<p class="nombreDeVotes">Nb points : 0</p> 
116								</#if> 
117								<#if NomDuProjet?trim != ""> 
118									<h2 class="headnews" > 
119										${NomDuProjet} 
120									</h2> 
121								</#if> 
122								<div class="ctn-resume"> 
123								<#if Resume?trim != ""> 
124									<p class="resume">${Resume}</p> 
125								</#if> 
126								</div> 
127								<#if etiquette != "" > 
128									<div class="status"> 
129										<p class="etiquette">${etiquette}</p> 
130									</div> 
131								</#if> 
132								<div class="test-loc"> 
133									<div class="ctn-thematique"> 
134									<#if Thematique?trim != ""> 
135										<p class="thematique">${Thematique}</p> 
136									</#if> 
137									</div> 
138									<div class="ctn-read-more"> 
139										<a class="read-more" href="${viewURL}">[+]</a> 
140									</div> 
141								</div> 
142							</div> 
143						</div> 
144						<a class="overlay" tabindex="-1" href="${viewURL}<#if themeDisplay?has_content>?backUrl=${themeDisplay.getURLCurrent()}</#if>"></a> 
145					</div> 
146				</li> 
147				</#if> 
148			</#if> 
149		</#list>		 
150	</ul> 
151    </#if> 
152</article> 
153 
154<#macro displayTags tags > 
155	<#if tags?has_content> 
156        <section class="cagc-block mt-4 mb-4"> 
157            <#assign allTagURL = renderResponse.createRenderURL().toString()?keep_before("?") /> 
158			<#assign selected = "" /> 
159			<#if selectedTag == ""> 
160			    <#assign selected = "selected" /> 
161            </#if> 
162 
163            <a class="link-button ${selected}" href="${allTagURL}"> 
164				<@liferay_ui.message key="all"></@liferay_ui.message> 
165            </a> 
166			<#list tags as tagName> 
167				<#assign tagURL = "?" + "p_r_p_categoryId=" + tagName /> 
168				<#assign selected = "" /> 
169				<#if selectedTag == tagName> 
170					<#assign selected = "selected" /> 
171				</#if> 
172				<a class="link-button ${selected}" href="${tagURL}">${tagName}</a> 
173			</#list> 
174		</section> 
175	</#if> 
176</#macro> 
177 
178<style> 
179    #p_p_id${renderResponse.getNamespace()} .taglib-categorization-filter {display:none;} 
180	 
181	article.category-navigator .cagc-block{ 
182		text-align: center; 
183		margin-bottom: 30px !important; 
184
185	article.category-navigator .link-button{ 
186		color: #555; 
187        padding: 3px 4px; 
188        border: 1px solid #555; 
189        margin: 5px 5px; 
190        text-transform: uppercase; 
191        display: inline-block; 
192		border-radius: 5px; 
193
194	 
195	article.category-navigator .selected { 
196		background-color: #ffe604; 
197		color: black; 
198
199	 
200	article.category-navigator .link-button:hover { 
201		color: white; 
202		background-color: #c10076; 
203		text-decoration: none; 
204
205	article.cagc-general-aggregator ul.asset-card-list { 
206		list-style: none; 
207		width: 100%; 
208		margin-bottom: 100px; 
209		padding: 0; 
210		display: grid; 
211		grid-template-columns: repeat(5, 1fr); 
212		grid-column-gap: 15px; 
213		grid-row-gap: 20px; 
214		grid-auto-rows: 1fr; 
215
216	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full { 
217		position: relative; 
218		margin: 0; 
219		overflow: hidden; 
220		width: 100%; 
221		height: 100%; 
222		border-radius: 0; 
223		border: none; 
224		display: grid; 
225		grid-template-columns: 1fr; 
226        grid-template-rows: 1fr 2fr; 
227        background-color: #fdfdfd; 
228        border: 1px solid #f1f1f1; 
229
230	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full img { 
231		width: 100%; 
232		height: 100%; 
233
234	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full .card-body { 
235		padding: 0.5rem; 
236        padding-top: 0; 
237
238	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full p.numeroDuProjet { 
239		position: absolute; 
240		left: 10px; 
241		top: 10px; 
242		background-color: white; 
243		width: 30px; 
244		height: 30px; 
245		font-size: 18px; 
246		font-weight: bold; 
247		line-height: 30px; 
248		border: 1px solid silver; 
249		border-radius: 50%; 
250		text-align: center; 
251
252	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full p.nombreDeVotes { 
253		text-align: right; 
254
255	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full .card-body .info { 
256		display: flex; 
257		flex-direction: column; 
258		justify-content: space-between; 
259		align-items: stretch; 
260
261	 
262	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full .card-body .description{ 
263        text-align: justify; 
264        padding-bottom: 10px; 
265
266	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full .card-body .card-text { 
267		height: calc(12 * 1.2rem); 
268		line-height: 1.3rem; 
269		overflow: hidden; 
270
271	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full .card-body div.ctn-resume { 
272		margin-bottom: 15px; 
273		height: 55px; 
274
275	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full .card-body div.test-loc { 
276		display: flex; 
277		justify-content: space-between; 
278		align-items: center; 
279
280	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full .card-body p.resume{ 
281        line-height: 12px; 
282
283	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full .card-body div.status { 
284		border: 1px solid black; 
285		text-align: center; 
286		background-color: #ffe604; 
287		position: relative;  
288
289	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full .card-body p.etiquette { 
290		color: black; 
291
292	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full .card-body a.read-more { 
293		font-size: calc(28 * calc(1rem / 25)); 
294
295	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full a.overlay { 
296	    position: absolute; 
297		bottom: 0; 
298		height: 0; 
299		width: 100%; 
300
301	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full:focus-within a.overlay, 
302	article.cagc-general-aggregator ul.asset-card-list li.component-card .card-full:hover a.overlay { 
303		background-color: #c10076; 
304		opacity: 0.75; 
305		z-index: 10; 
306		height: 100%; 
307
308	 
309</style> 

À l'issue du vote des Targéens, voici le palmarès des projets en fonction du nombre de votes obtenus.

 

 

 

Formulaire de vote

 
Vous n'avez pas le role requis pour accéder à cette application.