Magnolia 5.4 reached end of life on November 15, 2018. This branch is no longer supported, see End-of-life policy.
The DAM core module is a Magnolia Maven module.
/modules/dam/config
.
In order to have a working DAM you must have configured at least:
To enable DAM at least one AssetProvider must be configuread as subnode of /modules/dam/config/providers/
.
Node name | Value |
---|---|
modules | |
dam | |
config | |
providers | |
example-provider | |
class | com.example.dam.MyAssetProvider |
identifier | foo |
class | required A class which must implement $webResourceManager.requireResource("info.magnolia.sys.confluence.artifact-info-plugin:javadoc-resource-macro-resources")
AssetProvider
. |
identifier | required The identifier of the asset provider. Must be unique within all asset providers. |
When an asset rendition is requested, AssetProviderRegistry#getRendererFor(Asset asset, MediaType to)
first is looking for a provider specific renderer but will fallback to the globally defined renderer if no specific can be found.
Node name | Value |
---|---|
modules | |
dam | |
config | |
providers | |
example-provider | |
renderers | |
imaging | |
class | com.example.dam.ImagingBasedAssetRenderer |
class | com.example.dam.MyAssetProvider |
identifier | foo |
renderers | |
noOp | |
class | info.magnolia.dam.core.NoOpAssetRenderer |
The example configuration above has 2 renderers defined:
/modules/dam/config/providers/example-provider/
renderers/imaging
configures a renderer for images specifically for the asset provider example-provider
./modules/dam/config/
renderers/noOp
is a global fallback if a provider lacks a renderer for the requested media type.The module magnolia-dam-core
provides
NoOpAssetRenderer is registered by
magnolia-dam-core is not taking care about the used AssetProvider implementation.
Specific asset provider and renderer should rather be configured from a module which contains a specific implementation but not from magnolia-dam-core itself.
Please read Magnolia dam JCR implementation configuration to get a complete example of a specific configuration.
Asset
Object based on the current URI:Asset
is found, an error is sent to the response.Asset
is found, the response header is set and the asset binary is put in the response.The servlet is backwards compatible and maps static UUIDs to the new DAM format.
DamDownloadServlet
is registered in the filter chain at /server/filters/servlets/DamDownloadServlet
.
Node name | Value |
---|---|
server | |
filters | |
context | |
... | |
servlets | |
ClasspathSpoolServlet | |
log4j | |
DamDownloadServlet | |
mappings | |
-dam-- | |
pattern | /dam/* |
-dam-static-- | |
pattern | /dam-static/* |
parameters | |
class | info.magnolia.cms.filters.ServletDispatchingFilter |
comment | DAM download servlet |
enabled | true |
servletClass | info.magnolia.dam.core.download.DamDownloadServlet |
servletName | DamDownloadServlet |
Content-disposition is a HTTP header. If the Content-disposition field is set in a HTTP response header, the browser opens the "save file as" dialog instead of rendering the requested resource.
Per default, DamDownloadServlet serves assets with set Content-Disposition
header. However, it is possible to define exceptions to omit the content disposition header.
DAM standard configuration already defines 2 exceptions based on mime type:
To disable the Content-Disposition header for other content types, add their MIME types to /dam/config/contentDisposition/contentType/rejected
.
Node name | Value |
---|---|
modules | |
dam | |
config | |
contentDisposition | |
contentType | |
rejected | |
1 | application/x-shockwave-flash |
2 | video/mp4 |
class | info.magnolia.voting.voters.ResponseContentTypeVoter |
class | info.magnolia.voting.voters.VoterSet |
Nodes and properties:
contentDisposition
: Defines content disposition header exceptions.contentType
: Arbitrary node namerejected
: Content map of MIME types for which content disposition headers are not served.class
: HttpServletRequest
, or the current MgnlContext.webContext
, if any.class
: To disable serving Content-Disposition
headers based on path:
inline
under contentDisposition
.class
and set the value to info.magnolia.voting.voters.URIStartsWithVoter
.not
and set the value to true
.pattern
and set the value to /dam/inline
.contentDisposition
node add an op
property and set the value to and
. This acts as an operator between voters and is only necessary if there you have more than one voter in the set.This will configure all files in folder inline
to be sent without content disposition headers. The new content node should look like this:
Node name | Value |
---|---|
contentDisposition | |
contentType | |
inline | |
class | info.magnolia.voting.voters.URIStartsWithVoter |
not | true |
pattern | /dam/inline |
class | info.magnolia.voting.voters.VoterSet |
op | and |