Try our conversational search powered by Generative AI!

[TinyMCE] - Register settings on base classes

Found in

EPiServer.CMS.TinyMce 2.1.1

Fixed in

EPiServer.CMS.TinyMce 2.2.0

(Or a related package)

Created

Apr 25, 2018

Updated

Jan 07, 2022

Area

CMS UI

State

Closed, Acceptance tests pass


Description

Added functionality to make it possible to inherit settings from a base class.

abstract class ProductBase
{
    public virtual XHtml ProductDescription {get;set;}
}

class ProductPage : ProductBase
{
}

class ShoeProductPage : ProductPage
{
}

class ShirtProductPage : ProductPage
{
}

class BlueShirtProductPage : ShirtProductPage
{
}

class VerySpecialProductPage : ProductPage
{
}

class AndEvenMoreSpecialProductPage : VerySpecialProductPage
{
}

// Init
context.Services.Configure<TinyMceConfiguration>(config =>
{
    // Enable inheritance of settings
    config.InheritSettingsFromAncestor= true;

    config.Default()
        .Toolbar("epi-image");

    var baseSettings = config.Default().Clone();
    baseSettings
        .AddPlugin("product-selector")
        .Toolbar("product-selector cut paste");

    // Will be applied for every ancestor unless they have set a specific setting
    config.For<ProductBase>(t=>t.ProductDescription, baseSettings);
    
    // Will be based on Default()
    config.For<BlueShirtProductPage>(t=>t.ProductDescription)
        .AppendToolbar("color-picker");

    config.For<VerySpecialProductPage>(t=>t.ProductDescription, baseSettings)
        .Toolbar("cut past | product-selector | spellchecker);
});

ProductPage -> product-select cut paste
ShoeProductPage -> product-select cut paste
ShirtProductPage -> product-select cut paste
BlueShirtProductPage -> epi-image | color-picker
VerySpecialProductPage -> cut paste | product-select | spellchecker
AndEvenMoreSpecialProductPage -> cut paste | product-select | spellchecker

See https://world.episerver.com/documentation/developer-guides/CMS/add-ons/customizing-the-tinymce-editor-v2/ for more information.