The 5.7 branch of Magnolia reached End-of-Life on December 31, 2023, as specified in our End-of-life policy. This means the 5.7 branch is no longer maintained or supported. Please upgrade to the latest Magnolia release. By upgrading, you will get the latest release of Magnolia featuring significant improvements to the author and developer experience. For a successful upgrade, please consult our Magnolia 6.2 documentation. If you need help, please contact info@magnolia-cms.com.
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
.Node name
publicationByPathVoters
Sets publication by path (default is by uuid) to configured workspaces. OR AND config mgnlExchangeWorkspaceName info.magnolia.publishing.voter.MapKeyPatternVoter OR info.magnolia.voting.voters.VoterSet mgnlExchangeParentPath info.magnolia.publishing.voter.MapKeyPatternVoter mgnlExchangePath info.magnolia.publishing.voter.MapKeyPatternVoter resources mgnlExchangeWorkspaceName 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 ( 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.
info.magnolia.publishing.transactional.receiver.operation.jcr.JcrTransactionPublicationOperation info.magnolia.publishing.sender.operation.HttpPublicationOperation info.magnolia.publishing.transactional.receiver.operation.jcr.JcrTransactionUnpublicationOperation info.magnolia.publishing.sender.operation.HttpUnpublicationOperation info.magnolia.publishing.transactional.receiver.operation.jcr.JcrTransactionPublicationOperation info.magnolia.publishing.transactional.receiver.operation.jcr.JcrTransactionUnpublicationOperation info.magnolia.publishing.transactional.receiver.operation.jcr.JcrCommitOperation info.magnolia.publishing.transactional.sender.operation.HttpCommitOperation info.magnolia.publishing.transactional.receiver.operation.jcr.JcrRollbackOperation 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.