Configuring Live Copy

Assign live copy admins

Live Copies enable editors to create copies of content anywhere, on other sites. While this is very powerful, it doesn’t copy content permissions (or restrictions) as configured by roles and access control lists (ACLs). Since Live Copy 3.2.18, only users with the livecopy-admin role may create and update live copies (i.e., propagate master changes). Users with this role are responsible for maintaining consistency of access control, in combination with live copies, and should have visibility over the entire workspace.

To assign this role to a user:

  1. Open the Security app.

  2. Edit an existing user or add a new one.

  3. Go to the Roles tab.

  4. Select the livecopy-admin role on the left side of the table.

  5. Click > to grant it to the user.

  6. Save changes.

Create live copy site definition

Coordinate with your authors to create a matching site definition for any live copy sites they create.

Go to Configuring a site definition to create a new one for your live copy. Duplicate the master site by making a copy in the Configuration app or a light module folder.

Internationalization

Configuring i18n involves configuring the locales in the site definition under <module_name>/sites/example.yaml.

  1. In the Site definition, use info.magnolia.livecopy.i18n.LiveCopyI18nContentSupport in the live copy site definition. This class processes the content of the live copy page based on the locale, programmatically retrieving the locale from the master page’s site definition.

    Before version 3.2.6, this class introduced a masterLocale property which held the fallback language from the master copy. From Live Copy 3.2.6+ masterLocale is deprecated. For older versions of Live Copy, it is still used.
  2. In the Configuration app, enable multi-language authoring in /config/server/i18n/authoring and set the class to info.magnolia.livecopy.i18n.LiveCopyMultiSiteI18nAuthoringSupport.

    Multi-language configuration

  3. If you only want to have one locale available in your live copy, delete the other locales from the live copy site definition.

    For example, if you have English and German versions in the master, but you only want the German version of the site to be available to authors in the live copy, remove the en locale folder from the live copy site definitions and set the fallback locale to de:

    image

    When the author then opens a live copy page, the language switcher does not appear at the bottom of the page and the content presented is the German version.

About locales

Locales are display languages on Magnolia instances. When you create a live copy of your page, this new page (live copy) adopts the same structure as the original (master). This means that the locales of the master site definition are used to define the structure of both the master and live copy pages. fallbackLocale defines which language is used by default from the available locales and which content is served if the content is not available for the current locale.

image

In the example above, German is used as the default locale for the master page (fallbackLocale = de). You can read the Internationalization page for more information about translated user interface texts (see examples in the table below).

Master Live copy

title = Hello world

title = Hello world

title_de = Hallo Welt

title_de = Hallo Welt

Defining fallbackLocale does not affect the structure of the live copy or the master pages. For example, defining this property as de is like stating that the content of the live copy page will be rendered in the German locale by default when first loaded.

Create live copy action

You can configure the following for the Create live copy action:

  • Parallel or sequential creation

    Allow users to create multiple live copies in parallel, or block the action (and the push changes actions) to prevent new creations once a creation operation has started. By default, live copy creation is set to run sequentially for performance reasons.

  • Child node copying

    Allow users to create live copies of child nodes even when the parent node is already being copied. By default, users can’t create live copies of child nodes if the parent node is being copied.

/<your-module>/decorations/pages-app/apps/pages-app.subApps.browser.actions.createLiveCopy.availability.rules.yaml
IsLiveCopyRunningRule:
  class: info.magnolia.livecopy.app.availability.IsLiveCopyRunningRuleDefinition
  parallel: false (1)
  recursive: true (2)
1 The parallel property from info.magnolia.livecopy.app.availability.IsLiveCopyRunningRuleDefinition, set to false by default.

Once a create live copy action starts, you can’t perform any additional creation or push changes operations until it is complete. Set to true to allow multiple live copy creation actions to run in parallel. Note that this may affect performance if many copies are created simultaneously.

2 The recursive property from info.magnolia.livecopy.app.availability.IsLiveCopyRunningRuleDefinition, set to true by default.

When the create live copy action is triggered for a parent node, both the node and its children are locked, making the action unavailable until the parent node live copy creation completes. Set to false to allow live copies of child nodes to be created while the operation is still running for the parent node.

Enable content deletion without protecting pages from master updates

Suppose your authors want to delete content, such as a specific component, from a live copy page but they don’t want to protect the whole page from master changes. In this case, what happens is the deleted content is added again when they push the master page.

To work around the content being added to the page again, you can add a no rendering option to the respective master component using an if condition in its FTL file (example shown below).

[#if "${content.headline}" != "hide"]
<div class="card">
    <h1>${content.headline}</h1>
    [#assign myAsset = damfn.getAsset("jcr","/an-asset.jpg")!]
    [#if myAsset??]
        <img src="${myAsset.getLink()}" width="300px"/>
    [/#if]
    <p class="artwork_title">${content.text}</p>
    [#assign myAssetLink = damfn.getAssetLink("jcr:20f53452-7e37-4e1b-b10d-c085a703809d")!]
    <p class="webapp_link">${myAssetLink}</p>
    <p class="webapp_link">${content.pageLink}</p>
</div>
[/#if]
Feedback

DX Core

×

Location

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

You are currently perusing through the Live Copy module docs.

Main doc sections

DX Core Headless PaaS Legacy Cloud Incubator modules