London Dev Meetup Rescheduled! Due to unavoidable reasons, the event has been moved to 21st May. Speakers remain the same—any changes will be communicated. Seats are limited—register here to secure your spot!

Loading...
Area: Optimizely CMS
ARCHIVED This content is retired and no longer maintained. See the latest version here.

You can create a command plugin for the global toolbar in the Episerver user interface. To add commands to the global toolbar, create a Command Provider for the toolbar and add it to the global command registry. The global command registry maps command providers against keys. 

Creating a command provider for the global toolbar

The following example shows how to create a provider that adds three commands to the areas inside the global toolbar.

JavaScript
//samples/MyGlobalToolbarProvider
define([
    "dojo/_base/declare",
    "dijit/form/Button",
    "dijit/form/ToggleButton",

    "epi-cms/component/command/_GlobalToolbarCommandProvider",
    "samples/TestCommand",
    "samples/MyToggleCommand"
], function (declare, Button, ToggleButton, _GlobalToolbarCommandProvider, TestCommand, MyToggleCommand) {
    return declare([_GlobalToolbarCommandProvider], {
        constructor: function () {
            this.inherited(arguments);

            // The Global Toolbar has three areas that you can add commands to ["leading", "center", "trailing"]
            // the _GlobalToolbarCommandProvider extends the _CommandProviderMixin with helper methods for easy adding 
            // of commands to the different areas

            //Create dijit/Form/Button in the leading area and bind the TestCommand to it
            this.addToLeading(new TestCommand({
                label:"First command"
            }), {showLabel:true, widget:Button});

            //Create dijit/Form/ToggleButton in the center area and bind the TestCommand to it
            this.addToCenter(new MyToggleCommand({
                label:"Second command"
            }), {showLabel:true, widget:ToggleButton});

            //Create dijit/Form/Button in the trailing area and bind the TestCommand to it
            this.addToTrailing(new TestCommand({
                label:"Third command"
            }), {showLabel:true, widget:Button});
        }
    });
});

The following code shows the test commands

JavaScript
//samples/TestCommand.js
define([
    "dojo/_base/declare",
    "epi/shell/command/_Command"
],
function (declare, _Command) {
    return declare([_Command], {
        name: "Test",
        label: "Test command",
        tooltip: "Click to execute me",
        iconClass: "dijitIconNewPage", //Define your own icon css class here.
        canExecute: true,

        _execute: function () {
            alert("label:", this.label);
        }
    });
});

//samples/MyToggleCommand.js
define([
    "dojo/_base/declare",
    "epi/shell/command/ToggleCommand"
],
function (declare, _Command) {
    return declare([ToggleCommand], {
        name: "Test",
        label: "Click here to toggle",
        tooltip: "Click to toggle me",
        iconClass: "dijitIconNewPage", //Define your own icon css class here.
        canExecute: true,

        _execute: function () {
            alert("Label: " + this.label);
        }
    });
});

For the system to find your command provider, you must register it in the global command registry.

JavaScript
var commandregistry = dependency.resolve("epi.globalcommandregistry");

//The first parameter is the "area" that your provider should add commands to
//For the global toolbar the area is "epi.cms.globalToolbar"
commandregistry.registerProvider("epi.cms.globalToolbar", new MyCommandProvider());

Last updated: Sep 21, 2015