Environment Indicator 

Extension key

typo3_environment_indicator

Package name

konradmichalik/typo3-environment-indicator

Version

3.4

Language

en

Author

Konrad Michalik & contributors

License

This extension documentation is published under the CC BY-NC-SA 4.0 (Creative Commons) license.


Frontend Edit Logo

This extension provides several features to show an environment indicator in the TYPO3 frontend and backend.


Introduction 

A quick overview about the main features provided by this extension.

Installation 

Instructions on how to install this extension and which TYPO3 and PHP versions are currently supported.

Configuration 

Learn how to configure the extension in various ways. This includes extension configuration and the usage of the configuration utility.

Indicators 

Indicators are the main feature of this extension. They are used to show e.g. the current application context in the frontend and backend.

Triggers 

Triggers are conditions that can be used to show or hide the environment indicator in the frontend and backend.

Developer corner 

A quick overview of the possibilities for extending the extension

Introduction 

What does it do? 

This extension provides several features to show an environment indicator in the TYPO3 frontend and backend.

Features 

Combine trigger and indicator classes to show the environment in the TYPO3 frontend and backend. The extension provides several trigger and indicator classes out of the box. You can also create your own trigger and indicator classes.

Example

Backend with several environment indicators

Frontend + Backend 

Icon Preview Description
Favicon Icon Favicon Preview Modified favicon: Modifies the favicon for frontend and backend based on the original favicon, current environment and your configuration.
Page Title Icon Page Title Preview Page title: Prefix or suffix the page title in frontend and backend with the current application context.

Frontend 

Icon Preview Description
Frontend Hint Icon Frontend Hint Preview Frontend Hint: Adds an informative hint to the frontend showing the website title and current environment.
Frontend Image Icon Frontend Image Preview Modified frontend image: Modifies the frontend image based on the original image, current environment and your configuration.

Backend 

Icon Preview Description
Backend Toolbar Item Icon Backend Toolbar Item Preview Backend toolbar item: Adds an informative item to the backend toolbar showing the current environment.
Backend Topbar Icon Backend Topbar Preview Backend topbar: Colors the backend header topbar according to the environment.
Backend Logo Icon Backend Logo Preview Modified backend logo: Modifies the backend logo based on the original logo, current environment and your configuration.
Dashboard Widget Icon Dashboard Widget Preview Dashboard widget: Render a dashboard widget according to the environment.
Backend Theme Icon Backend Theme Preview Backend theme (experimental): Colors the entire TYPO3 v14+ backend (primary color, header, sidebar) based on the environment.
Backend Login Icon Backend Login Preview Backend login: Shows a colored environment badge directly on the backend login screen.

Misc 

Icon Preview Description
CLI Banner Icon CLI Banner Preview CLI banner: Prints a colored environment banner to the console before a command runs.
Mail Subject Prefix Icon Mail Subject Prefix Preview Mail subject prefix: Prepends the environment to the subject of every mail sent through the TYPO3 Mailer API.

Support 

There are several ways to get support for this extension:

License 

This extension is licensed under GNU General Public License 2.0 (or later).

Installation 

Requirements 

Version TYPO3 PHP
3.x 13.4 - 14.x 8.2 - 8.5
2.x 11.5 - 13.4 8.1 - 8.4

Additional requirements:

  • ImageDriver: GD, Imagick or libvips

Installation 

Require the extension via Composer (recommended):

composer require konradmichalik/typo3-environment-indicator
Copied!

Or download it from the TYPO3 extension repository.

Migration from version 1.x to 2.x 

Since version 2.x, the extension uses the new Handler::addIndicator() method to add the environment indicator configuration instead of the old ConfigurationUtility::configByContext() method.

Configuration 

Static Include (Version 2.x only) 

Deprecated since version 3.0

The static TypoScript include is deprecated and removed in version 3.0. Please use Site Sets instead.

Alternatively, include the static TypoScript template via the Template module by adding "Environment Indicator" under Include static (from extensions).

Or directly import it in your sitepackage:

Configuration/TypoScript/setup.typoscript
@import 'EXT:typo3_environment_indicator/Configuration/TypoScript/setup.typoscript'
Copied!

Image Support 

Only the following favicon image formats are supported: https://image.intervention.io/v3/introduction/formats

  • Due to the wide distribution of .ico and .svg files, these images are also supported.

Configuration 

The extension is ready to use without any further setup.

By default the following environment are preset:

  • Production/Standby
  • Production/Staging
  • Production/Stage
  • Testing*
  • Development*

You can adapt the extension to your needs, switch single features on and off and influence the presentation of the indicators.

If you want to add your own indicators, you should disable the default configuration within the extension configuration.

Extension configuration 

  1. Go to Admin Tools > Settings > Extension Configuration
  2. Choose typo3_environment_indicator

The extension currently provides the following configuration options:

General 

general.imageDriver

general.imageDriver
Type
option
Default
"gd"

Intervention Image supports "GD Library", "Imagick" and "libvips" to process images internally. You may choose one of them according to your PHP configuration. Options are "gd", "imagick" and "vips".

general.defaultConfiguration

general.defaultConfiguration
Type
boolean
Default
1

Enable the default configuration for the environment indicators. If you want to configure the environment indicators by yourself, set this to false. See Configuration.

Frontend 

frontend.favicon

frontend.favicon
Type
boolean
Default
1

Enable the favicon generation in frontend context

frontend.context

frontend.context
Type
boolean
Default
1

Enable the context frontend hint

frontend.image

frontend.image
Type
boolean
Default
1

Enable the image generation in frontend context

frontend.pageTitle

frontend.pageTitle
Type
boolean
Default
1

Enable the page title prefix/suffix in frontend context. When the Page Title indicator is active, the final rendered <title> is decorated.

Backend 

backend.favicon

backend.favicon
Type
boolean
Default
1

Enable the favicon generation in backend context

backend.context

backend.context
Type
boolean
Default
1

Enable the context item within the backend toolbar

backend.contextProduction

backend.contextProduction
Type
boolean
Default
1

Enable the backend toolbar item / backend topbar also in production context

backend.theme

backend.theme
Type
boolean
Default
0

Enable the backend theme modification (TYPO3 v14+ only, experimental). When the Backend theme indicator is active, this colors the entire backend based on the environment. Disabled by default because the underlying TYPO3 backend CSS framework is currently considered internal API.

backend.login

backend.login
Type
boolean
Default
1

Enable the environment badge on the backend login screen. When the Backend Login indicator is active, a colored badge is shown on the login screen.

backend.pageTitle

backend.pageTitle
Type
boolean
Default
1

Enable the page title prefix/suffix in backend context. When the Page Title indicator is active, the backend document title is decorated client-side.

CLI 

cli.banner

cli.banner
Type
boolean
Default
0

Enable the CLI banner (opt-in, disabled by default). When the CLI Banner indicator is active, a colored environment banner is printed to stderr before console commands run in an interactive terminal.

Mail 

mail.subject

mail.subject
Type
boolean
Default
1

Enable the mail subject prefix for outgoing mails. When the Mail Subject Prefix indicator is active, the environment prefix is prepended to the subject of every mail sent via the TYPO3 Mailer API.

Instance 

The instance settings allow overriding the appearance of all active indicators for a single installation — directly from the backend, without any PHP configuration. They are stored in the extension configuration of the respective installation, so two systems sharing the same code base and application context (e.g. two testing systems) can be distinguished from each other.

Instance settings take precedence over the built-in presets and any programmatically registered configuration. Which indicators are active remains trigger-driven: on a system where no indicator resolves (e.g. production with default configuration), the instance settings have no effect.

instance.label

instance.label
Type
string
Default
(empty)

Overrides the indicator text of all active indicators for this installation (e.g. "TEST 1"). Replaces the text of the backend toolbar item and dashboard widget and renders the label onto the favicon and backend logo. Leave empty to use the context defaults.

instance.color

instance.color
Type
color
Default
(empty)

Overrides the indicator color of all active indicators for this installation (frontend hint, backend toolbar, topbar, dashboard widget, backend theme and — combined with a label — favicon/logo). Leave empty to use the context defaults.

Handler 

The Handler class is used to register the indicators and triggers in the TYPO3 backend. The class provides a static method addIndicator() to add the indicators and triggers to the system.

See the configuration for triggers and indicators.

ext_localconf.php
\KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler::addIndicator(
    triggers: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\FrontendUserGroup(1,2)
    ],
    indicators: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Backend\Topbar([
            'color' => '#00ACC1',
        ]),
    ]
);
Copied!

Indicators 

Indicators are hints about the current environment that are shown discreetly in the frontend and/or backend.

Example

Backend with several environment indicators

You can combine multiple indicators.

ext_localconf.php
\KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler::addIndicator(
    triggers: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\ApplicationContext('Development'),
    ],
    indicators: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Favicon([
            new \KonradMichalik\Typo3EnvironmentIndicator\Image\Modifier\TextModifier([
                'text' => 'TEST',
                'color' => '#f39c12',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ])
        ]),
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Frontend\Hint([
            'color' => '#FFF176',
        ]),
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Backend\Topbar([
            'color' => '#00ACC1',
        ]),
    ]
);
Copied!

The following indicators are available:

Frontend + Backend 

Icon Indicator Description
Favicon Icon Favicon Modify the favicon for frontend and backend based on the original favicon, the current application context and your configuration.
Page Title Icon Page Title Prefix or suffix the page title in frontend and backend with the current application context.

Frontend 

Icon Indicator Description
Frontend Hint Icon Frontend Hint Adds an informative hint to the frontend showing the website title and the current application context.
Frontend Image Icon Frontend Image Modify a frontend image based on the original image, the current application context and your configuration.

Backend 

Icon Indicator Description
Backend Toolbar Item Icon Backend toolbar item Adds an informative item with the current application context to the backend toolbar.
Backend Topbar Icon Backend topbar Colorize the backend header topbar regarding the application context.
Backend Logo Icon Backend Logo Modify the backend logo based on the original logo, the current application context and your configuration.
Dashboard Widget Icon Dashboard Widget Render a dashboard widget according to the environment.
Backend Theme Icon Backend theme (experimental) Colorize the entire TYPO3 v14+ backend (primary color, header, sidebar) based on the environment.
Backend Login Icon Backend Login Show a colored environment badge directly on the backend login screen.

Misc 

Icon Indicator Description
CLI Banner Icon CLI Banner Print a colored environment banner to stderr before an interactive console command runs.
Mail Subject Prefix Icon Mail Subject Prefix Prepend the current application context to the subject of every mail sent through the TYPO3 Mailer API.
Favicon Icon

Favicon 

The favicon of the frontend or backend context will be modified regarding the environment and the associated configuration.

Favicon Example

Favicon Example

Frontend 

For the frontend, the original favicon will either be fetched from the typoscript configuration page.shortcutIcon (see typoscript reference) or can be handled by your own fluid template via the FaviconViewHelper:

Custom fluid template
<html xmlns:env="http://typo3.org/ns/KonradMichalik/Typo3EnvironmentIndicator/ViewHelpers"
    data-namespace-typo3-fluid="true">

{f:uri.resource(path:'EXT:your_extension/Resources/Public/Favicon/favicon.png') -> env:favicon()}
{env:favicon(favicon:'EXT:your_extension/Resources/Public/Favicon/favicon.png')}
Copied!

Backend 

For the backend, the favicon will be fetched by the extension configuration of $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['backend']['backendFavicon'].

Favicon Examples

Favicon Examples

Scope 

By default, the Favicon indicator applies modifications to both frontend and backend. You can restrict it to a specific application type using the Scope enum:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Enum\Scope;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development*'),
    ],
    indicators: [
        // Only modify the frontend favicon
        new Indicator\Favicon(
            configuration: [
                new Image\Modifier\TextModifier([
                    'text' => 'DEV',
                    'color' => '#bd593a',
                ]),
            ],
            scope: Scope::Frontend,
        ),
    ],
);
Copied!

Available scope values:

  • Scope::Global (default): Apply to both frontend and backend.
  • Scope::Frontend: Apply only to the frontend.
  • Scope::Backend: Apply only to the backend.

Modifiers 

The favicon modification configuration can be found in $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['typo3_environment_indicator'].

Add a configured favicon modifier to the desired environment (e.g. Testing) in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Testing')
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\TextModifier([
                'text' => 'TEST',
                'color' => '#f39c12',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ])
        ])
    ]
);
Copied!
Favicon Modifier Example

The modifiers will be executed one after the other. You can combine them if you want.

The following modifier classes are available:

TextModifier 

This is the default modifier if no own configuration is set.

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development')
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\TextModifier([
                'text' => 'DEV',
                'color' => '#bd593a',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ])
        ])
    ]
);
Copied!
Favicon TextModifier Example

Additional optional configuration keys:

  • font (string): The font file path for the text. Default is EXT:typo3_environment_indicator/Resources/Public/Fonts/OpenSans-Bold.ttf.
  • position (string): The position of the text. Default is top. Possible values are bottom, top.
  • stroke (array): Optional stroke configuration for the text outline. If set, it requires the sub-keys color (string) and width (numeric).

TriangleModifier 

Adds a triangle indicator to the favicon.

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development')
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\TriangleModifier([
                'color' => '#bd593a',
            ])
        ])
    ]
);
Copied!
Favicon TriangleModifier Example

Additional optional configuration keys:

  • size (float): The percentage size of the triangle. Default is 0.7.
  • position (string): The position of the triangle. Default is bottom right. Possible values are bottom left, bottom right, top left, top right.

CircleModifier 

Adds a circle indicator to the favicon.

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development')
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\CircleModifier([
                'color' => '#bd593a',
            ])
        ])
    ]
);
Copied!
Favicon CircleModifier Example

Additional optional configuration keys:

  • size (float): The percentage size of the circle. Default is 0.4.
  • position (string): The position of the circle. Default is bottom right. Possible values are top left, top center, top right, center left, center, center right, bottom left, bottom center, bottom right.
  • padding (float): The percentage padding of the circle. Default is 0.1.

FrameModifier 

Adds a frame around the favicon.

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development')
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\FrameModifier([
                'color' => '#bd593a',
            ])
        ])
    ]
);
Copied!
Favicon FrameModifier Example

Additional optional configuration keys:

  • borderSize (float): The border size of the frame. Default is 5.

ReplaceModifier 

Replace the original favicon with a custom one regarding the environment.

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development')
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\ReplaceModifier([
                'path' => 'EXT:sitepackage/Resources/Public/Icons/favicon.png',
            ])
        ])
    ]
);
Copied!
Favicon ReplaceModifier Example

OverlayModifier 

Overlay an additional image to the original favicon regarding the environment.

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development')
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\OverlayModifier([
                'path' => 'EXT:sitepackage/Resources/Public/Icons/favicon.png',
            ])
        ])
    ]
);
Copied!
Favicon OverlayModifier Example

Additional configuration keys (required by the modifier, but provided via default configuration):

  • size (float): The percentage size of the overlay. Default is 0.5.
  • position (string): The position of the overlay. Default is bottom right. Possible values are top left, top center, top right, center left, center, center right, bottom left, bottom center, bottom right.
  • padding (float): The percentage padding of the overlay. Default is 0.1.

ColorizeModifier 

Colorize the original favicon with a specific color regarding the environment.

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development')
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\ColorizeModifier([
                'color' => '#039BE5',
            ])
        ])
    ]
);
Copied!
Favicon ColorizeModifier Example

Additional optional configuration keys:

  • opacity (float): Controls the opacity of the colorization. Default is 1.
  • brightness (integer): Controls the brightness of the colorization. Possible values are from -100 to 100.
  • contrast (integer): Controls the contrast of the colorization. Possible values are from -100 to 100.
Frontend Hint Icon

Frontend Hint 

The frontend hint will show the current environment information and the website title as clickable note in the upper right corner.

Frontend hint

Frontend hint

You can adjust the color of the hint in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Testing')
    ],
    indicators: [
        new Indicator\Frontend\Hint([
            'color' => '#bd593a',
        ])
    ]
);
Copied!

Additional optional configuration keys:

  • text (string): The text of the hint. Default is the website title.
  • position (string): The position of the frontend hint. Default is top left. Possible values are bottom left,bottom right, top left, top right.
  • description (string): An optional description. When set, it is appended to the hint's tooltip (title attribute). Default is empty.
Frontend Image Icon

Frontend Image 

The frontend image will be modified regarding the environment and the associated configuration.

Frontend Image Example

Frontend Image Example

The image path can be adjusted via the ImageViewHelper:

Custom fluid template
<html xmlns:env="http://typo3.org/ns/KonradMichalik/Typo3EnvironmentIndicator/ViewHelpers"
    data-namespace-typo3-fluid="true">

{f:uri.resource(path:'EXT:your_extension/Resources/Public/Image/Default.png') -> env:image()}
{env:image(path:'EXT:your_extension/Resources/Public/Image/Default.png')}
Copied!

Modifiers 

The frontend image modification is identical to the favicon modification. You can use the same modifiers and configuration.

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Testing')
    ],
    indicators: [
        new Indicator\Frontend\Image([
            new Image\Modifier\TextModifier([
                'text' => 'TEST',
                'color' => '#f39c12',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ])
        ])
    ]
);
Copied!
Frontend Image Modifier Example
Backend Toolbar Item Icon

Backend toolbar item 

The backend toolbar item will show the current project version and environment.

Backend toolbar item

Backend toolbar item

You can adjust the color of the toolbar item in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Testing')
    ],
    indicators: [
        new Indicator\Backend\Toolbar([
            'color' => '#bd593a',
        ])
    ]
);
Copied!

Additional optional configuration keys:

  • text (string): The text of the toolbar item. Default is the application context.
  • icon (array): The icon configuration of the toolbar item. Expects a nested array with a context key. Default is ['context' => 'information-application-context'].
  • index (int): The positioning index of the toolbar item. Default is 0.
  • description (string): An optional description. When set, it is appended to the toolbar item's tooltip (title attribute). Default is empty.
Backend Topbar Icon

Backend topbar 

The backend toolbar item will show the current project version and environment.

Backend topbar

Backend topbar

You can adjust the color of the topbar in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Testing')
    ],
    indicators: [
        new Indicator\Backend\Topbar([
            'color' => '#bd593a',
        ])
    ]
);
Copied!

Additional optional configuration keys:

  • description (string): An optional description. When set, it is shown as a tooltip (title attribute) on the colored topbar. Plain text only. Default is empty.
Backend Logo Icon

Backend Logo 

The backend logo will be modified regarding the environment and the associated configuration. This can be used to e.g. show the current environment in the website logo.

Backend Logo Example

Backend Logo Example

The backend logo will be fetched by the extension configuration of $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['backend']['backendLogo'].

Modifiers 

The backend logo modification is identical to the favicon modification. You can use the same modifiers and configuration.

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Testing')
    ],
    indicators: [
        new Indicator\Backend\Logo([
            new Image\Modifier\TextModifier([
                'text' => 'TEST',
                'color' => '#f39c12',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ])
        ])
    ]
);
Copied!
Backend Logo Modifier Example
Dashboard Widget Icon

Dashboard Widget 

The dashboard widget can be placed to the TYPO3 backend dashboard. It shows the current environment regarding the configuration.

Dashboard Widget Example

Dashboard Widget Example

Dashboard Widget Selection

Dashboard Widget Selection

The widget is registered with its own icon (identifier environment-indicator-widget), which is shown in the widget selection dialog:

Environment Indicator Widget Icon

You can adjust the widget configuration in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development/Text')
    ],
    indicators: [
        new Indicator\Backend\Widget([
            'color' => '#bd593a',
        ])
    ]
);
Copied!

Additional optional configuration keys:

  • text (string): The text of the widget. Default is the application context.
  • icon (string): The icon of the widget. Default is information-application-context.
  • textSize (string): The text size of the widget. Default is 20px.
  • description (string): An optional description shown as an additional paragraph in the widget body. Plain text only (HTML is escaped). Default is empty.

The dashboard widget can not disappear, if no configuration is set. It is always shown in the backend dashboard.

Dashboard Widget Production Example

Dashboard Widget Production Example

Backend Theme Icon

Backend theme 

New in version 3.1

This indicator requires TYPO3 v14 or later.

Backend theme indicator preview

The backend theme indicator colors the entire TYPO3 backend by overriding CSS custom properties introduced with the TYPO3 v14 Fresh theme. Instead of modifying individual elements, it sets the primary accent color and scaffold variables, which automatically cascade through the backend UI - including the topbar, sidebar, buttons, active states, and focus rings.

This works with all TYPO3 backend themes (Fresh, Modern, Classic) and supports both light and dark mode.

You can adjust the theme in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development*'),
    ],
    indicators: [
        new Indicator\Backend\Theme([
            'color' => '#bd593a',
        ]),
    ],
);
Copied!

Configuration keys:

  • color (string): The primary accent color as hex value. Required.
  • scaffoldHeader (bool): Whether to color the backend header. Default is true.
  • scaffoldSidebar (bool): Whether to color the backend sidebar. Default is true.
  • neutralMix (string): The neutral tinting strength as CSS percentage value. Default is '15%'.
ext_localconf.php - Full configuration example
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development*'),
    ],
    indicators: [
        new Indicator\Backend\Theme([
            'color' => '#bd593a',
            'scaffoldHeader' => true,
            'scaffoldSidebar' => true,
            'neutralMix' => '20%',
        ]),
    ],
);
Copied!
Backend Login Icon

Backend Login 

All other backend indicators only take effect after login (topbar, toolbar, logo, theme). Yet the moment with the highest risk of confusion is the login itself — anyone who accidentally logs into live instead of staging only notices afterwards. The backend login indicator closes this gap by showing a colored environment badge directly on the backend login screen.

Backend Login Example

Backend Login Example

The badge is injected via a listener on the ModifyPageLayoutOnLoginProviderSelectionEvent . It is attached directly to the login card (above the logo, or below the card footer), matching the card's rounded corners and font. If the login card markup is not found — e.g. with an alternative login provider (OIDC/SSO extensions) — it falls back to a full-width banner at the top or bottom of the page.

You can register the indicator in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Production/Staging')
    ],
    indicators: [
        new Indicator\Backend\Login([
            'text' => 'Staging',
            'color' => '#00ACC1',
        ])
    ]
);
Copied!

Additional optional configuration keys:

  • text (string): The badge text. Default is the current application context.
  • color (string): The badge background color as a hex value. Default is #bd593a. The text color is calculated automatically for optimal contrast.
  • position (string): The badge position, top or bottom. Default is top.
  • description (string): An optional descriptive line shown below the badge text (e.g. "Data is overwritten nightly from live").

The backend login badge can be disabled globally via the extension configuration.

Page Title Icon

Page Title 

The favicon indicator fails exactly where editors and developers work a lot: pinned tabs (favicon too small or hidden), bookmarks, browser history and task switchers. A prefix or suffix in the <title> — e.g. [STAGING] Page title — makes the environment instantly recognizable in all of these contexts. It is a perfect complement to the favicon indicator.

Page Title Prefix Example

Page Title Prefix Example

The indicator works in both frontend and backend:

  • Frontend: a middleware decorates the final <title> after the PageTitle API has resolved, so all existing page title providers (including SEO extensions) remain untouched.
  • Backend: the document title is prefixed/suffixed client-side. A MutationObserver re-applies the decoration on backend SPA navigation (module switches), so the prefix persists.

You can register the indicator in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Production/Staging')
    ],
    indicators: [
        new Indicator\General\PageTitle([
            'prefix' => '[%context%] ',
        ])
    ]
);
Copied!

Additional optional configuration keys:

  • prefix (string): Prepended to the page title (e.g. [STAGING] ). Default is [%context%] . The placeholder %context% is replaced with the current application context.
  • suffix (string): Appended to the page title. Also supports the %context% placeholder. Default is empty.

The page title indicator can be disabled per context via the extension configuration (frontend.pageTitle and backend.pageTitle).

CLI Banner Icon

CLI Banner 

The classic "wrong SSH terminal" scenario is the CLI counterpart to the original motivation of this extension: running an import, a custom deployment command or impexp:import on the live system instead of staging. The CLI banner prints an environment banner with a colored background to stderr before a console command runs, e.g. a cyan bar reading 🚦 STAGING — project.example.dev.

CLI banner

CLI banner

The banner is printed via a listener on the Symfony Console ConsoleCommandEvent , so it appears before the command is executed. It is written to stderr, so parsed stdout output (JSON, CSV) stays untouched.

You can register the indicator in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Production/Staging')
    ],
    indicators: [
        new Indicator\Cli\Banner([
            'text' => 'STAGING',
            'color' => 'cyan',
        ])
    ]
);
Copied!

Additional optional configuration keys:

  • text (string): The banner text. Default is the current application context.
  • color (string): The banner background color. Accepts a named ANSI color (e.g. cyan, red, yellow) or a hex value (e.g. #00ACC1, rendered on truecolor terminals) and is combined with bold white text. Default is no color (plain text, no background).
  • icon (string): A leading glyph. Default is 🚦.
  • commands (array): A whitelist of command name patterns (fnmatch syntax, e.g. ['site:*', 'impexp:*']). If set, the banner is only printed for matching commands. Default is empty (the banner is printed for all commands).

The CLI banner is opt-in and disabled by default — enable it globally via the extension configuration.

Mail Subject Prefix Icon

Mail Subject Prefix 

Test and staging systems regularly send real emails — form submissions, workflow notifications, scheduler reports. Recipients often cannot tell whether a mail originates from the live system or a test system. The mail subject prefix indicator prepends the environment to the subject of every mail sent through the TYPO3 Mailer API (e.g. [Staging] Your registration), so the origin is visible at first glance in every inbox.

Mail Subject Prefix Example

Mail Subject Prefix Example

The prefix is applied via a listener on the BeforeMailerSentMessageEvent , covering all mails sent via TYPO3's Mailer API (frontend forms, backend notifications, scheduler tasks).

You can register the indicator in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Testing')
    ],
    indicators: [
        new Indicator\Mail\SubjectPrefix([
            'prefix' => '[%context%] ',
        ])
    ]
);
Copied!

Additional optional configuration keys:

  • prefix (string): The prefix prepended to the mail subject. Default is [%context%] . The placeholder %context% is replaced with the current application context.
  • header (string): If set, an additional mail header with this name and the application context as value is added (e.g. X-Environment: Testing) for filtering/tooling. Default is empty (no header is added).

The mail subject prefix can be disabled globally via the extension configuration.

Triggers 

Triggers act as conditions and are used to define when environment indicators should be shown.

You can combine multiple different triggers within a single Handler::addIndicator() call. All triggers must return true (AND logic) for the associated indicators to activate.

ext_localconf.php
\KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler::addIndicator(
    triggers: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\ApplicationContext('Development'),
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\Admin()
    ],
    indicators: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Backend\Topbar([
            'color' => '#00ACC1',
        ]),
    ]
);
Copied!

There are several triggers available, which can be used to show the indicators in different contexts.

Admin 

The Admin trigger is used to show the indicators in the TYPO3 backend for admin users.

ext_localconf.php
\KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler::addIndicator(
    triggers: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\Admin()
    ],
    indicators: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Backend\Topbar([
            'color' => '#00ACC1',
        ]),
    ]
);
Copied!

Application Context 

The ApplicationContext trigger is used to show the indicators in the TYPO3 backend for a specific application context.

ext_localconf.php
\KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler::addIndicator(
    triggers: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\ApplicationContext('Development*', 'Testing')
    ],
    indicators: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Backend\Topbar([
            'color' => '#00ACC1',
        ]),
    ]
);
Copied!

The configuration supports multiple context names as separate arguments. The context names support glob-style wildcard patterns (using PHP's fnmatch()). The * wildcard matches any number of characters and the ? wildcard matches a single character. For example, Development* will match all contexts that start with Development, such as Development, Development/Local, Development/DDEV, etc.

Backend User Group 

The BackendUserGroup trigger is used to show the indicators in the TYPO3 backend for specific backend user groups.

ext_localconf.php
\KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler::addIndicator(
    triggers: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\BackendUserGroup(1,2)
    ],
    indicators: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Backend\Topbar([
            'color' => '#00ACC1',
        ]),
    ]
);
Copied!

The configuration supports multiple group IDs as separate arguments. The trigger passes if the current backend user is a member of any of the specified groups (OR logic).

Custom 

The Custom trigger is used to show the indicators in the TYPO3 backend for custom conditions.

ext_localconf.php
\KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler::addIndicator(
    triggers: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\Custom(
            function () {
                return true;
            }
        ),
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\Custom('\YourExtension\YourClass::yourMethod'),
    ],
    indicators: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Backend\Topbar([
            'color' => '#00ACC1',
        ]),
    ]
);
Copied!

The configuration supports a callable function, which is executed to determine if the indicator should be shown. The function should return a boolean value. The function can also be a closure or an anonymous function.

When using a string reference, it must follow the format ClassName::methodName (without parentheses). The referenced method must be public and static. If the method throws an exception during execution, the trigger will return false.

Frontend User Group 

The FrontendUserGroup trigger is used to show the indicators in the TYPO3 Frontend for specific frontend user groups.

ext_localconf.php
\KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler::addIndicator(
    triggers: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\FrontendUserGroup(1,2)
    ],
    indicators: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Backend\Topbar([
            'color' => '#00ACC1',
        ]),
    ]
);
Copied!

The configuration supports multiple group IDs as separate arguments. The trigger passes if the current frontend user is a member of any of the specified groups (OR logic). If no frontend user session is available, the trigger returns false.

IP Address 

The IP trigger is used to show the indicators in the TYPO3 backend for specific IP addresses.

ext_localconf.php
\KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler::addIndicator(
    triggers: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\Ip('127.0.0.1', '192.168.0.0/24')
    ],
    indicators: [
        new \KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\Backend\Topbar([
            'color' => '#00ACC1',
        ]),
    ]
);
Copied!

The configuration supports multiple IP addresses as separate arguments. Both IPv4 and IPv6 addresses are supported. CIDR range notation is also supported for both address families (e.g. 192.168.0.0/24 or 2001:db8::/32). Invalid IP formats will throw an InvalidArgumentException during construction.

Custom triggers and indicators 

Beyond the built-in triggers and indicators, you can create your own implementations to match custom conditions or render custom indicators.

Table of Contents

Custom triggers 

A trigger determines whether a set of indicators should be activated. Implement the TriggerInterface with a single check() method that returns a boolean value.

Classes/Configuration/Trigger/MyCustomTrigger.php
<?php

namespace Vendor\YourExt\Configuration\Trigger;

use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger\TriggerInterface;

class MyCustomTrigger implements TriggerInterface
{
    public function __construct(
        private readonly string $expectedValue,
    ) {}

    public function check(): bool
    {
        return getenv('MY_ENV_VAR') === $this->expectedValue;
    }
}
Copied!

Then use it in your ext_localconf.php:

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use Vendor\YourExt\Configuration\Trigger\MyCustomTrigger;

Handler::addIndicator(
    triggers: [
        new MyCustomTrigger('production-cluster-a'),
    ],
    indicators: [
        new Indicator\Backend\Topbar([
            'color' => '#e74c3c',
        ]),
    ],
);
Copied!

Custom indicators 

An indicator defines what is rendered when its associated triggers pass. Implement the IndicatorInterface or extend AbstractIndicator.

Classes/Configuration/Indicator/MyCustomIndicator.php
<?php

namespace Vendor\YourExt\Configuration\Indicator;

use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\AbstractIndicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator\IndicatorInterface;

class MyCustomIndicator extends AbstractIndicator implements IndicatorInterface
{
    public function __construct(array $configuration = [])
    {
        parent::__construct($configuration);
    }

    public function getConfiguration(): array
    {
        return $this->configuration;
    }
}
Copied!

The AbstractIndicator base class automatically merges global default configuration from $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['typo3_environment_indicator']['defaults'] if a matching entry for the indicator class exists.

Custom modifiers 

The predefined modifiers are not enough for your use case? No problem! You can easily write your own.

Implement your own image modifier by extending the AbstractModifier class and implementing the ModifierInterface method.

Classes/Image/CustomModifier.php
<?php

namespace Vendor\YourExt\Image\Modifier;

use Intervention\Image\Geometry\Factories\RectangleFactory;
use Intervention\Image\Interfaces\ImageInterface;
use KonradMichalik\Typo3EnvironmentIndicator\Image\Modifier\AbstractModifier;
use KonradMichalik\Typo3EnvironmentIndicator\Image\Modifier\ModifierInterface;

class CustomModifier extends AbstractModifier implements ModifierInterface {

    public function modify(ImageInterface &$image): void
    {
        // Modify the image using $this->configuration
    }

    public function validateConfigurationWithErrors(array $configuration): array
    {
        $errors = [];

        if (!isset($configuration['myRequiredKey'])) {
            $errors[] = 'Missing required configuration key: myRequiredKey';
        }

        return [
            'valid' => [] === $errors,
            'errors' => $errors,
        ];
    }
}
Copied!

See the Intervention Image documentation for more information about image manipulation.

ViewHelpers 

The extension provides two Fluid ViewHelpers for use in custom templates.

Namespace: http://typo3.org/ns/KonradMichalik/Typo3EnvironmentIndicator/ViewHelpers

Namespace prefix: env

<html xmlns:env="http://typo3.org/ns/KonradMichalik/Typo3EnvironmentIndicator/ViewHelpers"
    data-namespace-typo3-fluid="true">
Copied!

Table of Contents

FaviconViewHelper 

Processes a favicon path through the configured environment indicator modifiers. If no Favicon indicator is active for the current context, the original path is returned unchanged.

Arguments:

Argument Type Description
favicon string The favicon path. Can also be passed as tag content (inline notation).

Usage:

<!-- As argument -->
{env:favicon(favicon:'EXT:your_extension/Resources/Public/Favicon/favicon.png')}

<!-- As inline pipe -->
{f:uri.resource(path:'EXT:your_extension/Resources/Public/Favicon/favicon.png') -> env:favicon()}
Copied!

ImageViewHelper 

Processes a frontend image path through the configured environment indicator modifiers. If no Frontend Image indicator is active for the current context, the original path is returned unchanged.

Arguments:

Argument Type Description
_path string The image path. Can also be passed as tag content (inline notation).

Usage:

<!-- As inline pipe -->
{f:uri.resource(path:'EXT:your_extension/Resources/Public/Images/logo.png') -> env:image()}
Copied!

TypoScript reference 

The extension provides TypoScript objects and a condition function that can be used in custom TypoScript configurations.

Condition: enableTechnicalContext() 

The enableTechnicalContext() condition function evaluates whether the frontend hint indicator is active for the current environment. It returns true when the frontend context feature is enabled in the extension configuration and a FrontendHint indicator is configured for the current application context.

[enableTechnicalContext()]
page.10 = TEXT
page.10.value = Environment indicator is active
[GLOBAL]
Copied!

TypoScript objects 

The following lib.* objects are registered within the [enableTechnicalContext()] condition block via the included Site Set. They can be used or overridden in your own TypoScript.

Object Description
lib.applicationContextTitle Returns the current TYPO3 application context (e.g. Development/DDEV).
lib.applicationContextColor Returns the configured color of the Frontend Hint indicator.
lib.applicationContextTextColor Returns the optimal text color (black or white) for the configured hint color.
lib.websiteTitle Returns the website title from the site configuration. Falls back to the text option of the Frontend Hint if set.
lib.applicationContextPositionX Returns the horizontal position (e.g. left:0).
lib.applicationContextPositionY Returns the vertical position (e.g. top:0).
lib.technicalContext A FLUIDTEMPLATE that renders the complete frontend hint element. This object is automatically added to page output.

Overriding objects 

You can override any of these objects in your own TypoScript setup:

[enableTechnicalContext()]
lib.applicationContextTitle = TEXT
lib.applicationContextTitle.value = My Custom Title
[GLOBAL]
Copied!

Example 

The following configuration is also the default configuration. This shall show the usage of the extension.

ext_localconf.php
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Handler;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Indicator;
use KonradMichalik\Typo3EnvironmentIndicator\Configuration\Trigger;
use KonradMichalik\Typo3EnvironmentIndicator\Image;

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Development*'),
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\TextModifier([
                'text' => 'DEV',
                'color' => '#bd593a',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ]),
        ]),
        new Indicator\Backend\Logo([
            new Image\Modifier\TextModifier([
                'text' => 'DEV',
                'color' => '#bd593a',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ]),
        ]),
        new Indicator\Frontend\Hint([
            'color' => '#bd593a',
        ]),
        new Indicator\Backend\Toolbar([
            'color' => '#bd593a',
        ]),
        new Indicator\Backend\Widget([
            'color' => '#bd593a',
        ]),
    ],
);

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Testing*'),
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\TextModifier([
                'text' => 'TEST',
                'color' => '#f39c12',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ]),
        ]),
        new Indicator\Backend\Logo([
            new Image\Modifier\TextModifier([
                'text' => 'TEST',
                'color' => '#f39c12',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ]),
        ]),
        new Indicator\Frontend\Hint([
            'color' => '#f39c12',
        ]),
        new Indicator\Backend\Toolbar([
            'color' => '#f39c12',
        ]),
    ],
);

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Production/Staging', 'Production/Stage'),
    ],
    indicators: [
        new Indicator\Favicon([
            new Image\Modifier\TextModifier([
                'text' => 'STG',
                'color' => '#2f9c91',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ]),
        ]),
        new Indicator\Backend\Logo([
            new Image\Modifier\TextModifier([
                'text' => 'STG',
                'color' => '#2f9c91',
                'stroke' => [
                    'color' => '#ffffff',
                    'width' => 3,
                ],
            ]),
        ]),
        new Indicator\Frontend\Hint([
            'color' => '#2f9c91',
        ]),
        new Indicator\Backend\Toolbar([
            'color' => '#2f9c91',
        ]),
    ],
);

Handler::addIndicator(
    triggers: [
        new Trigger\ApplicationContext('Production/Standby'),
    ],
    indicators: [
        new Indicator\Backend\Toolbar([
            'color' => '#2f9c91',
        ]),
    ],
);
Copied!