/** * Builds image element for given media metadata. * @param pMedia Media metadata * @param element Original element * @return Image element or null if media reference is invalid */ private Element buildImageElement(Media pMedia, Element element) { if (pMedia.isValid()) { element.setAttribute("src", pMedia.getUrl()); } return element; }
/** * @param media Media metadata * @return DAM asset or null */ @SuppressWarnings("null") protected Asset getDamAsset(Media media) { return media.getAsset().adaptTo(Asset.class); }
@Override public final boolean accepts(@NotNull Media media) { return media.getMediaRequest().getMediaArgs().isMediaFormatsMandatory() && media.getRendition() != null && media.getRenditions().size() > 1 && media.isValid(); }
@Override public final boolean accepts(@NotNull Media media) { // accept if rendition is an image rendition, and resolving was successful return media.isValid() && media.getRendition() != null && media.getRendition().isImage(); }
@SuppressWarnings("null") @Override public @NotNull Link resolveLink(@NotNull Link link) { LinkRequest linkRequest = link.getLinkRequest(); ValueMap props = linkRequest.getResourceProperties(); // get properties String mediaRef = props.get(LinkNameConstants.PN_LINK_MEDIA_REF, String.class); boolean isDownload = props.get(LinkNameConstants.PN_LINK_MEDIA_DOWNLOAD, false); MediaArgs mediaArgs = new MediaArgs() // only allow linking to "download" media formats .download(true) .contentDispositionAttachment(isDownload) .urlMode(linkRequest.getLinkArgs().getUrlMode()); // resolve media library reference Media media = mediaHandler.get(mediaRef, mediaArgs).build(); if (media != null) { // set resovled media references information in link metadata link.setUrl(media.getUrl()); link.setTargetAsset(media.getAsset()); link.setTargetRendition(media.getRendition()); } // mark link as invalid if a reference was set that could not be resolved if (link.getUrl() == null && StringUtils.isNotEmpty(mediaRef)) { link.setLinkReferenceInvalid(true); } return link; }
@Override public boolean accepts(@NotNull Media media) { // accept if not rendition was found and in edit mode // and at least one media format is given, and dummy image is not suppressed MediaArgs mediaArgs = media.getMediaRequest().getMediaArgs(); MediaFormat[] mediaFormats = mediaArgs.getMediaFormats(); return (!media.isValid() || media.getRendition() == null) && getWcmMode() != null && getWcmMode() != WCMMode.DISABLED && (mediaFormats != null && mediaFormats.length > 0) && mediaArgs.isDummyImage(); }
@Override @SuppressWarnings("null") public @NotNull Media resolveMedia(@NotNull Media media) { String mediaRef = getMediaRef(media.getMediaRequest(), mediaHandlerConfig); MediaArgs mediaArgs = media.getMediaRequest().getMediaArgs(); && media.getMediaRequest().getResource() != null) { ValueMap props = media.getMediaRequest().getResource().getValueMap(); mediaArgs.altText(props.get(mediaHandlerConfig.getMediaAltTextProperty(), String.class)); media.setCropDimension(getMediaCropDimension(media.getMediaRequest(), mediaHandlerConfig)); media.setRotation(getMediaRotation(media.getMediaRequest(), mediaHandlerConfig)); media.setAsset(asset); if (media.getAsset() != null) { if (media.getRenditions().isEmpty()) { media.setMediaInvalidReason(MediaInvalidReason.NO_MATCHING_RENDITION); media.setMediaInvalidReason(MediaInvalidReason.NOT_ENOUGH_MATCHING_RENDITIONS); media.setMediaInvalidReason(MediaInvalidReason.MEDIA_REFERENCE_INVALID); media.setMediaInvalidReason(MediaInvalidReason.MEDIA_REFERENCE_MISSING);
/** * Returns true if the media was resolved successful. * @return Media is valid */ public boolean isValid() { return media.isValid(); }
@PostConstruct private void activate() { media = mediaHandler.get(resource, new MediaArgs(mediaFormat)).build(); if (media.isValid() && media.getElement() != null) { HtmlElement element = media.getElement(); if (StringUtils.isNotEmpty(cssClass)) { element.addCssClass(cssClass); } ValueMap props = resource.getValueMap(); int imageWidth = props.get("imageWidth", 0); if (imageWidth > 0) { element.setAttribute("width", Integer.toString(imageWidth)); } int imageHeight = props.get("imageWidth", 0); if (imageHeight > 0) { element.setAttribute("height", Integer.toString(imageHeight)); } } }
Image img = null; Asset asset = media.getAsset(); Rendition rendition = media.getRendition();
@Override public String buildUrl() { return build().getUrl(); }
/** * Returns the XHTML markup for the resolved media object. * This is in most cases an img element, but may also contain other arbitrary markup. * @return Media markup */ public String getMarkup() { return media.getMarkup(); }
Media media = new Media(mediaSource, mediaRequest); media.setMediaInvalidReason(MediaInvalidReason.INVALID_MEDIA_FORMAT); return media; media.setMediaInvalidReason(MediaInvalidReason.INVALID_MEDIA_FORMAT); return media; media.setMediaInvalidReason(MediaInvalidReason.NO_MEDIA_SOURCE); MediaMarkupBuilder mediaMarkupBuilder = AdaptTo.notNull(adaptable, mediaMarkupBuilderClass); if (mediaMarkupBuilder.accepts(media)) { media.setElement(mediaMarkupBuilder.build(media)); break;
@Override public HtmlElement<?> buildElement() { return build().getElement(); }
private JSONArray toResultJson(List<Media> mediaList) throws JSONException { JSONArray array = new JSONArray(); for (Media media : mediaList) { Rendition rendition = media.getRendition(); JSONObject mediaObject = new JSONObject(); mediaObject.put("assetPath", media.getAsset().getPath()); mediaObject.put("url", media.getUrl()); if (rendition.getWidth() > 0 && rendition.getHeight() > 0) { mediaObject.put("width", rendition.getWidth()); mediaObject.put("height", rendition.getHeight()); } if (rendition.getFileSize() > 0) { mediaObject.put("fileSize", rendition.getFileSize()); } mediaObject.putOpt("fileExtension", rendition.getFileExtension()); mediaObject.putOpt("mimeType", rendition.getMimeType()); array.put(mediaObject); } return array; }
@Override public final boolean accepts(@NotNull Media media) { // accept if not rendition was found and in edit mode // and multiple media formats are mandatory, and dummy image is not suppressed MediaArgs mediaArgs = media.getMediaRequest().getMediaArgs(); MediaFormat[] mediaFormats = mediaArgs.getMediaFormats(); return (!media.isValid() || media.getRendition() == null) && getWcmMode() != null && getWcmMode() != WCMMode.DISABLED && (mediaFormats != null && mediaFormats.length > 1) && mediaArgs.isDummyImage() && mediaArgs.isMediaFormatsMandatory(); }
/** * @return Media is valid */ public boolean isValid() { return media.isValid(); }
/** * @return Media markup */ public String getMarkup() { return media.getMarkup(); }
private List<Media> resolveMedia(List<AssetRequest> requests, MediaHandler mediaHandler) { List<Media> result = new ArrayList<>(); for (AssetRequest request : requests) { Media media = request.resolve(mediaHandler); if (media.isValid()) { result.add(media); } } return result; }
/** * Create an IMG element with alt text. * @param media Media metadata * @return IMG element with properties */ protected HtmlElement<?> getImageElement(Media media) { Image img = new Image(); // Alternative text Asset asset = media.getAsset(); String altText = null; if (asset != null) { altText = asset.getAltText(); } if (StringUtils.isNotEmpty(altText)) { img.setAlt(altText); } return img; }