blob: 376426d26d3c164a2af2f9d8af51e825bec513ed [file] [log] [blame]
<%-- /*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/ --%>
<%@include file="/libs/sling-cms/global.jsp"%>
<div class="reload-container scroll-container contentnav" data-path="${resource.path}.grid.html${sling:encode(slingRequest.requestPathInfo.suffix,'HTML_ATTR')}">
<div class="columns is-multiline">
<c:forEach var="child" items="${sling:listChildren(slingRequest.requestPathInfo.suffixResource)}" varStatus="status">
<c:set var="showCard" value="${false}" />
<c:forEach var="type" items="${sling:listChildren(sling:getRelativeResource(resource,'types'))}">
<c:if test="${child.valueMap['jcr:primaryType'] == type.name}">
<c:set var="showCard" value="${true}" />
</c:if>
</c:forEach>
<c:if test="${showCard}">
<div class="column is-half-tablet is-one-third-widescreen is-one-quarter-fullhd contentnav__item">
<sling:getResource base="${resource}" path="types/${child.valueMap['jcr:primaryType']}/columns/name" var="nameConfig" />
<c:choose>
<c:when test="${not empty child.valueMap['jcr:content/jcr:title']}">
<c:set var="title" value="${child.valueMap['jcr:content/jcr:title']}" />
</c:when>
<c:when test="${not empty child.valueMap['jcr:title']}">
<c:set var="title" value="${child.valueMap['jcr:title']}" />
</c:when>
<c:otherwise>
<c:set var="title" value="${child.name}" />
</c:otherwise>
</c:choose>
<div class="card is-linked" title="${sling:encode(child.name,'HTML_ATTR')}" data-value="${child.path}">
<div class="card-image">
<figure class="image is-5by4">
<c:choose>
<c:when test="${child.resourceType == 'sling:File' || child.resourceType == 'nt:file'}">
<img src="/cms/file/preview.html${child.path}.transform/sling-cms-thumbnail.png" loading="lazy" alt="${child.name}">
</c:when>
<c:when test="${child.resourceType == 'sling:Site'}">
<img src="/cms/file/preview.html${branding.gridIconsBase}/site.png" loading="lazy" alt="${sling:encode(child.name, 'HTML_ATTR')}">
</c:when>
<c:when test="${child.resourceType == 'sling:OrderedFolder' || child.resourceType == 'sling:Folder' || child.resourceType == 'nt:folder'}">
<img src="/cms/file/preview.html${branding.gridIconsBase}/folder.png" loading="lazy" alt="${sling:encode(child.name, 'HTML_ATTR')}">
</c:when>
<c:when test="${child.resourceType == 'sling:Page'}">
<c:set var="templateThumbnail" value="${child.valueMap['jcr:content/sling:template']}/thumbnail"/>
<c:choose>
<c:when test="${sling:getResource(resourceResolver, templateThumbnail) != null}">
<img src="/cms/file/preview.html${templateThumbnail}.transform/sling-cms-thumbnail.png" loading="lazy" alt="${sling:encode(child.name, 'HTML_ATTR')}">
</c:when>
<c:otherwise>
<img src="/cms/file/preview.html${branding.gridIconsBase}/page.png" loading="lazy" alt="${child.name}">
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<img src="/cms/file/preview.html${branding.gridIconsBase}/file.png" loading="lazy" alt="${child.name}">
</c:otherwise>
</c:choose>
</figure>
<div class="is-vhidden cell-actions">
<sling:getResource base="${resource}" path="types/${child.valueMap['jcr:primaryType']}/columns/actions" var="colConfig" />
<c:forEach var="ac" items="${sling:listChildren(colConfig)}">
<c:set var="actionConfig" value="${ac}" scope="request" />
<sling:include path="${child.path}" resourceType="${actionConfig.resourceType}" />
</c:forEach>
</div>
</div>
<footer class="card-footer">
<div class="card-footer-item card-footer-group">
<span>${sling:encode(title,'HTML')}</span>
<c:catch var="ex">
<fmt:formatDate type="both" dateStyle="long" timeStyle="long" value = "${child.valueMap['jcr:content/jcr:lastModified'].time}" var="lastMod" />
<small>${lastMod}</small>
</c:catch>
</div>
</footer>
<footer class="card-footer">
<sling:adaptTo adaptable="${resourceResolver}" adaptTo="org.apache.sling.cms.publication.PublicationManager" var="publicationManager" />
<sling:adaptTo adaptable="${child}" adaptTo="org.apache.sling.cms.PublishableResource" var="publishableResource" />
<c:if test="${child.resourceType == 'sling:Site' || child.resourceType == 'sling:OrderedFolder' || child.resourceType == 'sling:Folder' || child.resourceType == 'nt:folder' || child.resourceType == 'sling:Page'}">
<a href="${nameConfig.valueMap.prefix}${child.path}" class="card-footer-item item-link">Open</a>
</c:if>
<c:if test="${child.resourceType == 'sling:Page' || child.resourceType == 'sling:File' || child.resourceType == 'nt:file'}">
<c:choose>
<c:when test="${publishableResource.published && publicationManager.publicationMode == 'CONTENT_DISTRIBUTION'}">
<a class="Fetch-Modal card-footer-item" href="/cms/shared/publish.html${child.path}" title="Content Published" data-title="Unpublish" data-path=".Main-Content form">
Republish
</a>
<a class="Fetch-Modal card-footer-item" href="/cms/shared/unpublish.html${child.path}" title="Content Published" data-title="Unpublish" data-path=".Main-Content form">
Unpublish
</a>
</c:when>
<c:when test="${publishableResource.published}">
<a class="Fetch-Modal card-footer-item" href="/cms/shared/unpublish.html${child.path}" title="Content Published" data-title="Unpublish" data-path=".Main-Content form">
Unpublish
</a>
</c:when>
<c:otherwise>
<a class="Fetch-Modal card-footer-item" href="/cms/shared/publish.html${child.path}" title="Content Not Published" data-title="Publish" data-path=".Main-Content form">
Publish
</a>
</c:otherwise>
</c:choose>
</c:if>
</footer>
</div>
</div>
</c:if>
</c:forEach>
</div>
</div>