/** * Given a {@link Page}, this method returns the correct URL, taking into account that the provided {@code page} might provide a * vanity URL. * * @param request the current request, used to determine the server's context path * @param page the page * @return the URL of the page identified by the provided {@code path}, or the original {@code path} if this doesn't identify a * {@link Page} */ @Nonnull public static String getURL(@Nonnull SlingHttpServletRequest request, @Nonnull Page page) { String vanityURL = page.getVanityUrl(); return StringUtils.isEmpty(vanityURL) ? request.getContextPath() + page.getPath() + ".html" : request.getContextPath() + vanityURL; }
@Override public String getSiteName() { Page page = findRootPage(); String pageTitle = page.getPageTitle(); if (StringUtils.isNotBlank(pageTitle)) { return pageTitle; } Resource content = page.getContentResource(); if (content == null) { return null; } String title = content.getValueMap().get(JcrConstants.JCR_TITLE, String.class); if (StringUtils.isBlank(title)) { return null; } return title; }
private Page getRedirectTarget(@Nonnull Page page) { Page result = page; String redirectTarget; PageManager pageManager = page.getPageManager(); Set<String> redirectCandidates = new LinkedHashSet<>(); redirectCandidates.add(page.getPath()); while (result != null && StringUtils.isNotEmpty((redirectTarget = result.getProperties().get(PageImpl.PN_REDIRECT_TARGET, String.class)))) { result = pageManager.getPage(redirectTarget); if (result != null) { if (!redirectCandidates.add(result.getPath())) { LOGGER.warn("Detected redirect loop for the following pages: {}.", redirectCandidates.toString()); break; } } } return result; }
@Override public String getTitle() { String title = page.getNavigationTitle(); if (title == null) { title = page.getPageTitle(); } if (title == null) { title = page.getTitle(); } if (title == null) { title = page.getName(); } return title; }
private String getItemTitle(final Page page) { return StringUtils.defaultString(page.getNavigationTitle(), page.getTitle()); }
@PostConstruct private void initModel() { if (StringUtils.isBlank(title)) { title = StringUtils.defaultIfEmpty(currentPage.getPageTitle(), currentPage.getTitle()); } if (heading == null) { heading = Utils.Heading.getHeading(type); if (heading == null) { heading = Utils.Heading.getHeading(currentStyle.get(PN_DESIGN_DEFAULT_TYPE, String.class)); } } if (StringUtils.isNotEmpty(linkURL)) { linkURL = Utils.getURL(request, pageManager, linkURL); } else { linkURL = null; } if(currentStyle != null) { linkDisabled = currentStyle.get(Title.PN_TITLE_LINK_DISABLED, linkDisabled); } }
/** * Generate JSON object for page * @param page Page * @return JSON object * @throws JSONException JSON exception */ protected final JSONObject getPage(Page page) throws JSONException { Resource resource = page.adaptTo(Resource.class); JSONObject pageObject = new JSONObject(); // node name pageObject.put("name", page.getName()); // node title text String title = page.getTitle(); if (StringUtils.isEmpty(title)) { title = page.getName(); } pageObject.put("text", title); // resource type pageObject.put("type", resource.getResourceType()); // template String template = page.getProperties().get(NameConstants.PN_TEMPLATE, String.class); if (StringUtils.isNotEmpty(template)) { pageObject.put("template", template); } // css class for icon pageObject.put("cls", "page"); return pageObject; }
@PostConstruct private void initModel() { actionsEnabled = properties.get(Teaser.PN_ACTIONS_ENABLED, actionsEnabled); titleFromPage = properties.get(Teaser.PN_TITLE_FROM_PAGE, titleFromPage); descriptionFromPage = properties.get(Teaser.PN_DESCRIPTION_FROM_PAGE, descriptionFromPage); linkURL = properties.get(ImageResource.PN_LINK_URL, String.class); if (titleFromPage) { if (targetPage != null) { title = StringUtils.defaultIfEmpty(targetPage.getPageTitle(), targetPage.getTitle()); } else { title = null; if (descriptionFromPage) { if (targetPage != null) { description = targetPage.getDescription(); } else { description = null; String fileReference = properties.get(DownloadResource.PN_REFERENCE, String.class); boolean hasImage = true; if (StringUtils.isEmpty(linkURL)) { LOGGER.debug("Teaser component from " + request.getResource().getPath() + " does not define a link."); if (request.getResourceResolver().getResource(fileReference) == null) { LOGGER.error("Asset " + fileReference + " configured for the teaser component from " + request.getResource().getPath() + " doesn't exist.");
@PostConstruct protected void initModel() { title = currentPage.getTitle(); if (StringUtils.isBlank(title)) { title = currentPage.getName(); } Tag[] tags = currentPage.getTags(); keywords = new String[tags.length]; int index = 0; for (Tag tag : tags) { keywords[index++] = tag.getTitle(currentPage.getLanguage(false)); } if (currentDesign != null) { String designPath = currentDesign.getPath(); if (!Designer.DEFAULT_DESIGN_PATH.equals(designPath)) { this.designPath = designPath; if (resolver.getResource(designPath + "/static.css") != null) { staticDesignPath = designPath + "/static.css"; } loadFavicons(designPath); } } populateClientlibCategories(); templateName = extractTemplateName(); }
@Nonnull @Override public String getExportedType() { if (StringUtils.isEmpty(resourceType)) { resourceType = pageProperties.get(ResourceResolver.PROPERTY_RESOURCE_TYPE, String.class); if (StringUtils.isEmpty(resourceType)) { resourceType = currentPage.getContentResource().getResourceType(); } } return resourceType; }
private boolean currentPageIsRedirectTarget(Page page) { boolean currentPageIsRedirectTarget = false; Resource contentResource = page.getContentResource(); if (contentResource != null) { ValueMap valueMap = contentResource.getValueMap(); String redirectTarget = valueMap.get(PageImpl.PN_REDIRECT_TARGET, String.class); if(StringUtils.isNotBlank(redirectTarget)) { PageManager pageManager = resourceResolver.adaptTo(PageManager.class); if (pageManager != null) { Page redirectPage = pageManager.getPage(redirectTarget); if (currentPage.equals(redirectPage)) { currentPageIsRedirectTarget = true; } } } } return currentPageIsRedirectTarget; }
@Override protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { response.setContentType(request.getResponseContentType()); 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); } }
) { Page page; if (StringUtils.isNotEmpty(relativePath)) { page = siteRoot.getRelativePage(relativePath); switch (titleType) { case "pageTitle": title = StringUtils.defaultString(page.getPageTitle(), page.getTitle()); break; case "navigationTitle": default: title = StringUtils.defaultString(page.getNavigationTitle(), page.getTitle()); break;
@SuppressWarnings("null") @Override public boolean handles(Resource resource) { // check if resource is a page, and if the page uses a configured template Page page = resource.adaptTo(Page.class); if (page != null) { String templatePath = page.getProperties().get(NameConstants.PN_TEMPLATE, String.class); if (StringUtils.isNotEmpty(templatePath)) { for (Pattern pattern : templatePathPatterns) { Matcher matcher = pattern.matcher(templatePath); if (matcher.matches()) { return true; } } } } return false; }
PageManager pageManager = resource.getResourceResolver().adaptTo(PageManager.class); Page contextPage = pageManager.getContainingPage(resource); if (contextPage == null) { referencePages.put(configPage.getPath(), configPage); Iterator<Page> deepChildren = configPage.listChildren(new PageFilter(false, true), true); while (deepChildren.hasNext()) { Page configChildPage = deepChildren.next(); referencePages.put(configChildPage.getPath(), configChildPage); .filter(item -> !StringUtils.equals(contextPage.getPath(), item.getPath())) .forEach(item -> references.add(toReference(resource, item, configurationMetadatas, configurationBuckets))); log.debug("Found {} references for resource {}", references.size(), resource.getPath()); return references;
@PostConstruct private void initModel() { resultsSize = currentStyle.get(PN_RESULTS_SIZE, PROP_RESULTS_SIZE_DEFAULT); searchTermMinimumLength = currentStyle.get(PN_SEARCH_TERM_MINIMUM_LENGTH, PROP_SEARCH_TERM_MINIMUM_LENGTH_DEFAULT); PageManager pageManager = currentPage.getPageManager(); Resource currentResource = request.getResource(); if (pageManager != null) { Page containingPage = pageManager.getContainingPage(currentResource); if(containingPage != null) { relativePath = StringUtils.substringAfter(currentResource.getPath(), containingPage.getPath()); } } }
@Override public boolean includes(Page page) { boolean included = false; Iterator<String> pathsToFollowIter = pathsToFollow.iterator(); while (!included && pathsToFollowIter.hasNext()) { String pathToFollow = pathsToFollowIter.next(); included = StringUtils.startsWith(pathToFollow, page.getPath()); } return included; }
/** * Build html title from page titles up to site root page. * @param page Page * @return Html title */ private String getRecursivePageTitle(Page page) { if (siteRoot.isRootPage(page)) { return StringUtils.defaultString(page.getPageTitle(), page.getTitle()); } else if (Template.is(page, AppTemplate.ADMIN_STRUCTURE_ELEMENT)) { return getRecursivePageTitle(page.getParent()); } else { return StringUtils.defaultString(page.getPageTitle(), page.getTitle()) + " - " + getRecursivePageTitle(page.getParent()); } }