أقفل

menu-img-alt vale-wave
Imagem de header interno Imagem de header interno

No ar o edital Desafio Uso Futuro da Mina de Águas Claras (MAC)

حصل خطأ عند معالجة القالب.
Syntax error in template "44549#44620#98608" in line 54, column 63:
Naming convention mismatch. Identifiers that are part of the template language (not the user specified ones) must consistently use the same naming convention within the same template. This template uses legacy naming convention (directive (tag) names are like examplename, everything else is like example_name) estabilished by auto-detection at line 54, column 49 by token "has_content", but the problematic token, "newsTopicCategory", uses a different convention.
1<#if entry??> 
2	<#assign 
3			images_path = "/documents/d/guest/" 
4			namespace = "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_" + stringUtil.randomId() 
5   /> 
6	  
7	 <#attempt> 
8	 <#assign newsTopicVocabularyId = 64872 /> 
9	 <#recover> 
10     <#assign newsTopicVocabularyId = 0 /> 
11   </#attempt> 
12 
13	 
14	<#function getDisplayPageUrl asset> 
15			<#local 
16					assetRenderer = asset.getAssetRenderer() 
17					baseViewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, asset, !stringUtil.equals(assetLinkBehavior, "showFullContent"))?split("?")?first?split("/-/")?first 
18			/> 
19			<#return baseViewURL?replace(themeDisplay.getURLPortal(), "")/> 
20	</#function> 
21 
22	<#function getDDMFormFieldsReferencesMap entry > 
23			<#assign assetRenderer = entry.getAssetRenderer() /> 
24			<#assign DDMFormFieldValuesMap = assetRenderer.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap() /> 
25			<#return assetRenderer.article.DDMStructure.DDMForm.getDDMFormFieldsReferencesMap(true) /> 
26	</#function> 
27 
28	<#function getDDMFieldValue DDMFormFieldsReferencesMap name> 
29			<#assign field = DDMFormFieldsReferencesMap[name].name /> 
30			<#return DDMFormFieldValuesMap[field][0].getValue().getString(locale)!"" /> 
31	</#function> 
32 
33	<#function getCustomDisplayPageDataAttr customDisplayPageJson categoryFilterEndpoint> 
34			<#local 
35					groupId = customDisplayPageJson.getLong("groupId") 
36					uuid = customDisplayPageJson.getString("id") 
37					privateLayout = customDisplayPageJson.getBoolean("privateLayout") 
38			/> 
39			<#local customDisplayPageDataAttr> 
40					data-vale-custom-display-page='{"groupId":${groupId},"uuid":"${uuid}","privateLayout":${privateLayout?c}}' 
41					data-vale-category-endpoint=${categoryFilterEndpoint} 
42			</#local> 
43			<#return customDisplayPageDataAttr/> 
44	</#function> 
45 
46	<#function getCategoryFilterEndpoint asset> 
47		<#attempt> 
48		<!--	<#local 
49					newsTopicCategory = asset.getCategories()?filter(category -> category.getVocabularyId() == newsTopicVocabularyId)?first 
50					newsTopicCategoryId = newsTopicCategory.getCategoryId() 
51			/> --> 
52			<#local 
53        newsTopicCategory = asset.getCategories()?filter(category -> category.getVocabularyId() == newsTopicVocabularyId)?first!null 
54        newsTopicCategoryId = newsTopicCategory?has_content ? newsTopicCategory.getCategoryId() : null 
55      /> 
56			<#recover> 
57				<#assign newsTopicCategoryId = 0 /> 
58			</#attempt> 
59			<#return  "/-/categories/" + newsTopicCategoryId /> 
60	</#function> 
61 
62	<#assign assetRenderer=entry.getAssetRenderer()!"" /> 
63	<#if assetRenderer?has_content> 
64		<#assign 
65				article = assetRenderer.getArticle() 
66 
67				categoryFilterEndpoint = getCategoryFilterEndpoint(entry) 
68 
69				DDMFormFieldsReferencesMap = getDDMFormFieldsReferencesMap(entry) 
70				img = jsonFactoryUtil.createJSONObject(getDDMFieldValue(DDMFormFieldsReferencesMap, 'imagemDeCapa')) 
71 
72				customDisplayPageJsonString = getDDMFieldValue(DDMFormFieldsReferencesMap, "customDisplayPage") 
73				customDisplayPageJson = jsonFactoryUtil.createJSONObject(customDisplayPageJsonString) 
74 
75				hasCustomDisplayPage = customDisplayPageJson.getString("groupId")?has_content 
76				customDisplayPageDataAttr = hasCustomDisplayPage?then( 
77						getCustomDisplayPageDataAttr(customDisplayPageJson, categoryFilterEndpoint), "") 
78 
79				displayPageUrl = getDisplayPageUrl(entry) + categoryFilterEndpoint 
80		/> 
81 
82		<#assign search_page_endpoint = locale?contains("en")?then("all-the-news", "todas-as-noticias") /> 
83 
84		<#assign accessAllNews = ""> 
85		<#if locale?contains("en")> 
86			<#assign accessAllNews = "Access all news"> 
87		<#else> 
88			<#assign accessAllNews = "Acesse todas as notícias"> 
89		</#if> 
90 
91		<div class="vale-widget-ultimas-noticias container" id="vale-fragmento-carrossel-card-branco-categoria-${namespace}"> 
92				<div class="row mt-7"> 
93						<div class="col-12 col-md-8 mb-7 mb-md-0 pr-4" id="news-card"> 
94								<div class="mb-4 position-relative"> 
95										<a href="${displayPageUrl}" class="text-decoration-none" ${customDisplayPageDataAttr}> 
96												<img 
97														alt="${img.alt}" 
98														class="imagem-capa-principal" 
99														data-fileentryid="${img.fileEntryId}" 
100														src="${img.url}" 
101												/> 
102												<img 
103														class="onda-principal d-none d-md-block position-absolute" 
104														src="${images_path}onda_branca" 
105												/> 
106										</a> 
107								</div> 
108 
109								<p> 
110										<#assign data = getDDMFieldValue(DDMFormFieldsReferencesMap, 'data') /> 
111										<#assign date_localized = dateUtil.formatDate("yyyy-MM-dd", data, locale)/> 
112 
113										${date_localized} 
114								</p> 
115 
116								<a href="${displayPageUrl}" class="text-decoration-none mb-4" ${customDisplayPageDataAttr}> 
117										<h2 class="text-verde-vale"> 
118												${entry.getTitle(locale)} 
119										</h2> 
120								</a> 
121						</div> 
122						<div class="coluna-direita-noticias col-12 col-md-4 d-flex flex-column"> 
123								<#if entries?has_content> 
124										<#list entries as curEntry> 
125												<#if entry.getTitle(locale) != curEntry.getTitle(locale) > 
126														<#assign 
127																assetRenderer = curEntry.getAssetRenderer() 
128																article = assetRenderer.getArticle() 
129 
130																categoryFilterEndpoint = getCategoryFilterEndpoint(curEntry) 
131 
132																DDMFormFieldsReferencesMap = getDDMFormFieldsReferencesMap(curEntry) 
133																img = jsonFactoryUtil.createJSONObject(getDDMFieldValue(DDMFormFieldsReferencesMap, 'imagemDeCapa')) 
134 
135																customDisplayPageJsonString = getDDMFieldValue(DDMFormFieldsReferencesMap, "customDisplayPage") 
136																customDisplayPageJson = jsonFactoryUtil.createJSONObject(customDisplayPageJsonString) 
137 
138																hasCustomDisplayPage = customDisplayPageJson.getString("groupId")?has_content 
139																customDisplayPageDataAttr = hasCustomDisplayPage?then( 
140																		getCustomDisplayPageDataAttr(customDisplayPageJson, categoryFilterEndpoint), "") 
141 
142																displayPageUrl = getDisplayPageUrl(curEntry) + categoryFilterEndpoint 
143														/> 
144														<div class="font-weight-light mb-5" id="news-card"> 
145																<div class="mb-4 position-relative"> 
146																		<a href="${displayPageUrl}" class="text-decoration-none" ${customDisplayPageDataAttr}> 
147																				<img 
148																						alt="${img.alt}" 
149																						class="imagem-capa" 
150																						data-fileentryid="${img.fileEntryId}" 
151																						src="${img.url}" 
152																				/> 
153																				<img 
154																						class="onda position-absolute" 
155																						src="${images_path}onda_branca" 
156																				/> 
157																		</a> 
158																</div> 
159 
160																<p class="mb-2"> 
161																		<#assign data = getDDMFieldValue(DDMFormFieldsReferencesMap, 'data') /> 
162																		<#assign date_localized = dateUtil.formatDate("yyyy-MM-dd", data, locale)/> 
163 
164																		${date_localized} 
165																</p> 
166 
167																<a href="${displayPageUrl}" class="text-decoration-none" ${customDisplayPageDataAttr}> 
168																		<h4 class="mb-0 text-verde-vale"> 
169																				${curEntry.getTitle(locale)} 
170																		</h4> 
171																</a> 
172														</div> 
173												</#if> 
174										</#list> 
175								</#if> 
176						</div> 
177			</div> 
178		</div> 
179 
180		<style> 
181		.vale-widget-ultimas-noticias .imagem-capa-principal { 
182				object-fit: cover; 
183
184 
185		.vale-widget-ultimas-noticias .imagem-capa { 
186				border-left: 20px solid var(--amarelo-vale); 
187				height: 13.75rem; 
188				width: 100%; 
189				object-fit: cover; 
190
191 
192		.vale-widget-ultimas-noticias .onda-principal { 
193				bottom: -0.125rem; 
194				right: -0.125rem; 
195
196 
197		.vale-widget-ultimas-noticias .onda { 
198				bottom: -0.125rem; 
199				right: -0.125rem; 
200
201 
202		.vale-widget-ultimas-noticias .width-16 { 
203				width: 16rem; 
204
205 
206		@media screen and (max-width: 768px) { 
207				.vale-widget-ultimas-noticias .imagem-capa-principal { 
208						height: 16.0625rem; 
209						width: 100vw; 
210						position: relative; 
211						left: 50%; 
212						margin-left: -50vw; 
213
214 
215				.vale-widget-ultimas-noticias .imagem-capa { 
216						border-left: 10px solid var(--amarelo-vale); 
217
218
219 
220		@media screen and (min-width: 768px) { 
221				.vale-widget-ultimas-noticias .imagem-capa-principal { 
222						border-left: 20px solid var(--amarelo-vale); 
223						height: 29.1875rem; 
224						width: 100%; 
225
226 
227				.vale-widget-ultimas-noticias .coluna-direita-noticias { 
228						max-height:  55.875rem; 
229						overflow-y: auto; 
230
231
232		</style> 
233 
234		<script> 
235		(function(){ 
236			// Tagueamento 
237				const namespace = document.querySelector("#vale-fragmento-carrossel-card-branco-categoria-${namespace}"); 
238 
239				const cards = namespace.querySelectorAll("#news-card"); 
240 
241				const handleEventLinkClick = (title, href) => { 
242						Analytics.track("Link", { 
243								section: "Últimas notícias", 
244								rotulo: title + " : " + href, 
245					}); 
246				}; 
247 
248				cards.forEach(card => { 
249						const links =  card.querySelectorAll("a"); 
250						const title = card.querySelectorAll("h2, h4, .h2, .h4")[0].innerText; 
251						links.forEach(link => { 
252								link.addEventListener("click", () => handleEventLinkClick(title, link.href)) 
253						}) 
254				}) 
255 
256				// Configurar URL de página de exibição dinâmica 
257				const displayPageUrls = namespace.querySelectorAll('a[data-vale-custom-display-page]'); 
258				displayPageUrls.forEach(displayPageUrl => { 
259						const customDisplayPage = displayPageUrl.dataset["valeCustomDisplayPage"]; 
260						const categoryEndpoint = displayPageUrl.dataset["valeCategoryEndpoint"]; 
261						Liferay.Service( 
262								'/layout/get-layout-by-uuid-and-group-id', 
263								JSON.parse(customDisplayPage), 
264								layout => { 
265										const friendlyURL = layout["friendlyURL"]; 
266										if (friendlyURL) { 
267												displayPageUrl.href = friendlyURL + categoryEndpoint; 
268
269
270						); 
271				}) 
272		})() 
273		</script> 
274	</#if> 
275</#if> 

News archive

Click here to check all news published until november 2022

Press

scroll-to-see-more

Investors

Check out the 1Q24 financials results

24‏/4‏/24

vale-wave

Check out the 1Q24 production and sales report​

16‏/4‏/24

vale-wave

Check out the 1Q24 performance report dates

15‏/4‏/24

vale-wave

2024 Annual and Extraordinary Shareholder's Meetings

8‏/3‏/24

vale-wave

Check out the 4Q23 Financials Results ​

22‏/2‏/24

vale-wave
scroll-to-see-more

Our stories

memory space cover

Vale 80 years

In 2022, Vale celebrates eight decades of existence with the realization that a trajectory so full of chapters cannot be told from a single point of view. Get to know our history.

know-more Arrow pointing to the right
Cover image memory space

Memory Space

The history of a company is the portrait of its experience, its experience, its learning, “stories” told by people, individual memories, the dreams of those who were and are part of its trajectory.

know-more Arrow pointing to the right
Cover image women at vale

Women at Vale

At Vale, we believe that the female presence is essential for building a more egalitarian and sustainable future. Our recent initiatives focused on inclusion and diversity help us to make further progress in creating a more cooperative environment.

know-more Arrow pointing to the right
Ethnic and racial equity

Ethnic and racial equity

We are committed to being an anti-racist company, and together we work every day to promote equal opportunities in our company.

know-more Arrow pointing to the right
Mining by Women

Mining by Women

This webseries aims to highlight the work of women in the mining sector, in different roles and hierarchies.

know-more Arrow pointing to the right
scroll-to-see-more

Our stories 

Mining for them

This webseries aims to highlight the work of women in the mining sector, in different roles and hierarchies. 

Vale 80 years

In 2022, Vale celebrates eight decades of existence with the realization that a trajectory so full of chapters cannot be told from a single point of view. Get to know our history.

Memory Space

The history of a company is the portrait of its experience, its experience, its learning, “stories” told by people, individual memories, the dreams of those who were and are part of its trajectory. 

Integrated Reporting

We launched our first Integrated Report, with the results of the management of material topics, updated in 2020 after consultation with its main stakeholders. 

Protectors of the Forest 

The forest speaks. But before listening to it, we need to see it up close. 

Women at Vale

At Vale, we believe that the female presence is essential for building a more egalitarian and sustainable future. Our recent initiatives focused on inclusion and diversity help us to make further progress in creating a more cooperative environment.
scroll-to-see-more

Reparation

Our commitment to repairing the communities and people impacted by the B1 dam failure is constant. See the social, environmental and safety actions taken by Vale. 
Imagem placeholder Imagem placeholder Photographer: Ricardo Teles
Onda