Search in sources :

Example 21 with Page

use of com.day.cq.wcm.api.Page in project acs-aem-commons by Adobe-Consulting-Services.

the class SiteMapServlet method doGet.

@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
    response.setContentType(request.getResponseContentType());
    if (StringUtils.isNotEmpty(this.characterEncoding)) {
        response.setCharacterEncoding(characterEncoding);
    }
    ResourceResolver resourceResolver = request.getResourceResolver();
    PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
    Page page = pageManager.getContainingPage(request.getResource());
    XMLOutputFactory outputFactory = XMLOutputFactory.newFactory();
    try {
        XMLStreamWriter stream = outputFactory.createXMLStreamWriter(response.getWriter());
        stream.writeStartDocument("1.0");
        stream.writeStartElement("", "urlset", NS);
        stream.writeNamespace("", NS);
        // first do the current page
        write(page, stream, resourceResolver);
        for (Iterator<Page> children = page.listChildren(new PageFilter(false, true), true); children.hasNext(); ) {
            write(children.next(), stream, resourceResolver);
        }
        if (damAssetTypes.size() > 0 && damAssetProperty.length() > 0) {
            for (Resource assetFolder : getAssetFolders(page, resourceResolver)) {
                writeAssets(stream, assetFolder, resourceResolver);
            }
        }
        stream.writeEndElement();
        stream.writeEndDocument();
    } catch (XMLStreamException e) {
        throw new IOException(e);
    }
}
Also used : PageManager(com.day.cq.wcm.api.PageManager) XMLOutputFactory(javax.xml.stream.XMLOutputFactory) XMLStreamException(javax.xml.stream.XMLStreamException) XMLStreamWriter(javax.xml.stream.XMLStreamWriter) ResourceResolver(org.apache.sling.api.resource.ResourceResolver) Resource(org.apache.sling.api.resource.Resource) Page(com.day.cq.wcm.api.Page) PageFilter(com.day.cq.wcm.api.PageFilter) IOException(java.io.IOException)

Example 22 with Page

use of com.day.cq.wcm.api.Page in project acs-aem-commons by Adobe-Consulting-Services.

the class SystemNotificationsImpl method isActiveNotification.

private boolean isActiveNotification(final SlingHttpServletRequest request, final Resource resource) {
    if (JcrConstants.JCR_CONTENT.equals(resource.getName()) || REP_POLICY.equals(resource.getName())) {
        return false;
    }
    final PageManager pageManager = request.getResourceResolver().adaptTo(PageManager.class);
    final Page notificationPage = pageManager.getContainingPage(resource);
    if (notificationPage == null) {
        log.warn("Trying to get a invalid System Notification page at [ {} ]", resource.getPath());
        return false;
    } else if (this.isDismissed(request, notificationPage)) {
        // System Notification previously dismissed by the user
        return false;
    }
    // Looks like a valid Notification Page; now check if the properties are valid
    final ValueMap properties = notificationPage.getProperties();
    final boolean enabled = properties.get(PN_ENABLED, false);
    if (!enabled) {
        // Disabled
        return false;
    } else {
        final Calendar onTime = properties.get(PN_ON_TIME, Calendar.class);
        final Calendar offTime = properties.get(PN_OFF_TIME, Calendar.class);
        if (onTime == null && offTime == null) {
            // No on time or off time is set, but is enabled so always show
            return true;
        }
        final Calendar now = Calendar.getInstance();
        if (onTime != null && now.before(onTime)) {
            return false;
        }
        if (offTime != null && now.after(offTime)) {
            return false;
        }
        return true;
    }
}
Also used : PageManager(com.day.cq.wcm.api.PageManager) ValueMap(org.apache.sling.api.resource.ValueMap) Calendar(java.util.Calendar) Page(com.day.cq.wcm.api.Page)

Example 23 with Page

use of com.day.cq.wcm.api.Page in project acs-aem-commons by Adobe-Consulting-Services.

the class WorkflowHelperImpl method getPageOrAssetResource.

/**
 * @{inheritDoc}
 */
@Override
public final Resource getPageOrAssetResource(ResourceResolver resourceResolver, String path) {
    Resource payloadResource = resourceResolver.getResource(path);
    if (payloadResource == null) {
        return null;
    }
    Asset asset = DamUtil.resolveToAsset(payloadResource);
    if (asset != null) {
        return asset.adaptTo(Resource.class);
    }
    PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
    Page page = pageManager.getContainingPage(payloadResource);
    if (page != null) {
        return page.adaptTo(Resource.class);
    }
    return null;
}
Also used : PageManager(com.day.cq.wcm.api.PageManager) Resource(org.apache.sling.api.resource.Resource) Asset(com.day.cq.dam.api.Asset) Page(com.day.cq.wcm.api.Page)

Example 24 with Page

use of com.day.cq.wcm.api.Page in project acs-aem-commons by Adobe-Consulting-Services.

the class DesignReferenceProvider method findReferences.

@Override
public List<Reference> findReferences(Resource resource) {
    ResourceResolver resourceResolver = resource.getResourceResolver();
    PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
    Designer designer = resourceResolver.adaptTo(Designer.class);
    Page page = pageManager.getContainingPage(resource);
    if (page == null) {
        return Collections.emptyList();
    }
    Design design = designer.getDesign(page);
    if (design == null) {
        return Collections.emptyList();
    }
    return Collections.singletonList(new Reference(TYPE_DESIGN_PAGE, String.format("%s (Design)", design.getId()), design.getContentResource(), getLastModified(design)));
}
Also used : Design(com.day.cq.wcm.api.designer.Design) Designer(com.day.cq.wcm.api.designer.Designer) PageManager(com.day.cq.wcm.api.PageManager) Reference(com.day.cq.wcm.api.reference.Reference) ResourceResolver(org.apache.sling.api.resource.ResourceResolver) Page(com.day.cq.wcm.api.Page)

Example 25 with Page

use of com.day.cq.wcm.api.Page in project acs-aem-commons by Adobe-Consulting-Services.

the class WCMViewsServlet method doGet.

@Override
protected final void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
    response.setCharacterEncoding("UTF-8");
    response.setContentType("application/json");
    if (WCMMode.DISABLED.equals(WCMMode.fromRequest(request))) {
        response.setStatus(SlingHttpServletResponse.SC_NOT_FOUND);
        response.getWriter().write("");
        return;
    }
    /* Valid WCMMode */
    final PageManager pageManager = request.getResourceResolver().adaptTo(PageManager.class);
    final Page page = pageManager.getContainingPage(request.getResource());
    final WCMViewsResourceVisitor visitor = new WCMViewsResourceVisitor();
    visitor.accept(page.getContentResource());
    final Set<String> viewSet = new HashSet<String>(visitor.getWCMViews());
    // Get the Views provided by the Servlet
    for (final Map.Entry<String, String[]> entry : this.defaultViews.entrySet()) {
        if (StringUtils.startsWith(page.getPath(), entry.getKey())) {
            viewSet.addAll(Arrays.asList(entry.getValue()));
        }
    }
    final List<String> views = new ArrayList<String>(viewSet);
    Collections.sort(views);
    log.debug("Collected WCM Views {} for Page [ {} ]", views, page.getPath());
    final JSONArray jsonArray = new JSONArray();
    for (final String view : views) {
        final JSONObject json = new JSONObject();
        try {
            json.put("title", StringUtils.capitalize(view) + " View");
            json.put("value", view);
            jsonArray.put(json);
        } catch (JSONException e) {
            log.error("Unable to build WCM Views JSON output.", e);
        }
    }
    response.getWriter().write(jsonArray.toString());
}
Also used : ArrayList(java.util.ArrayList) JSONArray(org.apache.sling.commons.json.JSONArray) JSONException(org.apache.sling.commons.json.JSONException) Page(com.day.cq.wcm.api.Page) PageManager(com.day.cq.wcm.api.PageManager) JSONObject(org.apache.sling.commons.json.JSONObject) ValueMap(org.apache.sling.api.resource.ValueMap) HashMap(java.util.HashMap) Map(java.util.Map) HashSet(java.util.HashSet)

Aggregations

Page (com.day.cq.wcm.api.Page)100 Resource (org.apache.sling.api.resource.Resource)45 PageManager (com.day.cq.wcm.api.PageManager)34 Test (org.junit.jupiter.api.Test)22 ResourceResolver (org.apache.sling.api.resource.ResourceResolver)18 ValueMap (org.apache.sling.api.resource.ValueMap)15 ArrayList (java.util.ArrayList)13 HashMap (java.util.HashMap)12 SlingBindings (org.apache.sling.api.scripting.SlingBindings)12 NotNull (org.jetbrains.annotations.NotNull)10 Test (org.junit.Test)9 HashSet (java.util.HashSet)6 Map (java.util.Map)6 Optional (java.util.Optional)6 SlingHttpServletRequest (org.apache.sling.api.SlingHttpServletRequest)6 Nullable (org.jetbrains.annotations.Nullable)6 LinkHandler (com.adobe.cq.wcm.core.components.internal.link.LinkHandler)5 Template (com.day.cq.wcm.api.Template)5 StringUtils (org.apache.commons.lang3.StringUtils)5 Before (org.junit.Before)5