Skip to content

Troubleshooting

Oliver Fabel edited this page May 6, 2022 · 6 revisions

This chapter should help you to identify and solve common problems with the design build. Make sure you consulted this guide first, befor you try find help elsewhere.

Feature Matrix

The following feature matrix should give a quick overview about BSI CX and the available features:

Landingpages E-Mails Websites Style Configs Editor Configs Format
Studio 1.0 yes yes no yes no legacy
Studio 1.1 yes yes no yes no legacy
Studio 1.2 yes yes no yes yes legacy
BSI CX 1.3 yes yes yes yes yes legacy*
BSI CX 22.0 yes yes yes yes yes JSON**

* JSON schema version 1.0 is used for websites.
** Upload of designs in the legacy format still supported.

Circular Dependencies

Imagine you have two content elements named one-column and two-column. Each content element has at least one dropzone. You want to allow the content editor to place the one-column element inside a two-column element's dropzone and vice versa. This means you must deal with circular dependencies when specify this structure. Here is one possible solution:

const {cx, Icon} = require('@bsi-cx/design-build');

const element = cx.contentElement;

module.exports = element;

element.withElementId('one-column')
  .withIcon(Icon.ONE_COLUMN)
  .withLabel('1 Column')
  .withFile(require('./template.twig'))
  .withDropzones(
    cx.dropzone
      .withDropzone('b6608fe9-4815-4ef1-a118-6e945ead513f')
      .withAllowedElements(
        require('../two-column')));
const {cx, Icon} = require('@bsi-cx/design-build');

const element = cx.contentElement;

module.exports = element;

element.withElementId('two-column')
  .withIcon(Icon.TWO_COLUMN)
  .withLabel('2 Columns')
  .withFile(require('./template.twig'))
  .withDropzones(
    cx.dropzone
      .withDropzone('20816df1-f8c0-47d1-94a1-1cd124c2b348')
      .withAllowedElements(
        require('../one-column')),
    cx.dropzone
      .withDropzone('5971732b-bf41-493d-a678-0fce1a2b5771')
      .withAllowedElements(
        require('../one-column')));

The trick is to export the unspecified content element object as early as possible and then finish the specification afterwards.