Imagem de header interno Imagem de header interno
An error occurred while processing the template.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> restClient.get("/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/" + vocabularyId + "/taxonomy-categories?fields=id,name&restricFields=actions,availableLanguages,taxonomyCategoryUsageCount&page=1&pageSize=30")  [in template "44549#44620#4481727" at line 4, column 34]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: categoriesPage = restClient.get("/hea...  [in template "44549#44620#4481727" at line 4, column 17]
----
1<#assign namespace = "${namespace}_news_themes_filter" /> 
2<#assign  
3		vocabularyId = 4435330 
4		categoriesPage = restClient.get("/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/" + vocabularyId + "/taxonomy-categories?fields=id,name&restricFields=actions,availableLanguages,taxonomyCategoryUsageCount&page=1&pageSize=30").items 
5/> 
6 
7<div class="d-none"> 
8    <@liferay_ui["panel-container"] 
9        extended=true 
10        id="${namespace + 'filterCustomPanelContainer'}" 
11        markupView="lexicon" 
12        persistState=true 
13
14        <@liferay_ui.panel 
15            collapsible=true 
16            cssClass="search-facet" 
17            id="${namespace + 'filterCustomPanel'}" 
18            markupView="lexicon" 
19            persistState=true 
20            title="${htmlUtil.escapeAttribute(customFilterDisplayContext.getHeading())}" 
21
22            <div class="form-group-autofit"> 
23                <@liferay_aui["input"] 
24                    cssClass="custom-filter-value-input" 
25                    data\-qa\-id="customFilterValueInput" 
26                    disabled=customFilterDisplayContext.isImmutable() 
27                    id="${namespace + 'themeInput'}" 
28                    label="" 
29                    name="${htmlUtil.escapeAttribute(customFilterDisplayContext.getParameterName())}" 
30                    useNamespace=false 
31                    value="${htmlUtil.escapeAttribute(customFilterDisplayContext.getFilterValue())}" 
32                    wrapperCssClass="form-group-item" 
33                /> 
34 
35                <@clay["button"] 
36                    ariaLabel='${languageUtil.get(request, "apply")}' 
37                    disabled=customFilterDisplayContext.isImmutable() 
38                    elementClasses="btn-secondary" 
39                    id="${namespace + 'submitThemeFilter'}" 
40                    label='${languageUtil.get(request, "apply")}' 
41                    type="submit" 
42                /> 
43            </div> 
44        </@> 
45    </@> 
46</div> 
47 
48<div id="${namespace}"> 
49    <select class="form-control" id="${namespace + 'selectTheme'}" multiple="true"> 
50        <option name="all" value="all"> 
51            <@liferay.language key="with-any-theme" /> 
52        </option> 
53        <#list categoriesPage as categorie> 
54            <option name="${categorie.name}" value="${categorie.id}"> 
55                ${categorie.name} 
56            </option> 
57        </#list> 
58    </select> 
59</div> 
60 
61<script> 
62(function(){ 
63    const prefix = "assetCategoryIds:"; 
64    var currentThemes = $("#${namespace + 'themeInput'}").val(); 
65    if (currentThemes != '') { 
66        currentThemes.split(" OR ").forEach(theme => { 
67            $("#${namespace + 'selectTheme'} option[value='" + theme.substring(prefix.length) + "']").attr("selected", "selected"); 
68        }) 
69    }  
70 
71    var selectTheme = document.getElementById("${namespace + 'selectTheme'}"); 
72    new Choices(selectTheme, { 
73        shouldSort: false, 
74        placeholder: false, 
75        removeItemButton: true, 
76        itemSelectText: "", 
77    }); 
78 
79    if (currentThemes == '') { 
80        $("#${namespace} input").attr("placeholder", "${languageUtil.get(locale, 'with-any-theme')}"); 
81
82 
83    $("#${namespace + 'selectTheme'}").change(() => { 
84        $("#${namespace} input").attr("placeholder", ""); 
85 
86        var selectedValuesArray = $("#${namespace + 'selectTheme'}").val().map(selectedVal => prefix + selectedVal) 
87        var selectedValues = selectedValuesArray.join(" OR "); 
88        if (selectedValues.includes("all")) { 
89            selectedValues = '' 
90
91        $("#${namespace + 'themeInput'}").val(selectedValues); 
92        $("#${namespace + 'submitThemeFilter'}").click(); 
93    }) 
94})() 
95</script> 
An error occurred while processing the template.
Syntax error in template "44549#44620#4480817" in line 10, column 37:
Encountered ">", but was expecting one of these patterns:
    <STRING_LITERAL>
    <RAW_STRING>
    "false"
    "true"
    <INTEGER>
    <DECIMAL>
    "."
    "+"
    "-"
    "!"
    "["
    "("
    "{"
    <ID>
1<#assign 
2  structuredContentResource = resourceLocator.locate("/headless-delivery/v1.0", "StructuredContent") 
3/> 
4<#attempt> 
5<#assign 
6	vocabularyId = 4435330 
7	categories = restClient.get("/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/" + vocabularyId + "/taxonomy-categories?fields=id&restricFields=actions,availableLanguages,taxonomyCategoryUsageCount&page=1&pageSize=30").items 
8/> 
9<#recover> 
10	<#assign categories = [0] / > 
11</#attempt> 
12 
13<#function getVocabularyCategoriesIds> 
14  <#return categories?map(category -> category.id?number)/> 
15</#function> 
16 
17<#function getNewsTopicsFilterEndpoint structuredContent> 
18	<#attempt> 
19  <#local 
20    structuredContentCategoriesIds = structuredContent.getTaxonomyCategoryBriefs() 
21      ?map(taxonomyCategoryBrief -> taxonomyCategoryBrief.getTaxonomyCategoryId()) 
22 
23    newsTopicsCategoriesId = getVocabularyCategoriesIds() 
24    categoryId = structuredContentCategoriesIds?filter(c -> newsTopicsCategoriesId?seq_contains(c))?first 
25  /> 
26	<#recover> 
27		<#assign categoryId = 0 /> 
28	</#attempt> 
29  <#return "/-/categories/" + categoryId/> 
30</#function> 
31 
32<#function getCustomDisplayPageUrl structuredContent> 
33  <#local 
34    structuredContentFields = structuredContent.getContentFields() 
35    customDisplayPageField = structuredContentFields?filter(f -> f.getName() == "customDisplayPage")?first 
36  /> 
37  <#return customDisplayPageField.getContentFieldValue().getLink()/> 
38</#function> 
39 
40<#function getNewsViewUrl structuredContent> 
41  <#local 
42    friendlyUrl = "/w/" + structuredContent.getFriendlyUrlPath() 
43 
44    categoryFilterEndpoint = getNewsTopicsFilterEndpoint(structuredContent) 
45    customDisplayPageUrl = getCustomDisplayPageUrl(structuredContent)!"" 
46  /> 
47  <#return customDisplayPageUrl?has_content?then(customDisplayPageUrl, friendlyUrl) + categoryFilterEndpoint/> 
48</#function> 
49 
50<#assign images_path = "/documents/d/guest/" /> 
51<#assign total = searchContainer.getTotal() /> 
52<#assign start = searchContainer.getStart() /> 
53<#assign delta = searchContainer.getDelta() />     
54<#assign totalPages = (total/delta)?ceiling /> 
55<#assign currentPage = ((start+1)/delta)?ceiling />     
56<#assign isFirstPage = currentPage == 1 /> 
57<#assign isLastPage = currentPage == totalPages /> 
58<#assign iteratorURL = searchContainer.getIteratorURL().toString() /> 
59<#assign iteratorURL += iteratorURL?contains("?")?then("", "?") /> 
60<#assign firstPageURL = iteratorURL + '&start=1'/> 
61<#assign lastPageURL = iteratorURL + '&start=' + totalPages?string/> 
62<#assign previousURL = iteratorURL + '&start=' + (currentPage - 1)?string /> 
63<#assign nextURL = iteratorURL + '&start=' + (currentPage + 1)?string /> 
64 
65<#assign startPage = (currentPage < 3)?then(1, currentPage - 1) /> 
66<#assign endPage = 2 + startPage /> 
67<#assign endPage = (totalPages < endPage)?then(totalPages, endPage) /> 
68<#assign diff = startPage - endPage + 2 /> 
69<#assign startPage -= (startPage - diff > 0)?then(diff, 0) /> 
70 
71<div class="vale-widget-resultados-busca-noticia"> 
72  <div class="d-sm-flex justify-content-between flex-wrap"> 
73    <#if entries?has_content>  
74      <#list entries as entry> 
75        <#if entry.getTitle()?has_content> 
76          <#assign structuredContent = structuredContentResource.getStructuredContent(entry.getClassPK()) /> 
77          <#assign url = getNewsViewUrl(structuredContent) /> 
78          <#list structuredContent.getContentFields() as field> 
79            <#if field.getName() == "data"> 
80							<#assign data = field.getContentFieldValue().getData()?datetime.iso /> 
81              <#assign date_localized = dateUtil.formatDate("yyyyMMdd", data?string("yyyyMMdd"), locale) /> 
82            </#if> 
83            <#if field.getName() == "imagemDeCapa"> 
84              <#assign imageUrl = field.getContentFieldValue().getImage().getContentUrl() /> 
85              <#assign imageAlt = field.getContentFieldValue().getImage().getDescription() /> 
86            </#if> 
87          </#list> 
88 
89          <a class="box text-decoration-none" href="${url}"> 
90            <div class="font-weight-light mb-5"> 
91              <div class="mb-4 position-relative"> 
92                  <img  
93                      alt="${imageAlt}"  
94                      class="imagem-capa" 
95                      src="${imageUrl}"  
96                  /> 
97                  <img  
98                      class="onda position-absolute" 
99                      src="${images_path}onda_branca" 
100                  /> 
101              </div> 
102              <p class="text-cinza-escuro texto-sm mb-2"> 
103                ${date_localized} 
104              </p> 
105 
106              <h5 class="title mb-0 text-verde-vale"> 
107                ${entry.getHighlightedTitle()} 
108              </h5> 
109            </div> 
110          </a> 
111        </#if> 
112      </#list> 
113    </#if> 
114  </div> 
115  <div class="line-divider"></div> 
116  <div class="pagination d-flex justify-content-center my-5"> 
117    <a  
118      class="pagination-option text-decoration-none mr-sm-5 ${isFirstPage?then('disabled', '')}"  
119      href="${previousURL}"  
120      disabled="${isFirstPage?string}" 
121
122      <img 
123        class="btn btn-primary border-amarelo-vale bg-amarelo-vale mr-2 p-1 rounded-circle" 
124        src="${images_path}seta-2-esq_bra" 
125        alt="button-prev" 
126      /> 
127      <span class="btn btn-link text-amarelo-vale p-0 d-none d-sm-inline"> 
128        <@liferay.language key="previous" /> 
129      </span> 
130    </a> 
131     
132    <#if (startPage > 1)> 
133      <a 
134        class="mr-2" 
135        href="${firstPageURL}" 
136
137        <span 
138          class="pagination-item btn btn-primary p-1 rounded-circle" 
139          alt="first-page-button" 
140        >1 
141        </span> 
142      </a> 
143      <#if currentPage != 3>  
144        <span class="elipsis h-100 mt-auto mr-2">...</span> 
145      </#if> 
146    </#if> 
147 
148    <#list startPage..endPage as i> 
149      <a 
150        class="mr-2 ${(i == currentPage)?then('disabled', '')}" 
151        href="${iteratorURL + '&start=' + i?string}" 
152
153        <span 
154          class="pagination-item ${(currentPage == i)?then('is-active', '')} btn btn-primary p-1 rounded-circle" 
155          alt="first-page-button" 
156        >${i} 
157        </span> 
158      </a> 
159    </#list> 
160 
161    <#if (endPage < totalPages)> 
162      <#if currentPage != totalPages - 2>  
163        <span class="elipsis h-100 mt-auto mr-2">...</span> 
164      </#if> 
165      <a 
166        class="mr-2" 
167        href="${lastPageURL}" 
168
169        <span 
170          class="pagination-item btn btn-primary p-1 rounded-circle" 
171          alt="last-page-button" 
172        >${totalPages} 
173        </span> 
174      </a> 
175    </#if> 
176 
177    <a  
178      class="pagination-option text-decoration-none ml-sm-5 ${isLastPage?then('disabled', '')}"  
179      href="${nextURL}"  
180      disabled="${isLastPage?string}" 
181    >       
182      <span class="btn btn-link text-amarelo-vale mr-2 p-0 d-none d-sm-inline"> 
183        <@liferay.language key="next" /> 
184      </span> 
185      <img 
186        class="btn btn-primary border-amarelo-vale bg-amarelo-vale p-1 rounded-circle" 
187        src="${images_path}seta-2-dir_bra" 
188        alt="button-next" 
189      /> 
190    </a> 
191  </div> 
192</div> 
193 
194 
195<style> 
196  .vale-widget-resultados-busca-noticia .pagination img { 
197    width: 2.03125rem; 
198
199 
200  .vale-widget-resultados-busca-noticia .pagination-item { 
201    color: var(--cinza-escuro); 
202    background-color: var(--branco); 
203    border: 2px solid var(--cinza-escuro); 
204    line-height: 1.30625rem; 
205    opacity: 0.6; 
206    width: 2.03125rem; 
207    height: 2.03125rem; 
208
209 
210  .vale-widget-resultados-busca-noticia .pagination-item:hover { 
211    box-shadow: 0px 0px 6px #55555594; 
212
213 
214  .vale-widget-resultados-busca-noticia .pagination-item.is-active { 
215    color: var(--branco); 
216    background-color: var(--amarelo-vale); 
217    border-color: var(--amarelo-vale); 
218    opacity: 1; 
219
220 
221  .vale-widget-resultados-busca-noticia .pagination-item.is-active:hover { 
222    box-shadow: 0px 0px 6px #ecb11f94; 
223
224 
225  .vale-widget-resultados-busca-noticia .elipsis { 
226    opacity: 0.6; 
227
228 
229  .vale-widget-resultados-busca-noticia ~ form .pagination-bar { 
230    display: none; 
231
232 
233  .vale-widget-resultados-busca-noticia .pagination .disabled { 
234    pointer-events: none; 
235
236 
237  .vale-widget-resultados-busca-noticia .pagination-option.disabled { 
238    opacity: 0.5; 
239
240 
241  .line-divider { 
242    background-color: var(--cinza-escuro); 
243    color: var(--cinza-escuro); 
244    height: 1px; 
245    width: 100%; 
246    opacity: 0.2; 
247
248 
249  .vale-widget-resultados-busca-noticia .onda { 
250    bottom: -0.125rem; 
251    right: -0.125rem; 
252
253 
254  .vale-widget-resultados-busca-noticia .box { 
255    width: 31% 
256
257 
258  .vale-widget-resultados-busca-noticia .imagem-capa { 
259    border-left: 20px solid var(--amarelo-vale); 
260    height: 13.75rem; 
261    width: 100%; 
262    object-fit: cover; 
263
264 
265  .vale-widget-resultados-busca-noticia .title { 
266    height: 5.125rem; 
267    display: -webkit-box; 
268    overflow: hidden; 
269    -webkit-line-clamp: 3; 
270    -webkit-box-orient: vertical; 
271
272 
273  @media screen and (max-width: 992px) { 
274    .vale-widget-resultados-busca-noticia .box { 
275      width: 47% 
276
277
278 
279  @media screen and (max-width: 768px) { 
280    .vale-widget-resultados-busca-noticia .imagem-capa { 
281      border-left: 10px solid var(--amarelo-vale); 
282
283 
284    .vale-widget-resultados-busca-noticia .onda { 
285      bottom: -0.125rem; 
286      right: -0.125rem; 
287      width: 75% 
288
289
290 
291</style> 
Lupa de pesquisa

Did not find what you were looking for?&nbsp; Access our Search Center&nbsp;

Press room&nbsp;

Access our press-only section

Photo: Vale's Archive

Foto:
Onda