Nawigacja po kategoriach
Wystąpił błąd podczas przetwarzania szablonu.
The following has evaluated to null or missing: ==> serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") [in template "20101#20127#500090523" at line 7, column 46] ---- Tip: If the failing expression is known to 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 assetCategoryPropertyLocalSer... [in template "20101#20127#500090523" at line 7, column 1] ----
1<#assign displayDepth = 3 />
2
3<#assign portlet_namespace>
4 <@portlet.namespace />
5</#assign>
6
7<#assign assetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService")/>
8<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService") />
9<#assign systemParameterOrmLocalServiceUtil = serviceLocator.findService("pl.gov.mf.kud.seap.lf.sbl.seap.service.SystemParameterOrmLocalService") />
10<#assign aktualnosciOrmLocalService = serviceLocator.findService("pl.gov.mf.kud.seap.lf.sbl.seap.service.AktualnosciOrmLocalService") />
11
12<#assign selCategoryId = renderRequest.getParameter("categoryId")! />
13<#assign isUserCategoriesRequestParam = (request.getParameter("userCategory")?boolean)!false />
14
15<#assign customCategoriesId = systemParameterOrmLocalServiceUtil.getParamValue("newsletter.redirect.category.id", "0")?number />
16<#assign userCategories = aktualnosciOrmLocalService.getAktualnosciTreeByUser(themeDisplay.getUser().getUserUuid(), locale) />
17
18<#assign group = 0 />
19
20
21<#if !entries?has_content>
22 <#if themeDisplay.isSignedIn()>
23 <div class="alert alert-info"><@liferay.language key="there-are-no-menu-items-to-display" /></div>
24 </#if>
25<#else>
26 <div aria-label="<@liferay.language key="site-pages" />" id="sidebar" role="navigation">
27 <#list entries as entry>
28 <#assign categoryListId = entry.getPrimaryKey()?string />
29 <@buildNavigationSeap
30 navItemLevel=1 navItems=entry.getCategories() parentId="list-tab" isOpened=false categoryListId=categoryListId
31 addAll=entry?index name=entry.getName() />
32 <p></p>
33 </#list>
34 </div>
35</#if>
36
37<#function checkIfOpened category selCategoryId isUserCategories>
38 <#if isUserCategories && !isUserCategoriesRequestParam ||
39 !isUserCategories && isUserCategoriesRequestParam>
40 <#return false>
41 </#if>
42 <#local categoryId = category.categoryId?string/>
43 <#if categoryId == selCategoryId>
44 <#return true>
45 <#else>
46 <#if isUserCategories>
47 <#local childCategories = category.childs />
48 <#else>
49 <#if assetCategoryService??>
50 <#local childCategories = assetCategoryService.getChildCategories(category.getCategoryId()) />
51 </#if>
52 </#if>
53
54 <#if childCategories?has_content>
55 <#list childCategories as child>
56 <#if checkIfOpened(child, selCategoryId, isUserCategories)>
57 <#return true>
58 </#if>
59 </#list>
60 </#if>
61 </#if>
62 <#return false>
63</#function>
64
65<#macro buildNavigationSeap navItemLevel navItems parentId isOpened categoryListId addAll name>
66 <#-- ordering begin -->
67
68 <#local categoriesOrder = [] />
69 <#local categoriesOrdered = [] />
70 <#local av = [] />
71 <#list navItems as navItem>
72 <#local added = false />
73 <#if permissionChecker.hasPermission(themeDisplay.getScopeGroupId(), "com.liferay.asset.kernel.model.AssetCategory", navItem.getCategoryId(), "VIEW")>
74 <#local categoryProperties = assetCategoryPropertyLocalService.getCategoryProperties(navItem.getCategoryId()) />
75 <#if categoryProperties?has_content>
76 <#list categoryProperties as categoryProperty>
77 <#if "order" == categoryProperty.getKey()>
78 <#local categoriesOrder += [{"category":navItem, "order":categoryProperty.getValue()?number}] />
79 <#local added = true />
80 </#if>
81
82 <#if "available" == categoryProperty.getKey()>
83 <#local av += [{"id": navItem.getCategoryId(), "av": categoryProperty.getValue()}] />
84 </#if>
85 </#list>
86 </#if>
87
88 <#if added == false>
89 <#local categoriesOrder += [{"category":navItem, "order":99999}] />
90 </#if>
91 </#if>
92 </#list>
93
94 <#list categoriesOrder?sort_by("order") as k>
95 <#local categoriesOrdered += [k.category] />
96 </#list>
97
98 <#-- ordering end -->
99
100 <#if navItems?has_content && ((displayDepth == 0) || (navItemLevel <= displayDepth))>
101 <#if navItemLevel == 1>
102 <#local seap_css_class = "list-group sidebar-menu" />
103 <#elseif navItemLevel == 2>
104 <#local seap_css_class = "nav" />
105 <#else>
106 <#local seap_css_class = "toggle-list-menu" />
107 </#if>
108
109 <#if navItemLevel != 1>
110 <div class="<#if isOpened>show<#else>collapse</#if>" id="${parentId}" role="list">
111 </#if>
112 <ul class="${seap_css_class}" <#if navItemLevel == 1>role="tablist"</#if>>
113 <#-- <#if navItemLevel == 1 && name != "Newsletter">
114 <#local categoryURL = renderResponse.createRenderURL() />
115 ${categoryURL.setParameter("resetCur", "true")}
116 ${categoryURL.setParameter("categoryId", categoryListId)}
117
118 <li class="nav-item">
119 <a class="nav-link <#if !(selCategoryId?has_content) || categoryListId == selCategoryId || selCategoryId=="0">selected active</#if>" href="${categoryURL}"
120 id="list-c-all" role="tab">
121 <@liferay.language key="newsletter" />
122 </a>
123 </li>
124 </#if> -->
125
126 <#if navItemLevel == 1 && name == "Newsletter">
127 <#local categoryURL = renderResponse.createRenderURL() />
128 ${categoryURL.setParameter("resetCur", "true")}
129 ${categoryURL.setParameter("categoryId", categoryListId)}
130
131 <li class="nav-item">
132 <a class="nav-link <#if !(selCategoryId?has_content) || categoryListId == selCategoryId || selCategoryId=="0">selected active</#if>" href="${categoryURL}?p_r_p_resetCur=true&p_r_p_categoryId=${categoryListId}"
133 id="list-c-all" role="tab">
134 <@liferay.language key="all" />
135 </a>
136 </li>
137 </#if>
138 <#list categoriesOrdered as navItem>
139 <#local childId = parentId + "-" + navItem?index />
140
141 <#if navItemLevel != 1 || navItem.isRootCategory()>
142 <#local categoryURL = renderResponse.createRenderURL() />
143 ${categoryURL.setParameter("resetCur", "true")}
144 ${categoryURL.setParameter("categoryId", navItem.getCategoryId()?string)}
145
146 <#local isUserCategories = customCategoriesId == navItem.getCategoryId() />
147 <#if isUserCategories>
148 <#local childCategories = userCategories />
149 <#local canShowSelection = isUserCategoriesRequestParam />
150 <#else>
151 <#if assetCategoryService??>
152 <#local
153 childCategories = assetCategoryService.getChildCategories(navItem.getCategoryId())
154 />
155 </#if>
156 <#local canShowSelection = !isUserCategoriesRequestParam />
157 </#if>
158
159 <#local isSubmenuItemExists = childCategories?has_content && (displayDepth == 0 || (navItemLevel < displayDepth))>
160 <#if isSubmenuItemExists>
161 <#local isOpened = checkIfOpened(navItem, selCategoryId, false) />
162 </#if>
163
164 <#local _av = 'true' />
165
166 <#list av as _a>
167 <#if _a.id == navItem.getCategoryId()>
168 <#local _av = _a.av />
169 </#if>
170 </#list>
171
172 <li class="nav-item">
173 <#if _av == 'false'>
174 <span class="nav-span">${navItem.getTitle(locale)}</span>
175 <#else>
176 <a class="nav-link <#if canShowSelection && navItem.getCategoryId()?string == selCategoryId>selected active</#if>" href="${categoryURL}?p_r_p_resetCur=true&p_r_p_categoryId=${navItem.getCategoryId()?string}<#if isUserCategories>&userCategory=true</#if>"
177 id="list-c-${childId}-child-${group}" role="tab" data-av="${_av}" <#if isSubmenuItemExists>aria-expanded="<#if !isOpened>false<#else>true</#if>"</#if>>
178 ${navItem.getTitle(locale)}
179 </a>
180 </#if>
181
182 <#if isSubmenuItemExists>
183 <i class="toggle fa fa-chevron-down <#if !isOpened>collapsed</#if>" data-toggle="collapse" data-target="#${childId}-child-${group}"></i>
184
185 <#if isUserCategories>
186 <@buildUserNavigationSeap listContent=childCategories level=(navItemLevel+1) parentId=childId+'-child-'+group isOpened=isUserCategoriesRequestParam />
187 <#else>
188 <@buildNavigationSeap
189 navItemLevel=(navItemLevel + 1)
190 navItems=childCategories parentId=childId+'-child-'+group isOpened=isOpened
191 categoryListId=categoryListId addAll=addAll name=name />
192 </#if>
193 </#if>
194 </li>
195 </#if>
196 <#assign group = group + 1 />
197 </#list>
198 </ul>
199 <#if navItemLevel != 1>
200 </div>
201 </#if>
202 </#if>
203</#macro>
204
205<#macro buildUserNavigationSeap listContent level parentId isOpened>
206 <#if listContent?has_content && ((displayDepth == 0) || (level <= displayDepth))>
207 <#if level == 1>
208 <#local seap_css_class = "list-group sidebar-menu" />
209 <#elseif level == 2>
210 <#local seap_css_class = "nav" />
211 <#else>
212 <#local seap_css_class = "toggle-list-menu" />
213 </#if>
214
215 <#if level != 1>
216 <div class="<#if isOpened>show<#else>collapse</#if>" id="${parentId}" role="list">
217 </#if>
218
219 <ul class="${seap_css_class}" <#if level == 1>role="tablist"</#if>>
220 <#list listContent as navItem>
221 <#local childId = parentId + "-" + navItem?index />
222
223 <#local categoryURL = renderResponse.createRenderURL() />
224 ${categoryURL.setParameter("resetCur", "true")}
225 ${categoryURL.setParameter("categoryId", navItem.categoryId?string)}
226
227 <#local childCategories = navItem.childs />
228
229 <#local isSubmenuItemExists = childCategories?has_content && (displayDepth == 0 || (level < displayDepth))>
230 <#if isSubmenuItemExists>
231 <#local isOpened = checkIfOpened(navItem, selCategoryId, true) />
232 </#if>
233
234 <li class="nav-item">
235 <a class="nav-link <#if navItem.categoryId?string == selCategoryId>selected active</#if>" href="${categoryURL}&userCategory=true&p_r_p_resetCur=true&p_r_p_categoryId=${navItem.categoryId?string}"
236 id="list-c-${childId}" role="tab">
237 ${navItem.name}
238 </a>
239
240 <#if isSubmenuItemExists>
241 <i class="toggle fa fa-chevron-down <#if !isOpened>collapsed</#if>" data-toggle="collapse" data-target="#${childId}"></i>
242
243 <@buildUserNavigationSeap listContent=childCategories level=(level+1) parentId=childId isOpened=isOpened />
244 </#if>
245 </li>
246 </#list>
247 </ul>
248 <#if level != 1>
249 </div>
250 </#if>
251 </#if>
252</#macro>
253<script>
254 Liferay.Portlet.ready(puescApp.initTabs);
255</script>