# Building Blocks

todo

The idea behind separating building management requires to understand which components need to work together in order to fulfill SCPs job.

Let's imagine you're creating a brand new e-mail within SCP:

  1. The user creates a new material by entering some Meta Data and selecting a Material Type from a list
  2. SCP will spin up the Content App which is linked to the Material Type inside the Content Area to enable the user managing the content of the given Material Type
  3. The user might add some content and also use some External Content Services to select for instance images from any other source (like Giffy etc.).
  4. Once the user has finished editing the content he might move it over to a status where a Job picks up the material and generates the real content with using the defined Build Service for the Material.

As you can see, there are quite a few services involved when it comes to content creation. We will go through every detail within this guide.

# Content Apps

SCP offers different kinds of Content Apps which have different use cases and feature sets:

Briefing Forms Feature

The Briefing Forms Feature enables Developers to create interactive web forms which offer WYSIWYG functionality with just a few lines of HTML. No JavaScript required from your side – could be ready in no-time.

It is production ready fast and therefore the right choice for creating simple Content Types (like E-Mails or Partials).

SCP Content Application

A SCP Content Application is a stand-alone web-application which is seamlessly integrated into the Platform. As Developers are free to build on any tech-stack with any kind of technology under the hood, there is practical no limitation.

SCP offers a great Content App SDK which is based on modern JavaScript and can be registered by just including a script tag to the html the content app provides.

External Applications

If you want to build a super rich web portal Showcase Platform is not enough – you need a specialized tool which handles all the underlying processes along with the given content, moderators, asset libraries etc.

Showcase Platform might keep a pointer to resources built by those applications (like articles, events, etc.) but don't offer any kind of content editing features – it might connect different applications to keep them up to date which could be beneficial for the SCP user.

# Hosting of Content Apps

You can host your Content App on any kind of webserver, as long as it supports a SSL secured connection. A thumbnail.png file has to be placed inside the apps root directory to help the user to find the right Content App. That is basically it – all the details are configurable inside the Material Type.

# Material Types

Content Apps are attached to Material Types, which you can then use to create a new Material with.

Therefore, after creating a definition for a Material Type you need to import its configuration so that you then are able to use your Content App within SCP.

Importing Configurations

If you’re having SCP running locally, you need to import the configuration by running the proper CLI Command.

Once you pushed your changes to the Client configuration's repository, we’re taking care of the config to be imported.

When working with multiple Material Types and multiple e.g . OPUs, you will fastly notice that the amount is getting too big to easily handle them within the Front End at one glance.

For this we are also having two options for you in store, to make your live and that of your Client's users way easier.

Before that let us take a quick look at how to create a Material Type, which is defined within the Client's configurations:

<?php

use App\Models\Config\MaterialType;

// CLIENT_CONFIG/config/material_types.php

return [
    'my-new-material-type' => [
        'filter' => [],
        'type'   => [
            'channel'                  => MaterialType::MATERIAL_CHANNEL_INSTANT_MSG,
            'channel_icon'             => MaterialType::MATERIAL_ICON_INSTANT_MSG,
            'label'                    => 'Fancy Instant Message',
            'group'                    => MaterialType::MATERIAL_GROUP_INSTANT_MSG,
            'template'                 => 'https://my-website.com/fancy-instant-message/',
            'fqn'                      => 'fancy.awesome.instant.message',
            'supported_material_types' => [
                'fancy.awesome.instant.message'
            ],
        ],
    ],
];

# Create A New Material Type

todo

As you can see from the example above, we create a new Material Type which has the label Fancy Instant Message. The label will be shown within almost everywhere you can select the Material Type and it will always play an important part when creating/copying a Material. It is placed within the group MaterialType::MATERIAL_GROUP_INSTANT_MSG which stands for Instant Message, to help the user choosing the right Material Type. We have recently implemented several harmonization approaches in creating new and organizing old Material Type definitions, to make it easier for everyone to align on certain defaults. More about that a bit further down below.

So, the Content App located at https://my-website.com/fancy-instant-message/ will be loaded and filled by SCP on start up/init of the Material, with your Client's default data, that are stored in your defined Database, given you set something up (e.g. via App Configurations).

Summarization Of The Behaviour:

TIP

You should check out the Material Types Configuration Reference for more details.

# Welcoming Grouping

todo

Based on the example configuration (still above), you might be able to spot our grouping possibilities already.

We have currently implemented two incrementally usable ways to make it easier to handle multiple Material Types, namely the group and the channel definitions.

Gather Requirements First

Try to understand your client's needs before you start configuring your SCP instance.

It can become very stressful to change the foundation once you perceive that the overall structure did not fit the Client's needs, as with everything in Application Engineering/Development .

# Material Channels

todo

Creation & Copy Dialogues - Material Channel Selection

As an addition to the Material Type Grouping that will be discussed afterwards, defining differing Material Channels will come in as the first handy thing to manage Material Types in the Front End.

With this, you can already make a pre-selection available to every User, by utilizing every Material Type's channel key definition.

Basically, if you define more than one Material Channel on all of your Material Types you will then have the following selection available in the Front End, to funnel the User's movement.

These are the Material Channel definitions we are currently enabling you to use:

Constant Value
MATERIAL_CHANNEL_MISC misc
MATERIAL_CHANNEL_EMAIL_HTML email_template_fragments
MATERIAL_CHANNEL_CLM_PPTX clm_presentations
MATERIAL_CHANNEL_INSTANT_MSG instant_messaging

# Material Type Groups

todo

So, Material Types Groups group Material Types together and here are a few good examples for Material Types Groups:

  • E-Mail Templates
    • for blast systems
    • for Veeva Vault®
    • ...
  • Landing Pages
    • Google AMP
    • Static Page
    • ...
  • eDetailers
    • Veeva CLM®
    • PPTX Upload
  • ...
  • Leaflet
  • ...

Material Group Types are defined via the type.group key of every Material Type definition.

As you can see, you can create multiple Material Types, like for blast systems and for Veeva Vault® which essentially are both E-Mail Templates. You also just might use differing Content Apps, which therefore differ in their workflows - or even just differing startup settings.

It is really a matter of how you structure your Client's demands before you start to create Material Types.

This way everyone will also have an easier time in the GUI of SCP, to narrow their selection results down.

Creation & Copy Dialogues - Material Type Selection

# Afterthoughts

You have created your first Material Type which points to your (presumably empty) content application.

You now have to choose if you want to go with the Briefing Forms Feature or if you would like to create your Content App with full flexibility.

We recommend starting with a simple form which leverages the Briefing Form Capabilities, as it is a good entry point to learn and test how SCP works, before moving on to more advanced customized approaches.