Commit 6bfd9352 authored by Bert Leunis's avatar Bert Leunis

ESSENTIALS-1046 Merge master changes into feature/ESSENTIALS-1046

parents 1e38ac83 4681c95a
Hippo Essentials
Copyright 2013-2016 Hippo B.V., Amsterdam, The Netherlands (http://www.onehippo.com/)
Copyright 2013-2017 Hippo B.V., Amsterdam, The Netherlands (http://www.onehippo.com/)
This product includes software developed by:
Hippo B.V., Amsterdam, The Netherlands (http://www.onehippo.com/);
......
This diff is collapsed.
......@@ -8,9 +8,15 @@
},
"dependencies": {
"angular": "1.4.8",
"angular-animate": "1.4.8",
"angular-aria": "1.4.8",
"angular-chosen-localytics": "1.4.0",
"angular-sanitize": "1.4.8",
"angular-tablesort": "1.1.1",
"angular-ui-bootstrap": "0.14.3",
"angular-ui-router": "0.2.15",
"angular-ui-tree": "2.11.0",
"google-code-prettify": "1.0.1",
"hippo-theme": "./target/dependency/hippo-theme.tar.gz",
"jquery": "2.1.4"
},
......
/*
* Copyright 2014-2016 Hippo B.V. (http://www.onehippo.com)
* Copyright 2014-2017 Hippo B.V. (http://www.onehippo.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
......@@ -163,8 +163,9 @@ public final class EssentialConst {
public static final String HIPPOSYSEDIT_PROTOTYPE = "hipposysedit:prototype";
public static final String HIPPOSYSEDIT_NODETYPE = "hipposysedit:nodetype";
public static final String HIPPO_COMPOUND = "hippo:compound";
public static final String HIPPO_COMPOUND_BASE_CLASS = "HippoDocument";
public static final String HIPPO_COMPOUND_BASE_CLASS = "HippoCompound";
public static final String HIPPO_DOCUMENT_IMPORT = "org.hippoecm.hst.content.beans.standard.HippoDocument";
public static final String HIPPO_COMPOUND_IMPORT = "org.hippoecm.hst.content.beans.standard.HippoCompound";
public static final String HIPPO_ITEM_IMPORT = "org.hippoecm.hst.content.beans.standard.HippoItem";
public static final String HIPPO_BEAN_IMPORT = "org.hippoecm.hst.content.beans.standard.HippoBean";
public static final String HIPPO_RELATED_DOCS_IMPORT = "org.onehippo.forge.beans.RelatedDocsBean";
......
......@@ -9,5 +9,7 @@
</div>
<#-- @ftlvariable name="editMode" type="java.lang.Boolean"-->
<#elseif editMode>
<img src="<@hst.link path='/images/essentials/catalog-component-icons/banner.png'/>"> Click to edit Banner
<div>
<img src="<@hst.link path='/images/essentials/catalog-component-icons/banner.png'/>"> Click to edit Banner
</div>
</#if>
......@@ -16,5 +16,7 @@
</a>
</div>
<#elseif editMode>
<img src="<@hst.link path='/images/essentials/catalog-component-icons/banner.png'/>"> Click to edit Banner
<div>
<img src="<@hst.link path='/images/essentials/catalog-component-icons/banner.png'/>"> Click to edit Banner
</div>
</#if>
......@@ -45,6 +45,20 @@
<a class="left carousel-control" href="#${componentId}" data-slide="prev"><span class="glyphicon glyphicon-chevron-left"></span></a>
<a class="right carousel-control" href="#${componentId}" data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>
</#if>
<#--
The Carousel component is initialized on page-load by means of the data attributes. However, when the
channel-manager redraws a container (after actions like adding, removing or reordering components) it will only
do a page reload if one of the affected components adds a headContribution that has not been processed yet
(see HSTTWO-3747). To ensure it is also initialiazed when the page is *not* reloaded, the following snippet is
used.
-->
<#if editMode>
<script type="text/javascript">
if (window.jQuery && window.jQuery.fn.carousel) {
jQuery('#${componentId}').carousel();
}
</script>
</#if>
</div>
<@hst.headContribution category="htmlHead">
......@@ -52,7 +66,6 @@
/* Carousel base class */
#${componentId} {
height: ${cparam.carouselHeight}px;
/*width: ${cparam.carouselWidth}px;*/
margin-bottom: 60px;
}
......@@ -83,21 +96,8 @@
<script type="text/javascript" src="<@hst.webfile path="/js/bootstrap.min.js"/>"></script>
</@hst.headContribution>
<#--
The Carousel component is initialized on page-load by means of the data attributes. However, when the
channel-manager redraws a container (after actions like adding, removing or reordering components) it will only
do a page reload if one of the affected components adds a headContribution that has not been processed yet
(see HSTTWO-3747). To ensure it is also initialiazed when the page is *not* reloaded, the following snippet is
used.
-->
<#if editMode>
<script type="text/javascript">
if (window.jQuery && window.jQuery.fn.carousel) {
jQuery('#${componentId}').carousel();
}
</script>
</#if>
<#elseif editMode>
<div>
<img src="<@hst.link path='/images/essentials/catalog-component-icons/carousel.png'/>"> Click to edit Carousel
</div>
</#if>
<%@ include file="/WEB-INF/jsp/include/imports.jsp" %>
<%--@elvariable id="document" type="{{beansPackage}}.Banner"--%>
<div>
<a href="<hst:link hippobean="${requestScope.document.link}" />">
<figure style="position: relative">
<img src="<hst:link hippobean="${requestScope.document.image}"/>" alt="${fn:escapeXml(requestScope.document.title)}"/>
<figcaption style="position:absolute; top:20px; left:20px; z-index:100; color:white; background: rgba(51, 122, 183, 0.7); width:60%; padding:0 20px 20px 20px; text-shadow: 0 1px 2px rgba(0, 0, 0, .6);">
<c:if test="${not empty requestScope.document.title}">
<h3>${requestScope.document.title}</h3>
</c:if>
<hst:html hippohtml="${requestScope.document.content}"/>
</figcaption>
</figure>
</a>
</div>
<c:if test="${requestScope.document ne null}">
<div>
<a href="<hst:link hippobean="${requestScope.document.link}" />">
<figure style="position: relative">
<img src="<hst:link hippobean="${requestScope.document.image}"/>" alt="${fn:escapeXml(requestScope.document.title)}"/>
<figcaption style="position:absolute; top:20px; left:20px; z-index:100; color:white; background: rgba(51, 122, 183, 0.7); width:60%; padding:0 20px 20px 20px; text-shadow: 0 1px 2px rgba(0, 0, 0, .6);">
<c:if test="${not empty requestScope.document.title}">
<h3>${requestScope.document.title}</h3>
</c:if>
<hst:html hippohtml="${requestScope.document.content}"/>
</figcaption>
</figure>
</a>
</div>
</c:if>
<%--@elvariable id="editMode" type="java.lang.Boolean"--%>
<c:if test="${requestScope.editMode && (requestScope.document eq null)}">
<img src="<hst:link path='/images/essentials/catalog-component-icons/banner.png'/>"> Click to edit Banner
<div>
<img src="<hst:link path='/images/essentials/catalog-component-icons/banner.png'/>"> Click to edit Banner
</div>
</c:if>
......@@ -45,31 +45,47 @@
<a class="left carousel-control" href="#${componentId}" data-slide="prev"><span class="glyphicon glyphicon-chevron-left"></span></a>
<a class="right carousel-control" href="#${componentId}" data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>
</c:if>
<%--
The Carousel component is initialized on page-load by means of the data attributes. However, when the
channel-manager redraws a container (after actions like adding, removing or reordering components) it will only
do a page reload if one of the affected components adds a headContribution that has not been processed yet
(see HSTTWO-3747). To ensure it is also initialiazed when the page is *not* reloaded, the following snippet is
used.
--%>
<c:if test="${requestScope.editMode}">
<script type="text/javascript">
if (window.jQuery && window.jQuery.fn.carousel) {
jQuery('#${componentId}').carousel();
}
</script>
</c:if>
</div>
<style type="text/css">
/* Carousel base class */
#${componentId} {
height: ${requestScope.cparam.carouselHeight}px;
/*width: ${requestScope.cparam.carouselWidth}px;*/
margin-bottom: 60px;
}
/* Since positioning the image, we need to help out the caption */
.carousel-caption {
z-index: 10;
background: rgba(51, 122, 183, 0.7);
}
<hst:headContribution category="htmlHead">
<style type="text/css">
/* Carousel base class */
#${componentId} {
height: ${requestScope.cparam.carouselHeight}px;
margin-bottom: 60px;
}
/* Declare heights because of positioning of img element */
#${componentId} .item {
height: ${requestScope.cparam.carouselHeight}px;
background-color: ${requestScope.cparam.carouselBackgroundColor};
}
/* center images*/
.carousel-inner > .item > img {
margin: 0 auto;
}
</style>
/* Since positioning the image, we need to help out the caption */
.carousel-caption {
z-index: 10;
background: rgba(51, 122, 183, 0.7);
}
/* Declare heights because of positioning of img element */
#${componentId} .item {
height: ${requestScope.cparam.carouselHeight}px;
background-color: ${requestScope.cparam.carouselBackgroundColor};
}
/* center images*/
.carousel-inner > .item > img {
margin: 0 auto;
}
</style>
</hst:headContribution>
<hst:headContribution category="htmlBodyEnd">
<script type="text/javascript" src="<hst:webfile path="/js/jquery-2.1.0.min.js"/>"></script>
......@@ -79,23 +95,10 @@
<script type="text/javascript" src="<hst:webfile path="/js/bootstrap.min.js"/>"></script>
</hst:headContribution>
<%--
The Carousel component is initialized on page-load by means of the data attributes. However, when the
channel-manager redraws a container (after actions like adding, removing or reordering components) it will only
do a page reload if one of the affected components adds a headContribution that has not been processed yet
(see HSTTWO-3747). To ensure it is also initialiazed when the page is *not* reloaded, the following snippet is
used.
--%>
<c:if test="${editMode}">
<script type="text/javascript">
if (window.jQuery && window.jQuery.fn.carousel) {
jQuery('#${componentId}').carousel();
}
</script>
</c:if>
</c:if>
<c:if test="${requestScope.editMode && (requestScope.pageable eq null || requestScope.pageable.total lt 1)}">
<img src="<hst:link path='/images/essentials/catalog-component-icons/carousel.png'/>"> Click to edit Carousel
<div>
<img src="<hst:link path='/images/essentials/catalog-component-icons/carousel.png'/>"> Click to edit Carousel
</div>
</c:if>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2014 Hippo B.V. (http://www.onehippo.com)
Copyright 2014-2017 Hippo B.V. (http://www.onehippo.com)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
......@@ -58,12 +58,6 @@
<sv:property sv:name="hippostdpubwf:publicationDate" sv:type="Date">
<sv:value>2014-08-21T22:58:05.602+02:00</sv:value>
</sv:property>
<sv:property sv:name="hippotranslation:id" sv:type="String">
<sv:value>{{translationId}}</sv:value>
</sv:property>
<sv:property sv:name="hippotranslation:locale" sv:type="String">
<sv:value>document-type-locale</sv:value>
</sv:property>
<sv:property sv:multiple="true" sv:name="resourcebundle:descriptions" sv:type="String">
<sv:value>Header used in "more blogs from same author", prefix to the author name.</sv:value>
<sv:value>Message displayed when no other blogs from same author were found.</sv:value>
......
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2014 Hippo B.V. (http://www.onehippo.com)
Copyright 2014-2017 Hippo B.V. (http://www.onehippo.com)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
......@@ -58,12 +58,6 @@
<sv:property sv:name="hippostdpubwf:publicationDate" sv:type="Date">
<sv:value>2014-08-21T23:08:38.698+02:00</sv:value>
</sv:property>
<sv:property sv:name="hippotranslation:id" sv:type="String">
<sv:value>{{translationId}}</sv:value>
</sv:property>
<sv:property sv:name="hippotranslation:locale" sv:type="String">
<sv:value>document-type-locale</sv:value>
</sv:property>
<sv:property sv:multiple="true" sv:name="resourcebundle:descriptions" sv:type="String">
<sv:value>Placeholder label for facets search.</sv:value>
<sv:value>Label on facet search button.</sv:value>
......
......@@ -6,24 +6,26 @@
<@hst.setBundle basename="essentials.blog"/>
<#if pageable??>
<div class="panel panel-default">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><@fmt.message key="blog.moreby" var="moreby"/>${moreby?html}&nbsp;${author.fullName?html}</h3>
<h3 class="panel-title"><@fmt.message key="blog.moreby" var="moreby"/>${moreby?html}&nbsp;${author.fullName?html}</h3>
</div>
<#if pageable?? && (pageable.total > 0)>
<div class="panel-body">
<#list pageable.items as item>
<@hst.link hippobean=item var="link"/>
<p><a href="${link}">${item.title?html}</a></p>
</#list>
</div>
<div class="panel-body">
<#list pageable.items as item>
<@hst.link hippobean=item var="link"/>
<p><a href="${link}">${item.title?html}</a></p>
</#list>
</div>
<#else>
<div class="panel-body">
<p><@fmt.message key="blog.notfound" var="notfound"/>${notfound?html}</p>
</div>
<div class="panel-body">
<p><@fmt.message key="blog.notfound" var="notfound"/>${notfound?html}</p>
</div>
</#if>
</div>
</div>
<#-- @ftlvariable name="editMode" type="java.lang.Boolean"-->
<#elseif editMode>
<div>
<img src="<@hst.link path='/images/essentials/catalog-component-icons/blogposts-by-author.png'/>"> Click to edit Blogposts by Author
</div>
</#if>
......@@ -4,50 +4,52 @@
<#-- @ftlvariable name="facetLimit" type="java.lang.Integer" -->
<#-- @ftlvariable name="query" type="java.lang.String" -->
<@hst.setBundle basename="essentials.facets"/>
<form action="<@hst.link />" method="get">
<div class="row form-group">
<div class="col-xs-8">
<@fmt.message key='facets.placeholder' var="placeholder"/>
<#if query??>
<input type="search" value="${query?html}" name="query" class="form-control" placeholder="${placeholder?html}">
<#else>
<input type="search" value="" name="query" class="form-control" placeholder="${placeholder?html}">
</#if>
</div>
<div class="col-xs-4">
<button type="submit" class="btn btn-primary pull-right"><@fmt.message key='facets.searchbutton' var="button"/>${button?html}</button>
<div>
<form action="<@hst.link />" method="get">
<div class="row form-group">
<div class="col-xs-8">
<@fmt.message key='facets.placeholder' var="placeholder"/>
<#if query??>
<input type="search" value="${query?html}" name="query" class="form-control" placeholder="${placeholder?html}">
<#else>
<input type="search" value="" name="query" class="form-control" placeholder="${placeholder?html}">
</#if>
</div>
<div class="col-xs-4">
<button type="submit" class="btn btn-primary pull-right"><@fmt.message key='facets.searchbutton' var="button"/>${button?html}</button>
</div>
</div>
</div>
</form>
<#if facets??>
<#assign facetLimit = 50>
</form>
<#if facets??>
<#assign facetLimit = 50>
<ul class="nav nav-list">
<#list facets.folders as facetvalue>
<#if facetvalue.folders?? && (facetvalue.folders?size > 0)>
<li><label class="nav-header">${facetvalue.name?html}</label>
<ul class="nav nav-list">
<#list facetvalue.folders as item>
<#if (item.leaf?? && item.leaf && (item.count > 0))>
<@hst.facetnavigationlink current=facets remove=item var="removeLink"/>
<li class="active">
<a href="${removeLink}">${item.name?html}&nbsp;
<span class="alert-danger"><@fmt.message key='facets.remove' var="remove"/>${remove?html}</span>
</a>
</li>
<#else>
<@hst.link var="link" hippobean=item navigationStateful=true/>
<li <#if (item_index >= facetLimit)>class="extra"</#if>>
<a href="${link}">${item.name?html}&nbsp;<span>(${item.count})</span></a>
</li>
</#if>
</#list>
</ul>
</li>
</#if>
</#list>
</ul>
<#-- @ftlvariable name="editMode" type="java.lang.Boolean"-->
<#elseif editMode>
<img src="<@hst.link path='/images/essentials/catalog-component-icons/facets.png'/>"> Click to edit Facets
</#if>
\ No newline at end of file
<ul class="nav nav-list">
<#list facets.folders as facetvalue>
<#if facetvalue.folders?? && (facetvalue.folders?size > 0)>
<li><label class="nav-header">${facetvalue.name?html}</label>
<ul class="nav nav-list">
<#list facetvalue.folders as item>
<#if (item.leaf?? && item.leaf && (item.count > 0))>
<@hst.facetnavigationlink current=facets remove=item var="removeLink"/>
<li class="active">
<a href="${removeLink}">${item.name?html}&nbsp;
<span class="alert-danger"><@fmt.message key='facets.remove' var="remove"/>${remove?html}</span>
</a>
</li>
<#else>
<@hst.link var="link" hippobean=item navigationStateful=true/>
<li <#if (item_index >= facetLimit)>class="extra"</#if>>
<a href="${link}">${item.name?html}&nbsp;<span>(${item.count})</span></a>
</li>
</#if>
</#list>
</ul>
</li>
</#if>
</#list>
</ul>
<#-- @ftlvariable name="editMode" type="java.lang.Boolean"-->
<#elseif editMode>
<img src="<@hst.link path='/images/essentials/catalog-component-icons/facets.png'/>"> Click to edit Facets
</#if>
</div>
\ No newline at end of file
......@@ -2,29 +2,33 @@
<#-- @ftlvariable name="pageable" type="org.onehippo.cms7.essentials.components.paging.Pageable" -->
<#if pageable?? && pageable?has_content>
<div>
<#list pageable.items as item>
<div class="media has-edit-button">
<@hst.cmseditlink hippobean=item/>
<div class="media-body">
<h4 class="media-heading">
<@hst.link var="link" hippobean=item />
<a href="${link}">${item.title?html}</a>
<#if item.publicationDate??>
<span class="label label-success pull-right">
<@fmt.formatDate value=item.publicationDate.time type="both" dateStyle="medium" timeStyle="short"/>
</span>
</#if>
</h4>
<#if item.introduction??>
<p>${item.introduction?html}</p>
</#if>
</div>
<div class="media has-edit-button">
<@hst.cmseditlink hippobean=item/>
<div class="media-body">
<h4 class="media-heading">
<@hst.link var="link" hippobean=item />
<a href="${link}">${item.title?html}</a>
<#if item.publicationDate??>
<span class="label label-success pull-right">
<@fmt.formatDate value=item.publicationDate.time type="both" dateStyle="medium" timeStyle="short"/>
</span>
</#if>
</h4>
<#if item.introduction??>
<p>${item.introduction?html}</p>
</#if>
</div>
</div>
</#list>
<#if cparam.showPagination>
<#include "../../../include/pagination.ftl">
<#include "../../../include/pagination.ftl">
</#if>
</div>
<#-- @ftlvariable name="editMode" type="java.lang.Boolean"-->
<#elseif editMode>
<div>
<img src="<@hst.link path='/images/essentials/catalog-component-icons/blog-list.png'/>"> Click to edit Blog List
</div>
</#if>
\ No newline at end of file
......@@ -2,23 +2,25 @@
<#-- @ftlvariable name="pageable" type="org.onehippo.cms7.essentials.components.paging.Pageable" -->
<#if pageable??>
<div>
<#list pageable.items as item>
<@hst.link var="link" hippobean=item />
<article class="has-edit-button">
<@hst.link var="link" hippobean=item />
<article class="has-edit-button">
<@hst.cmseditlink hippobean=item/>
<h3><a href="${link}">${item.title?html}</a></h3>
<#if item.publicationDate?? && item.publicationDate.time??>
<p><@fmt.formatDate value=item.publicationDate.time type="both" dateStyle="medium" timeStyle="short"/></p>
<p><@fmt.formatDate value=item.publicationDate.time type="both" dateStyle="medium" timeStyle="short"/></p>
</#if>
<p>${item.introduction?html}</p>
</article>
</article>
</#list>
<#if cparam.showPagination>
<#include "../../include/pagination.ftl">
<#include "../../include/pagination.ftl">
</#if>
</div>
<#-- @ftlvariable name="editMode" type="java.lang.Boolean"-->
<#elseif editMode>
<div>
<img src="<@hst.link path='/images/essentials/catalog-component-icons/blog-list.png'/>"> Click to edit Blog List
</div>
</#if>
\ No newline at end of file
......@@ -27,7 +27,7 @@
<sv:value>Blog List Main</sv:value>
</sv:property>
<sv:property sv:name="hst:xtype" sv:type="String">
<sv:value>hst.vbox</sv:value>
<sv:value>hst.nomarkup</sv:value>
</sv:property>
<sv:node sv:name="content">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
......
......@@ -27,7 +27,7 @@
<sv:value>Blog List Sidebar</sv:value>
</sv:property>
<sv:property sv:name="hst:xtype" sv:type="String">
<sv:value>hst.vbox</sv:value>
<sv:value>hst.nomarkup</sv:value>
</sv:property>
<sv:node sv:name="content">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
......
......@@ -30,7 +30,7 @@
<sv:value>Blog Page Main</sv:value>
</sv:property>
<sv:property sv:name="hst:xtype" sv:type="String">
<sv:value>hst.vbox</sv:value>
<sv:value>hst.nomarkup</sv:value>
</sv:property>
<sv:node sv:name="content">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
......
......@@ -27,7 +27,7 @@
<sv:value>Blog Page Sidebar</sv:value>
</sv:property>
<sv:property sv:name="hst:xtype" sv:type="String">
<sv:value>hst.vbox</sv:value>
<sv:value>hst.nomarkup</sv:value>
</sv:property>
<sv:node sv:name="blogauthorposts">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
......
......@@ -30,5 +30,7 @@
</c:if>
<%--@elvariable id="editMode" type="java.lang.Boolean"--%>
<c:if test="${requestScope.editMode and requestScope.pageable eq null}">
<img src="<hst:link path='/images/essentials/catalog-component-icons/blogposts-by-author.png'/>"> Click to edit Blogposts by Author
<div>
<img src="<hst:link path='/images/essentials/catalog-component-icons/blogposts-by-author.png'/>"> Click to edit Blogposts by Author
</div>
</c:if>
......@@ -4,52 +4,54 @@
<%--@elvariable id="facetLimit" type="java.lang.Integer"--%>
<%--@elvariable id="query" type="java.lang.String"--%>
<hst:setBundle basename="essentials.facets"/>
<form action="<hst:link />" method="get">
<div class="row form-group">
<div class="col-xs-8">
<fmt:message key='facets.placeholder' var="placeholder"/>
<input type="search" value="<c:out value='${requestScope.query}'/>" name="query" class="form-control"
placeholder="${fn:escapeXml(placeholder)}">
<div>
<form action="<hst:link />" method="get">
<div class="row form-group">
<div class="col-xs-8">
<fmt:message key='facets.placeholder' var="placeholder"/>
<input type="search" value="<c:out value='${requestScope.query}'/>" name="query" class="form-control"
placeholder="${fn:escapeXml(placeholder)}">
</div>
<div class="col-xs-4">
<button type="submit" class="btn btn-primary pull-right">
<fmt:message key='facets.searchbutton' var="button"/><c:out value="${button}"/>
</button>
</div>
</div>
<div class="col-xs-4">
<button type="submit" class="btn btn-primary pull-right">
<fmt:message key='facets.searchbutton' var="button"/><c:out value="${button}"/>
</button>
</div>
</div>
</form>
<c:if test="${requestScope.facets ne null}">
<c:set var="facetLimit" value="50"/>
<ul class="nav nav-list">
<c:forEach var="facetvalue" items="${requestScope.facets.folders}">
<c:if test="${not empty facetvalue.folders}">
<li><label class="nav-header"><c:out value="${facetvalue.name}"/></label>
<ul class="nav nav-list">
<c:forEach items="${facetvalue.folders}" var="item" varStatus="index">
<c:choose>
<c:when test="${item.leaf and item.count gt 0}">
<hst:facetnavigationlink remove="${item}" current="${requestScope.facets}" var="removeLink"/>
<li class="active">
<a href="${removeLink}"><c:out value="${item.name}"/>&nbsp;
<span class="alert-danger"><fmt:message key='facets.remove' var="remove"/><c:out value="${remove}"/></span>
</a>
</li>
</c:when>
<c:otherwise>
<hst:link var="link" hippobean="${item}" navigationStateful="true"/>
<li <c:if test="${index.count > facetLimit}">class="extra"</c:if>>
<a href="${link}"><c:out value="${item.name}"/>&nbsp;<span>(${item.count})</span></a>
</li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
</li>
</c:if>
</c:forEach>
</ul>
</c:if>
<%--@elvariable id="editMode" type="java.lang.Boolean"--%>
<c:if test="${requestScope.editMode and requestScope.facets eq null}">
<img src="<hst:link path='/images/essentials/catalog-component-icons/facets.png'/>"> Click to edit Facets
</c:if>
</form>
<c:if test="${requestScope.facets ne null}">
<c:set var="facetLimit" value="50"/>
<ul class="nav nav-list">
<c:forEach var="facetvalue" items="${requestScope.facets.folders}">
<c:if test="${not empty facetvalue.folders}">
<li><label class="nav-header"><c:out value="${facetvalue.name}"/></label>
<ul class="nav nav-list">
<c:forEach items="${facetvalue.folders}" var="item" varStatus="index">
<c:choose>
<c:when test="${item.leaf and item.count gt 0}">
<hst:facetnavigationlink remove="${item}" current="${requestScope.facets}" var="removeLink"/>
<li class="active">
<a href="${removeLink}"><c:out value="${item.name}"/>&nbsp;
<span class="alert-danger"><fmt:message key='facets.remove' var="remove"/><c:out value="${remove}"/></span>
</a>
</li>
</c:when>
<c:otherwise>
<hst:link var="link" hippobean="${item}" navigationStateful="true"/>
<li <c:if test="${index.count > facetLimit}">class="extra"</c:if>>
<a href="${link}"><c:out value="${item.name}"/>&nbsp;<span>(${item.count})</span></a>
</li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
</li>
</c:if>
</c:forEach>
</ul>
</c:if>
<%--@elvariable id="editMode" type="java.lang.Boolean"--%>