private String renderToHtml(AbstractPage page, ContentTree fullContentTree) { if (LOG.isDebugEnabled()) LOG.debug("Rendering to exported XHTML page id=" + page.getId() + " (" + page.getTitle() + ")"); PageContext context = page.toPageContext(); context.setBaseUrl(settingsManager.getGlobalSettings().getBaseUrl()); context.setOutputType(RenderContext.PDF); DefaultConversionContext conversionContext = new DefaultConversionContext(context); if (fullContentTree != null) { conversionContext.setContentTree(fullContentTree); } final String html = xhtmlRenderer.render(page, conversionContext); return renderPageTemplate(page.getTitle(), html); }
public static boolean isPageTitleValid(String pageTitle) { return AbstractPage.isValidPageTitle(pageTitle); }
private ImmutableMap<Object, Object> createSearchResult(final I18NBean i18NBean, final FriendlyDateFormatter friendlyDateFormatter, ContentReportData contentReportData, final AbstractPage abstractPage) { final User creator = abstractPage.getCreator(); ImmutableMap.Builder<Object, Object> builder = ImmutableMap.builder() .put("title", abstractPage.getTitle()) .put("urlPath", contextPathHolder.getContextPath() + abstractPage.getUrlPath()) .put("creatorName", creator == null ? i18NBean.getText("anonymous.name") : creator.getName()) .put("creatorFullName", creator == null ? i18NBean.getText("anonymous.name") : creator.getFullName()) .put("friendlyModificationDate", i18NBean .getText(friendlyDateFormatter.getFormatMessage(abstractPage.getLastModificationDate()))) .put("sortableDate", Long.toString(abstractPage.getLastModificationDate().getTime())); if (contentReportData.hasCommentCounts()) { builder.put("commentCount", contentReportData.getCommentCount(abstractPage)); } if (contentReportData.hasLikeCounts()) { builder.put("likeCount", contentReportData.getLikeCount(abstractPage)); } return builder.build(); }
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; }
@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)); } }
private RenderedPdfFile createPdf(AbstractPage page, String contextPath, LinkRenderingDetails linkDetails, String filePrefix, PageExportMetrics pageExportMetrics, DecorationPolicy decoration) throws ImportExportException { log.debug("Exporting page {}", page.getId()); final Document xhtml; if (page instanceof Page) { xhtml = createDocument((Page) page, linkDetails, decoration); } else { xhtml = createDocument((BlogPost) page); } final long startTime = System.currentTimeMillis(); try { pageExportMetrics.setPageId(page.getId()); pageExportMetrics.setPageRevision(page.getConfluenceRevision().hashCode()); final RenderedPdfFile result = renderPdf(contextPath, page.getTitle(), xhtml, filePrefix, pageExportMetrics); pageExportMetrics.getExportResults().setExportStatus(ExportStatus.OK); pageExportMetrics.getExportResults().setPdfPagesTotal(result.getNumPages()); pageExportMetrics.getExportResults().setPdfFileSizeBytes(result.getFile().length()); return result; } finally { pageExportMetrics.setTimeMs((int) (System.currentTimeMillis() - startTime)); } }
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); } }
public File createPdfForPage(User user, AbstractPage page, String contextPath, PageExportMetrics pageExportMetrics) throws ImportExportException { final long startTime = System.currentTimeMillis(); try { pageExportMetrics.setPageId(page.getId()); pageExportMetrics.setPageRevision(page.getConfluenceRevision().hashCode()); final File result = doCreatePdfForPage(user, page, contextPath); pageExportMetrics.getExportResults().setExportStatus(ExportStatus.OK); pageExportMetrics.getExportResults().setPdfPagesTotal(PdfUtils.numberOfPages(result)); pageExportMetrics.getExportResults().setPdfFileSizeBytes(result.length()); return result; } finally { pageExportMetrics.setTimeMs((int) (System.currentTimeMillis() - startTime)); } }
private Map<String, Object> buildVelocityContext(final SearchResult searchResult, final SearchResultRenderContext renderContext, final AbstractPage page, final List<ThumbnailInfo> thumbnails) { final Map<String, Object> ctx = defaultVelocityContext(); ctx.put(CTX_IMAGE_COUNT, thumbnails.size()); if (thumbnails.size() > THUMBNAIL_LIMIT) { ctx.put(CTX_THUMBNAILS, thumbnails.subList(0, THUMBNAIL_LIMIT)); } else { ctx.put(CTX_THUMBNAILS, thumbnails); } ctx.put(CTX_SEARCH_RESULTS, searchResult); ctx.put(CTX_EXCERPT, new HtmlFragment(getHitHighlighter(renderContext.getQueryString()) .getSummary(searchResult.getContent()))); ctx.put(CTX_PAGE_ID, page.getId()); return ctx; } }
public URI getEntityUri(final URI baseUri, final ContentEntityObject entity) { //STRM-1633 always link the latest page versions if (entity instanceof AbstractPage && !entity.isLatestVersion() && entity.getLatestVersion() instanceof AbstractPage) { return URI.create(baseUri.toASCIIString() + ((AbstractPage)entity.getLatestVersion()).getUrlPath()); } else { return URI.create(baseUri.toASCIIString() + entity.getUrlPath()); } }
xhtmlContent.convertWikiToStorage( StringUtils.defaultString((String) commentStruct.get("content")), new DefaultConversionContext(commentPage.toPageContext()), conversionErrors xhtmlContent.convertWikiToStorage( StringUtils.defaultString((String) commentStruct.get("content")), new DefaultConversionContext(commentPage.toPageContext()), conversionErrors
@Override public File createPdfForPage(User user, AbstractPage page, String contextPath, PageExportMetrics pageExportMetrics) throws ImportExportException { exportPermissionChecker.checkAuthorization(user, page); return createPdf(page, contextPath, LinkRenderingDetails.anchors(), page.getTitle(), pageExportMetrics, none()).getFile(); }
protected byte[] getTextContentAsBytes(String encoding) throws UnsupportedEncodingException { return getVersionedPage().getBodyContent().getBody().getBytes(encoding); }
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()); }
public List<Bookmark> getBookmarks() { AbstractPage bookmarkPage = getPage(); List<Bookmark> bookmarks; if (null != bookmarkPage) { bookmarks = Arrays.asList(bookmarkUtils.getBookmark(bookmarkPage.getId())); } else { boolean isNotForSpace = !isForSpaceMode(); bookmarks = bookmarkUtils.getBookmarkList( new HashSet<String>(Arrays.asList(isNotForSpace ? getSpace().getKey() : BookmarkUtils.SPACES_ALL)), isNotForSpace ? getLabels() : new StringBuilder(BookmarkUtils.FORLABEL_PREFIX).append(getSpace().getKey()).toString(), getCreators(), getSort(), getMaxBookmarksToList(), 1, isReverseSort()).getBookmarkList(); } return bookmarks; }
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))); }
private boolean isDestinationPathValid(String[] destinationResourcePathComponents) { /* Only valid if in a space _and not any of_ @news or @versions or @exports */ return destinationResourcePathComponents.length > 3 && !ArrayUtils.contains(destinationResourcePathComponents, BlogPostsResourceImpl.DISPLAY_NAME) && !ArrayUtils.contains(destinationResourcePathComponents, PageVersionsResourceImpl.DISPLAY_NAME) && !ArrayUtils.contains(destinationResourcePathComponents, PageExportsResourceImpl.DISPLAY_NAME) && AbstractPage.isValidPageTitle(destinationResourcePathComponents[destinationResourcePathComponents.length - 1]); }
if ( AbstractPage.isValidPageTitle( linkText ) ) { content = pageManager.getPage( spaceKey, linkText );
if (!AbstractPage.isValidPageTitle(bookmarkTitle))