Campaign Publisher module

Content management Unbundled: Extension 2.1.0-beta2

Edition

DX Core

License

MLA

Issues

Maven site

Magnolia Campaign Publisher 2.1.0 is in beta with Magnolia 6.3.

Campaign Publisher allows managers and team members to manage all elements of online campaigns in a single app. You can add content to campaigns directly in the app where the content is managed. By default, the Add to campaign action is available in the Pages and Assets apps but can also be added to any content app.

At a glance, you can see a campaign’s readiness and publication status of each item in the Campaign Publisher app. Team members can preview each campaign item and publish the entire campaign in a single click.

The Campaign Publisher module and app are compatible with Pages and Assets apps (6 UI).

There is an ongoing effort to convert the Campaign Publisher module and app to the entire 6 UI framework. You can follow the progress on the following ticket: MGNLCAMPU-87.

Installing with Maven

Maven is the easiest way to install the module. Add the following to your bundle:

<dependency>
  <groupId>info.magnolia.campaign</groupId>
  <artifactId>magnolia-campaign-publisher</artifactId>
  <version>2.1.0-beta2</version> (1)
</dependency>
1 Should you need to specify the module version, do it using <version>.

Configuration

From 2.0.1, the Add to campaign action is by default available only in UI 6 Pages and Assets apps, but can be added to other content apps as well.

App Module name App name Config source

old Pages app

pages

pages

jcr

6 UI Pages app

pages-app

pages-app

yaml

old Assets app

dam-app

assets

jcr

6 UI Assets app

dam-app-core

dam

yaml

Using the Add to campaign action in other content apps

You can add the Add to campaign action button to your content app by adding a decoration.

In the Resource app, go to /campaign-publisher/decorations/ and add the Add to campaign action decoration.

The Add to campaign action is available by default in the Pages and Assets apps in the 6 UI framework from Campaign Publisher 2.0.1 or later.

Below are the definitions for adding the action in the Pages and Assets apps. The Add to campaign action doesn’t work in the Resource Files app.

  • Pages app

  • Assets app

/campaign-publisher/decorations/pages-app/apps/pages-app.yaml
subApps:
  browser:
    actions:
      selectCampaignAction:
        class: info.magnolia.campaignpublisher.ui.action.AddCampaignActionDefinition
    actionbar:
      sections:
        - name: crud
          groups:
            - name: publish
              items:
                - name: selectCampaignAction
/campaign-publisher/decorations/dam-assets-app/apps/dam.subApps.yaml
jcrBrowser:
  actions:
    selectCampaignAction:
      class: info.magnolia.campaignpublisher.ui.action.AddCampaignActionDefinition
  actionbar:
    sections:
      asset:
        groups:
          publish:
            items:
              - name: selectCampaignAction
      folder:
        groups:
          publish:
            items:
              - name: selectCampaignAction

For more information about action definitions and decorations, see Action definition and Definition decorator file location.

Setting permissions

The Campaign Publisher app belongs to the Edit app group that has no restrictive permissions configured in the app launcher layout.

To add content to campaigns and creating and managing campaigns in the Campaign Publisher app, editors and publishers need read/write permissions in the campaigns workspace. Only superuser has these permissions by default.

To provide users with the required permissions, create a new role in the Security app with the permissions in the table below and assign it to the user or group.

Access control lists

Workspace

Permission

Scope

Path

Campaigns

Read/Write

Selected and sub nodes

/

If permissions to the underlying content are restricted, the user will still not be able to access or preview the content in the app in which the content is managed.

Here’s what example Travel Demo tour editor Tina, who does not have access to the Pages app, sees in the Campaign Publisher app. The activation status indicator and Preview action are disabled.

Campaign publisher app with the action bar seen as by user Tina

Content types to add

The decorations in this section are to decorate the Campaign Publisher app so that you can configure the Add child elements to the campaign action for various apps. Only pages and their subpages can be added from the Pages app. For the Assets app and other content apps, you can add both items (for example, assets and contacts) and folders. What can be added is specified by the childNodeTypesToAdd property, as shown in the example decorations below.

  • Pages app

  • Assets app

  • Contacts app

/<MY-LIGHT-MODULE>/decorations/campaigns/apps/campaigns.subApps.yaml
browser:
  actions:
    addChildElements:
      childNodeTypesToAdd:
        website:
          - mgnl:page
      uiVersion: UI6
/<MY-LIGHT-MODULE>/decorations/campaigns/apps/campaigns.subApps.yaml
browser:
  actions:
    addChildElements:
      childNodeTypesToAdd:
        dam:
          - mgnl:asset
          - mgnl:folder
      uiVersion: UI6
/<MY-LIGHT-MODULE>/decorations/campaigns/apps/campaigns.subApps.yaml
browser:
  actions:
    addChildElements:
      childNodeTypesToAdd:
        contacts:
          - mgnl:contact
          - mgnl:folder
      uiVersion: UI6

Node handling during import

The uuidBehavior flag defines how incoming (deserialized) node identifiers are handled. Subgraphs aggregate application-specific data for quick access to frontend developers and are updated during the import. They are exposed to developers via GraphQL.

There are four options:

  • ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW: Incoming nodes are assigned newly created identifiers upon addition to the workspace. As a result, identifier collisions never occur.

  • ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING: If an incoming node has the same identifier as an existing node in the workspace, then the existing node and its subgraph are removed from wherever it may be in the workspace before the incoming node is added.

    This can result in nodes disappearing from locations in the workspace that are different from the location where the incoming subgraph is written.
  • ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING: If an incoming node has the same identifier as an existing node, then the existing node is replaced by the incoming node in the same position as the existing node.

    This may result in the incoming subgraph being disaggregated and spread to different locations in the workspace. Consequently, no node may be added as a child of parentAbsPath. Specifically, this could happen if the topmost element of the incoming XML has the same identifier as an existing node elsewhere in the workspace.
  • ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW: If an incoming node has the same identifier as an existing node in the workspace, then an ItemExistsException is thrown.

Feedback

DX Core

×

Location

This widget lets you know where you are on the docs site.

You are currently perusing through the DX Core docs.

Main doc sections

DX Core Headless PaaS Legacy Cloud Incubator modules