Magnolia 5.7 reached extended end of life on May 31, 2022. Support for this branch is limited, see End-of-life policy. Please note that to cover the extra maintenance effort, this EEoL period is a paid extension in the life of the branch. Customers who opt for the extended maintenance will need a new license key to run future versions of Magnolia 5.7. If you have any questions or to subscribe to the extended maintenance, please get in touch with your local contact at Magnolia.
The module handles publishing of content from an author instance to a public instance. In the Enterprise Edition of Magnolia, the functionality of this module is extended by the Publishing Transactional module (in Magnolia EE), which ensures synchronization of content between multiple public instances.
By bringing a neater and more logical structure for the publishing (activation) functions, the Publishing module is a convenient replacement for the former Activation module.
The bundles and webapps in this Magnolia branch are by default provided with the Publishing module. However, using Activation is still possible, but only after replacing the Publishing module and the Publishing Transactional module with the Activation module and the Transactional Activation module.
Module structure
The module (parent) consists of four submodules. All of the submodules are required for correct functioning of the publishing feature.
artifactID | |
---|---|
| Parent reactor. |
| Provides the main functionality. |
| Handles send operations to the public instance. |
| Handles receive requests on the public instance. |
| Generates new publishing keys and provides a publishing monitor. |
Installing
<version/>
in the dependency.<dependency> <groupId>info.magnolia.publishing</groupId> <artifactId>magnolia-publishing-core</artifactId> </dependency>
<dependency> <groupId>info.magnolia.publishing</groupId> <artifactId>magnolia-publishing-sender</artifactId> </dependency>
<dependency> <groupId>info.magnolia.publishing</groupId> <artifactId>magnolia-publishing-receiver</artifactId> </dependency>
<dependency> <groupId>info.magnolia.publishing</groupId> <artifactId>magnolia-publishing-app</artifactId> </dependency>
Configuration
Publishing is configured in Configuration > /modules/publishing-core
.
Please be very careful when modifying the configuration of publishing and always test the changes thoroughly before applying them to a live environment. Sometimes there may exist a better way of solving a publishing-related problem than by tweaking a publishing configuration.
Main part
The main part of the configuration is under modules publishing-core config publicationByPathVoters publishingLogStorage receivers operations /modules/publishing-core/config
.Node name
publicationByPathVoters
Sets publication by path (default is by uuid) to configured workspaces. publicationByPathVoters op OR config op AND mgnlExchangeWorkspaceName pattern config keyName mgnlExchangeWorkspaceName class info.magnolia.publishing.voter.MapKeyPatternVoter 1stAnd2ndLevelNodes op OR class info.magnolia.voting.voters.VoterSet mgnlExchangeParentPath pattern keyName mgnlExchangeParentPath class info.magnolia.publishing.voter.MapKeyPatternVoter mgnlExchangePath pattern keyName mgnlExchangePath class info.magnolia.publishing.voter.MapKeyPatternVoter resources workspace pattern resources keyName mgnlExchangeWorkspaceName class info.magnolia.publishing.voter.MapKeyPatternVoterNode name Value ^\/[^\/]*$ ^\/[^\/]*(\/[^\/]*)?$
publishingLogStorage
Defines where the information about publishing is logged. The default implementation MemoryActivationStorage
keeps the information in memory.
Node name | Value |
---|---|
publishingLogStorage | |
class | info.magnolia.publishing.monitor.MemoryPublishingStorage |
receivers
Contains the list of receivers ( receivers magnoliaPublic8080 url enabled truesubscribers
in the Activation module) where content will be published.Node name Value http://localhost:8080/magnoliaPublic
operations
Contains the list of operations provided by Magnolia and the respective operation classes:
publish
(activate
)unpublish
(deactivate
)commit
(EE only)rollback
(EE only)You can define your own operations and add them to the list, but in this case you will also have to implement your own send and receive operations. The
SendOperation
is a base interface that all send operations must implement.With a custom-defined operation you can publish content to something that is not a Magnolia public instance, for example to a custom API or a Content Delivery Network.
operations publish receiveOperationClass info.magnolia.publishing.transactional.receiver.operation.jcr.JcrTransactionPublicationOperation sendOperationClass info.magnolia.publishing.sender.operation.HttpPublicationOperation unpublish receiveOperationClass info.magnolia.publishing.transactional.receiver.operation.jcr.JcrTransactionUnpublicationOperation sendOperationClass info.magnolia.publishing.sender.operation.HttpUnpublicationOperation activate receiveOperationClass info.magnolia.publishing.transactional.receiver.operation.jcr.JcrTransactionPublicationOperation deactivate receiveOperationClass info.magnolia.publishing.transactional.receiver.operation.jcr.JcrTransactionUnpublicationOperation commit receiveOperationClass info.magnolia.publishing.transactional.receiver.operation.jcr.JcrCommitOperation sendOperationClass info.magnolia.publishing.transactional.sender.operation.HttpCommitOperation rollback receiveOperationClass info.magnolia.publishing.transactional.receiver.operation.jcr.JcrRollbackOperation sendOperationClass info.magnolia.publishing.transactional.sender.operation.HttpRollbackOperationNode name Value
lockManagerMode
property
The property has been introduced with module version 1.1.9. By default, path-based locking is configured using lockManagerMode=path
. Node-based locking can be set with lockManagerMode=compatibility
.
The setting is applicable only on public instances. Changing the property on the author instance has no effect.
Publish and unpublish commands
Users typically publish content by clicking Publish in the Action bar. The click executes a publish
command which pushes the content from the author instance to the public instance(s). Conversely, when users click Unpublish the system executes an unpublish
command which deletes the content from the public instance(s).
The publish
and unpublish
commands are configured in /modules/publishing-core/commands
. The default
catalog contains the commands which just publish the content without versioning. Magnolia also provides a versioned
command catalog. It contains identically named publish
and unpublish
commands which first version the content and then delegate to the default commands.
Both in the default
catalog and in the versioned
catalog, the command tree contains also the activate
and deactivate
commands (not shown below), which extend the publish
and unpublish
commands, respectively. The two commands are included in the configuration for compatibility reasons.
Node name | Value |
---|---|
modules | |
publishing-core | |
commands | |
default | |
publish | |
class | info.magnolia.publishing.command.PublicationCommand |
unpublish | |
class | info.magnolia.publishing.command.UnpublicationCommand |
versioned | |
publish | |
version | |
class | info.magnolia.commands.impl.VersionCommand |
enabled | true |
publish | |
class | info.magnolia.commands.DelegateCommand |
commandName | default-publish |
unpublish | |
version | |
class | info.magnolia.commands.impl.VersionCommand |
enabled | true |
unpublish | |
class | info.magnolia.commands.DelegateCommand |
commandName | default-unpublish |
To use one of these commands, define the catalog and the command name in the action definition. See an example in Executing commands with actions.
Disabling publishing
If necessary, you can disable publishing on the public instance(s) by adding the enabled
node in Configuration > /server/filters/publishing
and set its value to false
.
How publishing works
For an overview of how publishing works see the Publishing overview page.