Vale now
Recent searches
Quick Links
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
Press
Our stories
![memory space cover](/documents/44618/521027/Vale80anos.png/956b100d-c1c2-6932-1b0d-dcd65ca7aa32?t=1702906511467)
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.
![Cover image memory space](/documents/44618/521027/Espa%C3%A7o+Mem%C3%B3ria.png/a55db9de-cc66-9d31-94e8-a1bcfc81330e?t=1702906511464)
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.
![Cover image women at vale](/documents/44618/521027/Minera%C3%A7%C3%A3o+por+elas.png/ed152d49-bdfb-148f-50e7-0b672023bfc6?t=1702906511465)
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.
![Ethnic and racial equity](/documents/44618/1868699/etnico-racial.png/49525b6c-b7d4-a746-8127-7066fed24a25?t=1702906510828)
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.
![Mining by Women](/documents/44618/1868699/Minera%C3%A7%C3%A3o+por+elas.png/07b49eaf-a8ee-3f92-78dc-259bd106a2ae?t=1702906510827)
Mining by Women
This webseries aims to highlight the work of women in the mining sector, in different roles and hierarchies.