Rajveer Singh
Jul 1, 2025
visibility 1057
star star star star star star
(3 votes)

Environment-specific badges in the Optimizely CMS

Step 1: Add Environment Info to the UI

Create a custom UIDescriptor and a ComponentDefinition to inject a badge into the CMS UI.

using EPiServer.Shell;
using EPiServer.Shell.ViewComposition;

[UIDescriptorRegistration]
public class EnvironmentBadgeUIDescriptor : UIDescriptor
{
    public EnvironmentBadgeUIDescriptor()
        : base("environment-badge")
    {
        DisabledViews = new string[] { };
    }
}

 

Step 2: Add a Client Resource

Create a JavaScript file that will render the badge in the CMS UI.

define([
    "dojo/_base/declare",
    "epi/_Module",
    "dojo/dom-construct",
    "dojo/domReady!"
], function (declare, _Module, domConstruct) {
    return declare([_Module], {
        initialize: function () {
            this.inherited(arguments);

            var env = window.cmsEnvironment || "Production";
            var color = {
                Development: "#007bff",
                Staging: "#ffc107",
                Production: "#28a745"
            }[env] || "#6c757d";

            var badge = domConstruct.create("div", {
                innerHTML: env,
                style: `
                    position: fixed;
                    top: 10px;
                    right: 10px;
                    background-color: ${color};
                    color: white;
                    padding: 5px 10px;
                    font-weight: bold;
                    border-radius: 4px;
                    z-index: 9999;
                `
            }, document.body);
        }
    });
});

 

Step 3: Register the Module in module.config

<module>
  <clientModule initializer="environment-badge">
    <requiredResources>
      <add name="epi.shell" />
    </requiredResources>
  </clientModule>
</module>

 

Step 4: Set the Environment in Razor or Layout

In your _Layout.cshtml or a shared Razor view:

<script>
    window.cmsEnvironment = '@Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")';
</script>

 

 

When editors log into the CMS, they’ll see a badge in the top-right corner showing the current environment, color-coded for clarity.

 

Jul 01, 2025

Comments

huseyinerdinc
huseyinerdinc Jul 2, 2025 07:16 AM

Nice idea. Would you mind posting a screenshot of the result?

Rajveer Singh
Rajveer Singh Jul 2, 2025 07:22 AM

Updated the screen shot what we achieved.

Eric Markson
Eric Markson Jul 8, 2025 01:38 PM

The image looks broken. Can you please try and upload it again

error Please login to comment.
Latest blogs
The Silent Success: When Your Optimizely SaaS CMS Config Push Succeeds with "0" Changes

  Picture this frustratingly common scenario in headless, code-first development with Optimizely SaaS CMS: You’ve defined a brilliant new element,...

Vipin Banka | Jul 13, 2026

Architecting an Enterprise-Grade Development Pipeline in Optimizely SaaS CMS

Most enterprise teams show up to Optimizely SaaS CMS with a clear roadmap for their release pipeline: DEV → QA → Stage → Prod. Four logical...

Vipin Banka | Jul 12, 2026

Bynder DAM Connector for Optimizely SaaS CMS: Improved Metadata Property Synchronization

While working with the Bynder DAM Connector for Optimizely SaaS CMS , one of the key areas I explored was how Bynder asset metadata is synchronized...

Vipin Banka | Jul 11, 2026

Optimizely DXP: Every Supported Culture, One Searchable Page

Quick one for anyone building multi-language sites on Optimizely DXP. I put together a reference tool listing all 806 supported cultures. More...

Adnan Zameer | Jul 10, 2026 |