From f87462fc2230c7f523ce164cd0318c27a9692fe6 Mon Sep 17 00:00:00 2001 From: Ashish Chopra Date: Mon, 9 Mar 2026 20:08:57 +0530 Subject: [PATCH 1/3] fix: use correct DM delivery URLs per asset MIME type Documents (PDF, DOCX, CSV, ZIP) now use /original instead of the web-optimized image delivery URL. Videos use /play by default. Both are configurable per-project via 'aem.asset.document.mimetypes'. --- blocks/edit/da-assets/da-assets.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/blocks/edit/da-assets/da-assets.js b/blocks/edit/da-assets/da-assets.js index bf49d99ce..af18dfdc3 100644 --- a/blocks/edit/da-assets/da-assets.js +++ b/blocks/edit/da-assets/da-assets.js @@ -10,6 +10,15 @@ const loadScript = (await import(`${getNx()}/utils/script.js`)).default; const ASSET_SELECTOR_URL = 'https://experience.adobe.com/solutions/CQ-assets-selectors/static-assets/resources/assets-selectors.js'; +// MIME types that use /original rendition instead of web-optimized or /play delivery. +// Configurable per-project via 'aem.asset.document.mimetypes' (comma-separated). +const USE_ORIGINAL_DELIVERY_FOR_MIMETYPES = [ + 'application/pdf', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'text/csv', + 'application/zip', +]; + const fullConfJsons = {}; const CONFS = {}; @@ -121,11 +130,23 @@ export async function openAssets() { const getBaseDmUrl = (asset) => `https://${prodOrigin}${prodOrigin.includes('/') ? '' : '/adobe/assets/'}${asset['repo:id']}`; + const useOriginalMimetypesConfig = await getConfKey(owner, repo, 'aem.asset.document.mimetypes'); + const useOriginalMimetypes = useOriginalMimetypesConfig + ? useOriginalMimetypesConfig.split(/\s*,\s*/).map((t) => t.toLowerCase().trim()) + : USE_ORIGINAL_DELIVERY_FOR_MIMETYPES; + const getAssetUrl = (asset, name = asset.name) => { if (!dmDeliveryEnabled) { return `https://${prodOrigin}${asset.path}`; } - return `${getBaseDmUrl(asset)}${asset.mimetype?.startsWith('video/') ? '/original' : ''}/as/${name}`; + const mimeType = asset.mimetype?.toLowerCase(); + if (useOriginalMimetypes.includes(mimeType)) { + return `${getBaseDmUrl(asset)}/original`; + } + if (mimeType?.startsWith('video/')) { + return `${getBaseDmUrl(asset)}/play`; + } + return `${getBaseDmUrl(asset)}/as/${name}`; }; // Determine if images should be links From 1ff7d2b6027803e52624146a8243d67753883d85 Mon Sep 17 00:00:00 2001 From: Ashish Chopra Date: Mon, 9 Mar 2026 23:02:24 +0530 Subject: [PATCH 2/3] fix: correct DM delivery URL formats per OpenAPI spec - Original rendition: /original/as/{name} (was missing /as/{name}) - Web-optimized: /as/{baseName}.avif, always avif with extension stripped --- blocks/edit/da-assets/da-assets.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/blocks/edit/da-assets/da-assets.js b/blocks/edit/da-assets/da-assets.js index af18dfdc3..af77630d2 100644 --- a/blocks/edit/da-assets/da-assets.js +++ b/blocks/edit/da-assets/da-assets.js @@ -141,12 +141,13 @@ export async function openAssets() { } const mimeType = asset.mimetype?.toLowerCase(); if (useOriginalMimetypes.includes(mimeType)) { - return `${getBaseDmUrl(asset)}/original`; + return `${getBaseDmUrl(asset)}/original/as/${name}`; } if (mimeType?.startsWith('video/')) { return `${getBaseDmUrl(asset)}/play`; } - return `${getBaseDmUrl(asset)}/as/${name}`; + const baseName = name.replace(/\.[^.]+$/, ''); + return `${getBaseDmUrl(asset)}/as/${baseName}.avif`; }; // Determine if images should be links From 20a9959371581b1104a82368336e7b0f4de501dd Mon Sep 17 00:00:00 2001 From: Ashish Chopra Date: Mon, 9 Mar 2026 23:10:34 +0530 Subject: [PATCH 3/3] fix: encode asset name in DM delivery URLs --- blocks/edit/da-assets/da-assets.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/blocks/edit/da-assets/da-assets.js b/blocks/edit/da-assets/da-assets.js index af77630d2..edcd4bc53 100644 --- a/blocks/edit/da-assets/da-assets.js +++ b/blocks/edit/da-assets/da-assets.js @@ -140,13 +140,14 @@ export async function openAssets() { return `https://${prodOrigin}${asset.path}`; } const mimeType = asset.mimetype?.toLowerCase(); + const encodedName = encodeURIComponent(name); if (useOriginalMimetypes.includes(mimeType)) { - return `${getBaseDmUrl(asset)}/original/as/${name}`; + return `${getBaseDmUrl(asset)}/original/as/${encodedName}`; } if (mimeType?.startsWith('video/')) { return `${getBaseDmUrl(asset)}/play`; } - const baseName = name.replace(/\.[^.]+$/, ''); + const baseName = encodedName.replace(/\.[^.]+$/, ''); return `${getBaseDmUrl(asset)}/as/${baseName}.avif`; };