public String execute(Map parameters, String body, RenderContext renderContext) throws MacroException { Map<String, Object> contextMap = getDefaultVelocityContext(); PageContext context = (PageContext) renderContext; ContentEntityObject ceo = context.getEntity(); if (ceo instanceof AbstractPage) { AbstractPage page = (AbstractPage) ceo; List previousVersions = pageManager.getVersionHistorySummaries(page); // Remove the current version, that's rendered separately previousVersions.remove(0); contextMap.put("page", page); contextMap.put("previousVersions", previousVersions); contextMap.put("space", page.getSpace()); return getRenderedTemplate(contextMap); } else { return RenderUtils.blockError( getConfluenceActionSupportTextStatic(), StringUtils.EMPTY); } }
private File doCreatePdfForPage(User user, AbstractPage page, String contextPath) throws ImportExportException { exportPermissionChecker.checkAuthorization(user, page); Document xhtml; if (page instanceof Page) { ContentTree tree = newContentTree(); tree.addRootNode(new ContentNode((Page) page)); xhtml = intermediateHtmlBuilder.buildHtml(tree, page.getSpace(), LinkRenderingDetails.anchors(), DecorationPolicy.none()); } else if (page instanceof BlogPost) { xhtml = intermediateHtmlBuilder.buildHtml((BlogPost) page); } else { throw new IllegalArgumentException("Only pages and blog post are supported"); } String spaceKey = getSpaceKeyForExportFileName(page.getSpaceKey()); File pdf; try { String filename = spaceKey + "-" + ((page.getTitle() == null) ? page.getId() : page.getTitle().replaceAll("\\s", "")); if (!GeneralUtil.isSafeTitleForFilesystem(filename)) { filename = spaceKey + "-" + page.getId(); } pdf = flyingPdfDocumentConverter.convertXhtmlToPdf(filename, xhtml, contextPath); } catch (ImportExportException e) { if (e.getCause() instanceof FileNotFoundException) { String filename = spaceKey + "-" + page.getId(); pdf = flyingPdfDocumentConverter.convertXhtmlToPdf(filename, xhtml, contextPath); } else { throw e; } } return pdf; }
public Space getSpaceFromContentEntity(ContentEntityObject contentEntityObject) { if (contentEntityObject instanceof AbstractPage) return ((AbstractPage) contentEntityObject).getSpace(); if (contentEntityObject instanceof Comment) return getSpaceFromContentEntity(((Comment) contentEntityObject).getOwner()); return spaceManager.getSpace(((Draft) contentEntityObject).getDraftSpaceKey()); }
private Option<Link> getPageWatchLink(User user, ActivityItem activityItem) { final Long pageId = activityItem.getId(); final AbstractPage page = pageManager.getAbstractPage(pageId); if (page == null) { return none(); } if (notificationManager.isUserWatchingPageOrSpace(user, page.getSpace(), page)) { return none(); } return some(new Link(buildWatchUrl(String.valueOf(pageId), PAGE_WATCH_ACTION), WATCH_LINK_REL, none(String.class))); }
@Override public File createPdfForPage(User user, AbstractPage page, String contextPath, PageExportMetrics pageExportMetrics) throws ImportExportException { pageExportMetrics.setPageId(page.getId()); pageExportMetrics.setPageRevision(page.getConfluenceRevision().hashCode()); pageExportMetrics.getEnvironmentInfo().setExportScope(ExportScope.PAGE); fillEnvironmentData(page.getSpace(), pageExportMetrics.getEnvironmentInfo()); try { return delegate.createPdfForPage(user, page, contextPath, pageExportMetrics); } catch (Exception e) { pageExportMetrics.getExportResults().setFailureLocation(FailureLocation.PAGE); setGenericError(pageExportMetrics.getExportResults()); throw e; } finally { sendToAnalytics(new PdfExportAnalyticEvent(pageExportMetrics)); } }