Title
Title
Faça uma busca:
Buscar
Mais pesquisados
Preço dos combustíveis
Pré-Sal
Time Petrobras
Title
O uso deste material é autorizado apenas para fins editoriais.
Navio-plataforma Marechal Duque de Caxias parte da China rumo ao Brasil
Unidade será interligada a equipamento para reinjetar gás, ainda no fundo do oceano, de forma pioneira
Postado em 24/02/2024
Copiar texto Navio-plataforma Marechal Duque de Caxias parte da China rumo ao Brasil
Divulgação MISC
FPSO Marechal Duque de Caxias saiu neste sábado de Yantai rumo ao campo de Mero, na Bacia de Santos
Download FPSO Marechal Duque de Caxias saiu neste sábado de Yantai rumo ao campo de Mero, na Bacia de SantosO navio-plataforma Marechal Duque de Caxias saiu neste sábado, 24/2, de Yantai, China, rumo ao campo de Mero, operado pela Petrobras, no pré-sal da Bacia de Santos. A plataforma entrará em operação a partir de setembro deste ano e tem capacidade de produzir até 180 mil barris de óleo e de comprimir até 12 milhões de metros cúbicos de gás, tudo isso diariamente.
A unidade, afretada pela Petrobras junto à MISC, fará parte do 3º sistema de produção definitivo de Mero e aumentará a capacidade instalada de produção do campo para 590 mil barris diários de petróleo. Esse sistema de produção prevê a interligação de 15 poços à unidade, 8 produtores de óleo e 7 injetores de água e gás, por meio de uma infraestrutura submarina composta por 80 km de dutos rígidos de produção e injeção, 47 km dutos flexíveis de serviços e 44 Km de umbilicais de controle.
A plataforma, do tipo FPSO (unidade flutuante de produção, armazenamento e transferência, da sigla em inglês), será interligada ao equipamento HISEP, que fará a separação do óleo e do gás no fundo do oceano, de onde fará a reinjeção do gás rico em CO2, de forma pioneira. O HISEP, tecnologia patenteada pela Petrobras, tem o potencial de aumentar a produção e desafogar a planta de processamento de gás da superfície, ao mesmo tempo em que reduz a intensidade das emissões de gases de efeito estufa. O FPSO possui outras tecnologias para diminuição de emissões como, por exemplo, a CCUS (Carbon Capture, Utilization and Storage), onde o gás rico em CO2 é reinjetado no reservatório.
“Nosso foco é produzir com responsabilidade e, nesse sentido, adotamos tecnologias para aumentar a eficiência na produção e, além disso, temos uma preocupação constante com a descarbonização em nossas atividades, com uma produção mais limpa, na intenção de continuarmos na nossa trajetória de diminuição de emissões de gases de efeito estufa”, declarou o diretor de Exploração e Produção da Petrobras, Joelson Mendes.
Mero é o terceiro maior campo do Brasil em volume de óleo in place (o que pode ser recuperado no reservatório), atrás apenas de Tupi e Búzios, também localizados no pré-sal da Bacia de Santos. Além do FPSO Duque de Caixas, a Petrobras colocará em operação outra unidade em Meroem 2025.
“Estamos dando sequência ao projeto de Mero, principalmente para garantir a segurança energética do país, já que o potencial desse campo é muito grande e faz dele um dos ativos principais da Petrobras, no qual investiremos os esforços de nossos técnicos, extremamente qualificados”, sintetizou o diretor de Engenharia, Tecnologia e Inovação da Petrobras, Carlos José Travassos.
As operações do campo unitizado de Mero são conduzidas pelo Consórcio operado pela Petrobras (38,6%), em parceria com a Shell Brasil (19,3%), TotalEnergies (19,3%), CNOOC (9,65%), CNPC (9,65%) e Pré-Sal Petróleo S.A (PPSA) (3,5%), como representante da União na área não contratada.
Fotos
Foto: 1 /3
FPSO Marechal Duque de Caxias saiu da China neste sábado, 24/02
21/03/2024
Por: Divulgação MISC
O uso deste material é autorizado apenas para fins editoriais.
Foto: 2 /3
FPSO Marechal Duque de Caxias saiu da China neste sábado, 24/02
21/03/2024
Por: Divulgação MISC
O uso deste material é autorizado apenas para fins editoriais.
Foto: 3 /3
FPSO Marechal Duque de Caxias saiu da China neste sábado, 24/02
24/02/2024
Por: Divulgação MISC
O uso deste material é autorizado apenas para fins editoriais.
Downloads
Você pode se interessar por
Java method "com.liferay.journal.model.impl.JournalArticleImpl.getDocument()" threw an exception when invoked on com.liferay.journal.model.impl.JournalArticleImpl object "{\"mvccVersion\": 1, \"ctCollectionId\": 0, \"uuid\": \"5de5ae9f-850e-ea63-96f7-1dd4c364c345\", \"id\": 18199662, \"resourcePrimKey\": 18159540, \"groupId\": 10623376, \"companyId\": 20099, \"userId\": 11888211, \"userName\": \"Leonardo Bruno Pimenta Melo\", \"createDate\": \"Mon May 13 23:57:09 GMT 2024\", \"modifiedDate\": \"Tue May 14 21:48:19 GMT 2024\", \"externalReferenceCode\": \"7a173b9b-c4f2-d3df-d131-de7c57fc5e62\", \"folderId\": 11260026, \"classNameId\": 0, \"classPK\": 0, \"treePath\": \"/10628776/11260026/\", \"articleId\": \"18159538\", \"version\": 2.1, \"urlTitle\": \"negocio/petrobras-alcanca-lucro-liquido-de-r-23-7-bilhoes-no-1-trimestre-de-2024\", \"DDMStructureId\": 10628772, \"DDMTemplateKey\": \"\", \"defaultLanguageId\": \"pt_BR\", \"layoutUuid\": \"\", \"displayDate\": \"Mon May 13 23:44:00 GMT 2024\", \"expirationDate\": null, \"reviewDate\": null, \"indexable\": true, \"smallImage\": false, \"smallImageId\": 0, \"smallImageSource\": 1, \"smallImageURL\": \"\", \"lastPublishDate\": null, \"status\": 0, \"statusByUserId\": 11888211, \"statusByUserName\": \"Leonardo Bruno Pimenta Melo\", \"statusDate\": \"Tue May 14 21:48:19 GMT 2024\"}"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign xmlArticle = journalArticle.g... [in template "20099#20135#11247698" in function "getCardData" at line 84, column 5] ----
1<#-- Conteúdo Web -> Templates: Site de Crise - Include de templates-->
2<#-- include "${templatesPath}/1975602" -->
3
4<#-- Conteúdo Web -> Templates: Site de Crise - Funções gerais-->
5<#include "${templatesPath}/1975398" />
6
7<#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
8<#assign fileEntryService = staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"] />
9<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
10<#assign assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyService") />
11<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
12<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')>
13<#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]>
14<#assign assetEntryLocalServiceUtil = objectUtil("com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil").getService()>
15
16<#assign vocabularies = assetVocabularyService.getGroupVocabularies(groupId) />
17<#assign editoriaVocabulary = findVocabulary("Editorial", vocabularies) />
18<#assign mediaVocabulary = findVocabulary("Multimidia", vocabularies) />
19
20
21
22
23<#function getFirstCategoryFromVocabulary entry vocabulary>
24 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", entry.getClassPK()) />
25 <#list categories as category>
26 <#assign vocabulary = assetVocabularyService.getVocabulary(category.getVocabularyId()) />
27
28 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
29 <#return category>
30 </#if>
31 </#list>
32 <#return "">
33</#function>
34
35<#function getAssetEntriesByCategory portalUtil assetEntryLocalServiceUtil newCategoryId vocabularyToExclude>
36 <#attempt >
37 <#assign groupId = themeDisplay.getScopeGroupId()>
38 <#assign companyId = themeDisplay.getCompanyId()>
39 <#assign realUserId = themeDisplay.getDefaultUserId() />
40 <#assign className = "com.liferay.journal.model.JournalArticle">
41 <#assign classNameId = portalUtil.getClassNameId(className)>
42
43 <#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery') />
44 ${assetEntryQuery.setClassNameIds([classNameId]) }
45 ${assetEntryQuery.setEnd(8)}
46 <#assign notAllCategoryIds = [] />
47 <#list vocabularyToExclude.getCategories() as category>
48 <#assign notAllCategoryIds += [category.getCategoryId()] />
49 </#list>
50 ${assetEntryQuery.setNotAllCategoryIds(notAllCategoryIds)}
51 ${assetEntryQuery.setAllCategoryIds([newCategoryId])}
52
53 <#assign allAssets = assetEntryLocalServiceUtil.getEntries(assetEntryQuery)/>
54
55 <#return allAssets />
56 <#recover >
57 <#return [] />
58 </#attempt>
59</#function>
60
61<#assign rootCss = "card-news_" + randomNumber(4586) />
62<#assign cardMap = {} />
63
64<#-- Função para obter os dados de um card no Web Content (Journal Article) -->
65<#function getCardData entry journalArticleLocalService fileEntryService cardMap>
66
67 <#assign editoria = getFirstCategoryFromVocabulary(entry, editoriaVocabulary) />
68 <#assign editoriaId = -1 />
69 <#if editoria?has_content>
70 <#assign editoriaId = editoria.getCategoryId() />
71 </#if>
72 <#if editoriaId == -1>
73 <#return {} />
74 </#if>
75 <#if cardMap[ editoriaId?string]??>
76 <#if cardMap[editoriaId?string]?size gt 7 >
77 <#return {} />
78 </#if>
79 </#if>
80
81 <#assign journalArticle = journalArticleLocalService.getLatestArticle(entry.getClassPK()) />
82 <#assign ddmStructure = journalArticle.getDDMStructure() />
83 <#assign fieldList = getFieldListByStructure(ddmStructure) />
84 <#assign xmlArticle = journalArticle.getDocument().getRootElement() />
85
86 <#if getStructName(journalArticle) != "Agência de Notícias - Notícia">
87 <#return {} />
88 </#if>
89
90 <#assign imagesGroup = getNodes(getIdFromFieldName(fieldList, "Imagem de destaque da notícia"), xmlArticle) />
91 <#assign image = "" />
92 <#list imagesGroup as imageGroup >
93 <#assign image = getMediaInfo(fieldList, imageGroup, "Imagem Destaque", fileEntryService) /> />
94 </#list>
95
96 <#assign title = getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia") />
97 <#if !(title?has_content && title != "")>
98 <#assign title = journalArticle.getTitle(locale) />
99 </#if>
100
101 <#assign lastPublishDate = journalArticle.getDisplayDate()>
102 <#assign createDate = journalArticle.getCreateDate()>
103
104 <#assign editoria = getFirstCategoryFromVocabulary(entry, editoriaVocabulary) />
105 <#assign editoriaId = -1 />
106 <#if editoria?has_content>
107 <#assign editoriaId = editoria.getCategoryId() />
108 </#if>
109
110 <#assign review = getFieldValue(fieldList, xmlArticle, "Subtítulo") />
111
112 <#assign urlNews = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + journalArticle.getUrlTitle()>
113
114 <#if themeDisplay.getPortalURL()?contains("webserver")>
115 <#assign urlNews = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + journalArticle.getUrlTitle()>
116 <#else>
117 <#assign urlNews = "/w/" + journalArticle.getUrlTitle()>
118 </#if>
119
120 <#assign cardInfo = {"image": image,
121 "title": title,
122 "lastPublishDate": lastPublishDate,
123 "createDate" : createDate,
124 "editoriaId": editoriaId,
125 "urlNews": urlNews,
126 "review": review} />
127
128 <#if cardMap[editoriaId?string]??>
129 <#assign cardMap = cardMap + {editoriaId : cardMap[editoriaId?string] + [cardInfo]} />
130 <#else>
131 <#assign cardMap = cardMap + {editoriaId : [cardInfo]} />
132 </#if>
133
134 <#return cardInfo />
135
136</#function>
137
138
139<#macro renderCard cardData>
140 <#if !cardData["image"]??>
141 <#return />
142 </#if>
143
144 <div class="card ${rootCss}" category-id="${cardData.editoriaId}">
145 <a class="news-card-of-interest-link" href="${cardData.urlNews}"></a>
146 <div class="news-content">
147 <div class="head">
148 <h2 class="title h4">${cardData.title}</h2>
149 <div class="bar"></div>
150 </div>
151 <div class="bottom-wrapper">
152 <div class="link-container">
153 <p class="read-more">
154 <#if locale?lower_case == "pt_br"> Continuar lendo <#else> Keep reading </#if>
155 </p>
156 </div>
157 </div>
158 </div>
159 </div>
160
161</#macro>
162
163<#assign newsJournalArticle = "">
164<#assign newsAssetEntry = getAssetEntryFromRequest(assetEntryLocalServiceUtil)>
165<#if newsAssetEntry?? && newsAssetEntry?has_content>
166 <#assign newsJournalArticle = journalArticleService.fetchLatestArticle(newsAssetEntry.classPK)/>
167</#if>
168
169<#if newsJournalArticle?? && newsJournalArticle?has_content>
170
171 <#assign newsEditoria = getFirstCategoryFromVocabulary(newsAssetEntry, editoriaVocabulary) />
172 <#assign newsEditoriaId = -1 />
173 <#if newsEditoria?has_content>
174 <#assign newsEditoriaId = newsEditoria.getCategoryId() />
175 </#if>
176
177 <#assign entries = getAssetEntriesByCategory(portalUtil, assetEntryLocalServiceUtil, newsEditoriaId, mediaVocabulary) />
178
179 <#-- Renderizar Lista de cards -->
180 <#if entries?has_content>
181 <#list entries as entry>
182 <#assign cardData = getCardData(entry journalArticleService fileEntryService cardMap) />
183 <@renderCard cardData/>
184 </#list>
185
186 <style>
187 .${rootCss} {
188 width: 306px;
189 border-radius: 16px;
190 border: 1px solid var(--color-neutral-400, #EEE);
191 background: var(--color-neutral-100, #FFF);
192 margin: 0;
193 }
194
195 .${rootCss} *:not(.news-card-of-interest-link) {
196 pointer-events: none;
197 }
198
199 .${rootCss} a.news-card-of-interest-link {
200 position: absolute;
201 width: 100%;
202 height: 100%;
203 opacity: 0;
204 top: 0;
205 }
206
207 .${rootCss}:hover {
208 box-shadow: var(--box-shadow-neutral);
209 transition: box-shadow 300ms ease-in-out;
210 }
211
212 .${rootCss} .news-content {
213 padding: var(--space-md, 24px);
214 display: flex;
215 flex-direction: column;
216 height: 100%;
217 background: var(--color-background-card);
218 border-radius: var(--border-radius-card);
219 }
220
221 .${rootCss} img {
222 background: lightgray 50% / cover no-repeat;
223 height: 170px;
224 }
225
226 .${rootCss} .head {
227 display: flex;
228 flex-direction: column;
229 gap: var(--space-xxs, 8px);
230 }
231
232 .${rootCss} .head .date {
233 color: var(--color-neutral-800, #373737);
234 font-family: var(--font-family-base, "Petrobras Sans");
235 font-size: var(--font-size-xxxs, 14px);
236 font-style: var(--font-style-normal, normal);
237 font-weight: var(--font-weight-regular, 400);
238 line-height: var(--line-height-xl, 160%); /* 19.2px */
239 }
240
241 .${rootCss} .head .title {
242 color: var(--color-neutral-800);
243 }
244
245 .${rootCss} .head .bar {
246 background-color: var(--color-secondary-solid-to-bright-200, #FDC82F);
247 height: 4px;
248 width: 20px;
249 margin: var(--space-xs, 12px) 0 var(--space-sm, 16px) 0;
250 }
251
252 .${rootCss} .bottom-wrapper {
253 height: 100%;
254 display: flex;
255 flex-direction: column;
256 justify-content: flex-end;
257 }
258
259 .${rootCss} .bottom-wrapper .review-container {
260 color: var(--color-neutral-800, #373737);
261 font-family: var(--font-family-base, "Petrobras Sans");
262 font-size: var(--font-size-xxs, 16px);
263 font-style: var(--font-style-normal, normal);
264 font-weight: var(--font-weight-regular, 400);
265 line-height: var(--line-height-xl, 160%); /* 22.4px */
266 }
267
268 .${rootCss} .bottom-wrapper .link-container {
269 flex: 0 1 auto;
270 }
271
272 .${rootCss} .bottom-wrapper .link-container .read-more {
273 color: var(--color-primary-solid-to-bright-200, var(--color-primary-medium));
274 font-family: var(--font-family-base, "Petrobras Sans");
275 font-size: var(--font-size-xxs, 16px);
276 font-style: var(--font-style-normal, normal);
277 font-weight: var(--font-weight-bold, 700);
278 line-height: var(--line-height-lg, 144%); /* 22.4px */
279 text-decoration-line: underline;
280 }
281
282
283 @media screen and (max-width: ${MAX_TABLET_WIDTH}px) {
284 .${rootCss} {
285 flex-direction: column;
286 gap: var(--space-sm, 16px);
287 padding-top: var(--space-md, 24px);
288 min-width: 296px;
289 }
290
291 .${rootCss} img {
292 height: 140px;
293 }
294
295 .${rootCss} .head .date {
296 font-size: 12px;
297 }
298
299 .${rootCss} .head .title {}
300
301 .${rootCss} .head .bar {
302 width: 18px;
303 margin: var(--space-xxs, 8px) 0 var(--space-sm, 16px) 0;
304 }
305
306 .${rootCss} .review-container {
307 font-size: var(--font-size-xxxs, 14px);
308 }
309 }
310 </style>
311 <script>
312 (function() {
313 const cards = document.querySelectorAll('.${rootCss}.card');
314
315 cards.forEach((card) => {
316 const cardLink = card.querySelector('a.news-card-of-interest-link');
317 const cardTitle = card.querySelector('.title');
318 cardLink.textContent = cardTitle.textContent;
319 });
320 })();
321 </script>
322 </#if>
323</#if>
Utilize nossa busca para encontrar o que procura
Faça uma busca:
Buscar
Mais pesquisados
Preço dos combustíveis
Pré-Sal
Time Petrobras
Java method "com.liferay.journal.model.impl.JournalArticleImpl.getDocument()" threw an exception when invoked on com.liferay.journal.model.impl.JournalArticleImpl object "{\"mvccVersion\": 1, \"ctCollectionId\": 0, \"uuid\": \"e676f63b-3777-4c00-5a1d-7f604a04072c\", \"id\": 12613261, \"resourcePrimKey\": 10628951, \"groupId\": 10623376, \"companyId\": 20099, \"userId\": 873837, \"userName\": \"Gefersom Lima\", \"createDate\": \"Tue Oct 31 18:45:56 GMT 2023\", \"modifiedDate\": \"Fri Jan 26 22:15:39 GMT 2024\", \"externalReferenceCode\": \"7748054\", \"folderId\": 10628763, \"classNameId\": 0, \"classPK\": 0, \"treePath\": \"/10628763/\", \"articleId\": \"7748054\", \"version\": 1.3, \"urlTitle\": \"configuracao-de-rodape\", \"DDMStructureId\": 10628806, \"DDMTemplateKey\": \"\", \"defaultLanguageId\": \"pt_BR\", \"layoutUuid\": \"\", \"displayDate\": \"Tue Oct 31 18:43:00 GMT 2023\", \"expirationDate\": null, \"reviewDate\": null, \"indexable\": false, \"smallImage\": false, \"smallImageId\": 0, \"smallImageSource\": 1, \"smallImageURL\": \"\", \"lastPublishDate\": null, \"status\": 0, \"statusByUserId\": 873856, \"statusByUserName\": \"Wagner de Melo Reck\", \"statusDate\": \"Fri Jan 26 22:15:39 GMT 2024\"}"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign xmlArticle = article.getDocum... [in template "20099#20135#2683802" in function "extractFooterInfo" at line 30, column 3] - Reached through: @renderSacInfoDates entry, journalArt... [in template "20099#20135#2683802" at line 83, column 5] ----
1<#--
2Widget templates can be used to modify the look of a
3specific application.
4
5Please use the right panel to quickly add commonly used variables.
6Autocomplete is also available and can be invoked by typing "${".
7-->
8
9<#include "${templatesPath}/1975398" />
10
11<#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
12<#assign fileEntryService = staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"] />
13
14<#function extractFooterInfo curEntry journalArticleService fileEntryService >
15 <#if !curEntry?? >
16 <#return {}>
17 </#if>
18
19 <#assign article = journalArticleService.getLatestArticle(curEntry.getClassPK()) />
20 <#if !article??>
21 <#return {}>
22 </#if>
23
24 <#assign ddmStructure = article.getDDMStructure()>
25 <#if !ddmStructure??>
26 <#return {}>
27 </#if>
28
29 <#assign fieldList = getFieldListByStructure(ddmStructure) />
30 <#assign xmlArticle = article.getDocument().getRootElement() />
31
32
33 <#assign iconInformation = getMediaInfo(fieldList, xmlArticle, "Acesso à Informação - Imagem", fileEntryService) />
34 <#assign iconSac = getMediaInfo(fieldList, xmlArticle, "SAC Imagem", fileEntryService) />
35 <#assign sacLabel = getFieldValue(fieldList, xmlArticle, "SAC - Rótulo") />
36 <#assign sacNumber = getFieldValue(fieldList, xmlArticle, "SAC - Número") />
37 <#assign informationLabel = getFieldValue(fieldList, xmlArticle, "Acesso à Informação") />
38 <#assign transparencyLabel = getFieldValue(fieldList, xmlArticle, "Portal da Transparencia - Rótulo") />
39 <#assign transparencyLink = getFieldValue(fieldList, xmlArticle, "Portal da Transparencia - Link") />
40
41
42 <#return {
43 "iconInformation": iconInformation,
44 "iconSac" : iconSac,
45 "sacLabel" : sacLabel,
46 "sacNumber" : sacNumber,
47 "informationLabel": informationLabel,
48 "transparencyLabel": transparencyLabel,
49 "transparencyLink": transparencyLink
50 }>
51
52</#function>
53
54
55<#macro renderSacInfoDates entry journalArticleService fileEntryService >
56 <#assign info = extractFooterInfo(entry journalArticleService fileEntryService) />
57 <div class="footer-informations">
58 <div class="sac-information icons-container">
59
60 <img alt="${info.iconSac.alt}" src="${info.iconSac.url}"/>
61 <div class="icons-texts">
62 <p class="button-xs-regular" >${info.sacLabel}</p>
63 <p class="button-xs-bold">${info.sacNumber}</p>
64 </div>
65 </div>
66
67 <div class="logo-informations icons-container">
68 <img alt="${info.iconInformation.alt}" src="${info.iconInformation.url}"/>
69 <div class="icons-texts">
70 <p class="button-xs-regular">
71 ${info.informationLabel}
72 </p>
73 <a class="button-xs-bold" open="_blank"
74 href='${info.transparencyLink}'>
75 ${info.transparencyLabel}
76 </a>
77 </div>
78 </div>
79 </div>
80</#macro>
81
82<#if entry?has_content>
83 <@renderSacInfoDates entry journalArticleService fileEntryService />
84</#if>
85
86
87<style>
88
89 .footer-informations {
90 display: flex;
91 justify-content: center;
92 align-items: center;
93 }
94
95 .footer-informations .icons-container img {
96 width: 29px;
97 height: 29px;
98 margin: 5px 8px 0 0;
99 }
100
101 .footer-informations .icons-container {
102 color: var(--color-text-primary-default);
103 display: flex;
104 }
105
106 .footer-informations .logo-informations {
107 padding-left: calc(var(--space-lg)/2);
108 display: flex;
109 }
110
111 .footer-informations .icons-container .icons-texts * {
112 color: var(--color-text-primary-default);
113 }
114
115 .footer-informations .sac-information .icons-texts {
116 border-right: 1px solid var(--border-color-light);
117 }
118
119
120 .footer-informations .icons-container .icons-texts {
121 padding-right: calc(var(--space-lg)/2);
122 display: flex;
123 flex-direction: column;
124
125 }
126
127 @media screen and (max-width: 767px) {
128
129 .footer-informations {
130 flex-direction: column;
131 }
132
133 .footer-informations .icons-container {
134 margin-bottom: 16px !important;
135 }
136
137 .footer-informations .sac-information .icons-texts {
138 border-right: none;
139 }
140
141 .footer-informations .logo-informations {
142 margin-bottom: 16px;
143 padding: 0;
144 }
145
146 }
147
148</style>
- Assessoria de Imprensa
- Categorias
- Acesse também
Java method "com.liferay.journal.model.impl.JournalArticleImpl.getDocument()" threw an exception when invoked on com.liferay.journal.model.impl.JournalArticleImpl object "{\"mvccVersion\": 1, \"ctCollectionId\": 0, \"uuid\": \"e676f63b-3777-4c00-5a1d-7f604a04072c\", \"id\": 12613261, \"resourcePrimKey\": 10628951, \"groupId\": 10623376, \"companyId\": 20099, \"userId\": 873837, \"userName\": \"Gefersom Lima\", \"createDate\": \"Tue Oct 31 18:45:56 GMT 2023\", \"modifiedDate\": \"Fri Jan 26 22:15:39 GMT 2024\", \"externalReferenceCode\": \"7748054\", \"folderId\": 10628763, \"classNameId\": 0, \"classPK\": 0, \"treePath\": \"/10628763/\", \"articleId\": \"7748054\", \"version\": 1.3, \"urlTitle\": \"configuracao-de-rodape\", \"DDMStructureId\": 10628806, \"DDMTemplateKey\": \"\", \"defaultLanguageId\": \"pt_BR\", \"layoutUuid\": \"\", \"displayDate\": \"Tue Oct 31 18:43:00 GMT 2023\", \"expirationDate\": null, \"reviewDate\": null, \"indexable\": false, \"smallImage\": false, \"smallImageId\": 0, \"smallImageSource\": 1, \"smallImageURL\": \"\", \"lastPublishDate\": null, \"status\": 0, \"statusByUserId\": 873856, \"statusByUserName\": \"Wagner de Melo Reck\", \"statusDate\": \"Fri Jan 26 22:15:39 GMT 2024\"}"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign xmlArticle = article.getDocum... [in template "20099#20135#2683780" in function "extractFooterInfo" at line 31, column 3] - Reached through: @renderConfigFooterDates entry, journ... [in template "20099#20135#2683780" at line 82, column 5] ----
1<#--
2Widget templates can be used to modify the look of a
3specific application.
4
5Please use the right panel to quickly add commonly used variables.
6Autocomplete is also available and can be invoked by typing "${".
7-->
8
9<#include "${templatesPath}/1975398" />
10
11<#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
12
13<#function extractFooterInfo curEntry journalArticleService >
14 <#if !curEntry?? >
15 <#return {} />
16 </#if>
17
18 <#assign article = journalArticleService.getLatestArticle(curEntry.getClassPK()) />
19 <#if !article??>
20 <#return {} />
21 </#if>
22
23 <#assign ddmStructure = article.getDDMStructure() />
24 <#if !ddmStructure??>
25 <#return {} />
26 </#if>
27
28 <#assign productCategories = [] />
29
30 <#assign fieldList = getFieldListByStructure(ddmStructure) />
31 <#assign xmlArticle = article.getDocument().getRootElement() />
32
33
34 <#assign cookiesLabel = getFieldValue(fieldList, xmlArticle, "Definições de Cookies - Rótulo") />
35 <#assign copyrightMessage = getFieldValue(fieldList, xmlArticle, "Mensagem de Copyright") />
36
37 <#assign linkItemGroupXMLList = getNodesByLabel(fieldList, xmlArticle, "Links do rodapé")>
38 <#assign linksAndLabels = []>
39 <#list linkItemGroupXMLList as linkItemGroupXML>
40 <#assign obj = {
41 "link": getFieldValue(fieldList, linkItemGroupXML, "Link"),
42 "label": getFieldValue(fieldList, linkItemGroupXML, "Rótulo")
43 } />
44 <#assign linksAndLabels = linksAndLabels + [obj] />
45 </#list>
46 <#return {
47 "linksAndLabels": linksAndLabels,
48 "cookiesLabel" : cookiesLabel,
49 "copyrightMessage": copyrightMessage
50 } />
51</#function>
52
53
54<#macro renderConfigFooterDates entry journalArticleService >
55 <#assign info = extractFooterInfo(entry journalArticleService) />
56
57
58 <div class="fragment-footer breakpoint" id="pet-fragment-footer">
59
60 <div class="petrobras-footer col-1-12 md-col-1-8 sm-col-1-4">
61 <div class="footer-other-links-container">
62 <div class="footer-links">
63 <a class="footer-menu-item button-sm-regular ot-sdk-show-settings" id="ot-sdk-btn" target="_blank" tabindex="0">${info.cookiesLabel} </a>
64 <#list info.linksAndLabels as link>
65 <a class="button-sm-regular footer-menu-item" open="_blank"
66 href='${link.link}'
67 tabindex="0">
68 ${link.label}
69 </a>
70 </#list>
71 </div>
72 <p class="footer_copyright button-sm-regular">${info.copyrightMessage}</p>
73 </div>
74 </div>
75
76
77 </div>
78
79</#macro>
80
81<#if entry?has_content>
82 <@renderConfigFooterDates entry journalArticleService />
83</#if>
84
85
86<style>
87
88
89 .petrobras-footer * {
90 margin: 0;
91 padding: 0;
92 }
93
94 .petrobras-footer {
95 display: flex;
96 justify-content: space-between;
97 font-family: var(--font-family-base);
98 width: 100%;
99 background: var(--color-background-default-level-02)
100 }
101
102
103 .petrobras-footer .footer-other-links-container {
104 display: flex;
105 justify-content: space-between;
106 gap: 16px;
107 width: 100%;
108 margin: var(--space-xl) 0 !important;
109 }
110
111 .petrobras-footer .footer-other-links-container .footer-links {
112 display: flex;
113 gap: var(--space-md);
114 }
115
116 .petrobras-footer .footer-other-links-container .footer-links p,
117 .petrobras-footer .footer-other-links-container .footer-links a {
118 color: var(--color-text-primary-default);
119 }
120
121 /*Cookies button*/
122 .petrobras-footer .footer-other-links-container .footer-links
123 #ot-sdk-btn.ot-sdk-show-settings, #ot-sdk-btn.optanon-show-settings {
124 color: var(--color-text-primary-default);
125 border: none;
126 padding: 0;
127 font-size: var(--font-size-xxxs);
128 line-height: var(--line-height-lg);
129 }
130
131 .petrobras-footer .footer-other-links-container .footer-links
132 #ot-sdk-btn.ot-sdk-show-settings:hover, #ot-sdk-btn.optanon-show-settings:hover {
133 background: transparent;
134 color: var(--color-neutral-800);
135 }
136
137
138 .petrobras-footer .footer-other-links-container .footer_copyright {
139 color: var(--color-neutral-dark-to-bright-300, var(--color-neutral-600));
140 }
141
142
143
144 @media (max-width: 1200px) {
145
146 .petrobras-footer .footer-other-links-container {
147 display: flex;
148 flex-direction: column;
149 margin: 48px auto 55px auto;
150 align-items: center;
151 text-align: center;
152 justify-content: flex-start;
153 gap: var(--space-md);
154 }
155
156 .petrobras-footer .footer-other-links-container p {
157 margin-left: 0;
158 }
159
160 .petrobras-footer .footer-other-links-container .footer-links {
161 display: flex;
162 flex-direction: column;
163 gap: var(--space-md);
164 }
165
166
167 .petrobras-footer .footer-other-links-container .footer-links a,
168 .petrobras-footer .footer-other-links-container .footer-links p {
169 margin-left: 0;
170 }
171
172 }
173
174 @media (max-width: 767px) {
175
176 .petrobras-footer .footer-other-links-container .footer_copyright {
177 padding-bottom: 25px;
178 }
179 }
180
181</style>
Canais
Idioma
Acessibilidade
Busca
Faça uma busca:
Buscar
Mais pesquisados
Preço dos combustíveis
Pré-Sal
Time Petrobras
Acessibilidade
Alto-Contraste
Desligado
Ligado
Texto Grande
Desligado
Ligado
Idioma:
Selecione um idioma: