Add custom commands
Sitefinity CMS enables you to provide a custom set of commands that are displayed in the More menu of an MVC widget while in edit mode. You can customize the commands in this menu depending on the current widget and the its current state. For example, a shared content block can render different commands than an unshared one.
You can customize all aspects of adding custom command, for example, what type of window you open when you click an item, or a command, from the menu.
To provide a custom set of commands for a widget, the controller of the widget must implement the
IHasEditCommands interface. Thus, you can add to or replace the collection of commands with a custom set of commands depending on your requirements. By default, the command collection is empty. If the widget does not inherit the
IHasEditCommands interface, the default commands are displayed:
Add custom commands
PREREQUISITES: You created a new widget.
For details how to do this, see Create widgets.
In this example, you add custom command to a Message widget. To do this:
- Create the controller.
To do this, perform the following:
- Create a class and name it
- Open the
MessageWidgetController and implement the
- Add the
- Implement the method that creates a new
CustomComand for the Message widget.
NOTE: You need to also add the default commands for
Permissions. Otherwise, you will just see the custom commands.
- In the
Index action, call the method of the
Use the following code sample:
Create the new designer view that opens when you select a command.
Navigate to Mvc » Views » MessageWidget and add a new file. Next, name the file DesignerView.Custom.cshtml and under Properties, mark the file as an Embedded resource.
To make sure the designer view is not displayed as a tab in the normal widget designer, create a
Navigate to Mvc » Views » MessageWidget and add a new file named DesignerView.Custom.json, Under Properties, mark he file as an Embedded resource.
Place the following content inside the
- Build the solution.
As a result, you can see the new command in the Message widget’s More menu.
For a more comprehensive example, see the
ContentBlockController class in the GitHub repository.