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

----
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 curTitle = curVocabulary.getT...  [in template "20155#20195#20833" at line 104, column 25]
----
1<#-- 
2  ~ Copyright (c) 2018 AXA Shared Services Spain S.A. 
3
4  ~ Licensed under the AXA Shared Services Spain S.A. License (the "License"); you 
5  ~ 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                        <#assign curTitle = curVocabulary.getTitle(locale) /> 
105                        <#assign curCategories = curVocabulary.getCategories() /> 
106 
107                        <#if (curVocabulary?index >= mobileCategoriesNumber) > 
108                            <#assign wrapperClass = "select__wrapper-hidden form-group select__wrapper"> 
109                        <#else> 
110                            <#assign wrapperClass = "form-group select__wrapper"> 
111                        </#if> 
112 
113                        <div class="${wrapperClass}"> 
114                            <div class="select__wrapper__gradient"> 
115                                <label class="custom__label">${curTitle}</label> 
116                                <select id="${curVocabulary.name?lower_case?replace(" ", "-")}" name="${curVocabulary 
117                                .name?replace("-", "")}" class="form-control filters__selector__new gh-${curVocabulary.name?lower_case?replace(" ", "-")}"> 
118                                    <option value="">${selectDefaultLabel}</option> 
119                                    <@displayCategories categories=curCategories activeCategories=activeCategories![]/> 
120                                </select> 
121                                <span></span> 
122                            </div> 
123                        </div> 
124                    </#list> 
125                </div> 
126            </div> 
127        </div> 
128        <div class="row arrow__more__wrapper"> 
129            <div class="col-sx-12"> 
130                <div class="arrow__more__filter closed"> 
131                </div> 
132            </div> 
133        </div> 
134 
135        <#if (vocabulariesSeq?? && vocabulariesSeq?has_content) || (searchText??  && searchText?has_content) > 
136            <div class="row active__filters__wrapper"> 
137                <div class="col-xs-12"> 
138                    <h4 class="active__filters__wrapper__title typo28">${activeFiltersLabel}</h4> 
139                    <div class="active__filters__group"> 
140                        <#if searchText?has_content> 
141                            <div class="active__filters filters__active__single"> 
142                                <#assign searchFilterLabel = axaimTranslate("global.filters.search.text") /> 
143                                <#assign iconTitle = removeFilterLabel + " " + searchFilterLabel + " - " + searchText /> 
144                                <h5 class="active__filter__title typo14 filters__label text_filter gh-activefilter-type">${searchFilterLabel} 
145                                    :</h5> 
146                                <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> 
147                            </div> 
148                        </#if> 
149                        <#list vocabulariesSeq as curVocabularyId > 
150                            <#assign vocabulary = AssetVocabularyLocalService.fetchAssetVocabulary(curVocabularyId) /> 
151                            <#assign vocabularyTitle = vocabulary.getTitle(locale) /> 
152                            <div class="active__filters filters__active__single"> 
153                                <h5 class="active__filter__title typo14 filters__label gh-activefilter-type">${vocabularyTitle}:</h5> 
154                                <#list categoryObjectsSeq as curCategory > 
155                                    <#if curCategory.getVocabularyId() == curVocabularyId > 
156                                        <#assign iconTitle = removeFilterLabel + " " + vocabularyTitle + " - " + curCategory.getTitle(locale) /> 
157                                        <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> 
158                                    </#if> 
159                                </#list> 
160                            </div> 
161                        </#list> 
162                    </div> 
163                    <a href="#" class="filter__remove filters__active__reset link red gh-activefilter-clear">${removeAllFiltersLabel}</a> 
164                </div> 
165            </div> 
166        </#if> 
167        <input type="hidden" name="paramName" id="paramName" value="p_r_p_categoryId"> 
168        <input type="hidden" name="baseUrl" id="baseUrl" value="${baseUrl}#${anchorName}"> 
169    </div> 
170 
171</#if> 
172 
173<#macro displayCategories categories activeCategories activeCategories> 
174    <#list categories as curCategory> 
175        <#if !activeCategories?seq_contains(curCategory.getCategoryId()?string) > 
176            <#assign catTitle = curCategory.getTitle(locale) /> 
177            <#assign catId = curCategory.getCategoryId()?string /> 
178        <#-- Get the paramName and the baseUrl, necessary to form the filtering URL for the asset publisher --> 
179            <#if emptyAttrs > 
180                <#assign catUrlObj = renderResponse.createRenderURL() /> 
181                ${catUrlObj.setParameter("resetCur", "true")} 
182                <#assign catUrl = catUrlObj?string /> 
183                <#assign lastIndex = catUrl?last_index_of("&") /> 
184                <#assign first_parameter = catUrl?last_index_of("?") /> 
185                <#assign baseUrl =catUrl[0..first_parameter]/> 
186                <#assign emptyAttrs = false /> 
187            </#if> 
188        <option value="${catId}">${catTitle}</option> 
189        </#if> 
190    </#list> 
191</#macro> 
192<#function axaimTranslate labelText> 
193    <#if translationServiceAvailable> 
194        <#assign translated = languageService.getLabelTranslation(labelText, locale, companyId) /> 
195    <#else> 
196        <#assign translated = labelText /> 
197    </#if> 
198    <#return translated /> 
199</#function> 
200 
201<script> 
202    //fix scroll on mobile 
203    AUI().on('domready', function () { 
204        if (location.hash === "#${anchorName}" && window.outerWidth <= 1076) { 
205            var dockbarHeight = 0; 
206            var portletDockbar = document.querySelector(".portlet-dockbar"); 
207            if (portletDockbar) { 
208                dockbarHeight = portletDockbar.getBoundingClientRect().height; 
209
210            var headerHeight = document.querySelector('header').getBoundingClientRect().height 
211            window.scrollBy(0, -1 * (dockbarHeight + headerHeight)); 
212
213    }); 
214</script>