Fechar

Funcionária da Vale sorrindo em paisagem verde. Ela veste uniforme verde
da vale, oculos, capacete e protetores auriculares Artefato visual de onda Vale
Imagem de header interno Imagem de header interno

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

Um erro ocorreu enquanto processava o modelo.
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> 

Arquivo de notícias

Para conferir todas as notícias publicadas até novembro de 2022

Imprensa

Deslize a tela para ver mais

Investidores

Confira os resultados Financeiros do 1T24

24/04/24

Artefato visual de onda Vale

Confira os resultados de Produção e Vendas do 1T24

16/04/24

Artefato visual de onda Vale

Confira as datas de divulgação do desempenho no 1T24

15/04/24

Artefato visual de onda Vale

Assembleias Gerais Ordinária e Extraordinária 2024

08/03/24

Artefato visual de onda Vale

Confira os resultados financeiros do 4T23​

22/02/24

Artefato visual de onda Vale
Deslize a tela para ver mais

Nossas histórias

Capa do espaço memória

Vale 80 anos

Em 2022, a Vale celebra oito décadas de existência com a percepção de que uma trajetória tão cheia de capítulos não pode ser contada a partir de um único ponto de vista. Conheça nossa história.

Saiba mais Arrow pointing to the right
Imagem de capa espaço memória

Espaço Memória

A história de uma empresa é o retrato da sua vivência, da sua experiência, dos seus aprendizados, “causos” contados pelas pessoas, das memórias individuais, dos sonhos de quem fez e faz parte de sua trajetória.

Saiba mais Arrow pointing to the right
Imagem de capa mulheres na vale

Mulheres na Vale

Na Vale, acreditamos que a presença feminina é essencial para a construção de um futuro mais igualitário e sustentável. Nossas recentes iniciativas com foco em inclusão e diversidade ajudam a avançarmos na criação de um ambiente mais colaborativo.

Saiba mais Arrow pointing to the right
Caminhos da coletividade

Caminhos da coletividade

Conheça a força transformadora das nossas comunidades nessa websérie

Saiba mais Arrow pointing to the right
Equidade étnico-racial

Equidade étnico-racial

Assumimos o compromisso de ser uma empresa antirracista e, juntos, trabalhamos todos os dias para promover a equidade de oportunidades na nossa empresa.

Saiba mais Arrow pointing to the right
Deslize a tela para ver mais

Nossas histórias 

Mineração por elas

Esse websérie tem como objetivo enaltecer o trabalho das mulheres no setor da mineração, em diversas funções e hirerquias

Vale 80 anos

Em 2022, a Vale celebra oito décadas de existência com a percepção de que uma trajetória tão cheia de capítulos não pode ser contada a partir de um único ponto de vista. Conheça nossa história.

Espaço Memória

A história de uma empresa é o retrato da sua vivência, da sua experiência, dos seus aprendizados, “causos” contados pelas pessoas, das memórias individuais, dos sonhos de quem fez e faz parte de sua trajetória.

Relato Integrado

Lançamos nosso primeiro Relato Integrado, com os resultados da gestão dos tópicos materiais, atualizados em 2020 após consulta junto aos seus principais stakeholders.

Protetores da Floresta

A floresta fala. Mas antes de ouvi-la, nós precisamos enxergá-la de perto.

Mulheres na Vale

Na Vale, acreditamos que a presença feminina é essencial para a construção de um futuro mais igualitário e sustentável. Nossas recentes iniciativas com foco em inclusão e diversidade ajudam a avançarmos na criação de um ambiente mais colaborativo.
Deslize a tela para ver mais

Reparação

Nosso compromisso na reparação das comunidades e pessoas impactadas pelo rompimento da barragem B1 é constante. Veja as ações sociais, ambientais e de segurança tomadas pela Vale.
Duas funcionárias Vale Imagem placeholder Fotógrafo: Ricardo Teles
Onda