An error occurred while processing the template.
The following has evaluated to null or missing:
==> curVocabulary  [in template "20155#20195#20833" at line 110, column 50]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign curCategories = curVocabulary...  [in template "20155#20195#20833" at line 110, column 25]
----
1<#-- 
2  ~ Copyright (c) 2020 AXA Group Operations Spain S.A. 
3
4  ~ Licensed under the AXA Group Operations Spain S.A. License (the "License"); 
5  ~ you may not use this file except in compliance with the License. 
6  ~ A copy of the License can be found in the LICENSE.TXT file distributed 
7  ~ together with this file. 
8
9  ~ Unless required by applicable law or agreed to in writing, software 
10  ~ distributed under the License is distributed on an "AS IS" BASIS, 
11  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
12  ~ See the License for the specific language governing permissions and 
13  ~ limitations under the License. 
14  --> 
15 
16<#assign emptyAttrs = true /> 
17<#assign paramName = "" /> 
18<#assign baseUrl = "" /> 
19<#assign languageService = "" /> 
20<#assign translationServiceAvailable = false /> 
21<#assign anchorName = 'filters' /> 
22<#assign AssetCategoryLocalService = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]> 
23<#assign AssetVocabularyLocalService = staticUtil["com.liferay.asset.kernel.service.AssetVocabularyLocalServiceUtil"]> 
24 
25<#if serviceLocator.findService("com.axa.im.wcm.labeltranslation.service.LabelTranslationLocalService")??> 
26    <#assign languageService = serviceLocator.findService("com.axa.im.wcm.labeltranslation.service.LabelTranslationLocalService") /> 
27    <#assign translationServiceAvailable = true /> 
28</#if> 
29 
30<#-- localizable literals and translations --> 
31<#assign removeAllFiltersLabel = axaimTranslate("global.filters.remove.all") /> 
32<#assign removeFilterLabel = axaimTranslate("global.filters.remove.single") /> 
33<#assign activeFiltersLabel = axaimTranslate("global.filters.active") /> 
34<#assign selectDefaultLabel = axaimTranslate("content.insights.filter.select") /> 
35<#assign searchBoxLabel = axaimTranslate("global.filters.search") /> 
36<#assign searchBoxPlaceHolderLabel = axaimTranslate("global.filters.search.placeholder") /> 
37 
38<#-- Get the current categories vocabularies and objects--> 
39<#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] /> 
40<#assign originalRequest = portalUtil.getOriginalServletRequest(portalUtil.getHttpServletRequest(renderRequest)) /> 
41<#assign mobileCategoriesNumber = 3> 
42 
43<#assign categoriesParamsValues = [] /> 
44<#assign activeCategories = [] /> 
45<#if originalRequest.getParameterMap()['p_r_p_categoryId']??> 
46    <#assign categoriesParamsValues = originalRequest.getParameterMap()['p_r_p_categoryId'] /> 
47    <#list categoriesParamsValues as categoryId> 
48        <#if ! activeCategories?seq_contains(categoryId)> 
49            <#assign activeCategories = activeCategories + [categoryId] /> 
50        </#if> 
51    </#list> 
52</#if> 
53 
54<#if originalRequest.getParameter("searchText")?has_content> 
55    <#assign searchText = originalRequest.getParameter("searchText") /> 
56</#if> 
57 
58<#assign vocabulariesSeq = [] /> 
59<#assign categoryObjectsSeq = [] /> 
60<#list activeCategories as activeCategoryId> 
61    <#if validator.isNumber(activeCategoryId)> 
62        <#assign activeCategory = AssetCategoryLocalService.fetchCategory(activeCategoryId?number) /> 
63        <#if activeCategoryId??> 
64            <#assign categoryObjectsSeq = categoryObjectsSeq + [activeCategory] /> 
65            <#assign activeVocabularyId = activeCategory.getVocabularyId() /> 
66            <#if !vocabulariesSeq?seq_contains(activeVocabularyId) > 
67                <#assign vocabulariesSeq = vocabulariesSeq + [activeVocabularyId] /> 
68            </#if>      
69        </#if> 
70    </#if> 
71 
72</#list> 
73 
74<#if entries?has_content> 
75    <#setting locale=locale /> 
76    <div class="forms category__filters" id="${anchorName}"> 
77        <div class="row searchbox__wrapper"> 
78            <div class="col-xs-12"> 
79                <div class="searchbox form-group"> 
80                    <input class="searchbox__input form-control gh-searchBar" 
81                        type="text" 
82                        maxlength="100" 
83                        placeholder="${searchBoxPlaceHolderLabel}" 
84                        <#if searchText?has_content> 
85                           value="${searchText}" 
86                        </#if> 
87                    /> 
88                    <button class="button custom-icon gh-searchButton"> 
89                        <span class="icon"> 
90                            <svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 30.239 30.239"> 
91                                <g> 
92                                    <path d="M20.194,3.46c-4.613-4.613-12.121-4.613-16.734,0c-4.612,4.614-4.612,12.121,0,16.735   c4.108,4.107,10.506,4.547,15.116,1.34c0.097,0.459,0.319,0.897,0.676,1.254l6.718,6.718c0.979,0.977,2.561,0.977,3.535,0   c0.978-0.978,0.978-2.56,0-3.535l-6.718-6.72c-0.355-0.354-0.794-0.577-1.253-0.674C24.743,13.967,24.303,7.57,20.194,3.46z    M18.073,18.074c-3.444,3.444-9.049,3.444-12.492,0c-3.442-3.444-3.442-9.048,0-12.492c3.443-3.443,9.048-3.443,12.492,0   C21.517,9.026,21.517,14.63,18.073,18.074z" fill="#FFFFFF"/> 
93                                </g> 
94                            </svg> 
95                        </span> 
96                    </button> 
97                </div> 
98            </div> 
99        </div> 
100        <div class="row combo__forms__wrapper"> 
101            <div class="col-xs-12"> 
102                <div class="combo__select"> 
103                    <#list entries as curVocabulary> 
104                        <#attempt> 
105                            <#assign curTitle = curVocabulary.getTitle(locale) /> 
106                            <#recover> 
107                                <!-- curTitle failed --> 
108                                <#assign curTitle = "-" /> 
109                        </#attempt> 
110                        <#assign curCategories = curVocabulary.getCategories() /> 
111 
112                        <#if (curVocabulary?index >= mobileCategoriesNumber) > 
113                            <#assign wrapperClass = "select__wrapper-hidden form-group select__wrapper"> 
114                        <#else> 
115                            <#assign wrapperClass = "form-group select__wrapper"> 
116                        </#if> 
117 
118                        <div class="${wrapperClass}"> 
119                            <div class="select__wrapper__gradient"> 
120                                <label class="custom__label">${curTitle}</label> 
121                                <select id="${curVocabulary.name?lower_case?replace(" ", "-")}" name="${curVocabulary 
122                                .name?replace("-", "")}" class="form-control filters__selector__new gh-${curVocabulary.name?lower_case?replace(" ", "-")}"> 
123                                    <option value="">${selectDefaultLabel}</option> 
124                                    <@displayCategories categories=curCategories activeCategories=activeCategories![]/> 
125                                </select> 
126                                <span></span> 
127                            </div> 
128                        </div> 
129                    </#list> 
130                </div> 
131            </div> 
132        </div> 
133        <div class="row arrow__more__wrapper"> 
134            <div class="col-sx-12"> 
135                <div class="arrow__more__filter closed"> 
136                </div> 
137            </div> 
138        </div> 
139 
140        <#if (vocabulariesSeq?? && vocabulariesSeq?has_content) || (searchText??  && searchText?has_content) > 
141            <div class="row active__filters__wrapper"> 
142                <div class="col-xs-12"> 
143                    <h4 class="active__filters__wrapper__title typo28">${activeFiltersLabel}</h4> 
144                    <div class="active__filters__group"> 
145                        <#if searchText?has_content> 
146                            <div class="active__filters filters__active__single"> 
147                                <#assign searchFilterLabel = axaimTranslate("global.filters.search.text") /> 
148                                <#assign iconTitle = removeFilterLabel + " " + searchFilterLabel + " - " + searchText /> 
149                                <h5 class="active__filter__title typo14 filters__label text_filter gh-activefilter-type">${searchFilterLabel} 
150                                    :</h5> 
151                                <p class="selected__filter typo14 filters__active__filter gh-activefilter-selected">${searchText}<span class="axaim-icon-cross gh-filter-icon-delete-new" title="${iconTitle}"></span></p> 
152                            </div> 
153                        </#if> 
154                        <#list vocabulariesSeq as curVocabularyId > 
155                            <#assign vocabulary = AssetVocabularyLocalService.fetchAssetVocabulary(curVocabularyId) /> 
156                            <#assign vocabularyTitle = vocabulary.getTitle(locale) /> 
157                            <div class="active__filters filters__active__single"> 
158                                <h5 class="active__filter__title typo14 filters__label gh-activefilter-type">${vocabularyTitle}:</h5> 
159                                <#list categoryObjectsSeq as curCategory > 
160                                    <#if curCategory.getVocabularyId() == curVocabularyId > 
161                                        <#assign iconTitle = removeFilterLabel + " " + vocabularyTitle + " - " + curCategory.getTitle(locale) /> 
162                                        <p class="selected__filter typo14 filters__active__filter gh-activefilter-selected" data-categoryid="${curCategory.getCategoryId()}" >${curCategory.getTitle(locale)}<span class="axaim-icon-cross gh-filter-icon-delete-new" title="${iconTitle}"></span></p> 
163                                    </#if> 
164                                </#list> 
165                            </div> 
166                        </#list> 
167                    </div> 
168                    <a href="#" class="filter__remove filters__active__reset link red gh-activefilter-clear">${removeAllFiltersLabel}</a> 
169                </div> 
170            </div> 
171        </#if> 
172        <input type="hidden" name="paramName" id="paramName" value="p_r_p_categoryId"> 
173        <input type="hidden" name="baseUrl" id="baseUrl" value="${baseUrl}#${anchorName}"> 
174    </div> 
175 
176</#if> 
177 
178<#macro displayCategories categories activeCategories activeCategories> 
179    <#list categories as curCategory> 
180        <#if !activeCategories?seq_contains(curCategory.getCategoryId()?string) > 
181            <#assign catTitle = curCategory.getTitle(locale) /> 
182            <#assign catId = curCategory.getCategoryId()?string /> 
183        <#-- Get the paramName and the baseUrl, necessary to form the filtering URL for the asset publisher --> 
184            <#if emptyAttrs > 
185                <#assign catUrlObj = renderResponse.createRenderURL() /> 
186                ${catUrlObj.setParameter("resetCur", "true")} 
187                <#assign catUrl = catUrlObj?string /> 
188                <#assign lastIndex = catUrl?last_index_of("&") /> 
189                <#assign first_parameter = catUrl?last_index_of("?") /> 
190                <#assign baseUrl =catUrl[0..first_parameter]/> 
191                <#assign emptyAttrs = false /> 
192            </#if> 
193        <option value="${catId}">${catTitle}</option> 
194        </#if> 
195    </#list> 
196</#macro> 
197<#function axaimTranslate labelText> 
198    <#if translationServiceAvailable> 
199        <#assign translated = languageService.getLabelTranslation(labelText, locale, companyId) /> 
200    <#else> 
201        <#assign translated = labelText /> 
202    </#if> 
203    <#return translated /> 
204</#function> 
205 
206<script> 
207    //fix scroll on mobile 
208    AUI().on('domready', function () { 
209        if (location.hash === "#${anchorName}" && window.outerWidth <= 1076) { 
210            var dockbarHeight = 0; 
211            var portletDockbar = document.querySelector(".portlet-dockbar"); 
212            if (portletDockbar) { 
213                dockbarHeight = portletDockbar.getBoundingClientRect().height; 
214
215            var headerHeight = document.querySelector('header').getBoundingClientRect().height 
216            window.scrollBy(0, -1 * (dockbarHeight + headerHeight)); 
217
218    }); 
219</script>