/** * @param resource Binary resource * @param media Media metadata * @param fileName File name */ InlineAsset(Resource resource, Media media, String fileName, Adaptable adaptable) { this.resource = resource; this.media = media; this.defaultMediaArgs = media.getMediaRequest().getMediaArgs(); this.fileName = fileName; this.adaptable = adaptable; }
/** * Set additional attributes on the media element from the MediaArgs properties. * @param mediaElement Media element * @param media Media */ protected void setAdditionalAttributes(HtmlElement<?> mediaElement, Media media) { MediaArgs mediaArgs = media.getMediaRequest().getMediaArgs(); for (Entry<String, Object> entry : mediaArgs.getProperties().entrySet()) { if (StringUtils.equals(entry.getKey(), MediaNameConstants.PROP_CSS_CLASS)) { mediaElement.addCssClass(entry.getValue().toString()); } else { mediaElement.setAttribute(entry.getKey(), entry.getValue().toString()); } } }
@Override public final boolean accepts(@NotNull Media media) { return media.getMediaRequest().getMediaArgs().isMediaFormatsMandatory() && media.getRendition() != null && media.getRenditions().size() > 1 && media.isValid(); }
MediaBuilderImpl(MediaRequest mediaRequest, MediaHandlerImpl mediaHandler) { if (mediaRequest == null) { throw new IllegalArgumentException("Media request is null."); } this.resource = mediaRequest.getResource(); this.mediaRef = mediaRequest.getMediaRef(); // clone media args to make sure the original object is not modified this.mediaArgs = mediaRequest.getMediaArgs().clone(); this.refProperty = mediaRequest.getRefProperty(); this.cropProperty = mediaRequest.getCropProperty(); this.mediaHandler = mediaHandler; }
/** * Implements check whether to apply drag&drop support as described in {@link DragDropSupport}. * @param mediaRequest Media request * @param wcmComponentContext WCM component context * @return true if drag&droup can be applied. */ public static boolean canApplyDragDropSupport(@NotNull MediaRequest mediaRequest, @Nullable ComponentContext wcmComponentContext) { switch (mediaRequest.getMediaArgs().getDragDropSupport()) { case ALWAYS: return true; case NEVER: return false; case AUTO: String resourcePath = null; if (mediaRequest.getResource() != null) { resourcePath = mediaRequest.getResource().getPath(); } String componentResourcePath = null; if (wcmComponentContext != null && wcmComponentContext.getResource() != null) { componentResourcePath = wcmComponentContext.getResource().getPath(); } return resourcePath != null && StringUtils.equals(resourcePath, componentResourcePath); default: throw new IllegalArgumentException("Unsupported drag&drop support mode: " + mediaRequest.getMediaArgs().getDragDropSupport()); } }
/** * @param damAsset DAM asset * @param media Media metadata */ public DamAsset(com.day.cq.dam.api.Asset damAsset, Media media, Adaptable adaptable) { this.damAsset = damAsset; this.cropDimension = media.getCropDimension(); this.rotation = media.getRotation(); this.defaultMediaArgs = media.getMediaRequest().getMediaArgs(); this.properties = new ValueMapDecorator(damAsset.getMetadata()); this.adaptable = adaptable; }
@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(); }
/** * Collect responsive JSON metadata for all renditions as image sources. * @param media Media * @return JSON metadata */ protected JSONArray getResponsiveImageSources(Media media) { MediaFormat[] mediaFormats = media.getMediaRequest().getMediaArgs().getMediaFormats(); JSONArray sources = new JSONArray(); for (MediaFormat mediaFormat : mediaFormats) { sources.put(toReponsiveImageSource(media, mediaFormat)); } return sources; }
@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(); }
@SuppressWarnings({ "null", "unused" }) @Override public HtmlElement<?> build(@NotNull Media media) { // Create dummy image element to be displayed in Edit mode as placeholder. Dimension dimension = MediaMarkupBuilderUtil.getMediaformatDimension(media); MediaArgs mediaArgs = media.getMediaRequest().getMediaArgs(); // create dummy image String dummyImageUrl = StringUtils.defaultString(mediaArgs.getDummyImageUrl(), DUMMY_IMAGE); dummyImageUrl = urlHandler.get(dummyImageUrl) .urlMode(media.getMediaRequest().getMediaArgs().getUrlMode()) .buildExternalResourceUrl(); Image image = new Image(dummyImageUrl, dimension.getWidth(), dimension.getHeight()) .addCssClass(MediaNameConstants.CSS_DUMMYIMAGE); // set additional attributes setAdditionalAttributes(image, media); // enable drag&drop for media source - if none is specified use first one defined in config MediaSource mediaSource = media.getMediaSource(); if (mediaSource == null && !mediaHandlerConfig.getSources().isEmpty()) { Class<? extends MediaSource> mediaSourceClass = mediaHandlerConfig.getSources().iterator().next(); mediaSource = AdaptTo.notNull(adaptable, mediaSourceClass); } if (mediaSource != null) { mediaSource.enableMediaDrop(image, media.getMediaRequest()); } return image; }
/** * Get dimension from first media format defined in media args. Fall back to dummy min. dimension if none specified. * @param media Media metadata * @return Dimension */ public static @NotNull Dimension getMediaformatDimension(@NotNull Media media) { // Create dummy image element to be displayed in Edit mode as placeholder. MediaArgs mediaArgs = media.getMediaRequest().getMediaArgs(); MediaFormat[] mediaFormats = mediaArgs.getMediaFormats(); // detect width/height - either from media args, or from first media format long width = mediaArgs.getFixedWidth(); long height = mediaArgs.getFixedHeight(); if ((width == 0 || height == 0) && mediaFormats != null && mediaFormats.length > 0) { MediaFormat firstMediaFormat = mediaArgs.getMediaFormats()[0]; Dimension dimension = firstMediaFormat.getMinDimension(); if (dimension != null) { width = dimension.getWidth(); height = dimension.getHeight(); } } // fallback to min width/height if (width == 0) { width = MediaMarkupBuilder.DUMMY_MIN_DIMENSION; } if (height == 0) { height = MediaMarkupBuilder.DUMMY_MIN_DIMENSION; } return new Dimension(width, height); }
if (!resolveMediaFormats(mediaRequest.getMediaArgs())) { media.setMediaInvalidReason(MediaInvalidReason.INVALID_MEDIA_FORMAT); return media; if (!resolveDownloadMediaFormats(mediaRequest.getMediaArgs())) { media.setMediaInvalidReason(MediaInvalidReason.INVALID_MEDIA_FORMAT); return media;
public @NotNull Media resolveMedia(@NotNull Media media) { String mediaRef = getMediaRef(media.getMediaRequest(), mediaHandlerConfig); MediaArgs mediaArgs = media.getMediaRequest().getMediaArgs();
@Override public @NotNull Media resolveMedia(@NotNull Media media) { MediaArgs mediaArgs = media.getMediaRequest().getMediaArgs();