This is an automated email from the ASF dual-hosted git repository. dklco pushed a commit to branch dklco/preview-img in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git
commit 524db15a6bac323c641a58054ed468ac49d7279c Author: Dan Klco <[email protected]> AuthorDate: Thu Mar 11 21:58:55 2021 -0500 Working on having a specific preview servlet to have authenticated previews of images rather than using the mapped image URLs --- .../listeners/FileMetadataExtractorListener.java | 31 +++++++--------------- .../components/cms/contentgrid/contentgrid.jsp | 12 ++++----- .../sling-cms/components/cms/tilecard/tilecard.jsp | 2 +- 3 files changed, 17 insertions(+), 28 deletions(-) diff --git a/core/src/main/java/org/apache/sling/cms/core/internal/listeners/FileMetadataExtractorListener.java b/core/src/main/java/org/apache/sling/cms/core/internal/listeners/FileMetadataExtractorListener.java index 7d78b3b..ee5e0d5 100644 --- a/core/src/main/java/org/apache/sling/cms/core/internal/listeners/FileMetadataExtractorListener.java +++ b/core/src/main/java/org/apache/sling/cms/core/internal/listeners/FileMetadataExtractorListener.java @@ -19,16 +19,16 @@ package org.apache.sling.cms.core.internal.listeners; import java.util.Collections; import java.util.List; +import org.apache.sling.api.SlingConstants; import org.apache.sling.api.resource.LoginException; -import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ResourceResolverFactory; import org.apache.sling.api.resource.observation.ExternalResourceChangeListener; import org.apache.sling.api.resource.observation.ResourceChange; import org.apache.sling.api.resource.observation.ResourceChangeListener; import org.apache.sling.cms.CMSConstants; -import org.apache.sling.cms.File; -import org.apache.sling.cms.FileMetadataExtractor; +import org.apache.sling.cms.core.internal.jobs.FileMetadataExtractorConsumer; +import org.apache.sling.event.jobs.JobManager; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; @@ -47,32 +47,21 @@ public class FileMetadataExtractorListener implements ResourceChangeListener, Ex private static final Logger log = LoggerFactory.getLogger(FileMetadataExtractorListener.class); @Reference - private FileMetadataExtractor extractor; + private JobManager jobManager; @Reference private ResourceResolverFactory factory; - private void handleChange(Resource changed) { - if (CMSConstants.NT_FILE.equals(changed.getResourceType())) { - log.debug("Extracting metadata from changed resource: {}", changed); - try { - extractor.updateMetadata(changed.adaptTo(File.class), true); - } catch (Exception e) { - log.warn("Failed to extract metadata from change: {}", changed, e); - } - } else { - log.trace("Not extracting metadata from changed resource: {}", changed); - } - } - @Override public void onChange(List<ResourceChange> changes) { try (ResourceResolver serviceResolver = factory.getServiceResourceResolver( Collections.singletonMap(ResourceResolverFactory.SUBSERVICE, "sling-cms-metadata"))) { - for (ResourceChange rc : changes) { - Resource changed = serviceResolver.getResource(rc.getPath()); - handleChange(changed); - } + changes.stream().map(rc -> serviceResolver.getResource(rc.getPath())) + .filter(r -> CMSConstants.NT_FILE.equals(r.getResourceType())).forEach(r -> { + log.debug("Queueing resource {}", r); + jobManager.addJob(FileMetadataExtractorConsumer.TOPIC, + Collections.singletonMap(SlingConstants.PROPERTY_PATH, r.getPath())); + }); } catch (LoginException e) { log.error("Exception getting service user", e); } diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentgrid/contentgrid.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentgrid/contentgrid.jsp index 64f2c3a..376426d 100644 --- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentgrid/contentgrid.jsp +++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentgrid/contentgrid.jsp @@ -45,27 +45,27 @@ <figure class="image is-5by4"> <c:choose> <c:when test="${child.resourceType == 'sling:File' || child.resourceType == 'nt:file'}"> - <img src="${child.path}.transform/sling-cms-thumbnail.png" loading="lazy" alt="${child.name}"> + <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="${branding.gridIconsBase}/site.png" loading="lazy" alt="${sling:encode(child.name, 'HTML_ATTR')}"> + <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="${branding.gridIconsBase}/folder.png" loading="lazy" alt="${sling:encode(child.name, 'HTML_ATTR')}"> + <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="${templateThumbnail}.transform/sling-cms-thumbnail.png" loading="lazy" alt="${sling:encode(child.name, 'HTML_ATTR')}"> + <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="${branding.gridIconsBase}/page.png" loading="lazy" alt="${child.name}"> + <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="${branding.gridIconsBase}/file.png" loading="lazy" alt="${child.name}"> + <img src="/cms/file/preview.html${branding.gridIconsBase}/file.png" loading="lazy" alt="${child.name}"> </c:otherwise> </c:choose> </figure> diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/tilecard/tilecard.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/tilecard/tilecard.jsp index 10d95d5..7972b59 100644 --- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/tilecard/tilecard.jsp +++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/tilecard/tilecard.jsp @@ -22,7 +22,7 @@ <div class="card is-linked" title="${sling:encode(properties.title,'HTML_ATTR')}" data-value="${resource.path}"> <div class="card-image"> <figure class="image is-5by4"> - <img src="${branding.gridIconsBase}${sling:encode(properties.icon,'HTML_ATTR')}" loading="lazy" alt="${sling:encode(properties.title,'HTML_ATTR')}"> + <img src="/cms/file/preview.html${branding.gridIconsBase}${sling:encode(properties.icon,'HTML_ATTR')}" loading="lazy" alt="${sling:encode(properties.title,'HTML_ATTR')}"> </figure> </div> <footer class="card-footer">
